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

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


Svoboда

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

(изменено)

Столкнулся с проблемой: при удалении с помощью alife():release(corps,true) трупа - в логе: "- Critical: SMapLocation binded to non-existent object id=<ИД_NPC>" (в консоли строки зелёного цвета).
Гугл пугает: "сеёфгейм повреждён", "игра уничтожила труп, но не очистила точку на карте, привязанную к нему".
Озадачился, занёс удаляемые трупы в таблицу (по примеру уборщика NLC sak_off_corpses.script) и повесил проверку таблицы и удаление из неё на апдейт актора.

С тем же эффектом. Всё удаляется, но ругается в лог.

Подскажите, как корректно удалять трупаки?

 

Зачем трогать биндер актора, если проблема в чем-то, привязанном к конкретному трупу ?

Может быть просто оставить этот труп в покое ? dc

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

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


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

Процесс удаление трупов NPC инициируется из motivator_binder:death_callback.
@mumie, в каком смысле "оживление"? Перехватывать "смерть" неписей в дэт-калбэке мотиватора, добавлять им здоровья и удалять чуть-живых?
Ерунда какая-то получается...

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


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

О-о.. Вот оно как обернулось... А я ж всего лишь помочь просил...
Ну, что ж, ладно..


1) dc - "не трогать", к сожалению, не получится. Труп не единичный, не квестовый - и вообще, любой. Проблема не привязана к конкретному трупу. При удалении поголовно всех трупов такая штука происходит. Биндер (надо же, меня понимают..) трогать пришлось, т.к мотиватор лишь ловит смерти неписей и вызывает скрипт, а он часто не успевает их обработать. Например, если гибнут массово (граната, яростная перестрелка и т.п.). Поэтому - таблица (=очередь на обработку), которая из биндера на апдэйте актора проверяется.
2) @Dennis_Chikin, я Вас заочно (лишь по работам для НС, к моему глубочайшему сожалению) знаю и искренне уважаю.. Но палку-то зачем перегибать?
"какой death_callback из из какого апдейта биндера атора" - ИМХО, не стоит Вам слишком много думать. Особенно - за других. Ведь это - всего лишь Ваши домыслы. Видимо, ввёл в заблуждение dc фразой "Зачем трогать биндер актора". Вот не знаю, к чему это он?
Я писал недвусмысленно: "при удалении с помощью alife():release(corps,true) трупа - в логе: "- Critical: SMapLocation binded to non-existent object id=<ИД_NPC>""
Стандартная для модов функция, удаление работает. Только вот лог этот... О том и спросил.
Что именно Вам здесь непонятно?
Раскину "на пальцах": скрипт успешно удаляет трупы NPC. При этом в логе: "- Critical: SMapLocation binded to non-existent object id=<удалённого_трупа>".
Такая терминология Вам доступна?
По версии - действительно, я косяк упорол - ТЧ6 (кстати, спасибо за косвенную подсказку - на 4 и ЗП не помню таких логов, или - просто не замечал. Проверю.)
P.S.: Я бы мог Вам помочь читать. И не только шапку.
3) Мои попытки всё исправить - организация очереди удаления в виде динамической таблицы с обработкой её из из bind_stalker.script из ф-и actor_binder:update(delta) результата не дали.
Попробую предварительно увести усопших в оффлан.



Зачем бан ? Я изложил общее впечатление от попытки прочитать за один раз всю страницу, не являсь автором этих сообщений. Получилось - то, что получилось. ;)
Самим авторам - разумеется, все понятно. По крайней мере в своих сообщениях. Иначе было бы уже совсем странно.

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


Теперь - по делу:
В bind_stalker.script из ф-и actor_binder:update(delta) вызывается скрипт, удаляющий трупы, удовлетворяющие неким условиям. Схема работает, вот только в логе после каждого удалённого NPC появляется запись вида: "- Critical: SMapLocation binded to non-existent object id=номер_его_ID'а".
Как бороть?

 

Ну так код где ?

По тому как действительно странно в высшей степени. То, что не стоит удалять живых неписей - это в общем-то неоднократно обсуждалось, в том числе и прямо здесь. По тому что очень много где хранятся game_object, и на внезапное удаление объекта серверного не проверяются.

 

Для трупов - в принципе должно быть проще, но вот я же буквально пару страниц назад здесь жаловался на то, что и трупы в некоторых случаях тоже пытаются "жить активной жизнью".

Так что - да, в оффлайн их сначала, и только когда попытка получить game_object безуспешна - удалять.

 

А еще лучше - все удаления производить где-то из net_spawn() собственно актора, или раньше.

 

Впрочем, и это все теория, к проблеме имеющая отношение едва-ли.

SMapLocation binded to non-existent object - как бы намекает, что дело не в самом трупе. Ну, пока я кода не  вижу. Ergo, действительно, попробовать удалить, пока в офлайне, а потом попробовать посетить актором место, где был оный труп, и глянуть: будет повторяться, али нет.

 

p.s. А вообще, кстати, и предупреждение стоило бы выписать. По тому что поиском вот прям даже в теме причина замечательно находится. ;)

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

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


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

! Cannot find saved game ~ z_mod: Инициализация z_uprising...

! Cannot find saved game ~ z_uprising: передали предустановки.
! Cannot find saved game ~ z_mod:on_item_take: поимели detector_simple
! Cannot find saved game ~ z_mod:on_item_take: поимели device_torch
! Cannot find saved game ~ z_mod:on_item_take: поимели novice_outfit
! Cannot find saved game ~ z_mod:on_item_take: поимели wpn_binoc
! Cannot find saved game ~ z_mod:on_item_take: поимели device_pda
! Cannot find saved game ~ z_uprising: ЛОГирование ВКЛючено.
! Cannot find saved game ~ z_uprising: ОК!
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_kill_gunslinger
! Cannot find saved game ~ z_mod:on_info: инфопорш storyline_actor_start
! Cannot find saved game ~ z_mod:on_info: инфопорш global_dialogs
! Cannot find saved game ~ z_mod:on_info: инфопорш level_changer_icons
! Cannot find saved game ~ z_mod:on_item_take: поимели bolt
Intro start 8633
* MEMORY USAGE: 311336 K
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_hello_played
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade_hide
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_experienced
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_tutorial_chosen
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_can_leave
! Cannot find saved game ~ z_mod:on_info: инфопорш tutorial_wounded_start
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk_hide
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade_hide
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_car_body
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_car_body_hide
- Disconnect
! Cannot find saved game ~ z_mod:on_item_drop: дропнули bolt
! Cannot find saved game ~ z_mod:on_item_drop: дропнули device_pda
! Cannot find saved game ~ z_mod:on_item_drop: дропнули wpn_binoc
! Cannot find saved game ~ z_mod:on_item_drop: дропнули novice_outfit
! Cannot find saved game ~ z_mod:on_item_drop: дропнули device_torch
! Cannot find saved game ~ z_mod:on_item_drop: дропнули detector_simple
- Destroying level

 

 

+

! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_events
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_contacts
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_ranking
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_actor_info
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_encyclopedia
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_hide
 

@Капрал Хикс, кстати, да. Через раз появляются.


! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_map_local ещё.
Похоже, или только первый раз срабатывают. Или - по времени. Но явно - не получится нормально отслеживать и использовать.

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

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


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

Может, попробовать отключать (disable_info, ну или как-то так) каждый раз?

abramcumner

Опередил!

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

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


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

@Zander_driver, почему "был"?
Его lua_helper, lua_extension, m_netpk, m_timers, se_stor (соответственно, изменённый _g), ты не поверишь, давно и успешно использую.

Каким боком m_events? Что это? Зачем это (=как использовать)?

  • Согласен 2

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


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

@Outfater, а

<info_portion id="имя_инфо">
	<action>скрипт.функция</action>
</info_portion>

чем не устраивает?

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


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

AMK-Team.ru

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