!Stars! 25 Опубликовано 28 Января Поделиться Опубликовано 28 Января @Kirgudu Спасибо, буду пробовать, на крайний случай придется отказаться от такого задания) Еще вопрос есть, ответь пожалуйста если сможешь. В ЧН (в данном случае в Faction Commander) проблема со спавном монстров, они попросту не появляются хотя все точки спавна для них есть, секция sim_faction в all,spawn тоже, частенько такую формулировку ловлю в консоли: ! Cannot find saved game couldn't_find_spawn_section_for_mar_sim_faction_monster,_science_=_6 ! [LUA][ERROR] ERROR: Couldn't find spawn_section for mar_sim_faction_monster, science = 6 Как это победить? (я знаю, что как-то связано со спавном монстров (возможно поэтому даже) и в ОГСМ это победили, но путей решения нет нигде на данный момент) Ссылка на комментарий
Kirgudu 1 207 Опубликовано 28 Января Поделиться Опубликовано 28 Января @!Stars! не могу сказать точно. С Faction Commander никогда не то что не работал, но и не использовал в игре, не хотелось и вряд ли захочется. Проблему такую в ОГСМ, честно говоря, не особо помню, хотя в последней версии (1.8 CE) лично исправлял много ошибок симуляции. Разве что вспоминается, что для монстров, в отличие от полноценных группировок, получение и возврат секции спавна был необязателен - и то, что я сейчас вижу (но не могу с ходу объяснить), это вроде бы подтверждает... Если всё так, достаточно в скрипте sim_faction.script в местах, предшествующих указанному вылету (там их несколько похожих), добавить проверку на то, что расчёт делается не для монстров. См. строку 299 этого скрипта из мода ОГСМ и похожие выше, при сравнении со скриптом из оригинала (if not self.player_name == "monster" and ...). Но я не поручусь, что данное изменение - единственное требующееся, слишком давно вносил эти правки. Надо пробовать. Инструмент Ссылка на комментарий
!Stars! 25 Опубликовано 28 Января Поделиться Опубликовано 28 Января @Kirgudu Все равно спасибо, буду искать и копать, хотя бы уже есть зацепки какой скрипт и где копать. Еще буквально маленький вопрос, касаемо заданий в игре. Есть ли вменяемый букварь по ЧН, как создавать квесты, принеси подай, убийство НПС, заранее огромное спасибо) Ссылка на комментарий
Kirgudu 1 207 Опубликовано 28 Января Поделиться Опубликовано 28 Января @!Stars! Я таких не знаю. Специалистов по ЧН мало, регулярно заходящих на форум ещё меньше, а тех, кто захочет или сможет поделиться знаниями, раз, два и обчёлся. От меня ответа ждать не стоит, всегда интересовался больше технической стороной дела - читай, скриптами - в конфиги же предпочитаю не лезть, хоть и могу. Но если вдруг у меня возникло бы такое желание, то пошёл изучать то, что сделано до меня, в том числе и в оригинале. Поверь, инфы там вполне достаточно.https://stalkerin.gameru.net/wiki/ - здесь ещё можно поискать, хотя почти уверен, что по ЧН мало что найдётся. Инструмент Ссылка на комментарий
Купер 2 842 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля Товарищи спецы, подскажите, не соображу, что забываю сделать. Платформа эта: OGSM CS 1.8 CE Fixes. Маловероятно, что как-то влияет в данном случае. Имеется такой простенький бред, вызывается из bind_stalker.actor_binder:update(delta) Скрытый текст local food_rad = { ["bread"] = true, ["kolbasa"] = true, ["cheese"] = true, } local idle_time, sect = 0, nil function rad_food() if device().precache_frame >1 then return end if (idle_time or 0) < time_global() then if db.actor and db.actor:alive() and db.actor.radiation > 0.1 then idle_time = time_global() + 60*1000 local rad_food_news = false db.actor:iterate_inventory(function (temp,item) if item == nil or alife():object(item:id()) == nil then return end sect = item:section() if food_rad[sect] and math.random() > 0.5 then --*/ "местечковое" удаление и спаун предметов в инвентаре ГГ fsm.remove_item(item) fsm.spawn_item_in_inv(sect.."_rad") --*/ if not rad_food_news then local news_caption = game.translate_string("st_actor_name") local news_text = "%c[ui_red]"..game.translate_string("food_got_worse") db.actor:give_game_news(news_caption, news_text, "ui_npc_u_actor", 0, 10000) xr_sound.set_sound_play(db.actor:id(), "pda_sos") rad_food_news = true end end end, db.actor) end end end Суть: проверяем по дельте времени уровень радиации ГГ и удаляем/добавляем ему в инвентарь соответствующие предметы. При "горячей" загрузке (из гл. меню, не выходя из игры): stack trace: 001B:00000000 xrEngine.exe [error][ 87] : Параметр задан неверно. При смерти ГГ: stack trace: [error][ 8] : Недостаточно памяти для обработки команды. Ссылка на комментарий
WinCap 316 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля @Купер Внутри iterate_inventory не нужно ничего удалять/спавнить. Обычно все найденные item'ы запоминаются в таблицу, а после выхода из iterate_inventory удаляются. 1 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Купер 2 842 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля Мимо, к сожалению. Где-то в другом месте туплю: Скрытый текст local food_rad = { ["bread"] = true, ["kolbasa"] = true, ["cheese"] = true, } local idle_time, sect = 0, nil function rad_food() if (idle_time or 0) < time_global() then if db.actor and db.actor:alive() and db.actor.radiation > 0.1 then idle_time = time_global() + 60*1000 local spoiled_items = {} db.actor:iterate_inventory(function (temp,item) if item == nil or alife():object(item:id()) == nil then return end sect = item:section() if food_rad[sect] and math.random() > 0.5 then table.insert(spoiled_items, item) end end, db.actor) for _,item in pairs(spoiled_items) do local rad_sec = item:section().."_rad" fsm.remove_item(item) fsm.spawn_item_in_inv(rad_sec) end end end end Симптоматика та же. Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля Потестил в ТЧ и ЧН с выводом rad_sec в сообщение: код рабочий. Видимо, функции переспавна дают сбой. 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Купер 2 842 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля @Norman Eisenherz , ага, тоже догадался проверить сейчас на оригинале - проблемы отсутствуют. Видимо, всё-таки да, что-то "местечковое", как ни странно. Хотя казалось бы - каким боком? Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля Может, конфиг предметов с секцией rad_sec кривой? Хотя, что там может быть, кроме другой иконки… Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Купер 2 842 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля Да тут уже "по месту", самостоятельно разбираться придётся. Вряд ли кто-то помочь сможет, не факт, что даже автор навскидку проблему определит. Там, в актуальном билде серьёзный рефакторинг кода имеет место быть, по сути - бета на нынешний момент. Вот и гадаешь: сам напортачил или помогли. Ссылка на комментарий
Kirgudu 1 207 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля 50 минут назад, Купер сказал: Вряд ли кто-то помочь сможет, не факт, что даже автор навскидку проблему определит. Там, в актуальном билде серьёзный рефакторинг кода имеет место быть, по сути - бета на нынешний момент. Соавтор актуального кода далеко не весь код писал сам, часто за неимением времени просто вставлял найденную главным автором мода функцию как есть. Так что не определю. Да и вылет лично у меня не повторяется - только что успешно облучил для проверки все три типа еды в инвентаре без каких бы то ни было изменений кода, вылета не было. @WinCap чем обусловлена рекомендация? Я, конечно, и сам могу поискать в движке, но трудно и долго, а ответ, возможно, уже есть готовый. 1 Инструмент Ссылка на комментарий
WinCap 316 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля 1 минуту назад, Kirgudu сказал: чем обусловлена рекомендация? Да собственно ничем серьезным - примерами из xr_conditions и xr_effects. ПЫСы вроде так делали. S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Kirgudu 1 207 Опубликовано 2 Февраля Поделиться Опубликовано 2 Февраля 6 минут назад, WinCap сказал: примерами из xr_conditions и xr_effects Ну тогда далеко ходить не надо, есть и обратный пример: cм. функцию death_manager.keep_item, вызываемую из iterate_inventory, и в ней alife():release(). Я подумал, есть запреты, связанные с высвобождением ресурсов на уровне движка, но пока это не подтверждается. Потом при случае пороюсь в плюсах. Инструмент Ссылка на комментарий
BеST 42 Опубликовано 15 Февраля Поделиться Опубликовано 15 Февраля Всем привет! ЧН 15.10 Делаю модификацию. После сохранения квиксейвом и дальнейшей загрузкой этого сейва вылазит такое: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : <no expression> [error]Arguments : LUA error: ...alker clear sky\gamedata\scripts\bind_stalker.script:527: attempt to concatenate field '?' (a nil value) Перехожу на 527 строку, а там:get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty]) Только я в своём моде не делал акцент на этом: local game_difficulty_by_num = { [0] = "gd_novice", [1] = "gd_stalker", [2] = "gd_veteran", [3] = "gd_master" } ..самое интересное, что автосейвы, те что применяются при переходе на уровни работают, а квиксейвы ломаются. Подскажите пожалуйста, на что в теории может ругаться данный вылет, и где я мог накосячить, я уже облазил всю свою gamedata вроде как в конфигах и скриптах всё хорошо.(На первый взгляд) Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 15 Февраля Поделиться Опубликовано 15 Февраля Возможно, нарушен порядок чтения/записи нетпакета ГГ. См. любые недавние изменения со ссылкой на pstor или actor_binder:save() и …load(). Может, таймеры неудачно добавлены? 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
CiberZold 142 Опубликовано 16 Февраля Поделиться Опубликовано 16 Февраля 13 часов назад, BеST сказал: автосейвы, те что применяются при переходе на уровни работают, а квиксейвы ломаются возможно из-за того что при квик-сейве игра не ставится на паузу, один скрипт загружает процесс и не даёт корректно отработать записи сейва, в сейв не попадает инфа об уровне сложности, вообще ЧН самый багованный в этом плане, помню поломки квик-сейвов были обычным делом особенно в непропатченной версии) как вариант можно оставить вообще один уровень сложности и эту строку вообще убрать из биндера загрузки сейва, второй вариант в биндер добавить код проверки значения консольного параметра уровня сложности, который стоит в данным момент в usere, и исходя уже из этого значения выставлять уровень сложности при загрузке ,а не из сохранёнки. 1 Ссылка на комментарий
imcrazyhoudini 208 Опубликовано 16 Февраля Поделиться Опубликовано 16 Февраля @BеST дело не в этом скрипте, откатывай изменения которые делал до сего вылета, у меня на ТЧ такое было. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
BеST 42 Опубликовано 16 Февраля Поделиться Опубликовано 16 Февраля 5 часов назад, imcrazyhoudini сказал: @BеST дело не в этом скрипте, откатывай изменения которые делал до сего вылета, у меня на ТЧ такое было. Да я уже чуть-ли не полный разбор всей gamedata делал, в каждый файл лез, даже который в теории никак не должен относиться сложности игры. Думаю, CiberZold правильно мне подсказал, что не ставится паузы во время сейва - это действительно так. Почему этого не происходит просто понять не могу. Ссылка на комментарий
Zander_driver 10 333 Опубликовано 16 Февраля Поделиться Опубликовано 16 Февраля 3 часа назад, BеST сказал: Почему этого не происходит просто понять не могу Почему - как раз совершенно понятно. Вот здесь черным по белому написано: 15.02.2024 в 17:49, BеST сказал: bind_stalker.script:527: attempt to concatenate field '?' (a nil value) Следовательно, прочитанное из сейва значение сложности игры оказалось nil. А это значит, что при квиксейве - файл сейва записывается неправильно, в искаженном порядке и/или с потерей части информации. Вот и вылетает игра при загрузке такого сейва, т.к. не находит там то, что там быть обязано. Проверяй все действия, связанные с записью каких-то данных в сейв, где-то там косяки. 2 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти