本文整理汇总了C++中UnitPointer::GetTypeId方法的典型用法代码示例。如果您正苦于以下问题:C++ UnitPointer::GetTypeId方法的具体用法?C++ UnitPointer::GetTypeId怎么用?C++ UnitPointer::GetTypeId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UnitPointer
的用法示例。
在下文中一共展示了UnitPointer::GetTypeId方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}
示例2: OnDamageTaken
void OnDamageTaken(UnitPointer mAttacker, float fAmount)
{
if(_unit->GetUInt32Value(UNIT_FIELD_HEALTH)- fAmount<=_unit->GetUInt32Value(UNIT_FIELD_MAXHEALTH)*0.2)
{
if(mAttacker->GetTypeId() == TYPEID_PLAYER)
{
_unit->SetUInt64Value(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
RegisterAIUpdateEvent(1000);
QuestLogEntry *qle = (TO_PLAYER(mAttacker))->GetQuestLogForEntry( 1447 );
if(!qle)
return;
qle->SendQuestComplete();
}
}
}
示例3: CalculateHonorPointsForKill
int32 HonorHandler::CalculateHonorPointsForKill( PlayerPointer pPlayer, UnitPointer pVictim )
{
// this sucks.. ;p
if( pVictim == NULL )
return 0;
// Suicide lol
if( pVictim == pPlayer )
return 0;
if( pVictim->GetTypeId() != TYPEID_PLAYER )
return 0;
// How dishonorable, you fiend!
if( pVictim->HasActiveAura( PLAYER_HONORLESS_TARGET_SPELL ) )
return 0;
uint32 k_level = pPlayer->GetUInt32Value( UNIT_FIELD_LEVEL );
uint32 v_level = pVictim->GetUInt32Value( UNIT_FIELD_LEVEL );
// formula guessed
int32 honor_points = 6;
if(k_level != v_level)
{
int32 diff = v_level - k_level;
honor_points += diff;
if(honor_points <= 0)
return 0;
if(honor_points >= 8)
honor_points = 8;
}
honor_points = float2int32(float(honor_points) * World::getSingleton().getRate( RATE_HONOR ));
//honor_points *= World::getSingleton().getRate( RATE_HONOR );
return honor_points;
}
示例4: 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;
}