Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Всем добра написал проверку для логики которая проверяет что выброс закончился, но с задержкой.
Цитата
function surge_complete_delay(p) local time_delay = time_global() + p[1] * 1000 return surge_manager.is_finished() or fallout_manager.is_finished() or psi_storm_manager.is_finished() and time_global() > time_delay end
Но я словил вылет
Код
Expression : !m_error_code Function : raii_guard::~raii_guard File : ..\xrServerEntities\script_storage.cpp Line : 748 Description : ...all of pripyat\gamedata\scripts\xr_conditions.script:1756: attempt to perform arithmetic on field '?' (a nil value)
Я так понял это из-за того что я помножил на p[1]. Если это так то можно это как то обойти? P.S И да у меня еще подключена атмосфера поэтому там ещё проверки на другие явления зоны.
Это неправильно. Параметр p передаётся третьим. Первые два - объект актора и объект того, откуда вызывается функция. Вот так верно:
Код
function surge_complete_delay(actor, npc, p)
Вылета не будет, но реализация функции выглядит очень сомнительно... Оно не будет работать так, как вы хотите. Выполнение происходит практически мгновенно и последнее выражение time_global() > time_delay никогда не успеет вернуть true.
function surge_complete_delay(actor, npc, p) local time_delay = time_global() + p[1] * 1000 if time_global() > time_delay then return surge_manager.is_finished() or fallout_manager.is_finished() or psi_storm_manager.is_finished() end end
Сообщение отредактировал Kelvin - Пятница, 22.05.2020, 23:28
Доброго времени суток, сделал метательный нож на классе болта (реализацию взял в Упавшей Звезде). Если метнуть нож в НПС который в данный момент выполняет работу на смарт кавере - хит нпс не наносится - hit_callback вообще не срабатывает. Для дефолтных работ на смарт каверах (типа stay_table, stay_wall - без указания Available_animations в логике) хит не срабатывает всегда, если указать другую анимку, то с некоторым хит срабатывает (например с ward), с некоторыми (jup_b41_novikov_stand) нет. В чем может быть причина? Конфиг ножа:
Есть место куда ГГ заходить нельзя чтобы люлей не получить, но если происходит выброс, то тогда можно туда заходить. И тут проблема сразу появляется. Если выброс закачивается глав герой сразу пулю получит потому что потому что по логике то время когда он может в данной зоне находится прошло. Вот хотел это при помощи скрипта сделать
Kelvin, а on_timer чем не подходит? После Выброса запускаем таймер, и по истечению времени переходим на схему в которой игрок погибнет, находясь этой зоне. Как пример.
Сообщение отредактировал molodoy_chelovek - Суббота, 23.05.2020, 00:01
makdm, не совсем, у меня добавлен лут у мутантов. Когда ты наводишь на мертвого мутанта то появляется надпись, мол "Собрать лут (F)". Вообщем мод "Мясника". Я хотел сделать проверку, что для разделки нужен нож. Я это сделал, все работает как надо, но я хотел изменить надпись, мол "Достаньте нож чтобы разделать", если в руках его нет. Но так получилось, что надпись определяется при смерти мутанта, то есть, когда умирает мутант, то ему присваивается надпись, в зависимости от того, был ли в тот момент в руках нож или нет. Например, убил ножом надпись с лутом, убил с ТОЗа - надпись "Достаньте нож", и она уже никак не измениться. А мне надо чтобы проверка была как бы динамичной и проверяла наличие в руках ножа каждую секунду.
function generic_object_binder:set_use(ini) --// устанавливаем каллбэк if db.actor:active_slot() == 1 then self.object:set_callback(callback.use_object, self.on_use, self) --//определяем и устанавливаем надпись юза local character_use = (ini:r_string(self.object:section(), "character_use")) or "monstr_character_use" self.object:set_tip_text(character_use) else self.object:set_tip_text("Достаньте нож") --// отключаем каллбэк self.object:set_callback(callback.use_object, nil) end --// устанавливаем озвучку юза self.sound_use = sound_object("material\\dead-body\\collide\\hithard0"..tostring(math.random(1, 6)).."hl") if not self.use then self.use = true end end
Это будет работать, но метод довольно костыльный (желательно оптимизировать вызов в апдейте, но я не придумал как).
UPD: Если что, это делалось на версии мода "Мясник" 1.0
Сообщение отредактировал molodoy_chelovek - Суббота, 23.05.2020, 01:44
AziatkaVictor, Так ведь нет проблемы устанавливать надпись в апдейте мутанта, а не на колбеке смерти:
Код
if not object_alive then if not self.used then if db.actor:active_slot() == 1 then self.object:set_tip_text("Вскрыть") else self.object:set_tip_text("Достаньте нож") end end return end
А после успешного вскрытия очистить эту строку и отменить проверку:
Код
self.object:set_tip_text("") self.used = true
ЦитатаAyer ()
В чем может быть причина?
Точно не в конфиге.
Сообщение отредактировал denis2000 - Суббота, 23.05.2020, 09:17
denis2000, догадываюсь что это скрипты, а возможно и движок. Но ни там ни там ничего касающегося логики работы smart_cover не менял. Конфиг выложил, так как не знаю что еще можно показать. Какая информация поможет установить причину?
Всем привет. Все мы наблюдали данную ситуацию в ЗП - идёт пара-тройка сталкеров и возглавляет её не самый высокий по рангу НПС, чаще новис. Собственно, вопрос: есть ли правка такой ситуации, чтобы новис не возглавлял матёрых сталкеров? Спасибо.