Line 73
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: ...\gamedata\scripts\xr_danger.script:116: attempt to index field 'ignore_types' (a nil value)
[spoiler]
Причина:
Игра не понимает значения 0 в danger_ignore. Проще говоря в логике какого-то персонажа параметр danger_ignore равен нулю, либо он отрицателен, либо его вообще нету. Также может быть причина в том, что у какого-то в логике что-то неправильно указано в секции danger.
Лечение:
Для исправления рекомендую перед 116 строкой (номер строки может отличаться) дописать следующий код:
get_console():execute(self.object:name())
То имя в логе, которое будет последним после вылета, указывает на персонажа с кривой логикой.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: ...\gamedata\scripts\.script:34: attempt to call method 'section' (a nil value)
[spoiler]
Причина:
Метод обращения в игре не предусмотрен. Возможно, стоит пересмотреть подход к тому или иному скрипту. Часто такое возможно, когда к серверному объекту применяют клиентские методы и наоборот.
Лечение:
Найти и исправить ошибку.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: ...w of chernobyl\gamedata\scripts\<имя файла>.script:<номер строки>: attempt to perform arithmetic on a nil value
[spoiler]
Причина:
Попытка выполнения арифметической операции над nil.
Лечение:
Найти и исправить ошибку. Обратите внимание на строку с указанным номером, попытка выполнения арифметической оперции над nil происходит именно в ней.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: ...\gamedata\scripts\<имя файла>.script:<номер строки>: attempt to compare number with nil
[spoiler]
Причина:
Попытка сравнения числа с nil.
Лечение:
Найти и исправить ошибку. Обратите внимание на строку с указанным номером, попытка сравнения числа с nil происходит именно в ней.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: ...\gamedata\scripts\<имя файла>.script:<номер строки>: attempt to perform arithmetic on field '?' (a nil value)
[spoiler]
Причина:
Попытка получить значение таблицы по ключу nil.
Лечение:
Найти и исправить ошибку. Обратите внимание на строку с указанным номером, попытка получения значения по ключу nil происходит именно в ней.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: error in error handling
[spoiler]
Причина:
Причину вылета назвать достаточно трудно, вероятно это что-то глубоко движковое. Такой вылет может вызывать передача клиенсткого объекта в функцию switch_offline.
Лечение:
В случае передачи клиентского объекта - устранить ошибку. Но определить причину в большинстве случаев крайне проблематично - попробуйте загрузить последнее сохранение.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: attempt to call a nil value
[spoiler]
Причина:
Происходит при попытке вызвать конструктор класса, которого не существует.
Лечение:
Найти и исправить ошибку.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : D:\xray-svn\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: C stack overflow
[spoiler]
Причина:
Ошибка также может появиться со строкой 74. Переполнение стека. Смотрим внимательно: lua_error. Ошибка возможно в скриптах.
Лечение:
Загрузка последнего сохранения.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: No such operator defined
[spoiler]
Причина:
Попытка использовать для какого-то объекта, несуществующий метод. Зачастую путаница с серверными и клиентскими метода.
Лечение:
Найти и исправить ошибку.
[/spoiler]
[hr]
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : Arguments : LUA error: ...\gamedata\scripts\<имя файла>.script:<номер строки>: unfinished capture
[spoiler]
Причина:
Единственной причиной данного вылета которую я нашёл, это попытка использовать для функции string.find в качестве шаблона "волшебный символ" открывающуюся круглую скобку, т.е. попытка найти скобку таким образом:
local p = string.find(str, "(")
Лечение:
Для поиска открывающейся круглой скобки используйте параметр plain для данной функции со значением true, он выключает возможность поиска по шаблону и в таком случае производится поиск подстроки как есть:
local p = string.find(str, "(", 1, true)
[/spoiler]
[hr]
[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 : [error]Arguments : LUA error: ...ing\s.t.a.l.k.e.r\gamedata\scripts\inv_system.script:1674: attempt to call function 'GetCommand_TakeSlot' (a nil value) stack trace:
[spoiler]
Казалось бы, причина ясна - вызов функции, которой не существует. Однако функция есть, и называется именно так, и с ней все в порядке. как и с самим файлом скрипта тоже - в нем нет синтаксических ошибок, игра не ругается на него самого, заявляя что он 'a nil value'
Причина оказалась вот в чем. В начале скрипта, есть таблица, такого вида:
tbl = { string_key1 = number, string_key2 = number, ...
а далее есть еще одна таблица. вот такого вида:
tb_funcs = { [tbl.string_key1] = function(args...) ... end, ...
то есть, значения ее - функции. а ключами являются значения из первой таблицы.
Ну так вот. в первой таблице поменял имя одного из ключей. А во второй - забыл это сделать. Получилось что во второй таблице, одна из функций находится по ключу, который вообще то равен nil.
А причем же тут та функция, которую мы вызывали, и вылетели с нею в лог? да вообще ни при чем, она просто находилась в том же файле ниже по тексту.
Вывод - когда делаете в таблицах ключи вида массив/модуль.значение - убедитесь что это значение не равно nil ) а то сталкер об этом нормально не скажет.
[/spoiler]