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

Справочник вылетов


ColR_iT

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

Внесу и свои 5 копеек, все генерировалось на ЧН\ЗП:

1)


Expression : _valid( c )
Function : CPhysicsShellHolder::correct_spawn_pos
File : D:\prog_repository\sources\trunk\xrGame\PhysicsShellHolder.cpp
Line : 178
Description : object: wpn_val17095 model: dynamics\weapons\wpn_val\wpn_val

Причина:
Вы присвоили какому-то объекту визуал, у которого забыли сгенерировать шейпы. Как вариант - случайно были перепутаны мировая и худовая модели оружия. Имя объекта и сбойный визуал указаны в строке description

Лечение:
Есть несколько вариантов:
а)Сгенерировать у указанной модели шейпы, используя Actor Editor (AE) из состава СДК

б)заменить указанную модель на "заведомо рабочую"
в)Найти, где в конфиге прописан неверный визуал, и исправить параметр на другой

2)Дополнение:
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)

Лечение:
Проштудировать конфиги на предмет неверно указанного класса у какого-либо из предметов


3)
Expression : error handler is invoked!
Function : handler_base
File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
Line : 764
Description : application is aborting

Возникает на этапе загрузки игры.

Возможная причина:
Что-то намудрили с анимациями объекта. Возможно, число костей в объекте не соответствует числу костей в анимации (например, прописан путь к чужому ОМФу). Также может возникать, если перемудрить с настройками костей в АЕ.
Кроме того, если нам посчастливится (например, я наблюдал это при попытке экспортить ОМФ с худовыми анимациями рук с использованием "родной" ЧНовской их модели, пропущенной через всем известным "конвертер всего и вся"), то можем увидеть такое:

Expression : fatal error
Function : mem_usage_impl
File : E:\priquel\sources\engine\xrCore\memory_usage.cpp
Line : 156
Description :
Arguments : bad node in heap

и даже такое:

Expression : fatal error
Function : out_of_memory_handler
File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
Line : 336
Description :
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_string
File : E:\priquel\sources\engine\xrCore\FS.cpp
Line : 422
Description : Dest string less than needed.

Я бы не сказал, что вылет достаточно редкий. Причина его - движок пытается скопировать исходную строку в буфер, а размер этого буфера меньше длины копируемой строки. Рано или поздно возникает у тех, кто любит писать в одну строку конфига ОЧЕНЬ много (больше 4К) символов. Например, он прекрасно знаком любителям хитроумных скриптов на подмену секций оружия, которые запихивают все их названия в mp_ranks

5)
Expression : assertion failed
Function : CItemMgr::Load
File : E:\priquel\sources\engine\xrGame\ui\UIBuyWndShared.cpp
Line : 39
Description : it!=m_items.end()

в одном из файлов *_game.ltx (вместо * - название типа игры), находящихся по адресу configs\mp, в секции вида [*_base_cost] не прописан какой-то из доступных для покупки в мультиплеере предметов.

6)
Expression : npos != comma1_pos
Function : CUILines::GetColorFromText
File : E:\priquel\sources\engine\xrGame\ui\UILines.cpp
Line : 525
Description : CUISubLine::GetColorFromText -- can't find first comma

Expression : npos != comma2_pos
Function : CUILines::GetColorFromText
File : E:\priquel\sources\engine\xrGame\ui\UILines.cpp
Line : 526
Description : CUISubLine::GetColorFromText -- can't find second comma

Expression : npos != comma3_pos
Function : CUILines::GetColorFromText
File : E:\priquel\sources\engine\xrGame\ui\UILines.cpp
Line : 527
Description : CUISubLine::GetColorFromText -- can't find third comma

Фактически, это - 3 разновидности одного вылета. Начать надо с того, что в игре существует возможность назначения цвета тексту путем специальной служебной последовательности символов внутри этого текста. Эта последовательность имеет вид %с, где color может быть либо текстовым названием цвета, либо четырьмя разделенными запятыми числами, задающими цвет в формате RGBA. Если цвет задан некорректно - то мы имеем счастье наблюдать один из вышеуказанных вылетов.

Лечение:
Найти некорректно заданный цвет, и исправить

P.S.Вообще, у этого вида вылетов долгая и захватывающая история. Как оказалось, почти ВСЕ строки в игре подвержены подобному "разукрашиванию". Не стали исключением и строки сообщений, отправляемые в чат игроками в мультиплеере. Из-за этого любой игрок получил возможность введением специальным образом заданного сообщения устроить на сервере вылет у всех игроков сразу.

7)Дополнение:
Expression : fatal error
Function : CInifile::r_section
File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp
Line : 502
Description :
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::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
б) Явно задать в конфиге названия реально существующих для модели оружия анимаций


9)
Expression : 0
Function : attachable_hud_item::set_bone_visible
File : D:\prog_repository\sources\trunk\xrGame\player_hud.cpp
Line : 127
Description : 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_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to perform arithmetic on a string value

Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to compare string with number

Причина:
В одном из скриптов Вы пытаетесь выполнять арифметические операции со строкой либо сравнивать её с числом .

Лечение:
Возможно, вы забыли вызвать tostring, либо вместо операции '..' (конкатенация строк) использовали '+' (сложение чисел).
Если ничего из вышеописанного вы не делали, то так как LUA - язык с динамической типизацией, вполне возможно, что что-то изменило тип вашей переменной

11)Уточнение:
Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to call global 'qwe' (a nil value)

Возможен и такой вариант вылета при отсутствующей функции

 

  • Нравится 3
  • Полезно 1

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


Ссылка на сообщение
(изменено)

Подборка вылетов, связанных с некорректными db-архивами.

1)


Expression : 0
Function : CLocatorAPI::LoadArchive
File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
Line : 340
Description : unsupported

Архив не поддерживается игрой. Вероятно, версия не совпадает с требуемой

2)
Expression : assertion failed
Function : CLocatorAPI::LoadArchive
File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
Line : 360
Description : hdr

Игровой архив поврежден

3)
Expression : *read_path.c_str()=='$'
Function : CLocatorAPI::LoadArchive
File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
Line : 322
Description : %ошибочное_значение_entry_point%
При запаковке в параметре entry_point секции хидера была допущена опечатка. Начинаться этот параметр всегда должен с одной из "игровых" директорий, определенных в файле fsgame.ltx, то есть первым символом в этом параметре всегда должен идти $

4)
Expression : count==1
Function : CLocatorAPI::LoadArchive
File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
Line : 325
Description : %ошибочное_значение_entry_point%

"Корень" из параметра entry_point извлекается движком при помощи функции sscanf. При этом используется шаблон %[^\]s. Вылет произошел из-за того, что возвращённое данной функцией значение (равное числу найденных вхождений) отлично от 1.

5)
Expression : assertion failed
Function : CLocatorAPI::archive::open
File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
Line : 406
Description : 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 failed
Function : CLocatorAPI::archive::open
File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
Line : 408
Description : hSrcMap!=INVALID_HANDLE_VALUE

После успешного открытия файла-архива, игра пытается спроецировать его в память. Для этого используется функция CreateFileMapping, вызов которой происходит следующим образом:
hSrcMap = CreateFileMapping(hSrcFile, NULL, PAGE_READONLY, 0,0, NULL)
Вылет происходит из-за того, что попытка проецирования файла закончилась неудачно, т.е. функция возвратила значение =INVALID_HANDLE_VALUE. Возможно, стоит увеличить размер файла подкачки.

7)
Expression : assertion failed
Function : CLocatorAPI::archive::open
File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
Line : 410
Description : size>0

Вот так сюрприз - архив оказался пустым! То есть совсем пустым - размер файла в байтах равен нулю. Будьте в следующий раз аккуратнее с клавишей Delete и не открывайте без необходимости файлы для записи ;).
Переустановка игры должна исправить положение.


8)
Expression : error handler is invoked!
Function : invalid_parameter_handler
File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
Line : 815
Description :

Возможно повреждение игрового архива (например, возникнет, если "забыть" указать entry_point в хидере)

 

 

Вообще, если напротив Function мы видим CLocatorAPI, то достаточно высока вероятность того, что у нас проблемы с каким-то из архивов.

 

P.S. Все вышеуказанные логи получены на ЗП 1.6.02. Безусловно, они будут схожи с логами получаемыми в ТЧ, но возможны и и некоторые отличия. В частности, метод LoadArchive в ТЧ носит имя ProcessArchive.

Изменено пользователем Sin!
  • Нравится 2
  • Полезно 1

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


Ссылка на сообщение
(изменено)

@RefeR, движок в данном случае не особо и важен, это классика и проявляется она на всех версиях игры. Причина - некорректно проставлены параметры для просчета физики в указанной модели. Игра спавнит наш объект, пытается начать просчитывать для него физику, но так как физическая оболочка у него не настроена, имеем то, что имеем. Кстати, в случае с оружием оно может совершенно корректно работать, пока находится в руках или в рюкзаке, но как только мы его попытаемся выбросить - получим вылет.
Исправляется следующим образом:
1) загружаем модель в АЕ СДК, переходим на вкладку Bones
2) в разделе Global ищем пункт Generate Shape и жмем на кнопку All напротив него
3) Теперь надо указать у каждой кости, которая имеет привязанный меш, тип примитива, используемого игрой для просчета физики этого меша. Для этого проходимся по всем таким костям и в разделе Bone->Shape выставляем тип ограничивающего примитива, отличный от None (т.е. Type = Box, Sphere или Cylinder). Важно: если указать отличный от None тип примитива у кости без привязанного меша, то СДК при попытке экспорта модели сообщит об этом в логе: "Bone 'xxx' has invalid shape."
4) Экспортируем модель, вылет должен уйти.

Движок я попросил указывать, поскольку как минимум логи разные. dc

Изменено пользователем Dennis_Chikin
  • Нравится 3

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


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

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

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