本文整理汇总了C++中GameObject::GetInRangePlayerSetEnd方法的典型用法代码示例。如果您正苦于以下问题:C++ GameObject::GetInRangePlayerSetEnd方法的具体用法?C++ GameObject::GetInRangePlayerSetEnd怎么用?C++ GameObject::GetInRangePlayerSetEnd使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GameObject
的用法示例。
在下文中一共展示了GameObject::GetInRangePlayerSetEnd方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateCPs
void EyeOfTheStorm::UpdateCPs()
{
uint32 i;
set< Object* >::iterator itr, itrend;
Player* plr;
GameObject* go;
int32 delta = 0;
uint32 playercounts[2];
uint32 towers[2] = {0, 0};
EOTSCaptureDisplayList::iterator eitr, eitr2, eitrend;
EOTSCaptureDisplayList* disp;
for(i = 0; i < EOTS_TOWER_COUNT; ++i)
{
/* loop players in range, add any that aren't in the set to the set */
playercounts[0] = playercounts[1] = 0;
go = m_CPStatusGO[i];
disp = &m_CPDisplay[i];
itr = go->GetInRangePlayerSetBegin();
itrend = go->GetInRangePlayerSetEnd();
for(; itr != itrend; ++itr)
{
plr = TO< Player* >(*itr);
if(plr->isAlive() && !(plr->IsStealth()) && !(plr->m_invisible) && !(plr->SchoolImmunityList[0]) && plr->GetDistance2dSq(go) <= EOTS_CAPTURE_DISTANCE)
{
playercounts[plr->GetTeam()]++;
if(disp->find(plr) == disp->end())
{
disp->insert(plr);
plr->SendWorldStateUpdate(WORLDSTATE_EOTS_DISPLAYON, 1);
}
}
}
/* score diff calculation */
//printf("EOTS: Playercounts = %u %u\n", playercounts[0], playercounts[1]);
if(playercounts[0] != playercounts[1])
{
if(playercounts[0] > playercounts[1])
delta = playercounts[0];
else if(playercounts[1] > playercounts[0])
delta = -(int32)playercounts[1];
delta *= EOTS_CAPTURE_RATE;
m_CPStatus[i] += delta;
if(m_CPStatus[i] > 100)
m_CPStatus[i] = 100;
else if(m_CPStatus[i] < 0)
m_CPStatus[i] = 0;
// change the flag depending on cp status
if(m_CPStatus[i] <= 30)
{
if(m_CPBanner[i] && m_CPBanner[i]->GetEntry() != EOTS_BANNER_HORDE)
{
RespawnCPFlag(i, EOTS_BANNER_HORDE);
if(m_spiritGuides[i] != NULL)
{
RepopPlayersOfTeam(0, m_spiritGuides[i]);
m_spiritGuides[i]->Despawn(0, 0);
RemoveSpiritGuide(m_spiritGuides[i]);
m_spiritGuides[i] = NULL;
}
m_spiritGuides[i] = SpawnSpiritGuide(EOTSGraveyardLocations[i][0], EOTSGraveyardLocations[i][1], EOTSGraveyardLocations[i][2], 0, 1);
AddSpiritGuide(m_spiritGuides[i]);
SetWorldState(m_iconsStates[i][0], 0);
SetWorldState(m_iconsStates[i][1], 0);
SetWorldState(m_iconsStates[i][2], 1);
SendChatMessage(CHAT_MSG_BG_EVENT_HORDE, 0, "The Horde has taken the %s !", EOTSControlPointNames[i]);
PlaySoundToAll(SOUND_HORDE_CAPTURE);
}
}
else if(m_CPStatus[i] >= 70)
{
if(m_CPBanner[i] && m_CPBanner[i]->GetEntry() != EOTS_BANNER_ALLIANCE)
{
RespawnCPFlag(i, EOTS_BANNER_ALLIANCE);
if(m_spiritGuides[i] != NULL)
{
RepopPlayersOfTeam(1, m_spiritGuides[i]);
m_spiritGuides[i]->Despawn(0, 0);
RemoveSpiritGuide(m_spiritGuides[i]);
m_spiritGuides[i] = NULL;
}
m_spiritGuides[i] = SpawnSpiritGuide(EOTSGraveyardLocations[i][0], EOTSGraveyardLocations[i][1], EOTSGraveyardLocations[i][2], 0, 0);
AddSpiritGuide(m_spiritGuides[i]);
SetWorldState(m_iconsStates[i][0], 0);
SetWorldState(m_iconsStates[i][1], 1);
SetWorldState(m_iconsStates[i][2], 0);
SendChatMessage(CHAT_MSG_BG_EVENT_ALLIANCE, 0, "The Alliance has taken the %s", EOTSControlPointNames[i]);
PlaySoundToAll(SOUND_ALLIANCE_CAPTURE);
}
}
else
//.........这里部分代码省略.........
示例2: UpdateCPs
void EyeOfTheStorm::UpdateCPs()
{
uint32 i;
set<Player*>::iterator itr, itrend;
Player * plr;
GameObject * go;
int32 delta;
uint32 playercounts[2];
uint32 towers[2] = {0,0};
EOTSCaptureDisplayList::iterator eitr, eitr2, eitrend;
EOTSCaptureDisplayList * disp;
for(i = 0; i < EOTS_TOWER_COUNT; ++i)
{
/* loop players inrange, add any that arent in the set to the set */
playercounts[0] = playercounts[1] = 0;
go = m_CPStatusGO[i];
disp = &m_CPDisplay[i];
itr = go->GetInRangePlayerSetBegin();
itrend = go->GetInRangePlayerSetEnd();
for( ; itr != itrend; ++itr )
{
plr = *itr;
if( (plr->GetDistance2dSq( go ) <= EOTS_CAPTURE_DISTANCE) && plr->isAlive() && !plr->IsStealth() )
{
playercounts[plr->GetTeam()]++;
if( disp->find( plr ) == disp->end() )
{
disp->insert( plr );
plr->SendWorldStateUpdate(EOTS_WORLDSTATE_DISPLAYON, 1);
}
}
}
/* score diff calculation */
//printf("EOTS: Playercounts = %u %u\n", playercounts[0], playercounts[1]);
if(playercounts[0] != playercounts[1])
{
if(playercounts[0] > playercounts[1])
delta = playercounts[0];
else if(playercounts[1] > playercounts[0])
delta = -(int32)playercounts[1];
delta *= EOTS_CAPTURE_RATE;
m_CPStatus[i] += delta;
if( m_CPStatus[i] > 100 )
m_CPStatus[i] = 100;
else if( m_CPStatus[i] < 0 )
m_CPStatus[i] = 0;
// change the flag depending on cp status
if( m_CPStatus[i] == 0 )
{
if( m_CPBanner[i]->GetEntry() != EOTS_BANNER_HORDE )
{
SetWorldState( TowerWorldStates[i][0], 0);
SetWorldState( TowerWorldStates[i][1], 1);
RespawnCPFlag(i, EOTS_BANNER_HORDE);
if( m_spiritGuides[i] != NULL )
{
RepopPlayersOfTeam( 0, m_spiritGuides[i] );
m_spiritGuides[i]->Despawn( 0, 0 );
RemoveSpiritGuide( m_spiritGuides[i] );
m_spiritGuides[i] = NULL;
}
m_spiritGuides[i] = SpawnSpiritGuide( EOTSGraveyardLocations[i][0], EOTSGraveyardLocations[i][1], EOTSGraveyardLocations[i][2], 0, 1 );
AddSpiritGuide( m_spiritGuides[i] );
}
}
else if( m_CPStatus[i] == 100 )
{
if( m_CPBanner[i]->GetEntry() != EOTS_BANNER_ALLIANCE )
{
SetWorldState( TowerWorldStates[i][1], 0);
SetWorldState( TowerWorldStates[i][0], 1);
RespawnCPFlag(i, EOTS_BANNER_ALLIANCE);
if( m_spiritGuides[i] != NULL )
{
RepopPlayersOfTeam( 1, m_spiritGuides[i] );
m_spiritGuides[i]->Despawn( 0, 0 );
RemoveSpiritGuide( m_spiritGuides[i] );
m_spiritGuides[i] = NULL;
}
m_spiritGuides[i] = SpawnSpiritGuide( EOTSGraveyardLocations[i][0], EOTSGraveyardLocations[i][1], EOTSGraveyardLocations[i][2], 0, 0 );
AddSpiritGuide( m_spiritGuides[i] );
}
}
else
{
if( m_CPBanner[i]->GetEntry() != EOTS_BANNER_NEUTRAL )
{
for( uint32 j = 0; j < 2; ++j )
SetWorldState( TowerWorldStates[i][j], 0);
//.........这里部分代码省略.........