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

Инструмент


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

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


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

[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 CSFinal StrokeHARDWARMOD

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

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

 

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

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули Артоса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 CSFinal StrokeHARDWARMOD

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

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

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

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

Пояснение

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

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

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

 

  • Полезно 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

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

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

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

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

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

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

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

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

 

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

 

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

  • Полезно 1

Telegram-канал RayTwitty Space

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

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

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

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули Артоса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

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

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

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

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

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

Войти

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

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

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

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