Ulduar
04.03.2014, 00:28
Добрый вечер. Имеется вот такая дверь(то что она закрыта по дефолту - это правильно), также есть и нпц перед ней. Скриншот:
http://ytdb.ru/attachment.php?attachmentid=2722&stc=1&d=1393878412
На оффе после убийства мобов должна открываться эта самая дверь.
DATA_CRIMSONHALL_EVENT = 1, Pre Blood Prince mini event.
NPC_DARKFALLEN_NOBLE = 37663, Pre Blood Prince Door mini event.
NPC_DARKFALLEN_BLOOD_KNIGHT = 37595,
NPC_DARKFALLEN_ADVISOR = 37571,
NPC_DARKFALLEN_ARCMAGE = 37664,
void SetData64(uint32 uiType, uint64 uiGuid) override;
GuidSet m_sPreCrimsonHallMobsAliveGUIDSet;
это для файла icecrown_citadel.h если что-то забыл добавить, пишите.
Для файла instance_icecrown_citadel.cpp
void instance_icecrown_citadel::OnCreatureCreate(Creatu re* pCreature)
case NPC_DARKFALLEN_NOBLE
case NPC_DARKFALLEN_BLOOD_KNIGHT
case NPC_DARKFALLEN_ARCMAGE
case NPC_DARKFALLEN_ARCMAGE
// Filter only the mobs spawned on Pre Crimson Hall Door.
if (pCreature->GetPositionZ() < 361.0f)
m_sPreCrimsonHallMobsGUIDSet.insert(pCreature->GetObjectGuid());
break;
}
}
void instance_icecrown_citadel:SetData64(uint32 uiData, uint64 uiGuid)
{
// If Blood Prince Council already completed, just ignore
if (GetData(TYPE_BLOOD_PRINCE_COUNCIL) == DONE)
return;
// Note: this is handled in Acid. The purpose is check which Pre Crimson Hall mobs is alive, in case of server reset
// The function is triggered by eventAI on generic timer
if (uiData == DATA_CRIMSONHALL_EVENT)
m_sPreCrimsonHallMobsGUIDSet.insert(pCreature->GetObjectGuid());
}
void instance_icecrown_citadel::OnCreatureDeath(Creatur e* pCreature)
case NPC_DARKFALLEN_NOBLE
case NPC_DARKFALLEN_BLOOD_KNIGHT
case NPC_DARKFALLEN_ARCMAGE
case NPC_DARKFALLEN_ARCMAGE
break;
Постараюсь потом добавить ещё что-нибудь. Одно знаю точно - эти мобы не уникальны, поэтому нужен check Guid.
Вообщем от скрипта требуется одно - сделать проверку на этих нпц и если они убиты(те что перед дверью, а не за ней и перед Ланателью) то открывать дверь.
http://ytdb.ru/attachment.php?attachmentid=2722&stc=1&d=1393878412
На оффе после убийства мобов должна открываться эта самая дверь.
DATA_CRIMSONHALL_EVENT = 1, Pre Blood Prince mini event.
NPC_DARKFALLEN_NOBLE = 37663, Pre Blood Prince Door mini event.
NPC_DARKFALLEN_BLOOD_KNIGHT = 37595,
NPC_DARKFALLEN_ADVISOR = 37571,
NPC_DARKFALLEN_ARCMAGE = 37664,
void SetData64(uint32 uiType, uint64 uiGuid) override;
GuidSet m_sPreCrimsonHallMobsAliveGUIDSet;
это для файла icecrown_citadel.h если что-то забыл добавить, пишите.
Для файла instance_icecrown_citadel.cpp
void instance_icecrown_citadel::OnCreatureCreate(Creatu re* pCreature)
case NPC_DARKFALLEN_NOBLE
case NPC_DARKFALLEN_BLOOD_KNIGHT
case NPC_DARKFALLEN_ARCMAGE
case NPC_DARKFALLEN_ARCMAGE
// Filter only the mobs spawned on Pre Crimson Hall Door.
if (pCreature->GetPositionZ() < 361.0f)
m_sPreCrimsonHallMobsGUIDSet.insert(pCreature->GetObjectGuid());
break;
}
}
void instance_icecrown_citadel:SetData64(uint32 uiData, uint64 uiGuid)
{
// If Blood Prince Council already completed, just ignore
if (GetData(TYPE_BLOOD_PRINCE_COUNCIL) == DONE)
return;
// Note: this is handled in Acid. The purpose is check which Pre Crimson Hall mobs is alive, in case of server reset
// The function is triggered by eventAI on generic timer
if (uiData == DATA_CRIMSONHALL_EVENT)
m_sPreCrimsonHallMobsGUIDSet.insert(pCreature->GetObjectGuid());
}
void instance_icecrown_citadel::OnCreatureDeath(Creatur e* pCreature)
case NPC_DARKFALLEN_NOBLE
case NPC_DARKFALLEN_BLOOD_KNIGHT
case NPC_DARKFALLEN_ARCMAGE
case NPC_DARKFALLEN_ARCMAGE
break;
Постараюсь потом добавить ещё что-нибудь. Одно знаю точно - эти мобы не уникальны, поэтому нужен check Guid.
Вообщем от скрипта требуется одно - сделать проверку на этих нпц и если они убиты(те что перед дверью, а не за ней и перед Ланателью) то открывать дверь.