Справочник вылетов (Line 1 - Line 100)
Questions
Авторы / Ссылка на тему форума / Как найти файл с логом и что с ним делать?
Авторы: @ColR_iT и другие пользователи форума AMK-Team.ru
В некоторых случаях дополнительную информацию
можно почерпнуть из темы Справочника вылетов на форуме (здесь).
Как найти файл с логом?
Файл лога находится в папке путь к которой прописан в качестве параметра app_data_root в файле fsgame.ltx, который находится в корневой директории игры.
В конце файла .log, в случае вылета, после строк FATAL ERROR сохраняется описание ошибки (к сожалению в большинстве случаев не совсем очевидное), по которой можно попытаться определить причину вылета и исправить её.
Если же после вылета .log файл пуст, то определить причину вылета становиться практически невозможным.
Line 11
Expression : e_parent Function : xrServer::Process_event_reject File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 11 Description : parent not found. id_parent=110 id_entity=117 frame=1791
Причина:
Возникает иногда произвольно при смерти неписей. Движок отрабатывая лут изредка теряет серверный объект уничтожаемой вещи, в итоге происходит вылет.
Лечение:
Попробуйте загрузить последнее сохранение.
Line 12
Expression : e_entity Function : xrServer::Process_event_reject File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 12 Description : entity not found. id_parent=7540 id_entity=44047 frame=2075050
Причина:
Возникает иногда произвольно при смерти неписей. Движок отрабатывая лут изредка теряет серверный объект уничтожаемой вещи, в итоге происходит вылет.
Лечение:
Попробуйте загрузить последнее сохранение.
Expression : e_entity Function : xrServer::Process_event_reject File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 12 Description : entity not found.
Причина:
Ошибка 1.0004 патча.
Лечение:
Исправляется установкой более Новой версии патча для ТЧ.
Expression : assertion failed Function : xrServer::Process_event_reject File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 12 Description : e_parent && e_entity
Причина:
Непись умер во время торговли или гранатометания, а движок не успел до удаления серверного объекта непися отрегистрировать его лут. Также происходит во время попытки удаления или смены владельца уже удаленного объекта.
Лечение:
В death_manager.script нужно заменить строки:
alife():release(alife():object(item:id()), true)
на
local obj = item and item:id()and alife():object(item:id()) if obj then alife():release( obj, true ) end
[error]Expression : assertion failed [error]Function : xrServer::Perform_destroy [error]File : D:\prog_repository\sources\trunk\xrGame\xrServer_sls_clear.cpp [error]Line : 12 [error]Description : object->ID_Parent == 0xffff stack trace:
Аналогично, подобное может происходить и в ДРУГИХ скриптах. Лечить - добавив такую же проверку.
Причина: открытый инвентарный ящик пытается уйти в офлайн (например, при "телепортации" актора).
Лечение: Необходимо переводить в оффлайн-онлайн сам инвентарный ящик
alife ():set_switch_online ( sobj.parent_id, false) alife ():set_switch_offline ( sobj.parent_id, true )
И так далее: выяснять по id конкретный объект, разбираться, что с ним происходит, искать, где делается СТРАННОЕ, и исправлять.
Line 22
Expression : ini->section_exist(imm_sect) Function : CHitImmunity::LoadImmunities File : E:\stalker\patch_1_0004\xr_3da\xrGame\hit_immunity.cpp Line : 22 Description : hunter_novice_resistance
Причина:
Ошибка в секции иммунитета, скорее всего костюма.
Лечение:
Поиском по файлам игры найти указанную секцию и проверить правильность её написания, а также её наличие в принципе.
Line 23
Expression : assertion failed Function : xrServer::Process_event_ownership File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_ownership.cpp Line : 23 Description : e_parent
Причина:
При обработке события связанного с 'обладаемым' предметом - сам объект (parent) не был обнаружен.
Такое порой случается, когда или объект удаляется из игры без требуемой отрегистрации. Например, порой НПС, стреляя из ствола (отыгрываются партиклы), попав в аномалию, разрывается - сервер должен продолжить иль прекратить огонь из оружия -> ищет по владельцу стреляющий ствол и ... не находит.
Лечение:
Вылет вряд ли может быть стабильным, поэтому иногда достаточно просто загрузить последнее сохранение.
А бороться можно только выверяя все коды, в которых удаляются предметы/объекты на предмет необходимых отрегистраций и снижать заселяемость локаций. Чем меньше неписей/монстров - тем меньше вероятность такой коллизии.
Line 24
Expression : e_entity->ID_Parent == id_parent Function : xrServer::Process_event_reject File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 24 Description : device_pda23827 Arguments : gar_stalker_respawn_123826
Причина:
Description и Arguments как правило разные. Вылет движковый и достаточно редкий. Случается тогда, когда движок пытается присвоить parent предмету, в данном случае device_pda23827, непесю (gar_stalker_respawn_123826), а предмет УЖЕ принадлежит ему, т.е. device_pda23827:parent() == gar_stalker_respawn_123826:id()
Лечение:
?
Line 27
Expression : !hud_snd.sounds.empty() Function : HUD_SOUND::LoadSound File : E:\stalker\patch_1_0004\xr_3da\xrGame\HudSound.cpp Line : 27 Description : there is no sounds for: Arguments : wpn_rpg7
Причина:
Количество прописанных звуков в секции указанного оружия не соответствует количеству звуков класса прописанного там же.
Лечение:
Проверьте соответствие класса оружия и количества звуков на примере оригинальных файлов.
Line 30
Expression : no_assert Function : CALifeStoryRegistry::add File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_story_registry.cpp Line : 30 Description : Specified story object is already in the Story registry!
Причина:
Игра определила одинаковые story_id для двух и более объектов. Возникнуть это может в нескольких случаях:
1. Более явная причина: в all.spawn либо скриптом разным объектам присвоен один и тот же story_id;
2. При изменениях в спавне, т.е. добавлении или удалении секций, происходит переиндексация и секции, которые после добавленой/убавленной - получают иные индексы. В модах, в которых происходит спавн объектов по индексам из all.spawn'a (alife():create(индекс_из_all_spawn)), а это АМК, моды на его основе и не только, происходит ошибочное удаление (не того объекта) и соответственно дублированный спавн не удаленного объекта - вот вам и дублированный сид.
Лечение:
1. Найти поиском дублированные сиды и сделать их разными;
2. Добавлять секции в all.spawn исключительно с индексами превышающими максимальный в принципе в all.spawn, а не в файле. В случае удаления ситуация сложнее. Если всё же нужно избавиться от объекта в all.spawn, удаляйте его скриптом, тем самым не нарушая последовательность индексации.
Line 34
Expression : res!=-1 Function : get_rank File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\Restrictions.cpp Line : 34 Description : cannot find rank for Arguments : wpn_rem870short
Причина:
Указанное оружие, в данном случае wpn_rem870short, не прописано в mp_ranks.ltx.
Лечение:
Добавить оружие в секции по аналогии с имеющимися. Либо избавиться от вылета на совсем посредством правки dll.
[hr]
Expression : fatal error Function : weapon_hud_value::load File : E:\stalker\patch_1_0004\xr_3da\xrGame\WeaponHUD.cpp Line : 34 Description : <no expression> Arguments : There is no 'muzzle' bone for weapon 'wpn_usp_hud'.
Причина:
В указанной секции оружия (обычно это худ-модель), в данном случае wpn_usp_hud, для параметра fire_bone указана неверная кость (muzzle).
Лечение:
Найти и исправить ошибку.
Line 35
Expression : assertion failed Function : CLevelGraph::CLevelGraph File : E:\stalker\patch_1_0004\xr_3da\xrGame\level_graph.cpp Line : 35 Description : header().version() == XRAI_CURRENT_VERSION
Причина:
Файл level.gct не соответствует game.graph, скорее всего файлы из разных частей частей игры, т.к. возникает зачастую во время переноса локаций из одной части игры (билды в том числе) в другую.
Лечение:
Проверьте соответствие файлов.
Line 37
Expression : fatal error Function : xrServer::Process_update File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_update.cpp Line : 37 Description : <no expression> Arguments : Beer from the creator of 'WP_SHOTG'
Причина:
Вылет движковый и рандомный. Название класса может быть другим: O_ACTOR, S_ACTOR, AI_CROW, WP_ASHTG. Побился нет-пакет объекта при апдейте. Также, возможной причиной является использование трейнеров, ArtMoney и прочих подобных программ.
Лечение:
Загрузка последнего сохранения.
Line 39
Expression : fatal error Function : xrServer::Process_update File : D:\prog_repository\sources\trunk\xrGame\xrServer_process_update.cpp Line : 39 Description : Arguments : Beer from the creator of 'S_ACTOR '; initiator: 0x00000001, r_tell() = 66, pos = 5, objectID = 0
Возникает при загрузке игры
Возможная причина:
Неверно прописан параметр class в конфиге какого-либо объекта (необязательно указанного в строке arguments)
Лечение:
Проштудировать конфиги на предмет неверно указанного класса у какого-либо из предметов
[hr]
Expression : assertion failed Function : CItemMgr::Load File : E:\priquel\sources\engine\xrGame\ui\UIBuyWndShared.cpp Line : 39 Description : it!=m_items.end()
B одном из файлов *_game.ltx (вместо * - название типа игры), находящихся по адресу configs\mp, в секции вида [*_base_cost] не прописан какой-то из доступных для покупки в мультиплеере предметов.
Line 42
Expression : assertion failed Function : CResourceManager::_GetBlender File : E:\stalker\patch_1_0004\xr_3da\ResourceManager.cpp Line : 42 Description : Name && Name[0]
Причина:
Возможно ошибка в одной из .ogf моделей.
Лечение:
?
Line 44
Expression : assertion failed Function : _VertexStream::Lock File : E:\stalker\patch_1_0004\xr_3da\R_DStreams.cpp Line : 44 Description : (bytes_need<=mSize) && vl_Count
Причина:
Переполнение видеобуфера на отрисовку.
Лечение:
Снизить настройки графики, либо ограничить дальность видимости на локации. Временным решением может послужить исправление всех silencer_light_range на значения заметино большие, чем silencer_light_var_range, в конфигах оружия. Также воспользуйтесь фиксом .exe файла избавляющий от данной проблемы.
Line 46
Expression : fatal error Function : CObjectAnimator::LoadMotions File : E:\stalker\patch_1_0004\xr_3da\ObjectAnimator.cpp Line : 46 Description : Arguments : Can't find motion file 'water_blow.anm'.
Причина:
Игра не может найти указанный файл анимации камеры.
Лечение:
Проверить наличие данного файла и проверить правильность написания пути до такового.
[hr]
Expression : assertion failed Function : CStepManager::reload File : E:\stalker\sources\trunk\xr_3da\xrGame\step_manager.cpp Line : 46 Description : param.cycles >= 1
Причина:
Ошибка при чтении параметров настройки анимации ходьбы. Ссылка на эту секцию указана в параметре секции непися step_params. А далее там таблица в которой, вероятнее всего и находится ошибка.
Лечение:
Найти и исправить ошибку в таблице.
Line 49
Expression : fatal error Function : CResourceManager::_GetBlender File : E:\stalker\patch_1_0004\xr_3da\ResourceManager.cpp Line : 49 Description : Arguments : Shader 'models\antigas_glass' not found in library.
Причина:
Не найден шейдер models\antigas_glass в библиотеке шейдеров shaders.xr.
Лечение:
Добавить недостающий шейдер, либо избавиться от модели, который данный шейдер использует.
[hr]
FATAL ERROR [error]Expression : 0 [error]Function : ErrorLog [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp [error]Line : 49 [error]Description : You are trying to spawn two or more objects with the same story_id:[pri_b35_jup_b43_stalker_assistant_squad] --> [pri_b35_jup_b43_stalker_assistant_squad10024] try to add:[pri_b35_jup_b43_stalker_assistant_squad10413] stack trace:
Причина:
Дважды или больше раз вызывается спавн объектов с одинаковыми SID
Лечение:
Удалить лишние вызовы спавна
[hr]
FATAL ERROR [error]Expression : 0 [error]Function : ErrorLog [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp [error]Line : 49 [error]Description : object 'pri_b36_sr_ahi_place_pda': activate_by_section: section 'sr_idle@game_started' does not exist stack trace:
Причина:
В рестрикторе (в данном случае 'pri_b36_sr_ahi_place_pda') есть переключение, отсылка к несуществующей секции логики ('sr_idle@game_started').
Лечение:
Проверить наличие секции в логике рестриктора, проверить соответствие названий, или же удалить отсылку к логике.
Line 53
Expression : fatal error Function : CStringTable::Load File : E:\stalker\sources\trunk\xr_3da\xrGame\string_table.cpp Line : 53 Description : <no expression> Arguments : string table xml file not found ui_st_pda.xml, for language rus
Причина:
Вместо rus может быть eng, но суть проблемы остаётся неизменной - в файле localization.ltx в строке language указано название папки (rus в данном случае) в config\text из которой будет браться текст, так вот в этой папке не найден указанный файл (ui_st_pda.xml).
Лечение:
Если добавляли свой файл локализации - проверьте правильно написания имени и наличие файла в нужной папке. Если устанавливали мод - переустановите его.
Line 54
Expression : fatal error Function : CObjectItemSingle<class CUIGameAHunt,1>::server_object File : e:\stalker\patch_1_0004\xr_3da\xrgame\object_item_single_inline.h Line : 54 Description : <no expression> Arguments : Cannot instantiate server object, because server class is not declared!
Причина:
Переводчик даёт вполне адекватное определение. Но на самом деле вылет происходит по причине неопределённого состояния объекта, когда ему установлены оба флага для разрешения перехода в онлайн и оффлайн одновременно.
Лечение:
Найти и исправить ошибку.
Line 58
Expression : fatal error Function : IRender_Visual::Load File : E:\stalker\patch_1_0004\xr_3da\FBasicVisual.cpp Line : 58 Description : <no expression> Arguments : Invalid visual
Причина:
Ошибка модели какого-то объекта.
Лечение:
Найти объект и либо исправить модель, либо заменить, или же удалить сам объект.
Line 63
Expression : W==1 Function : CFileWriter::w File : e:\stalker\patch_1_0004\xrcore\FS_internal.h Line : 63 Description : Can't write mem block to file. Disk maybe full. Arguments : Invalid argument
Причина:
Переполнение дисковой памяти. Коварность данного вылета заключается в том, что часто вылет происходит в момент сохранения игры, и в результате сэйв будет битым.
Лечение:
Освободите место на диске, если не помагает обычная загрузка последнего рабочего сохранения.
[hr]
Expression : fatal error Function : CBlender_default::Compile File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R1\BlenderDefault.cpp Line : 63 Description : Arguments : Not enought textures for shader, base tex: путь/до_текстуры
Причина:
Запуск модели/локации, на которой есть такая модель, не важно стат./динам. модель, на dx8, т.е статическом освещении. Возможно, из-за шейдера, его текстуры в настройке.
Лечение:
Разберусь, скажу точнее, а пока - запускать на освещении выше статики, любом динамическом, dx9, dx10, dx11.
[hr]
[error]Expression : fatal error [error]Function : CBlender_default::Compile [error]File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R1\BlenderDefault.cpp [error]Line : 63 [error]Description : [error]Arguments : Not enought textures for shader, base tex: veh\veh_mi2
Причина: проблемы с шейдерами - у меня был такой влет только на статическом освещении из за объекта локации с шейдером default.
Лечение: заменить шейдер default на другой, например, на def_shaders\def_vertex.
Line 64
Expression : !object->used_ai_locations() || ai().level_graph().valid_vertex_id(object->m_tNodeID) Function : CALifeSwitchManager::add_online File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_switch_manager.cpp Line : 64 Description : Invalid vertex for object Arguments : af_gravi22016
Причина:
Объект, в данном случае артефакт, заспавнился (перешёл в online) за пределами АИ сетки.
Лечение:
Если Вам нужно просто пройти какой-то момент в игре, то можете попробовать уменьшить радиус A-Life, посредством параметра switch_distance, пройти проблемный участок, а затем вернуть первоначальное значение параметра. Если же вы хотите избавиться от вылета, перебирайте объекты перед выходом в online и ищите нужный объект.
Line 65
Expression : wave&&wave->length() Function : CSoundRender_Source::LoadWave File : E:\stalker\patch_1_0004\xrSound\SoundRender_Source_loader.cpp Line : 65 Description : Can't open wave file: Arguments : ...\gamedata\sounds\music\sound.ogg
Причина:
Игра не может открыть звуковой OGG-файл под названием sound в папке gamedata\sounds\music\.
Лечение:
Проверяйте наличие файла, правильность написания пути и имени файла.
[hr]
Expression : hGame Function : CEngineAPI::Initialize File : E:\stalker\patch_1_0004\xr_3da\EngineAPI.cpp Line : 65 Description : Game DLL raised exception during loading or there is no game DLL at all
Причина:
Случается когда одна из dll некорректна. Например такой вылет бывает если подсунуть в ТЧ 1.0006 xrGame.dll от другого патча.
Лечение:
Если нет резервных копий, то вероятнее всего потребуется переустановка игры.
Line 72
Expression : ovi->rate==44100 Function : CSoundRender_Source::LoadWave File : E:\stalker\sources\trunk\xrSound\SoundRender_Source_loader.cpp Line : 72 Description : Invalid source rate: Arguments : ...\gamedata\sounds\characters_voice\new_voice\novikov\talk\neutral_greeting\greeting_1.ogg
Причина:
Указанный звуковой файл имеет неправильные свойства или настройки.
Лечение:
Убедитесь в правильности настройки звукового файла.
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]
Line 74
Expression : fatal error Function : CScriptEngine::lua_error File : D:\xray-svn\xr_3da\xrGame\script_engine.cpp Line : 74 Description : <no expression> Arguments : LUA error: ...\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)
Причина:
Обычная причина этих вылетов – передача некорректных значений родным функциям игры. Эти ошибки обычно возникают когда произошёл какой-то серьёзный сбой, и о таких вылетах желательно сообщать разработчикам. Если такой вылет случился желательно так же сбросить текст выше строки FATAL ERROR из лога. Если же этот вылет у вас происходит при загрузке сейва – сбросьте его разработчикам мода с логом вылета.
Лечение:
Необходимо перейти в _g.script в функцию printf и перед
log1(string.format(fmr,..))
дописать:
get_console():execute(string.gsub(fmt, " ", "_"))
После этого запустить еще раз игру и посмотреть при передачи какой строки игра вылетает. Потом найти эту строку в скриптах игры и прикинуть почему аргумент (у нас это аргумент №2 (bad argument #2)) равен nil.
Line 75
[error]Expression : F [error]Function : CXml::Load [error]File : E:\priquel\sources\engine\xrXMLParser\xrXMLParser.cpp [error]Line : 75 [error]Description : text\rus\new_dialog.xml
Причина:
Движок не может прочитать файл new_dialog.xml, т.к. он находится в сторонней папке, которая находится в директории text\rus\
Лечение:
Переместить файлы в папках, в корень директории text\rus\
Line 76
Expression : fatal error Function : CPostprocessAnimator::Load File : E:\stalker\patch_1_0004\xr_3da\xrGame\PostprocessAnimator.cpp Line : 76 Description : <no expression> Arguments : Can't find motion file 'amk_shoot.ppe'.
Причина:
Игра не может найти указанный файл постпроцесса.
Лечение:
Проверяйте наличие файла, правильность написания пути и имени файла.
Line 78
Expression : g_uiSpotXml->NavigateToNode(path_base,0) Function : CMapLocation::LoadSpot File : E:\stalker\patch_1_0004\xr_3da\xrGame\map_location.cpp Line : 78 Description : XML node not found in file map_spots.xml Arguments : sleep_pointer
Причина:
Игра не может найти в указаном файле (map_spots.xml) указанный элемент (sleep_pointer).
Лечение:
Найти и исправить ошибку.
Line 80
[error]Expression : source [error]Function : CPHSkeleton::Spawn [error]File : E:\priquel\sources\engine\xrGame\PHSkeleton.cpp [error]Line : 80 [error]Description : no source
Причина: свойства cse_ph_skeleton properties у НПС в all.spawn
Лечение: нпс взят из all.spawn gsc, после редактирования локации (изменение геометрии и АИ-сетки) в собранном спавне, нпс заспавненные GSC оказались проблемными, т.к. вызывали вылет. У всех у них было: (значения могут отличаться)
; cse_ph_skeleton properties skeleton_name = 5 skeleton_flags = 2 source_id = 0x2
А у новых, заспавненых мной нпс, этого не было. Поэтому просто удалите эти строчки.
Line 81
Expression : assertion failed Function : CSafeFixedRotationState::create File : e:\stalker\sources\trunk\xr_3da\xrgame\phvalidevalues.h Line : 81 Description : dBodyStateValide(b)
Причина:
Как правило - при попытке зомбировании неписей контролером, но не только. Также может появиться при неправильной настройки костей модели. Ещё может быть битый/криво разобранный нетпакет, даже если собственно визуал нормально прочитался и разобрался.
Лечение:
В случае кривой модели - определить модель и исправить, для этого достаточно обратно перегнать в СДК, настроить все шейпы, и обратно в огф. В случае скриптом - найти и избавиться от ошибки.
Line 87
Expression : false Function : CXml::Init File : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp Line : 87 Description : XML file:gameplay\game_tasks.xml value: errDescr:Error reading end tag.Причина:
В указанном файлe, в данном случае gameplay\game_tasks.xml, не соответствуют открывающийся и закрывающийся теги.
Лечение:Найти и исправить ошибку. Для этого в помощь придёт любой браузер. Откройте указанный файл через него, он поможет локализовать место ошибки.
[hr]Expression : false Function : CXml::Init File : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp Line : 87 Description : XML file:gameplay\dialogs_escape.xml value: errDescr:Error reading Attributes.Причина:
В указанном файле неправильно заданы атрибуты какого-то тега. Зачастую это написанное значение атрибута на русском языке.
Лечение:Найти и исправить ошибку. Для этого в помощь придёт любой браузер. Откройте указанный файл через него, он поможет локализовать место ошибки.
[hr]Expression : xml_doc.NavigateToNode(path,index) Function : CUIXmlInit::InitWindow File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIXmlInit.cpp Line : 87 Description : XML node not found Arguments : global_wndПричина:
В одном из .xml файлов отсутствует один общий тег для всех элементов. Например, если в файле encyclopedia.xml удалить теги window и /window, то появится именно такая ошибка.
Лечение:Найти и исправить ошибку.
Line 91
Expression : ai().game_graph().header().levels().end() != I Function : CALifeGraphRegistry::setup_current_level File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_graph_registry.cpp Line : 91 Description : Graph point level ID not found!
Причина:
В версии за 10.09.08 аивраппера бардака, если соединять новые левелы, level_changer'ы(переходы между уровнями) нормально не работали, в последующей версии это исправлено.
Вы забыли добавить в геймдату файл game.graph.
В спавне указан несуществующий game_vertex_id.
Лечение:
Найти и исправить ошибку.
Line 92
Expression : m_available_count Function : CID_Generator::tfGetID File : e:\priquel\sources\engine\xrgame\id_generator.h Line : 92 Description : Not enough IDs
Причина:
В игре закончились идентификаторы. В игре может быть НЕ БОЛЕЕ 65534 объектов. Видимо, у Вас на создавалось столько, как - это другой вопрос.
Лечение:
Почистить игру от лишних объектов.
[hr]
Expression : pm->m_animations.size() Function : player_hud_motion_container::load File : D:\prog_repository\sources\trunk\xrGame\player_hud.cpp Line : 92 Description : motion not found [aks74u_shootr]
Причина:
Игра не может найти анимацию худовой модели оружия, указанную в худовой секции в одном из параметров вида anm_*.
Лечение:
1) Проверить название указанной анимации на наличие опечаток
2) Убедиться, что путь к визуалу худа в параметре item_visual прописан правильно
3) Убедиться, что анимация с указанным названием действительно существует в соответствующем OGF или OMF файле
4) Убедиться, что в случае использования отдельного OMF-файла для хранения анимаций Вы не забыли его в АЕ СДК подключить к модели.
Частный случай вылета:
Expression : pm->m_animations.size() Function : player_hud_motion_container::load File : D:\prog_repository\sources\trunk\xrGame\player_hud.cpp Line : 92 Description : motion not found [idle]
При детальном рассмотрении конфига видим, что нигде данное название анимации не прописано.
Причина:
Дело в том, что в ЧН\ЗП для худа используется две модели: рук и оружия. Когда мы прописываем им общую анимацию, движок в анимациях оружия сначала пытается найти указанную. Если это не удается - то пытается воспроизвести анимацию с названием idle. Если и эта его попытка оказывается безуспешной - вылетает с вышеобозначенным логом.
Лечение:
Есть 2 варианта:
а) Добавить для оружия анимацию с названием idle
б) Явно задать в конфиге названия реально существующих для модели оружия анимаций
Line 96
Expression : false Function : CGameGraph::distance File : e:\stalker\patch_1_0004\xr_3da\xrgame\game_graph_inline.h Line : 96 Description : There is no proper graph point neighbour!
Причина:
Некий мутант или непись заспавнился в некорректном месте. Причина этого в том, что А-лайф спавнит их в некотором произвольном радиусе от точки спавна, что позволяет каждый раз спавн разнообразить. К сожалению, иногда он умудряется поместить живность в точку снаружи уровня – под землю или в стену, или заспавненый объект проваливается под уровень.
Лечение:
Обычно достаточно просто загрузить последний сейв и вылет пропадает. В особо тяжких случаях, когда вы умудрились сохранится рядом с уже застрявшим так неписем или монстром вам придётся убежать на другую локацию, чтобы эта животина в оффлайне ушла в нормальное место.
Line 97
Expression : start_node && path Function : CXml::NavigateToNode File : E:\stalker\sources\trunk\xrXMLParser\xrXMLParser.cpp Line : 97 Description : NavigateToNode failed in XML file Arguments : gameplay\alex_mod_dialogs.xml
Причина:
В указанном файле в одном из диалогов игра не может найти первую фразу. Запомните, первые фразы во всех диалогах должны быть с id равными нулю!
Лечение:
Найти и исправить ошибку.