Overf1rst 1 503 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 24 мая (изменено) 3 часа назад, Emmis сказал: а почему нет? Ну ОК. SWEAW Симулянтам можно прописать эксклюзивную логику, но поступать так сомнительно, по причине того, что такие сквады имеют рандомный состав НПС, как по количеству так и по составу. Для таких целей (тем более НПС игнорирующих атаки) лучше использовать специально сделанные для этого сквады. Логика НПС требует наличия либо путей либо смартковеров, поэтому разбираться с all.spawn вам придется - это база (исключение составляет мод SGM 2.2, там логику НПС можно построить на использовании индексов левел-графов). Изменено 24 мая пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 661 Опубликовано 24 мая Emmis что-то странное, киньте полный лог. Тут явно ошибка с симуляцией, но конкретнее я не понимаю. Как я понимаю, слетает функция проверки достижения актора симуляционным отрядом. А почему слетает? Причин, я думаю, может быть много. Можно попробовать постепенно удалять из спавна симуляционные объекты, пока не пройдет, чтобы найти примерную причину хотя бы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 25 мая (изменено) Всем еще раз привет. Вот с таким логом вылетает SDK при попытке открыть параметры или переместить смарт после его создания на уже существующем графпоинте: Спойлер [error]Expression : b [error]Function : X:\stalker_addon\sources\trunk\xrCore\Xr_ini.cpp [error]File : X:\stalker_addon\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 703 [error]Description : name[zaton_smart_terrain] already exist in section[d:\stcopsdk\sdk0.7fullwin64\x-ray_cop_sdk\editors\rawdata\levels\zaton.level] Почти такой же лог при попытке зарегать в новом графпоинте новый смарт для создания, только вместо [zaton_smart_terrain] просто [zaton_terrain]. Имя регистрируемого смарта отличается от всех существующих в game_graphs.ltx. Изменено 25 мая пользователем SWEAW Дополнение описания проблемы Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 121 Опубликовано 25 мая SWEAW Можно проверить на дубли, открыв в текст. редакторе: rawdata\levels\level_name\spawn.part, имена объектов в строке: name = zat_b30_sr_control ищешь нужное, исправляешь. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 25 мая Yara не помогло. Никаких дубликатов не нашел, как-то получилось создать новый графпоинт (при чем пару раз абсолютно рандомно вылетало на этапе самого размещения), бахнуть на нем смарт террейн (тоже несколько вылетов при попытке открыть параметры или переместить/повернуть) и даже открыть настройки последнего, но на этом все, потому что после нажатия на закрытие окна настройки стабильный вылет с тем же самым логом. 3 часа назад, SWEAW сказал: Лог (Скрыть контент) [error]Expression : b [error]Function : X:\stalker_addon\sources\trunk\xrCore\Xr_ini.cpp [error]File : X:\stalker_addon\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 703 [error]Description : name[zaton_smart_terrain] already exist in section[d:\stcopsdk\sdk0.7fullwin64\x-ray_cop_sdk\editors\rawdata\levels\zaton.level] Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AfterGlow 566 Опубликовано 26 мая SWEAW покажи путь к сдк. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 26 мая AfterGlow проводник: "D:\STCoP SDK\SDK 0.7 Full Win64\X-Ray_CoP_SDK\editors" На всякий случай еще то, что прописывал в параметрах конвертера для декомпила локаций, мало ли, может там накосячил где-то: converter.ini: [3870_config]:3456_config $game_data$ = D:\STCoP SDK\SDK 0.7 Full Win64\X-Ray_CoP_SDK\editors\gamedata\ $game_levels$ = D:\STCoP SDK\SDK 0.7 Full Win64\X-Ray_CoP_SDK\editors\gamedata\levels\ spawn_version = cop fsconverter.ltx: $sdk_root$ = false| false| D:\STCoP SDK\SDK 0.7 Full Win64\X-Ray_CoP_SDK\editors\ Но как бы никакой киррилицы, системных дисков и папок Program Files Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AfterGlow 566 Опубликовано 26 мая SWEAW убери пробелы в пути 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 26 мая AfterGlow поверить не могу, что дело было именно в такой банальщине.. убрал пробелы, СДК наконец-таки съел настроенный смарт без вылета. Спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Doloremque 527 Опубликовано 26 мая Доброго времени суток! Как добавить возможность поговорить со всеми сталкерами из отряда? Чтобы игрока не отправляли со всеми вопросами к главному Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 26 мая Stalker Tom Измените дефотные настройки схем в gulag_general.script. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
D4sh4 1 Опубликовано 28 мая (изменено) Господа, подскажите гайд / инструкцию, который можно почитать, как добавить в игру, в данном случае в ЗП, новые боеприпасы? Ну, как новые, 12х76 "Дротик" вырезанный хочу в игру добавить, для начала. И улучшенный 7,62х54 7Н14 из ТЧ/ЧН. Для обучения, я думаю, пойдёт. ЗЫ. от А до Я, начиная от модели, иконки и описания, до настройки в конфиге, прописке этого патрона в нужных файлах, чтобы игра его читала и не вылетала, прописке торговцам, в тайники и т.д. Изменено 28 мая пользователем D4sh4 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 28 мая Всем доброго времени суток. Подскажите, помню, есть какой-то параметр, влияющий как бы на "размер" актора. С его помощью можно настроить, например, возможность обходить нпс стоящих в проходах (и вообще подходить к ним вплотную). Также по всей видимости этот параметр помогает актору лазать по некоторым неудобным fake-лестницам. Напомните, пожалуйста, что за параметр и где его менять. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 28 мая (изменено) Gerbys actor.ltx ph_box0_center = 0.0, 0.9, 0.0 ph_box0_size = 0.35, 0.9, 0.35 ph_box1_center = 0.0, 0.75, 0.0 ph_box1_size = 0.35, 0.75, 0.35 ph_box2_center = 0.0, 0.6, 0.0 ph_box2_size = 0.35, 0.6, 0.35 0 - полный рост, 1 - присяд, 2 - полный присяд Изменено 28 мая пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 28 мая И снова всем привет. Каким образом можно в ЗП прописать обновление ассортимента у торговцев, привязанное не к каждой загрузке сохранения (ибо это очевидно абузится), а к периоду времени, к примеру, раз в несколько игровых часов или дней. Пытался гуглить, какие-то отголоски упоминания подобной системы вроде как есть в разных обсуждениях Дед Эир, Аномали и даже где-то есть тема про ОП-2.2, однако ничего существенного там найти не удалось. А скачивать десятки гигабайт ради поиска нескольких условно текстовых файлов крайне накладно по множеству причин. Ну и ограничивается ли дело только скриптами да конфигами, или для этого нужно еще и в исходниках движка ковыряться? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 28 мая SWEAW Мне кажется это делается в файле trade_manager.script в функции update. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 29 мая denis2000 насколько я понял, в update основную роль здесь играет этот кусок: Спойлер function update(npc) local tt = trade_manager[npc:id()] if tt == nil then printf("TRADE [%s]: tt is nil", npc:name()) return end if tt.update_time ~= nil and tt.update_time < time_global() then return end tt.update_time = time_global() + 3600000 local str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_condition) if(str=="" or str==nil) then abort("Wrong section in buy_condition condlist for npc [%s]!", npc:name()) end if tt.current_buy_condition ~= str then --'printf("TRADE [%s]: buy condition = %s", npc:name(), str) npc:buy_condition(tt.config, str) tt.current_buy_condition = str end str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.sell_condition) if(str=="" or str==nil) then abort("Wrong section in buy_condition condlist for npc [%s]!", npc:name()) end if tt.current_sell_condition ~= str then printf("TRADE [%s]: sell condition = %s", npc:name(), str) npc:sell_condition(tt.config, str) tt.current_sell_condition = str else printf("TRADE [%s]: current = %s sell = %s", npc:name(), tostring(tt.current_sell_condition), tostring(str)) end str = tonumber(xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_item_condition_factor)) if tt.current_buy_item_condition_factor ~= str then npc:buy_item_condition_factor(str) tt.current_buy_item_condition_factor = str end if tt.buy_supplies == nil then return end str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_supplies) if(str=="" or str==nil) then abort("Wrong section in buy_condition condlist for npc [%s]!", npc:name()) end if tt.current_buy_supplies ~= str then if tt.resuply_time ~= nil and tt.resuply_time < time_global() then return end --'printf("TRADE [%s]: buy_supplies = %s", npc:name(), str) npc:buy_supplies(tt.config, str) tt.current_buy_supplies = str tt.resuply_time = time_global() + 24*3600000 end end Мол, обновлять (что-то?) каждый игровой час, а ассортимент каждые игровые сутки. Но еще там присутствует две секции save и load, где участвуют уже resuply_time и update_time: Спойлер function save(obj, packet) local tt = trade_manager[obj:id()] set_save_marker(packet, "save", false, "trade_manager") --' Сохраняем присутствует ли инициализированная торговля в принципе. if tt == nil then printf("TRADE SAVE [%s]: ignored", obj:name()) packet:w_bool(false) return else packet:w_bool(true) end packet:w_stringZ(tt.cfg_ltx) printf("TRADE SAVE [%s]: current_buy_condition = %s", obj:name(), tostring(tt.current_buy_condition)) if tt.current_buy_condition == nil then packet:w_stringZ("") else packet:w_stringZ(tt.current_buy_condition) end printf("TRADE SAVE [%s]: current_sell_condition = %s", obj:name(), tostring(tt.current_sell_condition)) if tt.current_sell_condition == nil then packet:w_stringZ("") else packet:w_stringZ(tt.current_sell_condition) end printf("TRADE SAVE [%s]: current_buy_supplies = %s", obj:name(), tostring(tt.current_buy_supplies)) if tt.current_buy_supplies == nil then packet:w_stringZ("") else packet:w_stringZ(tt.current_buy_supplies) end local cur_tm = time_global() if tt.update_time == nil then packet:w_s32(-1) else packet:w_s32(tt.update_time - cur_tm) end if tt.resuply_time == nil then packet:w_s32(-1) else packet:w_s32(tt.resuply_time - cur_tm) end set_save_marker(packet, "save", true, "trade_manager") end function load(obj, packet) set_save_marker(packet, "load", false, "trade_manager") local a = packet:r_bool() if a == false then printf("TRADE LOAD [%s]: ignored", obj:name()) return end trade_manager[obj:id()] = {} local tt = trade_manager[obj:id()] tt.cfg_ltx = packet:r_stringZ() printf("TRADE LOAD [%s]: cfg_ltx = %s", obj:name(), tostring(tt.cfg_ltx)) tt.config = ini_file(tt.cfg_ltx) a = packet:r_stringZ() printf("TRADE LOAD [%s]: current_buy_condition = %s", obj:name(), tostring(a)) if a ~= "" then tt.current_buy_condition = a obj:buy_condition(tt.config, a) end a = packet:r_stringZ() printf("TRADE LOAD [%s]: current_sell_condition = %s", obj:name(), tostring(a)) if a ~= "" then tt.current_sell_condition = a obj:sell_condition(tt.config, a) end a = packet:r_stringZ() printf("TRADE LOAD [%s]: current_buy_supplies = %s", obj:name(), tostring(a)) if a ~= "" then tt.current_buy_supplies = a end local cur_tm = time_global() a = packet:r_s32() if a ~= -1 then tt.update_time = cur_tm + a end a = packet:r_s32() if a ~= -1 then tt.resuply_time = cur_tm + a end set_save_marker(packet, "load", true, "trade_manager") end И вот что в них происходит, у меня вообще, честно говоря, не выходит переварить, понимание скриптов пока очень сложно дается. Если разбираешься, можешь пожалуйста пояснить, где подвох? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 29 мая 45 минут назад, SWEAW сказал: там присутствует две секции save и load, где участвуют уже resuply_time и update_time Это функции записи/восстановления переменных скрипта в файл/из файла сохранения. В частности сохраняется и загружается время следующего апдейта resuply_time и update_time, а также текущая секция снабжения торговца current_buy_supplies. 47 минут назад, SWEAW сказал: обновлять (что-то?) каждый игровой час, Не игровой, а час реального времени. Обновляются коэффициенты продажи/покупки, а также фактор состояния товара покупаемого торговцем (если они отличаются от параметров которые хранятся в самом скрипте). А вот снабжение торговца проверяется иначе: Если секция снабжения торговца изменилась, то проверяется превышает ли текущее реальное время resuply_time (сутки реального времени после последнего апдейта снабжения) и только в этом случае происходит снабжение и обновление времени resuply_time. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 29 мая 1 час назад, denis2000 сказал: Если секция снабжения торговца изменилась, то проверяется превышает ли текущее реальное время resuply_time (сутки реального времени после последнего апдейта снабжения) и только в этом случае происходит снабжение и обновление времени resuply_time. То есть, если, условно, поменять global_time на CTime (она же вроде отвечает за игровое время?), будет зависимость именно от времени в игре? И еще остается проблема с полным игнором игрой этих самых зависимостей в реальных часах, а вместо этого обновлением после каждой загрузки сейва. Пробовал глядеть файлы xr_s и bind_trader, потому что в первом есть функция on_game_load, а во втором, очевидно, слово trader, но дальше этих совпадений цепочку зависимостей продлить к сожалению не удалось. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 29 мая 4 часа назад, SWEAW сказал: То есть, если, условно, поменять global_time на CTime (она же вроде отвечает за игровое время?), будет зависимость именно от времени в игре? Да, только game.CTime() и формат времени сам совершенно иной! Просто заменить не получиться. 4 часа назад, SWEAW сказал: И еще остается проблема с полным игнором игрой этих самых зависимостей в реальных часах, а вместо этого обновлением после каждой загрузки сейва. Не знаю есть ли такая проблема в принципе и чем она вам мешает, ведь в любом случае, для начала должна секция снабжения переключиться, а уж потом время проверяется. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 293 Опубликовано 29 мая (изменено) Здравствуйте. Пока пол года не занимался модом, вышла новая версия open xray и интересный мне оружейный пак. Старый оружейный пак и старую версию open xray удалил. При переносе мода на новое вылетает с таким логом в конце загрузки: [error] Expression : <no expression> [error] Function : handler_base [error] File : D:\a\xray-16\xray-16\src\xrCore\xrDebug.cpp [error] Line : 860 [error] Description : segmentation fault Изменено 29 мая пользователем Skala Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SWEAW 35 Опубликовано 29 мая 5 часов назад, denis2000 сказал: Да, только game.CTime() и формат времени сам совершенно иной! Просто заменить не получиться. Попробовал заменить time_global() на game.time(), ибо вычитал на АМК-форуме, что оно тоже возвращает время с начала игры в миллисекундах, то есть размерность и тип величины одинаковые, только время уже именно игровое, что, по идее, должно было сработать, но по итогу не сработало и ассортимент перестал обновляться вообще, хотя вылетов тоже не было. 5 часов назад, denis2000 сказал: Не знаю есть ли такая проблема в принципе и чем она вам мешает Это огромная проблема и мешает она очень сильно, потому что, как я в исходном посте объяснял, это оставляет возможность абузить торговцев через сейв-лоад, а абузы, даже потенциальные, это, как минимум, не очень хорошо. 5 часов назад, denis2000 сказал: для начала должна секция снабжения переключиться, а уж потом время проверяется. Как тогда можно поменять порядок проверки на обратный? Ведь получается смысла в проверке времени нет, когда на любом ф5-ф9 первой обновляется секция снабжения. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 31 мая SWEAW Вам не порядок проверки или систему отсчета нужно менять, вам нужно искать причину того, что проверка не работает. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kisel_s_Molinkou 0 Опубликовано 31 мая (изменено) Дополнено 30 минуты спустя Как сменить цвет иконки перехода на другую локацию? Изменено 31 мая пользователем Kisel_s_Molinkou Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 976 Опубликовано 2 июня В 31.05.2024 в 12:32, Kisel_s_Molinkou сказал: Как сменить цвет иконки перехода на другую локацию? В файле map_spots_***.xml изменить параметры RGB у требуемой метки. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты