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

Вылеты без логов - в чём причины и как с ними бороться


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

У меня вылет без лога когда я неписю прописал другую логику

[logic]

active = remark@base

danger = danger_condition

meet = meet

 

[remark@base]

anim = hello_wpn

no_move = true

target = actor

meet = meet

on_actor_dist_le = 2| remark@punch

danger = danger_condition

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий

А секция [remark@punch] имеется? А скция [meet] тоже есть? Кстати, meet прописывается только в конкретной секции логики ([remark]), в общей же [logic] её указывать ни к чему.

 

Ищи ошибку, отсеивая параметры: закомментируй все поля в секции [logic], кроме active, в [remark@base] вообще все... ну, кроме target. Если вылета не будет, включай по очереди остальные параметры. Если всё равно вылетает - возможно, проблемы с самим NPC, его профилем или диалогами, на него повешенными.

Изменено пользователем Полтергейст
Ссылка на комментарий

Иногда причиной таких вылетов на динамике могут быть безобидные партиклы. Как бороться? Уменьшать нужные (а точней не нужные) параметры в PE.

Просто к теме.

Мой архив

Сталкером не занимаюсь.

Ссылка на комментарий

Вылет без лога в ТЧ при выходе в главное меню бывает, когда в ui_main_menu.script допущена синтаксическая ошибка. Например такая:

eif dik == DIK_keys.DIK_Q then

self:OnMessageQuitWin()

Freedom

Ссылка на комментарий

Еще бывают вылеты без лога из-за партиклов, нормально работающих и обычно не вызывающих проблем - в тех случаях, когда (предположительно - в онлайне) слишком много объектов использующих партиклы. Я недавно тестировал систему спавна артов после выброса, во время теста вся локация была завалена артефактами - они вываливались из каждой аномалии. В итоге вылет.

С более мудреными, чем у артов, партиклами, для такой ситуации наверно будет достаточно и меньшего количества объектов.

 

В логе в таком случае остается только такое:

 

Scheduler tried to update object particle_instance
stack trace:

001B:0384C36F xrParticles.dll, PAPI::ParticleManager()

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Вылет без лога:

Вчера пытался поменять мировую модель у оружия на классе РПГ-7, полдня летал на рабстол без лога, пока не понял, в чем дело.

Причина - в новой модели не существовало кости, указанной в grenade_bone основного конфига (в смысле, не ХУД-секция). Возможно, то же самое будет и на классах АК-74 и Грозы. К этой кости может быть ничего не привязано, она может не иметь шейпа, но быть обязана.

С этой костью связан еще один баг: попробовал впарить за grenade_bone главную кость мировой модели. После выстрела (в каком бы направлении не стрелял) почему-то предлагался переход на другую локацию, и актора выбрасывало к переходу на Свалку - тесты, по традиции, на Кордоне.

При попытке впарить любую другую кость с привязанной частью модели эту часть при перезарядке от 3 лица корежит.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Возможен и даже очень вероятен вылет без лога, если в XML файле в теле описания диалога вместо ссылки на текстовый строковый файл вписывать текст напрямую и при этом количество символов превысит лимит (255 символов, если я правильно помню).

Ссылка на комментарий

Вылет без лога происходит не только если в xml диалоге указать функцию, которой не существует, но и в скриптовом диалоге тоже такая гадость. Причем функция, создающая диалог отрабатывает стабильно, но потом следует вылет без лога

Freedom

Ссылка на комментарий

Ну это как бы одно и то же. Не важно, как был создан диалог - скриптом или xml-файлом. Когда из диалога происходит обращение к несуществующей функции - тогда и вылет.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Вылет без лога может случаиться, если вызвать метод update() из серверного объекта мёртвого NPC. Скорее всего для brain():update() будет то же самое, но надо будет ещё потестировать для более точных данных.

 

Ещё один источник проблем - функции cse_alife_smart_zone.register_npc() и cse_alife_smart_zone.unregister_npc(). Причём вылеты от них бывают не при каждом вызове, а "плавающие" (через раз). В смартах они не используются (видимо, именно поэтому разрабы их убрали), но на всякий случай оставлю это тут.

Изменено пользователем Полтергейст
Ссылка на комментарий

Флуд почищен, список причин вылетов обновлён.

 

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

Дело в том, что я пытался прописать всем NPC (людям) в рестрикторы все аномалии, находящиеся на этом уровне, с помощью функции alife():add_in_restriction(npc, restrictor_id). При net_destroy, соответственно, удалял их с помощью alife():remove_in_restriction(npc, restrictor_id). Также был учтён баг с удалением рестриктора, прописанного кому-то. При самой игре вылета нет, но если сохраниться возле какого-нибудь NPC и потом загрузиться, то вылет был. Возможно, из-за того, что была попытка прописать всё это в рестрикторы дважды, либо весь этот список как-то неправильно сохраняется.

Изменено пользователем Полтергейст
Ссылка на комментарий

_Призрак_,

в клиентском объекте список рестрикторов хранится в виде строки, в которой через запятую перечисляются имена рестрикторов. На строку отводится 4кб. Формирование этой строки происходит сишными функциями, без учета размера буфера. Поэтому и упомянул про это.

 

Ну и мне казалось, что длина строки 1кб, а 4кб еще по-божески :)

Ссылка на комментарий

Вылет без лога произойдёт, если попытаться использовать функцию wounded(...) для изменения состояния раненности NPC. Даже перенос её вызова в update(...) может не помочь - у меня вылетает и в первом update, и в net_spawn. Такие же проблемы могут быть при использовании некоторых других функций, но пока что с ними не сталкивался.

Изменено пользователем Полтергейст
Ссылка на комментарий

Дополню то что у вас в шапке:

Ошибка в вызове функции из диалога: после имени функции скобки писать НЕ НУЖНО.

Вот так

Код

<action>file.func()</action>

 

писать нельзя, нужно вот так:

Код

<action>file.func</action>

 

(file - имя файла скрипта, func - имя функции)

Кроме этого, безлоговый вылет может случиться при вызове функции, которой нет. Но - только если ее использовать в прекондишене. В экшенах вылета не будет.

т.е. если в файле file нет функции func, то:

<action>file.func</action>

Не произойдет ничего

<precondition>file.func</precondition>

Будет вылет без лога.

То же самое если в файле file синтаксическая ошибка.

Изменено пользователем ColR_iT

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Вылет без лога случается, если установить состояние тела равным move.crouch и ментальное состояние anim.free. Например, вот такой код

npc:set_mental_state(anim.free)
npc:set_body_state(move.crouch)

вызовет вылет без лога. В скриптах state_mgr оригинальной игры (ТЧ) установка этой комбинации состояний запрещена, поэтому при установке состояний через state_mgr.set_state(...) такого вылета не может произойти. Но если состояние устанавливается напрямую (как показано выше) или запрет в state_mgr снят, то вылет будет.

Изменено пользователем Полтергейст
Ссылка на комментарий

Подскажите, в чем дело. При переходе из подземелья Агропрома на Агропром следует безлоговый вылет, при попытке запустить сейв - безлоговый вылет при нажатии на него. Что самое интересное, на этих локациях я ничего не менял. Я сделал оружейную сборку на 1 Гб, поэтому мне не катит все заново перебирать... :ny_unsure:

 

Ещё как катит! Подними глаза в этот пост #26 на этой же странице и поймёшь в чём возможная причина.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Были безлоговые вылеты при редактировании модели пысовского оружия и пихания моделей в другие папки.

Решение:

1) Либо в конфиге оружия указать те scope status, silencer status и grenade_launcher status, что и в оригинале.

2) Если нужен ствол с новыми обвесами, то надо хотя бы мировую модель положить в такую же папку с игрой, что и в оригинале, то есть meshes\weapons.

 

Да, и еще - не надо писать тексты диалогов в схеме диалога - тоже вылет. Лимит 128 символов.

Ссылка на комментарий

Уважаемый ColR_iT, из-за костей вылет быть не может, т.к.

1) я через спавнер спавню все новые стволы в инвентарь и тестирую;

2) новое оружие есть только на Армейских складах, Припяти и на ЧАЭС.

 

Ну посуди сам: если ничего кроме оружия ты не добавляешь и локации ты не трогал, из-за чего тогда? Барабашка?

К тому же я сказал "возможная" проблема.

Ну если нет так нет, моё дело предложить.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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