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

[SoC] Ковыряемся в файлах


Halford

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

Добрый день.

Ловлю вылет при спавне в трупах новых патронов. Добавил патроны 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. 

Поделиться этим сообщением


Ссылка на сообщение
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))

Это строка из оригинала, сам скрипт я не трогал. 

Поделиться этим сообщением


Ссылка на сообщение
8 минут назад, HellRatz сказал:

Это как? Не припомню, чтобы это требовалось при введении новых патронов и вообще предметов. Сам никогда не трогал _г.скрипт в таких случаях и все было хорошо.

Я пробовал и с _g и без - вылет один и тот же. А вообще, подсмотрел на одном из форумов про то, что регистрация патрона там необходима. В этом скрипте есть в самом конце таблица с патронами и квестовыми предметами. 

Поделиться этим сообщением


Ссылка на сообщение
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) 

Поделиться этим сообщением


Ссылка на сообщение

@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

 

Поделиться этим сообщением


Ссылка на сообщение

@WinCap, я сейчас изменил название файла на death_items_count.ltx и всё заработало. У меня тупо несколько лет на компе лежал файл с неправильным названием. Как такое вышло - понятия не имею, я никогда не трогал файлы из распакованных архивов, правил только скопированные в новую геймдату. Мда... А на инклуды я всегда смотрел только мельком - я не думал, что в файле, на котором работала игра, могла быть ошибка. Может я сам когда-то, зачем-то поменял файлу название, а может и программа что-то не так распаковала. В любом случае огромное человеческое спасибо за помощь и за то, что откликнулись, народ. 

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   1 пользователь

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