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

Скриптование


Svoboда

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

Господа, вопрос.

Работаю на довольно сильно измененной скриптовой базе. В какой-то момент стал ловить вылет на юзании неписей, причем только генериков, и только когда по идее должны появиться стандартные фразы "Что интересного можешь рассказать?" и т.д.

Сидорович полностью рабочий. Диалог с Волком проходит безо всяких проблем, пока не тыкнешь "Я попробую" или "Не слабо. Но не пойду". Вылет не содержит никаких отсылок к LUA, лишь ни о чем мне не говорящий стектрейс:

 

stack trace:

0023:0773F45E xrGame.dll

 

Предыдущий снапшот папки scripts такой проблемы не содержит, но изменений с тех пор гора.

Сам вопрос: какова цепочка вызовов функций при юзании генерик-непися (в ванили)? Одним из первых, насколько понимаю, вызывается xr_motivator.motivator_binder:use_callback(). И судя по добавленному дебагу, он отрабатывает от начала и до конца. А далее?

Благодарю.

 

UPD: к слову, death_manager полностью рабочий. Сталкеры убиваются, инвентарь чистится, лут генерится в соответствии с дроп-секциями. Можно обыскать, стянуть предметы, никаких проблем.

UPD2: вылет исправил -- накосячил в dialog_manager. Но цепочку вызовов для общего развития все ж интересно узнать.

 

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

New Level Changer 5.08: Раритеты

ReapeR build 3: Раритеты

 

Я на YouTube: Vincent Vega

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


Ссылка на сообщение

Вот сейчас интересненького (наверное) на поболтать принес.

Unfortunately, @Bak пока так и не объявился в сети, решил отзеркалить часть лички тут:

 

В 10.04.2018 в 15:11, The ReapeR сказал:

Салют!

 

Заметил интересную особенность с AI additions 2.0f4 для Теней. Я сейчас копаюсь со своим модом, подсмотрел в ZRP 1.09 (http://www.metacognix.com/files/stlkrsoc/index.html) механизм валидации основных модулей еще до открытия главного меню. Если вкратце, там в ui_main_menu добавляется переменная а-ля:

 

local all_good = db and modules and xr_logic

 

Потом на ините меню проверяется ее значение, и в случае false предупреждаем о проблемах (modules, как знаешь, загружает все схемы при любом обращении).

Ну и вот, если раньше все схемы загружались уже после загрузки спавна, то теперь это происходит дважды: при ините главного меню и на "Сервер: Старт" (тоже по вине ui_main_menu). На этом моменте спавн еще не загружен, clsids, скорее всего, не валидны, A-Life тоже.

А в rx_ai первой строчкой идет rx_utils.init() -> init_clsids() -> запрашивается куча клсидов, далее local alife = alife() и проч. В такой комбинации на нетспавне актора загрузка дропается с логом "attempt to access field actor_net_spawn (a nil value)" на строчке из bind_stalker if rx_ai rx_ai.actor_net_spawn(). Дебаг показал интересненькое: init_clsids() из rx_utils падает на запросе клсида актора, ни rx_utils, ни rx_ai, ни modules далее уже не читаются, потому движок LUA и не видит функцию.

 

Собственно, вопрос, чисто из спортивного интереса. Что в принципе правильнее: исправить инит rx_ai или не заигрывать с модулями (по идее, могу и то, и то)? Насколько адекватно загружать схемы в такую рань, и должны ли они все быть независимыми от этапа инита (SANB и все ванильные модули, включая xr_kamp с оттаскиванием трупов, загружаются без проблем)?

Спасибо)

 

В 15.04.2018 в 11:32, The ReapeR сказал:

А. Насчет дедманов из xr_kamp чуть наврал) Пришлось инит таблицы body_grab_bones перенести в конструктор, так как там запрашиваются клсиды.

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

Кстати, насколько же шатка и зависима от условий загрузка схем в ванили: первый вызов modules приходится на get_stype() в xr_gulag, когда запускается первая gulag:beginJob() для, если не ошибаюсь, раненого Толика. То есть любое вмешательство в данную функцию, либо же референс к modules в каком-либо другом кастомном скрипте раньше данного места приведет к более ранней или поздней загрузке схем (или вообще незагрузке). Явно нигде схемы они не грузят, все юзание modules сводится к запросам значений stype_*.

 

М?

New Level Changer 5.08: Раритеты

ReapeR build 3: Раритеты

 

Я на YouTube: Vincent Vega

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


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

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