Цитата:
Сообщение от virusav
Надо еще в базе посмотреть, назначен ли ему АИ-скрипт, т.к. часто скрипты СД2 и АИ идут вместе, о чем пишется в коммитах на форуме СД2.
Если АИ есть, то это может сильно изменить общее поведение заскриптованного нпц.
|
Это я знаю
И всегда обнуляю поле ЕвентАИ, при выставление СкриптНэйм. Дело в самом коде эскорта, что пауза не учитана в EnterEvadeMode()
Код:
void npc_escortAI::EnterEvadeMode()
{
m_creature->RemoveAllAuras();
m_creature->DeleteThreatList();
m_creature->CombatStop(true);
m_creature->SetLootRecipient(NULL);
if (HasEscortState(STATE_ESCORT_ESCORTING) || HasEscortState(STATE_ESCORT_PAUSED))
{
debug_log("SD2: EscortAI has left combat and is now returning to CombatStartPosition.");
if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
{
float fPosX, fPosY, fPosZ;
m_creature->GetCombatStartPosition(fPosX, fPosY, fPosZ);
if(!HasEscortState(STATE_ESCORT_PAUSED))
{
AddEscortState(STATE_ESCORT_RETURNING);
m_creature->GetMotionMaster()->MovePoint(POINT_LAST_POINT, fPosX, fPosY, fPosZ);
}
else
m_creature->GetMotionMaster()->MovePoint(0, fPosX, fPosY, fPosZ);
}
}
else
{
if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
m_creature->GetMotionMaster()->MoveTargetedHome();
}
Reset();
}
Вот так я решил эту проблему.