Overf1rst 1 499 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AziatkaVictor 3 926 Опубликовано 14 августа, 2020 X721s нужно было добавить ключ "-with_lods", для вопросов для СДК есть специальная тема, пишите туда: 1 Как оформить тему Правила форума Вопросы по сайту Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 14 августа, 2020 Как скриптово закрыть инвентарь ГГ? Дополнено 10 минуты спустя Как прочитать булеан из параметра в .ltx файле? Метод utils.cfg_get_bool не помогает. Мне нужно прочитать значение параметра storyline. Сделал так: local storyline = utils.cfg_get_bool(task_ini, id, "storyline", nil, false, true) if(storyline==false) then xr_sound.set_sound_play(db.actor:id(), "pda_task") end if(storyline==true) then xr_sound.set_sound_play(db.actor:id(), "pda_sos") end Но почему-то всегда параметр true, даже если в секции квеста указать storyline = false. Пробовал убирать true перед закрытием скобок, функция не работала ( не читала значение параметра). Редактировал функцию send_task. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 953 Опубликовано 14 августа, 2020 Winzor task_ini - что в этом параметре передаете? Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 14 августа, 2020 (изменено) Самый примитив, но зато досконально понятно что делаем Читаем из файла задач. Например для задачи [darkvalley_qwest,] делается так: local ini = ini_file("misc\\task_manager.ltx") local string = ini:r_string("darkvalley_qwest", "storyline ") if string == "true" then xr_sound.set_sound_play(db.actor:id(), "pda_sos") else xr_sound.set_sound_play(db.actor:id(), "pda_task") end Изменено 14 августа, 2020 пользователем makdm 1 Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 790 Опубликовано 15 августа, 2020 Как сделать звуки при подбираний предметов и звук при включений и выключений фонаря? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ferveks 140 Опубликовано 15 августа, 2020 35 минут назад, Крим сказал: Как сделать звуки при подбираний предметов и звук при включений и выключений фонаря? Подбирание - файл bind_stalker.script Функция actor_binder:on_item_take Спойлер local s_obj = alife():object(obj:id()) if (s_obj) and (s_obj:section_name()=="имя секции") then xr_sound.set_sound_play(db.actor:id(), "id звука") end Плюс-минус, так Поющий Немо Группа VK Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 790 Опубликовано 15 августа, 2020 (изменено) Ferveks function actor_binder:on_item_take (obj) printf("on_item_take [%s]", obj:name()) if isArtefact(obj) then local anomal_zone = bind_anomaly_zone.parent_zones_by_artefact_id[obj:id()] if anomal_zone ~= nil then anomal_zone:on_artefact_take(obj) else bind_anomaly_zone.artefact_ways_by_id[obj:id()] = nil end local artefact = obj:get_artefact() artefact:FollowByPath("NULL",0,vector():set(500,500,500)) xr_statistic.inc_founded_artefacts_counter(obj:id()) end local s_obj = alife():object(obj:id()) if (s_obj) and (s_obj:section_name()=="имя секции") then xr_sound.set_sound_play(db.actor:id(), "id звука") end --[[ local s_art = alife():object(obj:id()) if(s_art) then xr_statistic.inc_founded_artefacts_counter(s_art:section_name()) else xr_statistic.inc_founded_artefacts_counter() end ]] end treasure_manager.get_treasure_manager():on_item_take(obj:id()) end Добавил функцию, пару вопросов - правильно ли я её добавил? И что должно быть на "имя секции"? Изменено 15 августа, 2020 пользователем Крим Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ferveks 140 Опубликовано 15 августа, 2020 8 часов назад, Крим сказал: Ferveks Показать контент function actor_binder:on_item_take (obj) printf("on_item_take [%s]", obj:name()) if isArtefact(obj) then local anomal_zone = bind_anomaly_zone.parent_zones_by_artefact_id[obj:id()] if anomal_zone ~= nil then anomal_zone:on_artefact_take(obj) else bind_anomaly_zone.artefact_ways_by_id[obj:id()] = nil end local artefact = obj:get_artefact() artefact:FollowByPath("NULL",0,vector():set(500,500,500)) xr_statistic.inc_founded_artefacts_counter(obj:id()) end local s_obj = alife():object(obj:id()) if (s_obj) and (s_obj:section_name()=="имя секции") then xr_sound.set_sound_play(db.actor:id(), "id звука") end --[[ local s_art = alife():object(obj:id()) if(s_art) then xr_statistic.inc_founded_artefacts_counter(s_art:section_name()) else xr_statistic.inc_founded_artefacts_counter() end ]] end treasure_manager.get_treasure_manager():on_item_take(obj:id()) end Добавил функцию, пару вопросов - правильно ли я её добавил? И что должно быть на "имя секции"? Вроде верно. Имя секции - идентификатор предмета. Например, medkit_army. То есть, при взятии армейской аптечки будет отыгрываться определенный звук. Можно сделать один звук на все предметы. Тогда нужна только строка xr_sound.set_sound_play(db.actor:id(), "id звука") Поющий Немо Группа VK Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 15 августа, 2020 Как по скрипту убрать не только оружия из рук ГГ, но и детектор, болт? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
svi_042 285 Опубликовано 16 августа, 2020 Доброго дня. Подскажите, есть ли какой-то вариант динамически менять имя и иконку ГГ во время игры без перезагрузок? Либо, хотя бы, подменять их в инвентаре. Winzor , есть функция level.show_weapon(false), но не уверен, уберёт ли она болт и детектор. Если не сработает, можно попробовать взять xr_effects.disable_ui(actor, npc, p) и на её базе сделать схожую функцию, выпилив строчки с гашением UI. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 790 Опубликовано 16 августа, 2020 Как изменить иконку ярлыка S.T.A.L.K.E.R.? Попытался найти, но ничего не нашел. Подскажите. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 953 Опубликовано 16 августа, 2020 (изменено) Крим 1. Правой кнопкой мыши на я ярлыке, выбрать свойства, закладка "ярлык", кнопка "Сменить значек...", кнопка "Обзор". 2. Разобрать xrengine.exe редактором ресурсов (например PE Explorer) и сменить иконку зашитую в нем. Дополнено 3 минуты спустя 20 часов назад, svi_042 сказал: Подскажите, есть ли какой-то вариант динамически менять имя и иконку ГГ во время игры без перезагрузок? Да, правки движка (для своего мода такую правку переносил Winsor) или пересборка нетпакета актора (этот метод рекомендовал Hozar_2002). Изменено 17 августа, 2020 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 16 августа, 2020 У меня ещё вопросы на 9 странице, на которые так никто и не ответил. Вот ещё вылет. ! [LUA] SCRIPT SYNTAX ERROR ! [LUA] ..._full\gamedata\scripts\yantar_artefacts_gravi_mod.script:1: '=' expected near 'meduza' ! [SCRIPT ERROR]: ..._full\gamedata\scripts\yantar_artefacts_gravi_mod.script:1: '=' expected near 'meduza' ! [ERROR] --- Failed to load script yantar_artefacts_gravi_mod * loading script yantar_artefacts_termal_mod.script ! [LUA] SCRIPT SYNTAX ERROR ! [LUA] ...full\gamedata\scripts\yantar_artefacts_termal_mod.script:1: '=' expected near 'glaz' ! [SCRIPT ERROR]: ...full\gamedata\scripts\yantar_artefacts_termal_mod.script:1: '=' expected near 'glaz' ! [ERROR] --- Failed to load script yantar_artefacts_termal_mod * loading script yantar_artefacts_unikal_mod.script * loading script yantar_detectors_mod.script Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Крим 790 Опубликовано 16 августа, 2020 Мне нужно, чтобы в определенный момент игры саундтрек локаций отключался и больше не работал до того, пока, например не получит инфопоршень? Как можно заставить играть одну музыку и заставить её затихнуть после, также получение инфопоршня? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
simple 118 Опубликовано 16 августа, 2020 Вопрос по моду SGM. На Кордоне-Болотах при гибели NPC с Абаканом игра может иногда вылетать, в т.ч. без лога, т.к. по скрипту конкретно это оружие "исчезает" - release. Происходит это в случае, если сам ствол выпадает из рук. Можно ли как-то решить этот вопрос без отключения этого скрипта? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 17 августа, 2020 6 часов назад, Крим сказал: Мне нужно, чтобы в определенный момент игры саундтрек локаций отключался и больше не работал до того, пока, например не получит инфопоршень? Как можно заставить играть одну музыку и заставить её затихнуть после, также получение инфопоршня? Функции: Включить эмбиент. function sg_ambient_normal(actor,npc,p) local v = xr_logic.pstor_retrieve(actor, 'sg_snd_volume_music', get_console():get_float("snd_volume_music")) get_console():execute("snd_volume_music "..tostring(v)) end Выключить эмбиент. function sg_ambient_none(actor,npc,p) local v = get_console():get_float("snd_volume_music") xr_logic.pstor_store(actor, 'sg_snd_volume_music', v) get_console():execute("snd_volume_music "..tostring(0)) end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 953 Опубликовано 17 августа, 2020 (изменено) simple 1. Вылет не безлоговый, а вполне себе движковый с логом. 2. Случается он не с Абаканом, а в принципе с любым оружием (просто с Абаканом, на определенных локациях с определенными НПС это происходит статистически более часто). 3. Причина его проста и очевидна - удаленное оружие перед этим было выбрано каким-то НПС как цель для подбора в функциях движка. Объект удалили, а в "памяти" НПС цель осталась и как добраться до более несуществующей цели движек не знает. Из последнего пункта очевидно и решение вылета - не удалять оружие выпавшее у убитых НПС. Не могу сказать точно поможет ли телепорт стволов в недоступное место или перенос их в специальный контейнер, а потом удаление... Изменено 17 августа, 2020 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 17 августа, 2020 22 часа назад, simple сказал: Вопрос по моду SGM. На Кордоне-Болотах при гибели NPC с Абаканом игра может иногда вылетать, в т.ч. без лога, т.к. по скрипту конкретно это оружие "исчезает" - release. Происходит это в случае, если сам ствол выпадает из рук. Можно ли как-то решить этот вопрос без отключения этого скрипта? В SGM это дело прописано в файле death_manager.script Найди строку Спойлер if not check_death_item(section) then alife():release(alife():object(item:id()),true) return end Вместо этого попробуй написать такое: Спойлер if not check_death_item(section) then local timer_release = time_global() + 4000 level.add_call( function () if timer_release < time_global() then return true end end, function () alife():release(alife():object(item:id()),true) end ) return end Потом напишешь пропал ли вылет. 1 1 Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 18 августа, 2020 Что означает этот лог? Я не понимаю. FATAL ERROR [error]Expression : ai().game_graph().header().levels().end() != I [error]Function : CALifeGraphRegistry::setup_current_level [error]File : alife_graph_registry.cpp [error]Line : 87 [error]Description : Graph point level ID not found! stack trace: 001B:005624D1 xrCore.dll, xrDebug::fail() 001B:0348E17E xrGame.dll, CDialogHolder::operator=() Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 953 Опубликовано 18 августа, 2020 (изменено) Igor_Misery Причины могут быть разные: 1. graph point (точка появления игрока) на следующем уровне установлен вне AI-сетки. 2. На следующем уровне отсутствует graph point, либо его название отличается от заданного в level changer'е текущего уровня (ключ Level point to change), либо оно вообще не задано. 3. Название следующего уровня (ключ level changer Level to change) не прописано в game_levels.ltx Изменено 18 августа, 2020 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sumrak6835 157 Опубликовано 18 августа, 2020 5 часов назад, Igor_Misery сказал: Что означает этот лог? Я не понимаю. FATAL ERROR [error]Expression : ai().game_graph().header().levels().end() != I [error]Function : CALifeGraphRegistry::setup_current_level [error]File : alife_graph_registry.cpp [error]Line : 87 [error]Description : Graph point level ID not found! stack trace: 001B:005624D1 xrCore.dll, xrDebug::fail() 001B:0348E17E xrGame.dll, CDialogHolder::operator=() Не поставил граф-пойнт, связывающий локации. Он обязателен. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 18 августа, 2020 Только что, sumrak6835 сказал: Не поставил граф-пойнт, связывающий локации. Он обязателен. ? Да вы чё. Я просто поставил в Бар один энергетик для теста, компилятор спавна жалуется на то что нету актора, ставлю актора - игра жалуется на граф поинты. Как компилировать правильно? Дополнено 1 минуту спустя Я всё это дело делал на CoC, у меня даже SDK для CoC есть, в нём есть всё, что есть в игре. Дополнено 2 минуты спустя Тоже самое, что я в ЗП на затон поставлю консерву и игра будет на граф поинты ругаться. Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0ouch 143 Опубликовано 18 августа, 2020 Добрый вечер Создал новый партикл и поместил его в игру. На первом и втором рендере все работает отлично, однако на третьем и четвертом мой партикл почему-то не отображается. В чем может быть причина? Может ему нужно задать какой-то определенный параметр? Вот его настройки: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sumrak6835 157 Опубликовано 18 августа, 2020 3 часа назад, Igor_Misery сказал: ? Да вы чё. Я просто поставил в Бар один энергетик для теста, компилятор спавна жалуется на то что нету актора, ставлю актора - игра жалуется на граф поинты. Как компилировать правильно? Дополнено 1 минуту спустя Я всё это дело делал на CoC, у меня даже SDK для CoC есть, в нём есть всё, что есть в игре. Дополнено 2 минуты спустя Тоже самое, что я в ЗП на затон поставлю консерву и игра будет на граф поинты ругаться. Актор, минимум 4 граф-пойнта, и все создается нормально. По Затону - есть проблема со спавном. Либс весь спавн убирай, либо ищи причину я не згаю Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 18 августа, 2020 22 минуты назад, sumrak6835 сказал: Актор, минимум 4 граф-пойнта, и все создается нормально. По Затону - есть проблема со спавном. Либс весь спавн убирай, либо ищи причину я не згаю Два вопроса. Как скомпилировать спавн локации, чтобы не стирались спавны остальных локаций? И как скомпилировать, чтобы не требовало актора? Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты