Тема-справочник по вылетам S.T.A.L.K.E.R в большей степени ориентирован на чистый ТЧ, но в большинстве случаев причина и решение вылета одинакова для всех частей.
Информация собиралась со всего интернета, посему указывать источники не вижу смысла, если кого обидел - прошу прощения.
Файл лога находится в папке путь к которой прописан в качестве параметра app_data_root в файле fsgame.ltx, который находится в корневой директории игры. В конце файла .log, в случае вылета, после строк FATAL ERROR сохраняется описание ошибки (к сожалению в большинстве случаев не совсем очевидное), по которой можно попытаться определить причину вылета и исправить её. Если же после вылета .log файл пуст, то определить причину вылета становиться практически невозможным.
Поскольку список вылетов весьма обилен, то предлагаю небольшую рекомендацию того, как быстрее и эффективнее найти именно то, что Вам нужно, при условии, что оно здесь вообще есть.
Открываете спойлера всех частей. Открываете поиск в браузере (Ctrl F) и введите неизменяемое выражение из строк вылета. Например, если у Вас случился вылет Can't find texture 'act\act_corp_monolit', то не нужно вводить в поиске название текстуры, с 99% гарантией говорю, что таковой здесь нет, из-за чего поиск ничего не найдёт. Введите выражение "Can't find texture" - это движковая запись и она никогда не изменится. Тоже самое касается остального: моделей, звуков, шейдеров, партиклов, имён файлов, функций и секции и т.д. Также избегайте табуляции в строке поиска - форум не распознаёт её и преобразует в пробелы, таким образом поиск также ничем не увенчается. Либо Вы можете просмотреть все вылеты подряд. Для облегчения поиска вылеты расположены в порядке возрастания значения строки Line в логе.
Данный справочник не гарантирует того, что Вы найдёте решение проблемы (хотя я на это очень надеюсь), так как указанные причины и способы лечения могут не соответствовать истинной причине вылета.
Пожалуйста, если Вы наткнулись на вылет, которого нет в данной теме - не поленитесь сообщить об этом здесь. Возможно кому-то в дальнейшем это поможет решить свою проблему. Также буду рад любому справедливому замечанию касательно содержимого выше.
Также прошу не писать в данной теме уже те вылеты, которые здесь есть, по причине того, что Вы не понимаете чего-то. Не нужно писать сюда и посты с тем, что у Вас вылетает какой-то мод, с каким-то логом. Зачастую такой вылет скриптовый и никому кроме Вас он не нужен, лучше будет, если Вы обратитесь к разарботчикам данного мода. Не нужно писать всякие любезности, для этого есть личка.
ПОЖАЛУЙСТА, НЕ ЗАХЛАМЛЯЙТЕ ТЕМУ!
В противном случае буду жаловаться на подобные посты администрации форума, без каких-либо угрызений совести.
P.S. Поскольку форум ограничивает размер текста в сообщениях, поэтому пришлось разбить весь справочник на несколько постов.
Сообщение отредактировал ColR_iT - Четверг, 25.07.2013, 17:34
Всё равно - OMG!?!?!? Если вы не понимаете суть проблемы вылетов x-ray'я - это тоже ваша проблема, от этого справочник не перестаёт быть справочником и не становится гуглом. Я специально не приводил вылеты работы отдельных модулей, поскольку в этом нет вообще никакого профита. Количество разновидностей скриптовых вылетов стремится к бесконечности. В справочнике присутствуют обобщённые примеры неправильного использования скриптов, которые и приводит к вылету. Например:
Код
Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...w of chernobyl\gamedata\scripts\<имя файла>.script:<номер строки>: attempt to perform arithmetic on a nil value
Этот вылет возможен в любой строке любого файла где производится любая арифметическая операция над nil, чего Lua не допускает. Для движка ТЧ значение строки Line всегда будет 73, но аргументы вылета могут быть непредсказуемо разными. Научитесь хотя бы понимать как это работает если вы полезли это ковырять.
Сообщение отредактировал BozKurt - Среда, 06.12.2017, 16:14
а разве это не она(но только в несколько другом виде)?
Вообще не она.
Код
Arguments : LUA error: d:\games\s.t.a.l.k.e.r\cs\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil)
Эта строка говорит, что какая то из функций, в каком то из скриптов вызвала функцию abort. И данная функция вывела в лог сообщение и вызвала принудительный краш движка. Причину в этом случае стоит искать выше сообщения о краше например в виде строки:
Код
ERROR: There is no field 'artefact_ways' in section *** in obj ***
Вылет же, который был приведен Kyibeshev в логе, говорил о том что конкретный скрипт в конкретной строке получил в конкретной переменной nil вместо осмысленного значения, применил его и получил от движка посылку на три буквы (BUG).
Вылет же, который был приведен Kyibeshev в логе, говорил о том что конкретный скрипт в конкретной строке получил в конкретной переменной nil вместо осмысленного значения, применил его и получил от движка посылку на три буквы (BUG).
спасибо, понятно, ну да если он собирал солянку значит где-то что-то не прописал или недопрописал как я понимаю
Я специально не приводил вылеты работы отдельных модулей, поскольку в этом нет вообще никакого профита. Количество разновидностей скриптовых вылетов стремится к бесконечности. В справочнике присутствуют обобщённые примеры неправильного использования скриптов, которые и приводит к вылету.
имхо, без обид, однако все-таки обобщенный пример вылета 180 думаю стоит вклеить в справочник, хотя кончено если вы как специалисты считаете что это лишнее, то дело ваше
Сообщение отредактировал YTroll - Среда, 06.12.2017, 18:27
помогите на Черном Сталкере 2 жук одолел.изначально игра стала ровно.но возле лесничества появился.а потом вообще запускаться перестала.переустановка не помогла xrEngine.exe caused BREAKPOINT in module "D:\games\Чёрный Сталкер 2\bin\xrCore.dll" at 0023:01C8E12E, xrDebug::backend()+174 byte(s)
Это-то так, но причина не в этом. А в том, что в метод string.format в функции abort были переданы несоответствующие аргументы, т.е. nil. А как мы знаем конкатенировать. да вообще присоединить nil к строке нельзя.
То есть функция, которая должна была вызвать ошибку, непредсказуемо для себя вызвала непредсказуемую ещё ошибку. Соответственно велетела ещё до принудительного вылета, забавно не так ли?