Чешский 0 Опубликовано 9 Марта 2020 Добрый день. Ловлю вылет при спавне в трупах новых патронов. Добавил патроны 7.62х39, зарегал их в _g.script, прописал их добавленному в игру (и прописанному в mp_ranks) СКСу и зарегистрировал в death_generic.ltx, прописал коэффициенты/количество в death_by_levels.ltx, death_by_communities.ltx, death_by_count.ltx, однако при убийстве НПС вылет с логом: [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...w of chernobyl\gamedata\scripts\death_manager.script:139: attempt to index field '?' (a nil value) Искал везде, но ответ не могу найти уже несколько лет. Игра: Сталкер ТЧ 1.0004. Поделиться этим сообщением Ссылка на сообщение
Чешский 0 Опубликовано 9 Марта 2020 2 часа назад, Zander_driver сказал: Ищите плагин для проверки синтаксиса Lua в Notepad, от Charsi. Он тут где-то на форуме был. Я не знаю стоит ли проверять death_manager - он остался неизменным. Я даже не клал его в геймдату, игра берет скрипт из игрового архива. На всякий случай я проверил скрипт с плагином на синтаксис - я не совсем понимаю как он работает. Установил плагин, в нотпаде запустил проверку синтаксиса и... Ничего. Попробовал рандомно вписать кириллицу в скрипт - тоже не реагирует. Да и, повторюсь, мне кажется, что дело не в скрипте, я работал только с конфигами. 5 минут назад, naxac сказал: @Чешский, а можно увидеть 139 строку из вашего death_manager.script? Да, конечно. local number = math.ceil(math.random(count_by_level[k].min, count_by_level[k].max)) Это строка из оригинала, сам скрипт я не трогал. Поделиться этим сообщением Ссылка на сообщение
Чешский 0 Опубликовано 9 Марта 2020 8 минут назад, HellRatz сказал: Это как? Не припомню, чтобы это требовалось при введении новых патронов и вообще предметов. Сам никогда не трогал _г.скрипт в таких случаях и все было хорошо. Я пробовал и с _g и без - вылет один и тот же. А вообще, подсмотрел на одном из форумов про то, что регистрация патрона там необходима. В этом скрипте есть в самом конце таблица с патронами и квестовыми предметами. Поделиться этим сообщением Ссылка на сообщение
Чешский 0 Опубликовано 9 Марта 2020 18 минут назад, Zander_driver сказал: Выводите в лог, чему равны k, и что представляет собою count_by_level, выше этой строки. Тут уже, собственно, все очевидно. Извиняюсь, но не могу вдуплить... А как это значение в лог вывести? Скрипт пытается взять элемент таблицы по ключу k, либо поле в этом элементе. А там обнаруживается nil. Проблема в некорректности данных Извиняюсь, но не могу вдуплить... А как это значение в лог вывести? Скрипт пытается взять элемент таблицы по ключу k, либо поле в этом элементе. А там обнаруживается nil. Проблема в некорректности данных Как я понимаю, "k" это коэфициент для предмета в death_by_level? Ну типа x вот тут? ;Аммуниция ammo_7.62x39_fmj = x Я прописал в этом конфиге свой патрон и выставил коэффициент 1. Честно, я не знаю языков программирования и полез заниматься моддингом исключительно по туторам. 18 минут назад, WinCap сказал: @Чешский, Новые патроны нужно прописывать в: misc\death_generic.ltx misc\death_items_count.ltx misc\death_items_by_levels.ltx misc\death_items_by_communities.ltx. Я прописал во всех этих файлах. В count для каждого уровня сложности отдельно, по два значения через запятую (от x до y) Поделиться этим сообщением Ссылка на сообщение
Чешский 0 Опубликовано 9 Марта 2020 @Zander_driver, я подрубил твой модуль (кинул в бин расширение RvP, создал файл zander_log.script со скриптом из спойлера и объявил функцию через _g.script), но я не совсем понял как пользоваться этим: zander_log(любое, число, каких-то, ваших, переменных) 1 час назад, WinCap сказал: misc\death_items_count.ltx Может быть, death_items_by_counts*? Там я всё проверил, прописаны для каждого уровня сложности (новичок, сталкер, ветеран, мастер) и тип боеприпаса, и количество в 2-х значениях. Пример: [item_count_0] ;Аммуниция ammo_9x18_fmj = 20, 40 *** ammo_7.62x39_fmj = 20, 40 Поделиться этим сообщением Ссылка на сообщение
Чешский 0 Опубликовано 9 Марта 2020 @WinCap, я сейчас изменил название файла на death_items_count.ltx и всё заработало. У меня тупо несколько лет на компе лежал файл с неправильным названием. Как такое вышло - понятия не имею, я никогда не трогал файлы из распакованных архивов, правил только скопированные в новую геймдату. Мда... А на инклуды я всегда смотрел только мельком - я не думал, что в файле, на котором работала игра, могла быть ошибка. Может я сам когда-то, зачем-то поменял файлу название, а может и программа что-то не так распаковала. В любом случае огромное человеческое спасибо за помощь и за то, что откликнулись, народ. Поделиться этим сообщением Ссылка на сообщение