Overf1rst 1 424 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 16 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Seraph 20 Опубликовано 7 апреля, 2022 Neptun Не совсем то. Да, там камеры плавно переключаются друг за другом, но условия отвечают не за включение/выключение, а за появление конкретной камеры в принципе (как в катсцене после путепровода, где выполняется проверка, кто из напарников жив). Очень полезная штука, но отвязаться от таймингов даже с ней не вышло. Если я чего-то не заметил, буду благодарен за пример с разбором. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Doctor_Oz 29 Опубликовано 7 апреля, 2022 Добрый день/вечер/утро тем у кого оно доброе, у кого нет тому печенек... У меня возник вопрос по поводу данной функции: function deneg_hren(actor, npc) local actor = db.actor all_money_actor = actor:money() if actor and npc then dialogs.relocate_money(npc, all_money_actor, "out") end end Вопрос заключается в следующем, а возможно ли данную ф-ию поставить на апдейт и чревато ли последствиями? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 829 Опубликовано 7 апреля, 2022 3 часа назад, Boomer сказал: Как сделать функцию, чтобы у актера забрали все имеющиеся предметы в инвентаре? function relocate_actor_inventory_to_box(actor, npc, p) local function transfer_object_item(item) if item:section() ~= "wpn_binoc" and item:section() ~= "wpn_knife" and item:section() ~= "device_torch" then db.actor:transfer_item(item, inv_box_1) end end inv_box_1 = get_story_object (p[1]) actor:inventory_for_each(transfer_object_item) end Функция есть и в оригинальном скрипте, но там она закомментирована. Дополнено 2 минуты спустя Seraph а зачем, собственно, прерывать анимацию, чтобы всё равно переключить на другую анимацию? Просто любопытно. Делай анимации короткими, используй иные методы воспроизведения анимаций, которые можно прерывать в любой момент. Дополнено 8 минуты спустя 1 час назад, Doctor_Oz сказал: Вопрос заключается в следующем, а возможно ли данную ф-ию поставить на апдейт и чревато ли последствиями? А в чем препятствие поставить в апдейт и посмотреть за последствиями? Хотя функция довольно странная. Если ГГ и НПС делают что? Вероятно, должна быть проверка, что они вступили в диалог, потому что результат как раз говорит, что все бабки будут отданы этому НПС, но тут ещё надо добавить проверку, что у ГГ вообще есть деньги. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Seraph 20 Опубликовано 7 апреля, 2022 Neptun речь о банальном упрощении жизни, как это реализовано в других местах. Когда есть один статичный зацикленный кадр, гораздо проще его и использовать, а переключаться по событиям, а не по таймеру, делая кучу однотипных anm-ок. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Сергей Шубин 21 Опубликовано 7 апреля, 2022 Добрый вечер. Я подключил к Зову Припяти локацию Кордон. Заселил её. Организовал симуляцию. Сделал, как в оригинале. Чтобы сталкеры утром уходили на прогулку а вечером шли на базу. Спойлер army = { squad = nil, smart = { base = { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not travel_manager.check_squad_for_enemies(squad) and (target:name() == "esc_b1") end }, surge = { prec = function() return xr_conditions.surge_started() end }, territory= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end }, resource = { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } }, actor = nil }, stalker = { squad = nil, smart = { base = { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not travel_manager.check_squad_for_enemies(squad) and (target:name() == "esc_b6") end }, surge = { prec = function() return xr_conditions.surge_started() end }, territory= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end }, resource = { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } }, actor = nil }, bandit = { squad = { stalker = { prec = function(squad, target) return in_time_interval(8,21) and not xr_conditions.surge_started() and simulation_objects.sim_dist_to(squad, target) <= 150 end } }, smart = { base = { prec = function(squad, target) return in_time_interval(21,8) and not xr_conditions.surge_started() and not travel_manager.check_squad_for_enemies(squad) and (target:name() == "esc_b10") end }, territory= { prec = function() return in_time_interval(8,21) and not xr_conditions.surge_started() end }, surge = { prec = function() return xr_conditions.surge_started() end } }, actor = nil }, Все работает как нельзя лучше. НПС утром дружно идут гулять, к ночи возвращаются на базы и ложатся в кроватки. Воодушевился успехом и решил в этом же скрипте запретить монстрам заходить на базовые смарты. Спойлер monster_predatory_day = { squad = { monster_vegetarian = { prec = function() return in_time_interval(6,19) end }, stalker = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, bandit = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, dolg = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, freedom = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, killer = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end } }, smart = { territory= { prec = function() return in_time_interval(6, 19) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end }, lair = { prec = function() return in_time_interval(19,6) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end } }, actor = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end } }, monster_predatory_night = { squad = { monster_vegetarian = { prec = function() return in_time_interval(21,6) end }, stalker = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, bandit = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, dolg = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, freedom = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end }, killer = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end } }, smart = { territory= { prec = function() return in_time_interval(19,6) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end }, lair = { prec = function() return in_time_interval(6,19) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end } }, actor = { prec = function(squad, target) return in_time_interval(19,6) and simulation_objects.sim_dist_to(squad, target) <= 150 end } }, И получил зеленое насекомое. Спойлер FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : ..\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...ishing\Зов Припяти\gamedata\scripts\sim_board.script:107: attempt to index global 'target' (a nil value) stack trace: 107 строка -- smart = { territory= { prec = function() return in_time_interval(6, 19) and target:name() ~= "esc_b1" and target:name() ~= "esc_b2" and target:name() ~= "esc_b4" and target:name() ~= "esc_b6" and target:name() ~= "esc_b7" end }, Чем то движку не приглянулось указание смартов. Вопрос - чем? Можно ли запретить в sim_board конкретным фракциям лезть на конкретные смарты? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
bad_major 2 Опубликовано 7 апреля, 2022 Платформа: x-ray 1.6 Скрипты/конфиги Создаю смарты на локации. Решил, очень грубо говоря, включить debug для лога в скрипте _g.script в функции "printf(fmt,...)" local con = get_console() con:execute(string.gsub(string.format(fmt,...), " ", "_")) con:execute("flush") При загрузке игры вылет, в логах "Wrong smart name [%s] in start position" - это из функции "sim_board:fill_start_position()", скрипт - sim_board.script. Самый главный вопрос, который меня мучает, что за таблица "smarts_by_names", куда прописывать свои созданные смарты, уже везде прописал, даже в game_graph.ltx и поставил game_graph в Level Editor на локации внутрь смарта, в свойствах в 4 пункте выбрал свой смарт. В файлах по пути ../misc/*.ltx так же везде указал мои смарты, сквады. В скриптах, в принципе, прописал. Остаётся только момент с таблицей в sim_board.script, правильно ли я указал там всё, для объекта "simulation_activities"...но повторил за оригиналом, плюс там скорее настройки поведения смарта, и там не все смарты прописаны. Режим debug (если это можно так назвать) для лога в _g.script убирать не хочу. Что за ошибка то такая - "Wrong smart name [%s] in start position". Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 829 Опубликовано 8 апреля, 2022 10 часов назад, Seraph сказал: Когда есть один статичный зацикленный кадр Анимация привязана к конкретному месту на локации, она при всём желании не может быть использована где бы то ни было ещё. Следовательно, ты говоришь об анимации, которая имитирует вид от 1-го лица. Чтобы ими лучше манипулировать, надо запускать их через скрипты, а не через форму sr_cutscene. Дополнено 2 минуты спустя 6 часов назад, Сергей Шубин сказал: Чем то движку не приглянулось указание смартов. По-моему, нужно создать локальную переменную target Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 761 Опубликовано 8 апреля, 2022 (изменено) Сергей Шубин Уважаемый! Вы заявляете прекондишен-функцию: prec = function(), но параметры в нее не передаете, а внутри нее пытаетесь их проверять: target:name() ~= "esc_b6" Выход: используете параметры - заявляйте их prec = function(squad, target) 12 часов назад, bad_major сказал: "Wrong smart name [%s] in start position" Означает, что в стартовой позиции (конфиг simulation.ltx секции [start_position_***]) заявлен смарт, который фактически отсутствует (не внесен в таблицу smarts_by_names, вноситься в нее смарт автоматически при регистрации объекта данного класса движком). Проверяйте есть ли заявленный смарт в all.spawn. Изменено 8 апреля, 2022 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 661 Опубликовано 8 апреля, 2022 Как сделать, чтобы НПС реагировал на выстрел от игрока? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 761 Опубликовано 8 апреля, 2022 (изменено) del Изменено 8 апреля, 2022 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Doctor_Oz 29 Опубликовано 8 апреля, 2022 22 часа назад, Neptun сказал: А в чем препятствие поставить в апдейт и посмотреть за последствиями? Хотя функция довольно странная. Если ГГ и НПС делают что? Вероятно, должна быть проверка, что они вступили в диалог, потому что результат как раз говорит, что все бабки будут отданы этому НПС, но тут ещё надо добавить проверку, что у ГГ вообще есть деньги. О как... Тогда поставлю вопрос другой... Есть ли такая функция, чтобы игрок лишился ВСЕХ деняг и возможно ли такую функцию поставить в апдейт? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hozar_2002 109 Опубликовано 8 апреля, 2022 (изменено) Крим Рекомендую покрутить каллбек на слух НПС. По идее они слышат выстрелы. 40 минут назад, Doctor_Oz сказал: лишился ВСЕХ деняг db.actor:give_money(-db.actor:money()) Изменено 8 апреля, 2022 пользователем Hozar_2002 2 2 Еще один злодей! 6 ГБ ОЗУ DDR3 1094 мГц (Разносорт) Процессор Intel Xeon E5420 4/4 2.57 ГГц (OC) Видеокарта Gigabyte Radeon RX 580 8192 МБ GDDR5 (Micron) DirectX v12.0 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Koschey 30 Опубликовано 8 апреля, 2022 (изменено) Была тут такая ошибка никто на нее не ответил,сам столкнулся. Знает кто как лечить? при загрузке уровня в ле. FATAL ERROR [error]Expression : assertion failed [error]Function : CEditableObject::UpdateBox [error]File : D:\GameDev\Engine\XRayEngine\XRayEngine\Source\Editors\XrECore\Editor\EditObject.cpp [error]Line : 162 [error]Description : !m_Meshes.empty() stack trace: FATAL ERROR [error]Expression : error handler is invoked! [error]Function : invalid_parameter_handler [error]File : D:\GameDev\Engine\XRayEngine\XRayEngine\Source\XrCore\xrDebugNew.cpp [error]Line : 786 [error]Description : stack trace: Изменено 8 апреля, 2022 пользователем Koschey Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
WolfHeart 843 Опубликовано 9 апреля, 2022 Какому-то объекту в конфиге не задано значение какого-то параметра. Например: ammo_mag_size = В этом случае, оружию не было указано обязательное значение параметра ёмкости магазина. AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 661 Опубликовано 9 апреля, 2022 Я знаю есть функция, которая спавнит динамические объекты, мне она нужна. Единственное, что я помню от неё - это обрывок названия "cond". Нигде не могу отыскать её. Подскажите, прошу вас. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
bad_major 2 Опубликовано 9 апреля, 2022 (изменено) del Изменено 10 апреля, 2022 пользователем bad_major Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 829 Опубликовано 10 апреля, 2022 17 часов назад, Крим сказал: Я знаю есть функция, которая спавнит динамические объекты =spawn_object(объект:точка_спавна) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
OP_artovod 4 Опубликовано 10 апреля, 2022 подскажите кто нибудь встречал уже как то здесь функцию задержки, сейчас вот найти не могу, кто знает как она выглядит? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mad Hikki 280 Опубликовано 10 апреля, 2022 Как запаковать исходный код условного Xray Monolith в dll. Файлы( в "папка с игрой"/bin) для работы с игрой? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Doctor_Oz 29 Опубликовано 10 апреля, 2022 Только что, Hikki сказал: Как запаковать исходный код условного Xray Monolith в dll. Файлы( в "папка с игрой"/bin) для работы с игрой? В Visual Studio 201(7, 9) вроде, других способов нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
most34 4 Опубликовано 10 апреля, 2022 Поставил NPC на карту через smart_cover, прописал логику, респавн, поставил smart_terrain. При старте новой игры, вылет. ЛОГ СНИЗУ FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...\x-ray_cop_sdk\editors\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 661 Опубликовано 11 апреля, 2022 (изменено) У меня комп крашится во время игрового вылета, вот прям зависает и все. Единственное, что выходит делать - это перезагрузка. Однако после неё в логе ничего не написано, просто пусто. Как я могу исправить вылет, если не знаю лога? Никак. Подскажите, как можно исправить краш моей системы во время вылета? Изменено 11 апреля, 2022 пользователем Крим Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 421 Опубликовано 11 апреля, 2022 Крим можно не перезагружать компьютер, а запустить диспетчер задач: Ctrl + Alt + Delete - потом нажать диспетчер задач Снять задачу с X-ray 1.6 engine Может помочь, но лог может не записаться. Лучше всего запускать сталкер через Visual Studio в режиме локального отладчика Windows, тем самым вы 100% узнаете, в чём причина вылета. Дополнено 2 минуты спустя most34 может в логике смарта прописано [logic] а надо [smart_terrain] ? Дополнено 5 минуты спустя Hikki смотри тутор как настроить OpenXray в Visual Studio. Всё по аналогу сделай, только думаю стоить закинуть ресуры этого движка вместо двигла OpenXray. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NitWaifu 0 Опубликовано 12 апреля, 2022 Здравствуйте, товарищи сталкеры! Я тут решился попробовать себя в роли мододела. И вот, хочу мод свой развернуть на оригинальных локациях ЗП, но в зимнем сеттинге. Подскажите мне, пожалуйста, как это можно реализовать? И какой движок использовать (Оригинальный от ЗП или тот же, но модифицированный сообществом)? Заранее благодарю вас! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
St4lker0k 76 Опубликовано 12 апреля, 2022 (изменено) Не знаю почему, но когда я делал заселение локации для своей модификации, столкнулся с таким вылетом: Спойлер * [win32]: free[312764 K], reserved[186392 K], committed[3695084 K] * [ D3D ]: textures[2668306 K] * [x-ray]: crt heap[3410070 K], process heap[3410070 K], game lua[8160 K], render[188 K] * [x-ray]: economy: strings[22550 K], smem[11048 K] compiling shader deffer_model_bump_d-hq_1 compiling shader model_env_lq compiling shader model_env_lq_0 compiling shader accum_emissivel compiling shader deffer_model_bump_d-hq_0 compiling shader deffer_model_flat_d_0 compiling shader model_def_lplanes_0 compiling shader model_env_lq_1 compiling shader model_def_lplanes_1 ! Unknown command: dump_infos compiling shader model_scope_lense compiling shader model_scope_lense_0 intro_start game_loaded * MEMORY USAGE: 3499174 K * End of synchronization A[1] R[1] intro_delete ::update_game_loaded compiling shader yuv2rgb stack trace: [error][ 8] : (null) Не знаю точно, с чем он связан, но как я понял, это связано как-то с точками спавна. Ещё при попытке спавна чего-либо (через Повелитель Зоны, либо при прогрузке НПС в смарте) у меня происходит вылет связанный с недостатком памяти. И происходит он всегда. Я уже писал этот вопрос в тему движка (Advanced X-Ray), и мне ответили, что это с движком не связано. Поэтому я задал этот вопрос сюда. Изменено 12 апреля, 2022 пользователем maks_stalkerok_2000 Как ты относишься к людям, так и люди будут относиться к тебе. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты