Overf1rst 1 503 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Toplol4ik 41 Опубликовано 21 декабря, 2023 3 часа назад, FFFFF сказал: call of pripyat\gamedata\scripts\sim_board.script:233: attempt to call method 'create_npc' FFFFF У меня был такой лог. Неправильно был прописан сквад в simulation.ltx. Должно быть так: название сквада из squad_descr = название смарта где он должен находится Просто создаю свой мод... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NewValveCom 125 Опубликовано 22 декабря, 2023 14 часов назад, denis2000 сказал: Прочтите посты выше... Спасибо, внимание не обратил что страница новая... Попытки тщетны что-либо сделать. Со стори_ид вечные вылеты, сделал что-то такого. Спойлер function campfire_binder:net_spawn(server_object) story_objects.check_spawn_ini_for_story_id( server_object ) if not object_binder.net_spawn(self, server_object) then return false end local smart_name = string.gsub(self.object:name(), "_campfire_%d*", "") if sim_board.get_sim_board().smarts_by_names[smart_name] then self.campfire:turn_off() if campfire_table_by_smart_names[smart_name] == nil then campfire_table_by_smart_names[smart_name] = {} end campfire_table_by_smart_names[smart_name][self.object:id()] = self.campfire end return true end (Снизу функции которые нашел рыская по интернету, только название функций изменил) function turn_off_campfire(actor, npc, p) local obj = get_story_object(p[1]) if obj then local campfire = obj:get_campfire() campfire:turn_on() end end function turn_on_campfire(actor, npc, p) local obj = get_story_object(p[1]) if obj then local campfire = obj:get_campfire() campfire:turn_off() end end Спойлер [logic] active = sr_idle@1 [sr_idle@1] on_info = {=actor_in_zone(test)} %=turn_off_campfire(campfire_test)% sr_idle@nil [sr_idle@nil] В итоге я ловлю либо вылет либо никаких результатов. Придется делать через таблицу в db... Вот только про db я знаю ровно ничего) Где найти информацию о нём или что это вообще? Звиняйте за беспокойство и тупые вопросы. Вопрос с отключением костров смертелен. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 22 декабря, 2023 (изменено) NewValveCom Я сделал так: Спойлер добавил в таблицы: campfire_by_name = {} Спойлер В функцию campfire_binder:net_spawn добавил: db.campfire_by_name[self.object:name()] = self.campfire Спойлер Добавил функции: function campfire_off(actor, npc, p) local obj = db.campfire_by_name[p[1]] if obj then obj:turn_off() end end function campfire_on(actor, npc, p) local obj = db.campfire_by_name[p[1]] if obj then obj:turn_on() end end Спойлер [logic] active = sr_idle@on [sr_idle@on] on_game_timer = 50 | sr_idle@off %=campfire_off(test_campfire)% [sr_idle@off] on_game_timer = 50 | sr_idle@on %=campfire_on(test_campfire)% Работает по имени костра в SDK, кроме статического освещения и DX11! Изменено 22 декабря, 2023 пользователем denis2000 3 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FFFFF 0 Опубликовано 22 декабря, 2023 (изменено) Братья Монолита! Хотел узнать истину Монолита.... Как сделать так чтоб нпс спавнился после получения инфопоршня? Ответьте скорее прошу? Очень. Дополнено 43 минуты спустя Изменено 22 декабря, 2023 пользователем FFFFF Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Toplol4ik 41 Опубликовано 22 декабря, 2023 Здраствуйте, у меня вопрос: Как запретить бегать игроку, а потом обратно разрешить. Проще говоря: отключить возможность бегать игроку Можно ли как то это сделать? Просто создаю свой мод... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FFFFF 0 Опубликовано 22 декабря, 2023 (изменено) Извините, а где найти логику НПС ? Просто нпс заспавнить получилось ,но он спавнится не на волк поинтах ,а в центре смарт терейнов. Изменено 22 декабря, 2023 пользователем FFFFF Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 885 Опубликовано 22 декабря, 2023 7 часов назад, Toplol4ik сказал: Можно ли как то это сделать? Через движок. 6 часов назад, FFFFF сказал: Извините, а где найти логику НПС ? А где ты её потерял? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FFFFF 0 Опубликовано 23 декабря, 2023 (изменено) Товарищи, здравствуйте. У меня возникла проблема. Я смог заспавнить нпс, но он смотрит в стену, вместо того чтоб смотреть на лук_поинт. Прилагаю все матен Спойлер [smart_terrain] squad_id = 1 max_population = 1 [exclusive] zat_a2_stalker_nimble = labx8\zat_a2_stalker_nimble_logic.ltx Спойлер [logic@zat_a2_stalker_nimble] active = walker@ranen suitable = {=check_npc_name(zat_a2_stalker_nimble)}true prior = 100 [walker@ranen] path_walk = emmis_walk path_look = emmis_look Кто нибудь ведает, как проблему решить? Изменено 23 декабря, 2023 пользователем FFFFF Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 676 Опубликовано 23 декабря, 2023 FFFFF , в точках walk и look флаги должны быть одинаковыми. Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FFFFF 0 Опубликовано 23 декабря, 2023 (изменено) makdm Флаги одинаковые. На самом деле он спавнится в центре смар_террейна. Так ,что он вообще не правильно спавнится. Теперь он вообще спавнится на другом этаже... Изменено 24 декабря, 2023 пользователем FFFFF Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Diesel 225 Опубликовано 23 декабря, 2023 (изменено) 1 час назад, makdm сказал: FFFFF , в точках walk и look флаги должны быть одинаковыми. А может дело в названии логики. есть конфиг с путем до логики, а там зачем то еще название нпс. Я давно уже не шарю в зп. Может эксклюзивы так и работают. Это совместная логика? Типа смарта или сквада? Как быстро я отупел. Изменено 23 декабря, 2023 пользователем Diesel Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 661 Опубликовано 23 декабря, 2023 (изменено) Подскажите пожалуйста, а какой параметр нужно править, чтобы уменьшить время, которое НПС после битвы сидят на месте "ждут врагов" (когда они еще говорят фразы типа "подождем еще немного")? Мне нужно, чтобы они буквально секунды через 3 возвращались к нормальному поведению и шли к своим точкам. Дополнено 0 минут спустя denis2000 хочу еще спросить кое-что про ИИ сетку. Может ли из-за какой-то конфигурации ИИ сетки падать ФПС? На новой сетке замечаю, что после продолжительной игры довольно часто начинает заметно падать ФПС, до 20-15 кадров, особенно в районе завода. При том на старой сетке у меня такого словить совсем не выходит. И это на самом деле большая проблема, так как в результате старая сетка пока что играется стабильнее. Есть теория, что это из-за зомбаков в подземке под заводом, они там без ограничений бродят (не прописана логика сейчас), а выход далеко. Может они слышат выстрелы и видят ноды над ними (с завода) и хотят идти туда, но путь ведет их так далеко (вне зоны online), что они залагивают? Может такое быть? А на старой я вообще не уверен, насколько эта подземка была соединена с другими частями ИИ сетки (оттуда шел ряд ошибок с мутантами), может там они и не пытаются никуда уходить потому что не могут. Если что, текущая новая сетка валидна. EDIT: В дополнение к тому, что я писал ранее про ИИ сетку - проверил бекап, на старой там наоборот связь с заводом и подземкой была (странным образом сквозь стену), и я ее походу в какой-то момент убрал. Наверное, в этом причина, надо вернуть, т.к. основной вход в подземку реально очень далеко EDIT: а вообще нет, черт его знает что там происходит, там кусок какой-то вне геометрии висит вообще, черт поймешь с чем он связан, не знаю короче Изменено 24 декабря, 2023 пользователем Mawrak Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 885 Опубликовано 23 декабря, 2023 3 часа назад, Mawrak сказал: буквально секунды через 3 возвращались к нормальному поведению и шли к своим точкам. post_combat_time = 2,4 По-моему, так это работает. Вписать в секцию logic 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 293 Опубликовано 24 декабря, 2023 (изменено) Здравствуйте, как через рестриктор вызвать титры? Исправляю косяки в моде, и почему-то гг не телепортируется в указанную точку, а просто отключается интерфейс. Причём 3 сквада телепортируются, а гг нет. Спойлер [logic] active = sr_idle@plen [sr_idle@plen] on_info = {=actor_in_zone(pripyat_plen_sr)} sr_idle@dialog %=disable_ui =create_squad(pri_zasada_monolith_squad:pripyat_zasada)% [sr_idle@dialog] on_game_timer1 = 10| %=add_cs_text(plen_phrase_1)% on_game_timer2 = 80| %=del_cs_text(plen_phrase_1)% on_game_timer3 = 90| %=add_cs_text(plen_phrase_2)% on_game_timer4 = 160| %=del_cs_text(plen_phrase_2)% on_game_timer5 = 170| %=add_cs_text(plen_phrase_3)% on_game_timer6 = 220| %=del_cs_text(plen_phrase_3)% sr_idle@dialog2 [sr_idle@dialog2] on_game_timer1 = 1 | %=add_cs_text(plen_phrase_4)% on_game_timer2 = 60 | %=del_cs_text(plen_phrase_4)% on_game_timer3 = 61 | %=add_cs_text(plen_phrase_5)% on_game_timer4 = 70 | %=del_cs_text(plen_phrase_5)% sr_idle@spawn [sr_idle@spawn] on_info = {=actor_in_zone(pripyat_plen_sr)} sr_idle@ui_enable %=create_squad(pri_dolg_sim_squad:pripyat_zasada)% [sr_idle@ui_enable] on_game_timer1 = 50 | %=enable_ui =give_task(pripyat_pogovorit_task)% sr_idle@exit [sr_idle@exit] on_info = {+pripyat_perehod} sr_idle@tp_actor %=run_postprocess(fade_in:2272) =disable_ui =teleport_squad(pri_dolg_squad:pripyat_perehod_walker_1_walk) =teleport_squad(pri_dolg_sim_squad:pripyat_perehod_walker_1_walk) =teleport_squad(pri_friend_squad:pripyat_perehod_diplomat_walk)% [sr_idle@tp_actor] on_game_timer1 = 10 | sr_idle@nil %=teleport_actor(pripyat_perehod_v_pripyat_actor_walk:pripyat_perehod_v_pripyat_actor_look) =stop_postprocess(fade_in:2272) =enable_ui% [sr_idle@nil] Изменено 24 декабря, 2023 пользователем Skala Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 885 Опубликовано 24 декабря, 2023 3 часа назад, Skala сказал: Здравствуйте, как через рестриктор вызвать титры? =game_credits 3 часа назад, Skala сказал: почему-то гг не телепортируется в указанную точку Какая-то из точек не существует. Пересоздай. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 293 Опубликовано 24 декабря, 2023 Neptun Пересоздавал точки актёра, но всё тоже самое Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 661 Опубликовано 24 декабря, 2023 (изменено) Skala как обходной вариант, можно телепортировать ГГ напрямую по координатам через lua db.actor:set_actor_position(vector():set(x,y,z),level_vertex_id,game_vertex_id) Вроде так это делается. Дополнено 7 минуты спустя Да, а сами координаты можно вот так смотреть - https://www.youtube.com/watch?v=WXuF4WmIbBI Это ТЧ но на ЗП вроде так же работает. Изменено 24 декабря, 2023 пользователем Mawrak Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 293 Опубликовано 24 декабря, 2023 Mawrak А куда это прописывать и как вызвать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 661 Опубликовано 24 декабря, 2023 Skala чтобы вызывать из логики, в xr_effects.script создаем функцию, например function my_new_teleport() db.actor:set_actor_position(vector():set(32.442,-11.221,-241.626),79341,37) end А потом из логики вызываем через %=my_new_teleport% как обычную функцию, в вашем случае on_game_timer1 = 10 | sr_idle@nil %=my_new_teleport =stop_postprocess(fade_in:2272) =enable_ui% Но все же хочу спросить, почему такая сложная схема? Почему не телепортировать ГГ прямо вместе со сквадами, зачем там отдельная секция и таймер? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 293 Опубликовано 24 декабря, 2023 Mawrak Раньше была одна секция вместе со сквадами и всё работало, потом как добавил задание на разговор с персонажем, работать перестало и решил попробовать так. Так тоже не работает Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 661 Опубликовано 24 декабря, 2023 Skala а, то есть у вас сейчас +pripyat_perehod выдается через диалог? Тогда я думаю что не в самом телепорте проблема, а в том, что ГГ в диалоге в этот момент. Попробуйте добавить <action>dialogs.break_dialog</action> Перед выдачей инфы в диалоге: <action>dialogs.break_dialog</action> <give_info>pripyat_perehod</give_info> ну или как у вас там все сделано 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NewValveCom 125 Опубликовано 24 декабря, 2023 В 22.12.2023 в 14:11, denis2000 сказал: NewValveCom Я сделал так: db.script (Показать контент) добавил в таблицы: campfire_by_name = {} bind_campfire.script (Показать контент) В функцию campfire_binder:net_spawn добавил: db.campfire_by_name[self.object:name()] = self.campfire xr_effects.script (Показать контент) Добавил функции: function campfire_off(actor, npc, p) local obj = db.campfire_by_name[p[1]] if obj then obj:turn_off() end end function campfire_on(actor, npc, p) local obj = db.campfire_by_name[p[1]] if obj then obj:turn_on() end end Файл логики рестриктора (Показать контент) [logic] active = sr_idle@on [sr_idle@on] on_game_timer = 50 | sr_idle@off %=campfire_off(test_campfire)% [sr_idle@off] on_game_timer = 50 | sr_idle@on %=campfire_on(test_campfire)% Работает по имени костра в SDK, кроме статического освещения и DX11! Спасибо! Жаль, что не будет работать на всех рендерах, но разберусь. Хочу реализовать субтитры с их появлением через light_anim, и появление субтитров я реализовал с помощью скрипта: Спойлер function add_text_no_blink_subtitle(actor, npc, p) if p[1] then local hud = get_hud() local cs_text = hud:GetCustomStatic("text_on_screen_subtitle_no_blink") if cs_text then hud:RemoveCustomStatic("text_on_screen_subtitle_no_blink") end hud:AddCustomStatic("text_on_screen_subtitle_no_blink", true) cs_text = hud:GetCustomStatic("text_on_screen_subtitle_no_blink") cs_text:wnd():TextControl():SetText(game.translate_string(p[1])) end end +логика: %=add_text_no_blink_subtitle(test)% Попытался реализовать затухание субтитра через отдельный скрипт (но с тем же кодом, надеясь, что так сработает, ну да) и поменял цвета в фреймах light_anim (черный и белый), но в таком случае просто появляется текст практически также, т.е. нужно, чтобы он затухал также, как и появился, а не резко заканчивался. Это реально сделать, если поменять тот скрипт или нужно вообще новый код? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 293 Опубликовано 24 декабря, 2023 Mawrak Да, инфопоршень через диалог выдаётся. Попробую сделать как вы сказали Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FFFFF 0 Опубликовано 25 декабря, 2023 Товарищи, приветствую. Как сделать так чтоб нпс спавнился только после получения предмета/ инфопоршня? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 25 декабря, 2023 FFFFF КМБ Урок 4б Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты