本文整理汇总了C++中GetLeaderForFollower函数的典型用法代码示例。如果您正苦于以下问题:C++ GetLeaderForFollower函数的具体用法?C++ GetLeaderForFollower怎么用?C++ GetLeaderForFollower使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetLeaderForFollower函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: MoveInLineOfSight
void MoveInLineOfSight(Unit* who)
{
FollowerAI::MoveInLineOfSight(who);
if (!me->getVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE | STATE_FOLLOW_POSTEVENT) && who->GetEntry() == NPC_TORTA)
{
if (me->IsWithinDistInMap(who, INTERACTION_DISTANCE))
{
if (Player* player = GetLeaderForFollower())
{
if (player->GetQuestStatus(QUEST_TOOGA) == QUEST_STATUS_INCOMPLETE)
player->GroupEventHappens(QUEST_TOOGA, me);
}
TortaGUID = who->GetGUID();
SetFollowComplete(true);
}
}
}
开发者ID:Atreyos,项目名称:FaceCore,代码行数:19,代码来源:tanaris.cpp
示例2: MoveInLineOfSight
void MoveInLineOfSight(Unit* pWho) override
{
FollowerAI::MoveInLineOfSight(pWho);
if (!m_creature->getVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE) && pWho->GetEntry() == NPC_SPRAGGLE)
{
if (m_creature->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
{
if (Player* pPlayer = GetLeaderForFollower())
{
if (pPlayer->GetQuestStatus(QUEST_A_LITTLE_HELP) == QUEST_STATUS_INCOMPLETE)
pPlayer->GroupEventHappens(QUEST_A_LITTLE_HELP, m_creature);
}
pSpraggle = pWho;
SetFollowComplete(true);
}
}
}
开发者ID:520lly,项目名称:mangos-classic,代码行数:19,代码来源:ungoro_crater.cpp
示例3: MoveInLineOfSight
void MoveInLineOfSight(Unit* who)
{
FollowerAI::MoveInLineOfSight(who);
if (!me->getVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE) && who->GetEntry() == NPC_SPRAGGLE)
{
if (me->IsWithinDistInMap(who, INTERACTION_DISTANCE))
{
if (Player* player = GetLeaderForFollower())
{
if (player->GetQuestStatus(QUEST_A_LITTLE_HELP) == QUEST_STATUS_INCOMPLETE)
player->GroupEventHappens(QUEST_A_LITTLE_HELP, me);
}
SpraggleGUID = who->GetGUID();
SetFollowComplete(true);
}
}
}
开发者ID:A-Shox,项目名称:TrinityCore,代码行数:19,代码来源:ungoro_crater.cpp
示例4: MoveInLineOfSight
void MoveInLineOfSight(Unit* pWho) override
{
FollowerAI::MoveInLineOfSight(pWho);
if (!m_creature->getVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE | STATE_FOLLOW_POSTEVENT) && pWho->GetEntry() == NPC_TORTA)
{
if (m_creature->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
{
if (Player* pPlayer = GetLeaderForFollower())
{
if (pPlayer->GetQuestStatus(QUEST_TOOGA) == QUEST_STATUS_INCOMPLETE)
pPlayer->GroupEventHappens(QUEST_TOOGA, m_creature);
}
pTorta = pWho;
SetFollowComplete(true);
}
}
}
开发者ID:natedahl32,项目名称:portalclassic,代码行数:19,代码来源:tanaris.cpp
示例5: MoveInLineOfSight
void MoveInLineOfSight(Unit* pWho)
{
FollowerAI::MoveInLineOfSight(pWho);
if (!me->GetVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE | STATE_FOLLOW_POSTEVENT) && pWho->GetEntry() == NPC_ARYNIA)
{
if (me->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
{
if (Player* pPlayer = GetLeaderForFollower())
{
if (pPlayer->GetQuestStatus(QUEST_MIST) == QUEST_STATUS_INCOMPLETE)
pPlayer->GroupEventHappens(QUEST_MIST, me);
}
AryniaGUID = pWho->GetGUID();
SetFollowComplete(true);
}
}
}
开发者ID:Adeer,项目名称:OregonCore,代码行数:19,代码来源:teldrassil.cpp
示例6: MoveInLineOfSight
void MoveInLineOfSight(Unit *pWho) {
FollowerAI::MoveInLineOfSight(pWho);
if (!me->getVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE)
&& pWho->GetEntry() == NPC_LILADRIS) {
if (me->IsWithinDistInMap(pWho, INTERACTION_DISTANCE * 5)) {
if (Player* pPlayer = GetLeaderForFollower()) {
if (pPlayer->GetQuestStatus(QUEST_SLEEPER_AWAKENED)
== QUEST_STATUS_INCOMPLETE)
pPlayer->GroupEventHappens(QUEST_SLEEPER_AWAKENED,
me);
DoScriptText(SAY_KER_END, me);
}
SetFollowComplete();
}
}
}
开发者ID:814077430,项目名称:ArkCORE,代码行数:19,代码来源:darkshore.cpp
示例7: MoveInLineOfSight
void MoveInLineOfSight(Unit* who)
{
FollowerAI::MoveInLineOfSight(who);
if (!me->getVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE) && who->GetEntry() == NPC_YEVAA)
{
if (me->IsWithinDistInMap(who, INTERACTION_DISTANCE))
{
if (Player* player = GetLeaderForFollower())
{
if (player->GetQuestStatus(QUEST_TAKE_HIM_TO_THE_EARTHCALLER) == QUEST_STATUS_INCOMPLETE)
player->KilledMonsterCredit(44207, 0);
me->DespawnOrUnsummon(30000);
}
SetFollowComplete(true);
}
}
}
开发者ID:FrenchCORE,项目名称:Server,代码行数:20,代码来源:deepholm.cpp
示例8: MoveInLineOfSight
void MoveInLineOfSight(Unit* pWho) override
{
FollowerAI::MoveInLineOfSight(pWho);
if (!m_creature->HasAura(SPELL_SUBDUED) || m_creature->getVictim())
return;
if (pWho->GetEntry() == NPC_COLDARRA_DRAKE_HUNT_INVISMAN && m_creature->IsWithinDistInMap(pWho, 20.0f))
{
Player* pPlayer = GetLeaderForFollower();
if (!pPlayer || !pPlayer->HasAura(SPELL_DRAKE_HATCHLING_SUBDUED))
return;
pWho->CastSpell(pPlayer, SPELL_STRIP_AURAS, true);
// give kill credit, mark the follow as completed and start the final event
pPlayer->KilledMonsterCredit(NPC_COLDARRA_DRAKE_HUNT_INVISMAN);
pPlayer->CastSpell(m_creature, SPELL_DRAKE_TURN_IN, true);
SetFollowComplete(true);
}
}
开发者ID:Chuck5ta,项目名称:ScriptDev3,代码行数:20,代码来源:borean_tundra.cpp
示例9: UpdateFollowerAI
void UpdateFollowerAI(const uint32 uiDiff)
{
FollowerAI::UpdateFollowerAI(uiDiff); // Do combat handling
if (m_creature->isInCombat() || !HasFollowState(STATE_FOLLOW_INPROGRESS) || HasFollowState(STATE_FOLLOW_COMPLETE))
return;
if (m_uiCheckEndposTimer < uiDiff)
{
m_uiCheckEndposTimer = 500;
if (m_creature->IsWithinDist3d(aKernobeePositions[0][0], aKernobeePositions[0][1], aKernobeePositions[0][2], 2 * INTERACTION_DISTANCE))
{
SetFollowComplete(true);
if (Player* pPlayer = GetLeaderForFollower())
pPlayer->GroupEventHappens(QUEST_A_FINE_MESS, m_creature);
m_creature->GetMotionMaster()->MovePoint(1, aKernobeePositions[1][0], aKernobeePositions[1][1], aKernobeePositions[1][2], false);
m_creature->ForcedDespawn(2000);
}
}
else
m_uiCheckEndposTimer -= uiDiff;
}
开发者ID:natedahl32,项目名称:portalclassic,代码行数:22,代码来源:gnomeregan.cpp
示例10: MoveInLineOfSight
void MoveInLineOfSight(Unit* pWho) override
{
FollowerAI::MoveInLineOfSight(pWho);
if (!m_bIsComplete && pWho->GetEntry() == NPC_ROCKBITER && m_creature->IsWithinDistInMap(pWho, 20.0f))
{
Player* pPlayer = GetLeaderForFollower();
if (!pPlayer)
return;
DoScriptText(SAY_EVENT_COMPLETE_1, m_creature);
DoScriptText(SAY_EVENT_COMPLETE_2, pWho);
// complete quest
pPlayer->GroupEventHappens(QUEST_ID_WANDERING_SHAY, m_creature);
SetFollowComplete(true);
m_creature->ForcedDespawn(30000);
m_bIsComplete = true;
m_uiWanderTimer = 0;
// move to Rockbiter
float fX, fY, fZ;
pWho->GetContactPoint(m_creature, fX, fY, fZ, INTERACTION_DISTANCE);
m_creature->GetMotionMaster()->MovePoint(0, fX, fY, fZ);
}
else if (m_bIsRecalled && pWho->GetTypeId() == TYPEID_PLAYER && pWho->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
{
m_uiWanderTimer = 60000;
m_bIsRecalled = false;
switch (urand(0, 2))
{
case 0: DoScriptText(SAY_WANDER_DONE_1, m_creature); break;
case 1: DoScriptText(SAY_WANDER_DONE_2, m_creature); break;
case 2: DoScriptText(SAY_WANDER_DONE_3, m_creature); break;
}
}
}
开发者ID:natedahl32,项目名称:portalclassic,代码行数:38,代码来源:feralas.cpp
示例11: JustDied
void FollowerAI::JustDied(Unit*)
{
if (!HasFollowState(STATE_FOLLOW_INPROGRESS) || !m_leaderGuid || !m_pQuestForFollow)
return;
//TODO: need a better check for quests with time limit.
if (Player* pPlayer = GetLeaderForFollower())
{
if (Group* pGroup = pPlayer->GetGroup())
{
for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != NULL; pRef = pRef->next())
{
if (Player* pMember = pRef->getSource())
{
if (pMember->GetQuestStatus(m_pQuestForFollow->GetQuestId()) == QUEST_STATUS_INCOMPLETE)
pMember->FailQuest(m_pQuestForFollow->GetQuestId());
}
}
}
else if (pPlayer->GetQuestStatus(m_pQuestForFollow->GetQuestId()) == QUEST_STATUS_INCOMPLETE)
pPlayer->FailQuest(m_pQuestForFollow->GetQuestId());
}
}
开发者ID:yyhhrr,项目名称:mangospriv,代码行数:23,代码来源:follower_ai.cpp
示例12: AddFollowState
void FollowerAI::SetFollowPaused(bool bPaused)
{
if (!HasFollowState(STATE_FOLLOW_INPROGRESS) || HasFollowState(STATE_FOLLOW_COMPLETE))
return;
if (bPaused)
{
AddFollowState(STATE_FOLLOW_PAUSED);
if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == FOLLOW_MOTION_TYPE)
{
m_creature->StopMoving();
m_creature->GetMotionMaster()->Clear();
m_creature->GetMotionMaster()->MoveIdle();
}
}
else
{
RemoveFollowState(STATE_FOLLOW_PAUSED);
if (Player* pLeader = GetLeaderForFollower())
m_creature->GetMotionMaster()->MoveFollow(pLeader, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
}
}
开发者ID:sd0,项目名称:scriptdevzero,代码行数:24,代码来源:follower_ai.cpp
示例13: debug_log
void FollowerAI::UpdateAI(const uint32 uiDiff)
{
if (HasFollowState(STATE_FOLLOW_INPROGRESS) && !m_creature->getVictim())
{
if (m_uiUpdateFollowTimer < uiDiff)
{
if (HasFollowState(STATE_FOLLOW_COMPLETE) && !HasFollowState(STATE_FOLLOW_POSTEVENT))
{
debug_log("SD2: FollowerAI is set completed, despawns.");
m_creature->ForcedDespawn();
return;
}
bool bIsMaxRangeExceeded = true;
if (Player* pPlayer = GetLeaderForFollower())
{
if (HasFollowState(STATE_FOLLOW_RETURNING))
{
debug_log("SD2: FollowerAI is returning to leader.");
RemoveFollowState(STATE_FOLLOW_RETURNING);
m_creature->GetMotionMaster()->MoveFollow(pPlayer, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
return;
}
if (Group* pGroup = pPlayer->GetGroup())
{
for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != NULL; pRef = pRef->next())
{
Player* pMember = pRef->getSource();
if (pMember && m_creature->IsWithinDistInMap(pMember, MAX_PLAYER_DISTANCE))
{
bIsMaxRangeExceeded = false;
break;
}
}
}
else
{
if (m_creature->IsWithinDistInMap(pPlayer, MAX_PLAYER_DISTANCE))
bIsMaxRangeExceeded = false;
}
}
if (bIsMaxRangeExceeded)
{
debug_log("SD2: FollowerAI failed because player/group was to far away or not found");
m_creature->ForcedDespawn();
return;
}
m_uiUpdateFollowTimer = 1000;
}
else
m_uiUpdateFollowTimer -= uiDiff;
}
UpdateFollowerAI(uiDiff);
}
开发者ID:sd0,项目名称:scriptdevzero,代码行数:61,代码来源:follower_ai.cpp
示例14: TC_LOG_DEBUG
void FollowerAI::UpdateAI(uint32 uiDiff)
{
if (HasFollowState(STATE_FOLLOW_INPROGRESS) && !me->GetVictim())
{
if (m_uiUpdateFollowTimer <= uiDiff)
{
if (HasFollowState(STATE_FOLLOW_COMPLETE) && !HasFollowState(STATE_FOLLOW_POSTEVENT))
{
TC_LOG_DEBUG("scripts", "FollowerAI is set completed, despawns.");
me->DespawnOrUnsummon();
return;
}
bool bIsMaxRangeExceeded = true;
if (Player* player = GetLeaderForFollower())
{
if (HasFollowState(STATE_FOLLOW_RETURNING))
{
TC_LOG_DEBUG("scripts", "FollowerAI is returning to leader.");
RemoveFollowState(STATE_FOLLOW_RETURNING);
me->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
return;
}
if (Group* group = player->GetGroup())
{
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != NULL; groupRef = groupRef->next())
{
Player* member = groupRef->GetSource();
if (member && me->IsWithinDistInMap(member, MAX_PLAYER_DISTANCE))
{
bIsMaxRangeExceeded = false;
break;
}
}
}
else
{
if (me->IsWithinDistInMap(player, MAX_PLAYER_DISTANCE))
bIsMaxRangeExceeded = false;
}
}
if (bIsMaxRangeExceeded)
{
TC_LOG_DEBUG("scripts", "FollowerAI failed because player/group was to far away or not found");
me->DespawnOrUnsummon();
return;
}
m_uiUpdateFollowTimer = 1000;
}
else
m_uiUpdateFollowTimer -= uiDiff;
}
UpdateFollowerAI(uiDiff);
}
开发者ID:AriDEV,项目名称:SkyFire.548,代码行数:61,代码来源:ScriptedFollowerAI.cpp
示例15: UpdateAI
void FollowerAI::UpdateAI(const uint32 uiDiff)
{
if (HasFollowState(STATE_FOLLOW_INPROGRESS) && !m_creature->getVictim())
{
if (m_uiUpdateFollowTimer < uiDiff)
{
if (HasFollowState(STATE_FOLLOW_COMPLETE) && !HasFollowState(STATE_FOLLOW_POSTEVENT))
{
sLog.outDebug("FollowerAI is set completed, despawns.");
m_creature->DisappearAndDie();
return;
}
bool bIsMaxRangeExceeded = true;
if (Player* pPlayer = GetLeaderForFollower())
{
if (HasFollowState(STATE_FOLLOW_RETURNING))
{
sLog.outDebug("FollowerAI is returning to leader.");
RemoveFollowState(STATE_FOLLOW_RETURNING);
m_creature->GetMotionMaster()->MoveFollow(pPlayer, m_uiFollowDistance, PET_FOLLOW_ANGLE);
return;
}
if (Group* pGroup = pPlayer->GetGroup())
{
for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != nullptr; pRef = pRef->next())
{
Player* pMember = pRef->getSource();
if (pMember && m_creature->IsWithinDistInMap(pMember, MAX_PLAYER_DISTANCE))
{
bIsMaxRangeExceeded = false;
break;
}
}
}
else
{
if (m_creature->IsWithinDistInMap(pPlayer, MAX_PLAYER_DISTANCE))
bIsMaxRangeExceeded = false;
}
// allow postEvent to happen even if quest credit is already handled
/*if (HasFollowState(STATE_FOLLOW_COMPLETE | STATE_FOLLOW_POSTEVENT))
bIsMaxRangeExceeded = false;*/
}
if (bIsMaxRangeExceeded)
{
sLog.outDebug("FollowerAI failed because player/group was to far away or not found");
SetFollowPaused(false);
m_creature->DisappearAndDie();
return;
}
m_uiUpdateFollowTimer = 300;
}
else
m_uiUpdateFollowTimer -= uiDiff;
}
UpdateFollowerAI(uiDiff);
}
开发者ID:Maduse,项目名称:server,代码行数:66,代码来源:ScriptedFollowerAI.cpp
注:本文中的GetLeaderForFollower函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论