Перейти к контенту

[CoP] Ковыряемся в файлах


Рекомендуемые сообщения

Но теперь при переходе во время выброса в warlab актор тут-же гибнет.

Могу посоветовать попробовать поставить в варлаб, в место level_changer-а, поставить укрытие от выброса. Ибо, как ты уже заметил, в surge_manager.script идет две проверки на левел:

В первом месте проверяется уровень, и если он совпадает, то он мгновенно завершает выброс (end_surge) и убивает всех неспрятавшихся (kill_all_unhided, это из end_surge), в том числе, и ГГ. Это нужно, чтобы завершить выброс начавшийся во время перехода

А вторая проверка, пропускает выброс на локации (skip_surge). Это, чтобы не запускался выброс

Смущает меня только один факт: укрытия в подземке и лаборатории в surge_manager.ltx не были зарегистрированы, ну или были, но под другими именами...

Если поможет, отпишись в ЛС, самому интересно, да тестить некогда...

Ссылка на комментарий

ХОВАН, в том-то и дело, что оригинальные подземки ЗП не зарегены в surge_manager.ltx и укрытий на них никаких нету (смотрел уровни в СДК). А проверить этот механизм в игре в оригинале пока нету возможности, поэтому вопрос остается открытым...

 

 

Akella-96 aka SvD, с опозданием, но выкладываю - Сидр от камрада nuklia - http://narod.ru/disk/42958465001.1435e5896...(sidr).rar.html

Ссылка на комментарий

Извиняюсь если вопрос уже задавали, но не нашёл.

Нужно убрать НПС(не убит чтоб он валялся мешком, а именно исчезнуть)

Как это сделать? какой функцией?

И ещё мне нужно знать как перевести время т.е в середине игры нужно изменить start_date на другое.

Сюжетное продолжение чистого неба
Зона обр.2010г.
S.T.A.L.K.E.R.-Расширение территорий

 

Ссылка на комментарий

Как запаковать gamedata обратно - дело в том, что распаковать смог все запакованные, а запаковать обратно все, кроме нужной мне( с файлом se_respawn.script) - для упаковки использовал dbpacker, file_pack, которые в конце работы выдают ошибку (хотя при распаковке нет ошибок). И это даже ничего не меняя в файлах и папках.

 

Может кто нибудь сталкивался с чем-то подобным?

Ссылка на комментарий

Добрый вечер. Наверняка, всем известно, что есть в ТЧ и ЧН схема sr_silence(укрытие амбиент-звуков и фоновой музыки). Есть эта схема и в ЗП. Но не работает почему-то...Подскаэите пожалуйста, есть ли альтернатива этой схме, или может можно её как-нибудь "оживить"?

Заранее спасибо за ответ.

Изменено пользователем ColR_iT
Перенёс.
Ссылка на комментарий

у меня были вылеты после смс с молнией( взятие оружия , после разговора с черномором) - вылеты-зависания. у кого такое же - рекрмендую сделать примерно так: распаковать gamedata.dbf(это было в моём слдучае),добавить сточку:get_console():execute("load ~ Spawn now ["..tostring(self:name()).."] -> ["..obj:name().."]")

перед

amk.on_REspawn(obj,self) - это надо сделать в файле : se_respawn в gamedata.dbf

 

многое об этом говорилось - но ни где ни слова,о том, что этих файлов se_respawn.script будет несколько - а тот нужный файл надо взять, исправить, и закинуть в scripts ( в gamedata),потому-что обратно эта gamedata.dbf не упаковывается.

 

Пиши грамотно, с использованием заглавных букв. Соблюдение правил форму о грамотном написании вопросов/ответов - касается всех!

И, довольно глупо писать в топике, ориентированном на чистую игру (CoP)? о своих мытарствах с неким модом и некими "своими" *.dbf ...

--/Artos

Изменено пользователем Artos
Ссылка на комментарий

tankist, malish, если файлы конфигов/скриптов НЕ имеют ошибок (с точки зрения файловой системы) и не заняты другими программами (не открыты на запись) - упаковка в *db* не представляет ни какого труда и/или затруднений. Имеете затруднения - учимся элементарным правилам работы на компьютере.

 

 

zoidberg123456789, во-первых, в ТЧ этой схемы нет.

Во-вторых, это собственно и не схема и не имеет отношение к амбиент-звукам иль фоновым. Это (sr_silence) всего лишь по сути, простенький вариант занесения в некую табличку (silence_zone_table) помеченных в логике рестрикторов, в которых не должна отыгрываться динамическая озвучка боевок (см. xrs_dyn_music.script).

Работает ли эта "схема" в ЗП, а точнее обрабатывает ли табличку xrs_dyn_music.script? Не уверен, но все условия для этого имеются, хотя в xrs_dyn_music.script есть отличия по сравнению с ЧН.

То, что у тебя не работает - возможно ты как раз и не задал нужным тебе рестрикторам в логике эту "схему". В оригинальной ЗП помечен только один рестриктор.

 

(в дальнейшем задавай подобный вопрос в топике именно той версии игры, которая имеет отношение к вопросу)

 

P.S. На последующее:

zoidberg123456789: Мне нужно как-то зону без фоновой музыки и внешнего амбиента создать... Возможно ли это как-то сделать?

Амбиент и фоновые звуки НЕ управляются "штатными" скриптами. Установки и пр. делаются в SDK. В скриптах можно только через консольные команды управлять громкостью ... но готовых скриптов "на все случаи жизни" конечно же нет. В _g.script имеются глобальные переменные amb_vol, управляя ими типа (см. ui_sleep_dialog.script):

    _G.mus_vol = get_console():get_float("snd_volume_music") --/ запомнили текущую громкость музыки
    _G.amb_vol = get_console():get_float("snd_volume_eff") --/ запомнили текущую громкость амбиента
    get_console():execute("snd_volume_music 0") --/ выключили громкость музыки
    get_console():execute("snd_volume_eff 0") --/ выключили громкость амбиента

- ты можешь отключать или включать/изменять громкость ... Для восстановление громкости можно воспользоваться запмненными значениями.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Здраствуйте. Возможно ли как то включить размытие заднего фона при перезарядке оружия, как в ЧН. Если возможно, подскажите как...

Ссылка на комментарий

Такой вопрос: почему НПС не смотрят куда надо

0b9e4c5ee6c9.jpg

 

изменил правильно direction и look point, а они все равно смотрят на стену?

 

Значит изменил НЕ правильно. Ну а что неправильно - гадай по своим кодам сам, местные кашпировские в отгуле ...

Изменено пользователем ColR_iT
Переместил.

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий

Artos, спасибо за подсказку с эмбиентом! Т.е. такая схема будет работать?:

 

[logic]

active = sr_idle@wait

 

[sr_idle@wait]

on_actor_inside = sr_idle@off %=amb_stop%

 

[sr_idle@off]

on_actor_outside = sr_idle@wait %=amb_start%

 

 

И функции в xr_effects.script:

 

function amb_start()

_G.mus_vol = get_console():get_float("snd_volume_music")

_G.amb_vol = get_console():get_float("snd_volume_eff")

get_console():execute("snd_volume_music 0")

get_console():execute("snd_volume_eff 0")

end

 

function amb_stop()

get_console():execute("snd_volume_music "..tostring(_G.mus_vol))

get_console():execute("snd_volume_eff "..tostring(_G.amb_vol))

_G.amb_vol = 0

_G.mus_vol = 0

end

 

 

 

У меня просто сейчас нету возможности потестить, лока компилируется.

Ссылка на комментарий

Clayman, ты куда-то спешишь? Докомпилируешь и проверишь ... :-)

"Пара" замечаний;

1. Т.к. логика рестрикторов может проверяться до активизации алайфа, то консоль может быть еще недоступной. Можно заметить, что разработчики игры нередко используют предварительную проверку на получение доступа к консоли:

local console = get_console() if console then ...

Так что далеко не лишним будет и в xr_effects.script. Для сна ГГ это не обязательно, т.к. без ГГ нет и сна.

2. И зачем называть маловнятными/двусмысленными названиями wait/start/stop? Ждем входа/выхода? Старт проигрыша иль выключения?

Если уж о звуке - то и использовать однозначное: on|off, как это сделал для [sr_idle@off].

3. Учитывая, что включение/отключение у тебя уже производится не только в одном месте, а из двух, и никак не связанных между собою - стОит озаботиться какой-то доп.проверкой, дабы отключив звук в одном месте кодов и запомнив значения для обратного включения, не оказалось бы при повторном (например, заснул твой ГГ в твоем безмолвном рестрикторе) отключении - затирались бы значения для восстановления звука ... или хотя бы восстанавливались некие дефолтные ...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos, я попробовал сделать как Вы сказали.

Ну результат немного плачевный :(

В игре остались только два звука в рабочем состоянии(т.е. громкость у них не убрана).

Глав.меню и фоновая музыка. Остальные звуки не звучат. Никакие(не встрелы, ни амбиент, ни вступительный ролик, ничего...)...

При входе в зону "беззучия" фоновая музыка затухает.

При выходе не начинает играть вновь. Только при выходе в глав.меню. и обратно в игру музыка начинает играть вновь.

Может я чего-то не так сделал, может игре что-то не нравиться, но описал я всё в точности.

Изменено пользователем zoidberg123456789
Ссылка на комментарий

Artos, я никуда не спешу:) Просто zoidberg123456789, задал интересную тему, вот и спросил.

2. И зачем называть маловнятными/двусмысленными названиями wait/start/stop? Ждем входа/выхода? Старт проигрыша иль выключения?

Всегда делаю по аналогии с оригинальными логическими конструкциями ЗП, не люблю изобретать велосипед.

 

Да и вообще... Если есть готовое решение, напиши плз, с нас подарок :)

Ссылка на комментарий

zoidberg123456789, удивляют фразы: "Может я чего-то не так сделал, может игре что-то не нравиться, но описал я всё в точности."

Ты нам предоставляешь гадать на кофейной гуще чего ты там может быть где-то ка-то недоделал иль игра не той может быть версии? ;-)

 

Во-первых, не нужно воспринимать мною сказанное за "как нужно сделать". Мною всего лишь дан совет/способ как из скриптов управлять громкостю фоновой музыки и амбиента. Подходит ли это тебе иль чего-то не хватает - исходных данных в твоем вопросе, как говорится: "кот наплакал".

При чем тут музыка главного меню? Это никак к собственно игре не относится. Как тобою восстанавливаются отключенные громкости - ты не показываешь. Управление громкостью фоновой музыки сделано аналогично указанному мною способом во всех трех играх и работает как и задумано разработчиками (в ТЧ это динамич.музыка by xStream).

Во-вторых, хотя компьютер и "вумная машина", но он все же "дурак" и не делает того, что ему не указали. Выход в главное меню - по сути прерывание/приостанов игры и, если реакция должна быть иная, то и описать в скриптах/алгоритме это нужно. Если нужно, то при выходе в главное меню восстанавлявать звук, а по возвращению - вновь включать иль отключать его.

 

Ну раз уверен что правильно сделал управление из консоли и результат не тот, который ожидаешь - ну значит не судьба воспользоваться данным способом ... Возвращайся к исходной формулировке своего вопроса: "нужно как-то зону без фоновой музыки и внешнего амбиента создать..." - вот и создавай ее в SDK без ненужных озвучек.

 

Добавлено через 8 мин.:

Clayman, использовать стандарты - дело хорошее, но ... использовать все же нужно и по смыслу. Семантика в названиях позволяет самому не запутаться в своих "обзывалках". Если уж отключаешь звук, то чем vol_start не велосипедестее чем vol_off? :-)

1. Готовое решение возможно только тогда, когда описаны цели/задачи и исходные условия, а не просто обобщенные похачушки.

Тот же ui_sleep_dialog.script иль xrs_dyn_music.script - чем тебе не готовые решения? Остается их использовать в твоих конкретных целях и условиях.

2. Если бы имел доступ к движку форума - выкинул бы все "подарки" ... Не мальчик уже ... и не дама, подаркам радоваться ...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos, вот Вы говорите, что я не показываю, какие я манипуляции делал, чтобы в определённый момент и в определённом месте убрать фоновую музыку и амбиент, затем вернуть. Пожалуйста:

Сделал, как предположил товарищ Clayman:

"Логика рестриктора"
[logic]
active = sr_idle@off

[sr_idle@off]
on_actor_inside = sr_idle@on %=amb_stop%

[sr_idle@on]
on_actor_outside = sr_idle@off %=amb_start%


И функции в xr_effects.script:

"По аналогии с ui_sleep_dialog.script"
function amb_start()
_G.mus_vol = get_console():get_float("snd_volume_music")
_G.amb_vol = get_console():get_float("snd_volume_eff")
get_console():execute("snd_volume_music 0")
get_console():execute("snd_volume_eff 0")
end

function amb_stop()
get_console():execute("snd_volume_music "..tostring(_G.mus_vol))
get_console():execute("snd_volume_eff "..tostring(_G.amb_vol))
_G.amb_vol = 0
_G.mus_vol = 0
end

 

Вроде ничего не упустил. То, что получилось в игре, я уже описывал выше.

P.S.: CoP, 1.6.02. Если что-то забыл написать поправьте пожалуйста.

P.S.S.: Совет я Ваш принял, и попытался использовать в правильном напрвлении. Получилось, но не совсем так, как хотелось бы.

 

Используй тег код, а не цитату. И спойлер. Cyclone

Ссылка на комментарий

zoidberg123456789, скорее всего моя ремарка о том, что нужно бы давать имена понятные для использования - как раз и причина твоих заморочек.

Решил портратить чуток времени и перепроверить теорию на практике. Единственное сделал это на кодах SHoC, но для данного вопроса это абсолютно не важно (кто против - пусть бросит камень):

1. Пишем логику рестриктора:

[logic]
active = sr_idle@inside

[sr_idle@inside];--/ ждем входа актора в зону
on_actor_inside = sr_idle@outside %=snd_vol_off%;--/ при входе -> откл.звук

[sr_idle@outside];--/ ждем выхода актора из зоны
on_actor_outside = sr_idle@inside %=snd_vol_on%;--/ при выходе -> вкл.звук

 

2. Пишем обработчики логики, управляющие громкостью озвучки:

function snd_vol_on(actor, obj) --/ включаем громкость
  local console = get_console()
  if console and (_G.amb_vol ~= 0 or _G.mus_vol ~= 0) then --/ подстраховка
    --log("%s:snd_vol_on:mus/amb_vol=[%s/%s]:[%s]", sModule, _G.mus_vol, _G.amb_vol, "i") --/#~#
    console:execute("snd_volume_music "..tostring(_G.mus_vol)) --/ каманда: восстановить громкость
    console:execute("snd_volume_eff "..tostring(_G.amb_vol))
    _G.amb_vol = 0 --/ сброс запомненной громкости
    _G.mus_vol = 0
  end
end

function snd_vol_off(actor, obj) --/ отключаем громкость
  local console = get_console()
  if console then --/ подстраховка
    _G.mus_vol = console:get_float("snd_volume_music") --/ запоминаем текущую громкость
    _G.amb_vol = console:get_float("snd_volume_eff")
    console:execute("snd_volume_music 0") --/ каманда: выключить громкость
    console:execute("snd_volume_eff 0")
    --log("%s:snd_vol_off:mus/amb_vol=[%s/%s]:[%s]", sModule, _G.mus_vol, _G.amb_vol, "i") --/#~#
  end
end

 

3. Спавним на Кордоне в деревеньке на дороге (у костра, где как раз распевают песни и травят анекдоты) рестриктор:

  local pos, lvid, gvid = vector():set(-205.0,-20.3,-147.2), 1, 0 --/ задаем координаты спавна
  local soObj = alife():create("space_restrictor", pos, lvid, gvid) --/ спавн спейс-рестриктора
  local pk = get_netpk(soObj,1) --/ запрос нет-пакета (only 'state')
  if pk:isOk() then
    local data = pk:get() --/ запрос данных из нет-пакета заспавненного рестриктора
    data.custom_data:setString("[logic]\ncfg = scripts\\snd_restrictor.ltx") --/ задаем путь к файлу с логикой
    data.shapes:addSphere(3) --/ задаем сферический тип с радиусом 3м
    data.restrictor_type = 3 --/< задаем тип: RestrictorTypeNone
    pk:set(data) --/< запись в нет-пакет
  end

Заходим в игру и идем к костру. При входе в рестриктор все звуки (шум ветра/дождя/...) и музыка/анекдоты/... замолкают. Выходим - звуки восстанавливаются.

Смотрим лог (соотв. строки были раскомментированы):

* Info: xr_effects:snd_vol_off:mus/amb_vol=[0.10000000149012/0.20000000298023]:[i]
* Info: xr_effects:snd_vol_on:mus/amb_vol=[0.10000000149012/0.20000000298023]:[i]
* Info: xr_effects:snd_vol_off:mus/amb_vol=[0.10000000149012/0.20000000298023]:[i]
* Info: xr_effects:snd_vol_on:mus/amb_vol=[0.10000000149012/0.20000000298023]:[i]

* Info: xr_effects:snd_vol_off:mus/amb_vol=[0.10000000149012/0.20000000298023]:[i]
* Info: xr_effects:snd_vol_on:mus/amb_vol=[0.10000000149012/0.20000000298023]:[i]

Все как и должно быть, что запоминали - то и восстанавливалось. Перед 3-им заходом и внутри рестриктора на 3-ем заходе открывал главное меню - звук меню проигрывал всегда, по выходу из рестриктора - восстановился.

Ну что еще нужно для доказательств того, что способ полностью работоспособен и не вызывает затруднений?

 

В варианте Clayman'а по сути тоже самое, кроме указаний что же за рестриктор был использован, хотя и это практически не важно (если есть радиус/объем). А вот логика, которая на входе вызывает amb_stop и функция которой как раз командует в консоль "восстановить" громкости (а начальные то 0!) - похоже и портит вам картину. Аналогично и на выходе, вызывается amb_start, которая запоминает громкости и задает выключенную громкость.

В общем, либо вы фазы перепутали, либо не разобрались что же и когда в консольной команде писать, либо ... ищите именно в ваших кодах свои заморочки.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos, большое спасибо за объяснени и потраченное на нас время:-). Но мы оказывается не допоняли друг друга.

Рестриктор глушит все(!!!) звуки, а надо только фоновую музыку и амбиент!:-). Вот в чём наша проблема. Это возможно?

 

Artos, вот Вы мне объяснили всё, и я сразу всё понял.

Сделал так: при входе в рестриктор затухает фоновая музыка(snd_volume_music)

А snd_volume_eff как я понял это все остальные звуки. Возможно ли как-то вынести внешний амбиент на отдельную переменную(допустим snd_volume_amb)? Или это только движок редактировать? Или новый скрипт писать?

Или уже есть какой-то другой способ, чтобы убрать только(!) внешний амбмент, а все остальные звуки оставить?

Изменено пользователем ColR_iT
Ссылка на комментарий

zoidberg123456789, пока ты будешь изъясняться на своем жаргоне и говорить о неких тобою понимаемых частностях, а не о общепонятных понятиях/цели - взаимопонимание вряд ли получится.

Ну что такое "внешний амбиент"?

Э́мбиент (англ. ambient — окружающий) - т.е. в игре это относится ко всем окружающим игрока звукам: шум ветра, дождя, шаги, удары, лай, реплики, ... О каком тут НЕ внешнем можно толковать? Или ты "звон в ушах" под внутренним понимаешь? :mellow:

Зайди в главном меню в опции извка - там есть 2 (два!) ползунка - это и есть snd_volume_eff и snd_volume_music, т.е. то, что в игре принято за окружиющие звуки и музыкальное сопровождение. Названия переменным даны разработчиками и именно по ним ты из командной строки иль из интерфейса меню можешь управлять их значениями.

Если тебе как то хочется по иному обозвать и свои имена использовать - ну так и обзывай ... Собственно те же _G.amb_vol и _G.mus_vol - и есть иные названия для сохраняемых значений этих параметров. Но конечно же только 'твои' скрипты их и понимать будут.

А вот если тебе хочется разделить окружающие звуки на различные части (типа: природные, звуки монстров, голоса людей, ...) и управлять их громкостями по-отдельности - то это уже совершенно иное и из скриптов невозможно.

Так что, или я опять не понял твою похотелку или сие невозможно на уровне скриптов.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Ребят помогите.

На руках имеет obj - убийцы и убитого, нет клбэка на хит, имеем obj оружия .

Нужно определить, что убийство было совершено из подствольника. Определить что подствол одет - уменя получилось

oWeapon:weapon_is_grenadelauncher()

-- идет проверка на установленность дивайса, но не на его активность.

есть ли метод , который определяет, что подствольник активирован или же как ожно определить, что мерть произошла из подствольника не имея колбека на хит.

 

Заранее всем спасибо.

 

Artos, Ясно, значит уберем это. А для чего - честно не знаю. Просто когда писал код, мысль пошла, я и давай развивать.

Изменено пользователем Vano_Santuri

Что-то кончается, что-то начинается...

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...