Перейти к контенту

Инструмент


Рекомендуемые сообщения

Помогите исправить ошибку, баг с модулем "объекты": когда нажимаю кнопки "сдвинуть вперед, влево, назад и вправо", игра крашится. Модуль телепорта работает.


Выдает такую ошибку:

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...r Тень Чернобылья\gamedata\scripts\lua_helper.script:2284: 'for' limit must be a number


Моды:
Адаптация Оружейного пака Gunslinger WP [1.6] Полная версия + Повелитель Зоны Gold 5.6 Версия 1.0006

@Miko посмотрю на выходных. Возможно, скрытая ошибка в модуле Артоса или не всегда корректный вызов одного из его методов из модуля спавна.

Какая версия Инструмента использована, от какой даты и из какого комплекта?

 

24.04.2025 в 18:29, Miko сказал:

[error]Arguments     : LUA error: ...r Тень Чернобылья\gamedata\scripts\lua_helper.script:2284: 'for' limit must be a number

В том модуле lua_helper, который сейчас лежит в составе комплектов Инструмента, в строке 2284 нет цикла 'for'. Очевидно, что используется более старый комплект Инструмента или в отдельные его файлы вносились изменения. Помочь смогу только с последней версией по ссылке из шапки темы, рекомендую скачать и адаптировать себе именно её по инструкции, потом вернуться сюда с ошибкой, если она снова проявится.

  • Полезно 1

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

@Miko к сожалению, понять, что не так могло быть в какой-то старой версии Инструмента, не представляется возможным. За год с небольшим мод претерпел множество доработок абсолютно во всех своих компонентах.  Какие-то нюансы старой реализации, исправленных багов, сделанных разным способом в разное время фич я просто-напросто не помню. Помочь с адаптацией текущей версии могу, старой - не готов.

 

Предлагаю написать, какую версию основной игры взять в качестве платформы, перечислить все дополнительные моды, которые нужно на неё накатить (где их взять и как и в каком порядке поставить, если есть нюансы), чтобы получить ту сборку, к которой следует подготовить Инструмент. Постараюсь это сделать в течение нескольких дней.

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

Сломался на 4к мониторе, исправление в tool.script:

function tool_manager:InitControls()
    to_log(sModule..":tool_manager:> InitControls") --/#~#

    -- self:SetWndRect(Frect():set(30, 20, 1024, 768))
    self:SetWndRect(Frect():set(30, 20, device().width*0.6, device().height*0.6))

 

 

+ встретил случай передачи имени колбэка в первый аргумент по умолчанию, по этому:

 

function tool_manager:OnTabChange(tab_id)
    to_log(sModule..":tool_manager:> OnTabChange tab_id = [%s]", tab_id) --/#~#
    --/ установка раздела по умолчанию из GetDebugManagerDialog при открытии диалога или чтение текущего раздела

    -- if tab_id then
    if tab_id and tab_id ~= "tool_manager_tab" then

 

От  _Val_,

Отредактировано. Пользуемся кнопкой Код редактора!

  • Спасибо 1
  • Нравится 1
  • Полезно 1

Второе дополнение действительно не помешает, спасибо, внесу в исходники на будущее.

А вот с первым не так однозначно, тут бы универсальности добавить. К сожалению, не имею 4к монитора в наличии для теста, так что придётся добавить простую проверку на что-то вроде device().width > N.

  • Спасибо 1

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

23 часа назад, JohnTikhomirov сказал:

В запакованной модифицированной gamedata работать не будет, я верно понял?

Не будет, к сожалению.
 

Пояснение

Где-то с год назад я в течение месяца экспериментировал с разными сочетаниями настройки папок в fsgame.ltx и методами класса FS: exist(), update_path(), r_open, file_list_open() и file_list_open_ex(), которые, по идее, как раз и должны без проблем работать с запакованными ресурсами наряду с распакованными. Сверялся с кодом ванильного движка, чтобы посмотреть, как работают эти методы и куда они лезут.
Фиг вам, есть проблемы. Обычно заканчивалось всё одним из трёх итогов: либо из игрового архива не читается то, что мне нужно (это при определённых записях в fsgame.ltx), либо читается всё, но игра при этом не запускается или начинает вести себя странно, так как видит (не знаю уж за счёт какого предварительного чтения и кеширования) то, что расположено в подпапках конфигов и пытается использовать дважды или тогда, когда не надо, либо возникал вылет/зависание процесса при попытке чтения определённых файлов из игровых архивов, которые имеют некий изъян.

Возможно, современные модифицированные движки исключают такие сложности, но я с ними не работаю.
В итоге всё без толку, универсального решения я тогда не нашёл, а тратить на это ещё больше времени не посчитал возможным. Отсюда рекомендация необходимые файлы вытаскивать из игровых конфигов и оставлять в распакованном виде.

Будь Инструмент более популярен и востребован, я, может, и вернулся бы к этому вопросу однажды, но пока так.

 

  • Полезно 1

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

7 часов назад, Kirgudu сказал:

Фиг вам, есть проблемы.

Да, с этим всем на ванильном движке каши не сварить. Я для этого делал отдельный экспорт интерфейса работы с XML (который дергает штатные методы работы с ресурсами игры). Но это уже правки движка.

Единственное что тут приходит на ум, это автоматизировать процесс

7 часов назад, Kirgudu сказал:

необходимые файлы вытаскивать из игровых конфигов и оставлять в распакованном виде

используя например функцию из анпакера от Charsi: https://disk.yandex.ru/d/w04MOkC2DRPGtg

 

При первом запуске тулзы показывать диалог "Конфиги не найдены. Распаковать?", после чего выдавать сообщение "Конфиги успешно распакованы. Перезапустите игру.".

 

Можно конечно попробовать без перезапуска, но ЕМНИП все функции чтения работают только с кэшированными (на момент запуска игры) файлами.

  • Полезно 1

Telegram-канал RayTwitty Space

10 часов назад, RayTwitty сказал:

используя например функцию из анпакера от Charsi: https://disk.yandex.ru/d/w04MOkC2DRPGtg

Пробовал, только без предупреждения, чтобы автоматом сам распаковывал, и наталкивался на те же ошибки.
Смысл ведь не в том, чтобы распаковать, а потом при повторном запуске взять из кэша - распакованные файлы прекрасно читаются напрямую в момент первого открытия Инструмента после загрузки из сейва. Цель состоит в том, чтобы при настройках fsgame, позволяющих понимать всё содержимое игровых архивов, не дать при этом движку читать какие-то файлы избыточно, с наслоением.
Но да, в направлении отдельного вызова распаковщика с перезапуском игры (для распаковки брать одну иерархию папок, после - другую) можно подумать...

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

23.02.2026 в 19:18, Kirgudu сказал:

Фиг вам, есть проблемы

Ну да, я вот с этим тоже столкнулся. Выяснил что именно file_list_open и file_list_open_ex с маской "misc\*info.xml" заставляют сломаться VFS и движок перестает читать распакованную геймдату. При этом файлы по маске все же находит, но этот поиск и не нужен когда есть секция [info_portions] в system ini.

В итоге сделал чтение через FS:r_open() и r_u8().

 

С LTX тоже самое можно сделать, но в ini_file нет итерации по секциям, так что нужно прикручивать парсер директивы include. Такое решение подойдет для squad_descr.ltx, там все сквады через него включаются.

  • Нравится 1

Новая, финальная версия Инструмента от 2026-10-31

 

Что изменилось

Скорость

  • диалог Инструмента и его разделы обновляются не каждый кадр, а раз в полсекунды;
  • поиск и фильтрация объектов по локациям стали заметно быстрее: "тяжёлые" проверки (определение локации, перевод имён предметов) выполняются один раз на объект и запоминаются, а не повторяются для всех объектов в игре;
  • массовые операции (спавн предметов, сбор и удаление) перестали дёргать движок лишний раз на каждый элемент.

Надёжность

  • исключена возможность вылета при различных действиях, если изменяемый объект уже исчез из игры, отряд уже удалён или текущая группировка игрока не определена;
  • очистка полей при переключении вкладок работает полностью - раньше часть значений оставалась от предыдущей вкладки;
  • разбор XML-файлов теперь защищён: повреждённый файл не вызовет вылет при его чтении;
  • удаление отрядов по списку больше не рискует пропустить отдельные отряды.

По сути игры

  • значения энергии и радиации в разделе "Игрок" применяются по назначению (раньше менялись местами);
  • отношение группировки при вступлении выставляется потолком из конфигов игры, а не жёстким числом;
  • служебные сообщения о группировках показывают правильные названия, а не пустое место.

Разное

  • служебный лог сокращён: одноразовые сообщения помечены, спам в циклах убран, отладочные выводы удалены;
  • устранены дубли кода и мёртвый код; комментарии приведены в соответствие с реальным поведением.

 

Обновлены конструкторы для всех основных платформ и все готовые комплекты.

Хранилище прежнее, ссылка в шапке темы.

 

На этом развитие Инструмента завершено, обновлений больше не планируется, разве только для исправления найденных кем-либо ошибок.

 

Приятного использования!

  • Спасибо 3

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

Добавлен готовый комплект для актуальной на данный момент версии мода Final Stroke (одобрено соавтором).

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

@Kirgudu 

Устал удалять форматирование...

Ну вот таких постов было штуки три.

image.png

  • Спасибо 1

   УРАГАН.png

                 Краткий гид по моду Тайные Тропы 2

                                      ПАРТИКЛЫ TERRA

 

 

 

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
  • Куратор(ы) темы:

×
×
  • Создать...