Sin! 71 Опубликовано 25 Июля 2013 Внесу и свои 5 копеек, все генерировалось на ЧН\ЗП: 1) Expression : _valid( c )Function : CPhysicsShellHolder::correct_spawn_posFile : D:\prog_repository\sources\trunk\xrGame\PhysicsShellHolder.cppLine : 178Description : object: wpn_val17095 model: dynamics\weapons\wpn_val\wpn_valПричина:Вы присвоили какому-то объекту визуал, у которого забыли сгенерировать шейпы. Как вариант - случайно были перепутаны мировая и худовая модели оружия. Имя объекта и сбойный визуал указаны в строке descriptionЛечение:Есть несколько вариантов:а)Сгенерировать у указанной модели шейпы, используя Actor Editor (AE) из состава СДКб)заменить указанную модель на "заведомо рабочую"в)Найти, где в конфиге прописан неверный визуал, и исправить параметр на другой2)Дополнение:Expression : fatal errorFunction : xrServer::Process_updateFile : D:\prog_repository\sources\trunk\xrGame\xrServer_process_update.cppLine : 39Description : Arguments : Beer from the creator of 'S_ACTOR '; initiator: 0x00000001, r_tell() = 66, pos = 5, objectID = 0Возникает при загрузке игрыВозможная причина:Неверно прописан параметр class в конфиге какого-либо объекта (необязательно указанного в строке arguments)Лечение:Проштудировать конфиги на предмет неверно указанного класса у какого-либо из предметов3)Expression : error handler is invoked!Function : handler_baseFile : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cppLine : 764Description : application is abortingВозникает на этапе загрузки игры.Возможная причина:Что-то намудрили с анимациями объекта. Возможно, число костей в объекте не соответствует числу костей в анимации (например, прописан путь к чужому ОМФу). Также может возникать, если перемудрить с настройками костей в АЕ.Кроме того, если нам посчастливится (например, я наблюдал это при попытке экспортить ОМФ с худовыми анимациями рук с использованием "родной" ЧНовской их модели, пропущенной через всем известным "конвертер всего и вся"), то можем увидеть такое:Expression : fatal errorFunction : mem_usage_implFile : E:\priquel\sources\engine\xrCore\memory_usage.cppLine : 156Description : Arguments : bad node in heapи даже такое:Expression : fatal errorFunction : out_of_memory_handlerFile : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cppLine : 336Description : Arguments : Out of memory. Memory request: 4063232 KКстати, вызывать вылеты "Out of memory" может и некорректно собранный игровой db-архив. Причина может быть в файлах, подвергшихся паковке. Например, будем получать вылет по памяти при попытке упаковать файлы револьвера GP100 из Gosuke Weapon Mod для ЧН. Другой пример - когда-то давно в ТЧ мной было замечено подобное поведение при попытке подсунуть игре db-шники с "чужой" локалью.Лечение:Будьте внимательнее4)Дополнение:Expression : sz<(tgt_sz-1)Function : IReader::r_stringFile : E:\priquel\sources\engine\xrCore\FS.cppLine : 422Description : Dest string less than needed.Я бы не сказал, что вылет достаточно редкий. Причина его - движок пытается скопировать исходную строку в буфер, а размер этого буфера меньше длины копируемой строки. Рано или поздно возникает у тех, кто любит писать в одну строку конфига ОЧЕНЬ много (больше 4К) символов. Например, он прекрасно знаком любителям хитроумных скриптов на подмену секций оружия, которые запихивают все их названия в mp_ranks5)Expression : assertion failedFunction : CItemMgr::LoadFile : E:\priquel\sources\engine\xrGame\ui\UIBuyWndShared.cppLine : 39Description : it!=m_items.end()в одном из файлов *_game.ltx (вместо * - название типа игры), находящихся по адресу configs\mp, в секции вида [*_base_cost] не прописан какой-то из доступных для покупки в мультиплеере предметов.6)Expression : npos != comma1_posFunction : CUILines::GetColorFromTextFile : E:\priquel\sources\engine\xrGame\ui\UILines.cppLine : 525Description : CUISubLine::GetColorFromText -- can't find first commaExpression : npos != comma2_posFunction : CUILines::GetColorFromTextFile : E:\priquel\sources\engine\xrGame\ui\UILines.cppLine : 526Description : CUISubLine::GetColorFromText -- can't find second commaExpression : npos != comma3_posFunction : CUILines::GetColorFromTextFile : E:\priquel\sources\engine\xrGame\ui\UILines.cppLine : 527Description : CUISubLine::GetColorFromText -- can't find third commaФактически, это - 3 разновидности одного вылета. Начать надо с того, что в игре существует возможность назначения цвета тексту путем специальной служебной последовательности символов внутри этого текста. Эта последовательность имеет вид %с, где color может быть либо текстовым названием цвета, либо четырьмя разделенными запятыми числами, задающими цвет в формате RGBA. Если цвет задан некорректно - то мы имеем счастье наблюдать один из вышеуказанных вылетов.Лечение:Найти некорректно заданный цвет, и исправитьP.S.Вообще, у этого вида вылетов долгая и захватывающая история. Как оказалось, почти ВСЕ строки в игре подвержены подобному "разукрашиванию". Не стали исключением и строки сообщений, отправляемые в чат игроками в мультиплеере. Из-за этого любой игрок получил возможность введением специальным образом заданного сообщения устроить на сервере вылет у всех игроков сразу.7)Дополнение:Expression : fatal errorFunction : CInifile::r_sectionFile : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cppLine : 502Description : Arguments : Can't open section 'up_sect_fifthc_ak74u'. Please attach [*.ini_log] file to your bug reportДостаточно хитрая разновидность вылета в ЧН\ЗП, возникающая при попытке добавления нового апгрейда. Можно очень долго сидеть и чесать голову, почему из двух секций, расположенных рядом в одном файле, одна читается, а вторая - нет.Лечение:По умолчанию в ЧН/ЗП все конфиги апгрейдов необходимо инклудить в две(!) ветки. Первая берет начало в system.ltx, вторая - в item_upgrades.ltx.Кроме того, можно заставить игру обходиться без инклудов файлов во вторую ветку. Для этого в файле inventory_upgrades.script необходимо найти строкуlocal char_ini = ini_file("item_upgrades.ltx")и заменить её наlocal char_ini = system_ini()8)Expression : pm->m_animations.size()Function : player_hud_motion_container::loadFile : D:\prog_repository\sources\trunk\xrGame\player_hud.cppLine : 92Description : 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::loadFile : D:\prog_repository\sources\trunk\xrGame\player_hud.cppLine : 92Description : motion not found [idle]При детальном рассмотрении конфига видим, что нигде данное название анимации не прописано.Причина:Дело в том, что в ЧН\ЗП для худа используется две модели: рук и оружия. Когда мы прописываем им общую анимацию, движок в анимациях оружия сначала пытается найти указанную. Если это не удается - то пытается воспроизвести анимацию с названием idle. Если и эта его попытка оказывается безуспешной - вылетает с вышеобозначенным логом.Лечение:Есть 2 варианта:а) Добавить для оружия анимацию с названием idleб) Явно задать в конфиге названия реально существующих для модели оружия анимаций9)Expression : 0Function : attachable_hud_item::set_bone_visibleFile : D:\prog_repository\sources\trunk\xrGame\player_hud.cppLine : 127Description : model [dynamics\weapons\wpn_usp45\wpn_usp45_hud.ogf] has no bone [wpn_scope]Причина:Отображение и сокрытие съемных аддонов на оружии в сталкере осуществляется при помощи отображения и сокрытия меша, привязанного к определенной кости в моделе. Существует три таких кости: wpn_scope, wpn_silencer и wpn_launcher. В данном случае мы попытались прописать оружию съемный прицел, но указанный худовый визуал не содержит кости wpn_scope.Лечение:Сделать аддон несъемным (либо отключить его вообще) путем редактирования конфига либо добавить в худовую модель указанную кость.10)Expression : !m_error_codeFunction : raii_guard::~raii_guardFile : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cppLine : 748Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to perform arithmetic on a string valueExpression : !m_error_codeFunction : raii_guard::~raii_guardFile : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cppLine : 748Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to compare string with numberПричина:В одном из скриптов Вы пытаетесь выполнять арифметические операции со строкой либо сравнивать её с числом .Лечение:Возможно, вы забыли вызвать tostring, либо вместо операции '..' (конкатенация строк) использовали '+' (сложение чисел).Если ничего из вышеописанного вы не делали, то так как LUA - язык с динамической типизацией, вполне возможно, что что-то изменило тип вашей переменной11)Уточнение:Expression : !m_error_codeFunction : raii_guard::~raii_guardFile : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cppLine : 748Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to call global 'qwe' (a nil value)Возможен и такой вариант вылета при отсутствующей функции 3 1 Поделиться этим сообщением Ссылка на сообщение
Sin! 71 Опубликовано 27 Июля 2013 (изменено) Подборка вылетов, связанных с некорректными db-архивами. 1) Expression : 0Function : CLocatorAPI::LoadArchiveFile : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cppLine : 340Description : unsupportedАрхив не поддерживается игрой. Вероятно, версия не совпадает с требуемой2)Expression : assertion failedFunction : CLocatorAPI::LoadArchiveFile : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cppLine : 360Description : hdrИгровой архив поврежден3)Expression : *read_path.c_str()=='$'Function : CLocatorAPI::LoadArchiveFile : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cppLine : 322Description : %ошибочное_значение_entry_point%При запаковке в параметре entry_point секции хидера была допущена опечатка. Начинаться этот параметр всегда должен с одной из "игровых" директорий, определенных в файле fsgame.ltx, то есть первым символом в этом параметре всегда должен идти $4)Expression : count==1Function : CLocatorAPI::LoadArchiveFile : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cppLine : 325Description : %ошибочное_значение_entry_point%"Корень" из параметра entry_point извлекается движком при помощи функции sscanf. При этом используется шаблон %[^\]s. Вылет произошел из-за того, что возвращённое данной функцией значение (равное числу найденных вхождений) отлично от 1.5)Expression : assertion failedFunction : CLocatorAPI::archive::openFile : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cppLine : 406Description : hSrcFile!=INVALID_HANDLE_VALUEПри инициализации архива игра использует функцию WinAPI CreateFileA, при этом вызов выглядит примерно так:hSrcFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0);Если при этом функция вернула значение, равное INVALID_HANDLE_VALUE (т.е. вызов завершился неудачей), то возникает данный вылет. Наиболее вероятная причина - у вас отсутствуют права на чтение файла.6)Expression : assertion failedFunction : CLocatorAPI::archive::openFile : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cppLine : 408Description : hSrcMap!=INVALID_HANDLE_VALUEПосле успешного открытия файла-архива, игра пытается спроецировать его в память. Для этого используется функция CreateFileMapping, вызов которой происходит следующим образом:hSrcMap = CreateFileMapping(hSrcFile, NULL, PAGE_READONLY, 0,0, NULL)Вылет происходит из-за того, что попытка проецирования файла закончилась неудачно, т.е. функция возвратила значение =INVALID_HANDLE_VALUE. Возможно, стоит увеличить размер файла подкачки.7)Expression : assertion failedFunction : CLocatorAPI::archive::openFile : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cppLine : 410Description : size>0Вот так сюрприз - архив оказался пустым! То есть совсем пустым - размер файла в байтах равен нулю. Будьте в следующий раз аккуратнее с клавишей Delete и не открывайте без необходимости файлы для записи .Переустановка игры должна исправить положение.8)Expression : error handler is invoked!Function : invalid_parameter_handlerFile : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cppLine : 815Description :Возможно повреждение игрового архива (например, возникнет, если "забыть" указать entry_point в хидере) Вообще, если напротив Function мы видим CLocatorAPI, то достаточно высока вероятность того, что у нас проблемы с каким-то из архивов. P.S. Все вышеуказанные логи получены на ЗП 1.6.02. Безусловно, они будут схожи с логами получаемыми в ТЧ, но возможны и и некоторые отличия. В частности, метод LoadArchive в ТЧ носит имя ProcessArchive. Изменено 27 Июля 2013 пользователем Sin! 2 1 Поделиться этим сообщением Ссылка на сообщение
Sin! 71 Опубликовано 2 Мая 2014 (изменено) @RefeR, движок в данном случае не особо и важен, это классика и проявляется она на всех версиях игры. Причина - некорректно проставлены параметры для просчета физики в указанной модели. Игра спавнит наш объект, пытается начать просчитывать для него физику, но так как физическая оболочка у него не настроена, имеем то, что имеем. Кстати, в случае с оружием оно может совершенно корректно работать, пока находится в руках или в рюкзаке, но как только мы его попытаемся выбросить - получим вылет.Исправляется следующим образом:1) загружаем модель в АЕ СДК, переходим на вкладку Bones2) в разделе Global ищем пункт Generate Shape и жмем на кнопку All напротив него3) Теперь надо указать у каждой кости, которая имеет привязанный меш, тип примитива, используемого игрой для просчета физики этого меша. Для этого проходимся по всем таким костям и в разделе Bone->Shape выставляем тип ограничивающего примитива, отличный от None (т.е. Type = Box, Sphere или Cylinder). Важно: если указать отличный от None тип примитива у кости без привязанного меша, то СДК при попытке экспорта модели сообщит об этом в логе: "Bone 'xxx' has invalid shape."4) Экспортируем модель, вылет должен уйти.Движок я попросил указывать, поскольку как минимум логи разные. dc Изменено 2 Мая 2014 пользователем Dennis_Chikin 3 Поделиться этим сообщением Ссылка на сообщение