本文整理汇总了C++中UnitPointer::GetGUID方法的典型用法代码示例。如果您正苦于以下问题:C++ UnitPointer::GetGUID方法的具体用法?C++ UnitPointer::GetGUID怎么用?C++ UnitPointer::GetGUID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UnitPointer
的用法示例。
在下文中一共展示了UnitPointer::GetGUID方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleCastSpellNECommand
bool ChatHandler::HandleCastSpellNECommand(const char* args, WorldSession *m_session)
{
UnitPointer caster = m_session->GetPlayer();
UnitPointer target = getSelectedChar(m_session, false);
if(!target)
target = getSelectedCreature(m_session, false);
if(!target)
{
RedSystemMessage(m_session, "Must select a char or creature.");
return false;
}
uint32 spellId = atol(args);
SpellEntry *spellentry = dbcSpell.LookupEntry(spellId);
if(!spellentry)
{
RedSystemMessage(m_session, "Invalid spell id!");
return false;
}
BlueSystemMessage(m_session, "Casting spell %d on target.", spellId);
WorldPacket data;
data.Initialize( SMSG_SPELL_START );
data << caster->GetNewGUID();
data << caster->GetNewGUID();
data << spellId;
data << uint8(0);
data << uint16(0);
data << uint32(0);
data << uint16(2);
data << target->GetGUID();
// WPAssert(data.size() == 36);
m_session->SendPacket( &data );
data.Initialize( SMSG_SPELL_GO );
data << caster->GetNewGUID();
data << caster->GetNewGUID();
data << spellId;
data << uint8(0) << uint8(1) << uint8(1);
data << target->GetGUID();
data << uint8(0);
data << uint16(2);
data << target->GetGUID();
// WPAssert(data.size() == 42);
m_session->SendPacket( &data );
return true;
}
示例2: HandleCastSpellCommand
bool ChatHandler::HandleCastSpellCommand(const char* args, WorldSession *m_session)
{
UnitPointer caster = m_session->GetPlayer();
UnitPointer target = getSelectedChar(m_session, false);
if(!target)
target = getSelectedCreature(m_session, false);
if(!target)
{
RedSystemMessage(m_session, "Must select a char or creature.");
return false;
}
uint32 spellid = atol(args);
SpellEntry *spellentry = dbcSpell.LookupEntry(spellid);
if(!spellentry)
{
RedSystemMessage(m_session, "Invalid spell id!");
return false;
}
SpellPointer sp(new Spell(caster, spellentry, false, NULLAURA));
if(!sp)
{
RedSystemMessage(m_session, "Spell failed creation!");
sp->Destructor();
sp = NULLSPELL;
return false;
}
BlueSystemMessage(m_session, "Casting spell %d on target.", spellid);
SpellCastTargets targets;
targets.m_unitTarget = target->GetGUID();
sp->prepare(&targets);
return true;
}
示例3: HandleListAIAgentCommand
bool ChatHandler::HandleListAIAgentCommand(const char* args, WorldSession *m_session)
{
UnitPointer target = m_session->GetPlayer()->GetMapMgr()->GetCreature(GET_LOWGUID_PART(m_session->GetPlayer()->GetSelection()));
if(!target)
{
RedSystemMessage(m_session, "You have to select a Creature!");
return false;
}
std::stringstream sstext;
sstext << "agentlist of creature: " << target->GetGUID() << '\n';
std::stringstream ss;
ss << "SELECT * FROM ai_agents where entry=" << target->GetUInt32Value(OBJECT_FIELD_ENTRY);
QueryResult *result = WorldDatabase.Query( ss.str().c_str() );
if( !result )
return false;
do
{
Field *fields = result->Fetch();
sstext << "agent: " << fields[1].GetUInt16()
<< " | spellId: " << fields[5].GetUInt32()
<< " | Event: " << fields[2].GetUInt32()
<< " | chance: " << fields[3].GetUInt32()
<< " | count: " << fields[4].GetUInt32() << '\n';
} while( result->NextRow() );
delete result;
SendMultilineMessage(m_session, sstext.str().c_str());
return true;
}
示例4: HandleKillCommand
bool ChatHandler::HandleKillCommand(const char *args, WorldSession *m_session)
{
UnitPointer target = m_session->GetPlayer()->GetMapMgr()->GetUnit(m_session->GetPlayer()->GetSelection());
if(target == 0)
{
RedSystemMessage(m_session, "A valid selection is required.");
return true;
}
switch(target->GetTypeId())
{
case TYPEID_PLAYER:
sGMLog.writefromsession(m_session, "used kill command on PLAYER %s", TO_PLAYER( target )->GetName() );
break;
case TYPEID_UNIT:
sGMLog.writefromsession(m_session, "used kill command on CREATURE %s", TO_CREATURE( target )->GetCreatureName() ? TO_CREATURE( target )->GetCreatureName()->Name : "unknown");
break;
}
// If we're killing a player, send a message indicating a gm killed them.
if(target->IsPlayer())
{
PlayerPointer plr = TO_PLAYER(target);
m_session->GetPlayer()->DealDamage(plr, plr->GetUInt32Value(UNIT_FIELD_HEALTH),0,0,0);
//plr->SetUInt32Value(UNIT_FIELD_HEALTH, 0);
plr->KillPlayer();
BlueSystemMessageToPlr(plr, "%s killed you with a GM command.", m_session->GetPlayer()->GetName());
}
else
{
// Cast insta-kill.
SpellEntry * se = dbcSpell.LookupEntry(5);
if(se == 0) return false;
SpellCastTargets targets(target->GetGUID());
SpellPointer sp(new Spell(m_session->GetPlayer(), se, true, NULLAURA));
sp->prepare(&targets);
/* SpellEntry * se = dbcSpell.LookupEntry(20479);
if(se == 0) return false;
SpellCastTargets targets(target->GetGUID());
SpellPointer sp(new Spell(target, se, true, NULLAURA));
sp->prepare(&targets);*/
}
return true;
}
示例5: HandleAddDynamicTargetOpcode
void WorldSession::HandleAddDynamicTargetOpcode(WorldPacket & recvPacket)
{
DEBUG_LOG( "WORLD"," got CMSG_PET_CAST_SPELL." );
uint64 guid;
uint8 counter;
uint32 spellid;
uint8 flags;
UnitPointer caster;
SpellCastTargets targets;
SpellEntry *sp;
SpellPointer pSpell;
list<AI_Spell*>::iterator itr;
recvPacket >> guid >> counter >> spellid >> flags;
sp = dbcSpell.LookupEntry(spellid);
// Summoned Elemental's Freeze
if (spellid == 33395)
{
caster = _player->m_Summon;
if( caster && TO_PET(caster)->GetAISpellForSpellId(spellid) == NULL )
return;
}
else
{
caster = _player->m_CurrentCharm;
if( caster != NULL )
{
for(itr = caster->GetAIInterface()->m_spells.begin(); itr != caster->GetAIInterface()->m_spells.end(); ++itr)
{
if( (*itr)->spell->Id == spellid )
break;
}
if( itr == caster->GetAIInterface()->m_spells.end() )
return;
}
}
if( caster == NULL || guid != caster->GetGUID() )
return;
targets.read(recvPacket, _player->GetGUID());
pSpell = SpellPointer(new Spell(caster, sp, false, NULLAURA));
pSpell->prepare(&targets);
}
示例6: HandleMonsterYellCommand
bool ChatHandler::HandleMonsterYellCommand(const char* args, WorldSession *m_session)
{
UnitPointer crt = getSelectedCreature(m_session, false);
if(!crt)
crt = getSelectedChar(m_session, false);
if(!crt)
{
RedSystemMessage(m_session, "Please select a creature or player before using this command.");
return true;
}
if(crt->GetTypeId() == TYPEID_PLAYER)
{
WorldPacket * data = this->FillMessageData(CHAT_MSG_YELL, LANG_UNIVERSAL, args, crt->GetGUID(), 0);
crt->SendMessageToSet(data, true);
delete data;
}
else
{
crt->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, args);
}
return true;
}
示例7: OnPlayerKilledUnit
void HonorHandler::OnPlayerKilledUnit( PlayerPointer pPlayer, UnitPointer pVictim )
{
if( pVictim == NULL || pPlayer == NULL || !pVictim->IsPlayer() || !pPlayer->IsPlayer() )
return;
if( TO_PLAYER( pVictim )->m_honorless )
return;
if( pVictim->IsPlayer() )
{
if( pPlayer->m_bg )
{
if( TO_PLAYER( pVictim )->m_bgTeam == pPlayer->m_bgTeam )
return;
// patch 2.4, players killed >50 times in battlegrounds won't be worth honor for the rest of that bg
if( TO_PLAYER(pVictim)->m_bgScore.Deaths >= 50 )
return;
}
else
{
if( pPlayer->GetTeam() == TO_PLAYER( pVictim )->GetTeam() )
return;
}
}
// Calculate points
int32 Points = CalculateHonorPointsForKill(pPlayer, pVictim);
if( Points > 0 )
{
if( pPlayer->m_bg )
{
// hackfix for battlegrounds (since the gorups there are disabled, we need to do this manually)
vector<PlayerPointer > toadd;
uint32 t = pPlayer->m_bgTeam;
toadd.reserve(15); // shouldnt have more than this
pPlayer->m_bg->Lock();
set<PlayerPointer > * s = &pPlayer->m_bg->m_players[t];
for(set<PlayerPointer >::iterator itr = s->begin(); itr != s->end(); ++itr)
{
if((*itr) == pPlayer || (*itr)->isInRange(pPlayer,40.0f))
toadd.push_back(*itr);
}
if( toadd.size() > 0 )
{
uint32 pts = Points / (uint32)toadd.size();
for(vector<PlayerPointer >::iterator vtr = toadd.begin(); vtr != toadd.end(); ++vtr)
{
AddHonorPointsToPlayer(*vtr, pts);
(*vtr)->GetAchievementInterface()->HandleAchievementCriteriaHonorableKill();
(*vtr)->GetAchievementInterface()->HandleAchievementCriteriaHonorableKillClass( pVictim->getClass() );
(*vtr)->GetAchievementInterface()->HandleAchievementCriteriaHonorableKillRace( pVictim->getRace() );
(*vtr)->m_killsToday++;
(*vtr)->m_killsLifetime++;
pPlayer->m_bg->HookOnHK(*vtr);
if(pVictim)
{
// Send PVP credit
WorldPacket data(SMSG_PVP_CREDIT, 12);
uint32 pvppoints = pts * 10;
data << pvppoints << pVictim->GetGUID() << uint32(TO_PLAYER(pVictim)->GetPVPRank());
(*vtr)->GetSession()->SendPacket(&data);
}
}
}
pPlayer->m_bg->Unlock();
}
else if(pPlayer->GetGroup())
{
Group *pGroup = pPlayer->GetGroup();
PlayerPointer gPlayer = NULLPLR;
int32 GroupPoints;
pGroup->Lock();
GroupPoints = (Points / (pGroup->MemberCount() ? pGroup->MemberCount() : 1));
GroupMembersSet::iterator gitr;
for(uint32 k = 0; k < pGroup->GetSubGroupCount(); k++)
{
for(gitr = pGroup->GetSubGroup(k)->GetGroupMembersBegin(); gitr != pGroup->GetSubGroup(k)->GetGroupMembersEnd(); ++gitr)
{
gPlayer = (*gitr)->m_loggedInPlayer;
if(gPlayer && (gPlayer == pPlayer || gPlayer->isInRange(pPlayer,100.0f))) // visible range
{
gPlayer->GetAchievementInterface()->HandleAchievementCriteriaHonorableKill();
gPlayer->GetAchievementInterface()->HandleAchievementCriteriaHonorableKillClass( pVictim->getClass() );
gPlayer->GetAchievementInterface()->HandleAchievementCriteriaHonorableKillRace( pVictim->getRace() );
gPlayer->m_killsToday++;
gPlayer->m_killsLifetime++;
if(gPlayer->m_bg)
gPlayer->m_bg->HookOnHK(gPlayer);
sHookInterface.OnHonorableKill(gPlayer, TO_PLAYER(pVictim));
AddHonorPointsToPlayer(gPlayer, GroupPoints);
if(pVictim)
//.........这里部分代码省略.........