Перейти к содержимому



Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 64

#21   strelok200

strelok200
  • Группа: Заблокированные
  • Сообщений: 224
  • Регистрация: 25.09.2010
  • Пользователь: 19457

Отправлено 10 04 2011 - 06:47

У меня вылет без лога когда я неписю прописал другую логику
[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

#22   =VENOM=

=VENOM=
  • Группа: Проверенные
  • Сообщений: 126
  • Регистрация: 14.11.2010
  • Пользователь: 21125

Отправлено 10 04 2011 - 07:09

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

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

Сообщение отредактировал Полтергейст: 14 02 2012 - 20:56


#23   amik

amik
  • Группа: Кураторы тем
  • Сообщений: 1 577
  • Регистрация: 06.03.2010
  • Пользователь: 17086
  

Отправлено 10 04 2011 - 12:59

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

#24   _Призрак_

_Призрак_
  • Призрак

  • Группа: Жители
  • Сообщений: 1 006
  • Регистрация: 12.04.2009
  • Пользователь: 9427

Отправлено 13 04 2011 - 00:00

Вылет без лога в ТЧ при выходе в главное меню бывает, когда в ui_main_menu.script допущена синтаксическая ошибка. Например такая:
eif dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()

#25   Zander_driver

Zander_driver
  • маленько псих

  • Группа: Кураторы тем
  • Сообщений: 1 875
  • Регистрация: 21.01.2011
  • Пользователь: 22908
        

Отправлено 13 04 2011 - 03:11

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

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

Scheduler tried to update object particle_instance
stack trace:

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


#26   Kirag

Kirag
  • Группа: Жители
  • Сообщений: 954
  • Регистрация: 08.12.2008
  • Пользователь: 6556
  

Отправлено 27 10 2011 - 14:10

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

#27   Капрал Хикс

Капрал Хикс
  • Группа: Жители
  • Сообщений: 819
  • Регистрация: 18.06.2010
  • Пользователь: 17932

Отправлено 15 11 2011 - 02:57

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

#28   _Призрак_

_Призрак_
  • Призрак

  • Группа: Жители
  • Сообщений: 1 006
  • Регистрация: 12.04.2009
  • Пользователь: 9427

Отправлено 22 11 2011 - 02:47

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

#29   Zander_driver

Zander_driver
  • маленько псих

  • Группа: Кураторы тем
  • Сообщений: 1 875
  • Регистрация: 21.01.2011
  • Пользователь: 22908
        

Отправлено 28 11 2011 - 21:57

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

#30   Полтергейст

Полтергейст
  • Автор Темы
  • Группа: Опытные
  • Сообщений: 349
  • Регистрация: 25.10.2009
  • Пользователь: 14126

Отправлено 14 12 2011 - 20:21

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

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

Сообщение отредактировал Полтергейст: 18 12 2011 - 20:21


#31   Полтергейст

Полтергейст
  • Автор Темы
  • Группа: Опытные
  • Сообщений: 349
  • Регистрация: 25.10.2009
  • Пользователь: 14126

Отправлено 25 12 2011 - 11:30

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

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

Сообщение отредактировал Полтергейст: 25 12 2011 - 11:33


#32   abramcumner

abramcumner
  • Группа: Жители
  • Сообщений: 1 021
  • Регистрация: 16.05.2011
  • Пользователь: 23149

Отправлено 25 12 2011 - 11:35

Полтергейст,
размер списка рестрикторов у нпц ограничен - возможно вылет из-за этого

#33   _Призрак_

_Призрак_
  • Призрак

  • Группа: Жители
  • Сообщений: 1 006
  • Регистрация: 12.04.2009
  • Пользователь: 9427

Отправлено 25 12 2011 - 14:04

А не подскажешь размер?

#34   abramcumner

abramcumner
  • Группа: Жители
  • Сообщений: 1 021
  • Регистрация: 16.05.2011
  • Пользователь: 23149

Отправлено 26 12 2011 - 12:10

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

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

#35   Полтергейст

Полтергейст
  • Автор Темы
  • Группа: Опытные
  • Сообщений: 349
  • Регистрация: 25.10.2009
  • Пользователь: 14126

Отправлено 12 01 2012 - 19:00

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

Сообщение отредактировал Полтергейст: 12 01 2012 - 19:03


#36   Zander_driver

Zander_driver
  • маленько псих

  • Группа: Кураторы тем
  • Сообщений: 1 875
  • Регистрация: 21.01.2011
  • Пользователь: 22908
        

Отправлено 14 02 2012 - 14:09

Дополню то что у вас в шапке:
Цитата
Ошибка в вызове функции из диалога: после имени функции скобки писать НЕ НУЖНО.
Вот так
Код
<action>file.func()</action>

писать нельзя, нужно вот так:
Код
<action>file.func</action>

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

Кроме этого, безлоговый вылет может случиться при вызове функции, которой нет. Но - только если ее использовать в прекондишене. В экшенах вылета не будет.
т.е. если в файле file нет функции func, то:
<action>file.func</action>
Не произойдет ничего
<precondition>file.func</precondition>
Будет вылет без лога.
То же самое если в файле file синтаксическая ошибка.

Сообщение отредактировал ColR_iT: 14 02 2012 - 18:10


#37   Полтергейст

Полтергейст
  • Автор Темы
  • Группа: Опытные
  • Сообщений: 349
  • Регистрация: 25.10.2009
  • Пользователь: 14126

Отправлено 17 02 2012 - 21:11

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

Сообщение отредактировал Полтергейст: 18 02 2012 - 12:42


#38   Снайпер с пулеметом

Снайпер с пулеметом
  • Группа: Проверенные
  • Сообщений: 114
  • Регистрация: 08.01.2012
  • Пользователь: 26050

Отправлено 18 02 2012 - 17:15

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

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

Сообщение отредактировал ColR_iT: 18 02 2012 - 17:46


#39   ШиЗ

ШиЗ
  • Группа: Жители
  • Сообщений: 695
  • Регистрация: 12.09.2011
  • Пользователь: 23877

Отправлено 18 02 2012 - 21:00

Были безлоговые вылеты при редактировании модели пысовского оружия и пихания моделей в другие папки.
Решение:
1) Либо в конфиге оружия указать те scope status, silencer status и grenade_launcher status, что и в оригинале.
2) Если нужен ствол с новыми обвесами, то надо хотя бы мировую модель положить в такую же папку с игрой, что и в оригинале, то есть meshes\weapons.

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

#40   Снайпер с пулеметом

Снайпер с пулеметом
  • Группа: Проверенные
  • Сообщений: 114
  • Регистрация: 08.01.2012
  • Пользователь: 26050

Отправлено 18 02 2012 - 21:18

Уважаемый ColR_iT, из-за костей вылет быть не может, т.к.
1) я через спавнер спавню все новые стволы в инвентарь и тестирую;
2) новое оружие есть только на Армейских складах, Припяти и на ЧАЭС.

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

Сообщение отредактировал ColR_iT: 18 02 2012 - 21:43



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей

2007-2017 © AMK TEAM