Пример #1
0
void Arena::HandleBattlegroundEvent(Object *src, Object *dst, uint16 EventID, uint32 params1, uint32 params2)
{
	WorldPacket data;

	switch(EventID)
	{
	case BGEVENT_AB_PLAYER_DEATH:
		{
			Player *Source = ((Player*)src);
			if(!Source || src->GetTypeId() != TYPEID_PLAYER) return;

			uint64 guid = Source->GetGUID();
			std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid);
			if(itr == m_PlayerScores.end())
			{
				SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true);
				return;
			}
			itr->second.Deaths++;
			UpdatePVPData();
		}break;
	case BGEVENT_AB_PLAYER_KILL:
		{
			Player *Source = ((Player*)src);
			if(!Source || src->GetTypeId() != TYPEID_PLAYER) return;

			uint64 guid = Source->GetGUID();
			std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid);
			if(itr == m_PlayerScores.end())
			{
				SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true);
				return;
			}
			itr->second.KillingBlows++;
			UpdatePVPData();
		}break; 
   }	
}
Пример #2
0
void AlteracValley::HandleBattlegroundEvent(Object *src, Object *dst, uint16 EventID, uint32 params1, uint32 params2)
{
	WorldPacket data;

	switch(EventID)
	{
	case BGEVENT_AV_GENERAL_DEAD_HORDE:
		{	
			// Play sound
			WorldPacket pkt;
			pkt.Initialize(SMSG_PLAY_SOUND);
			pkt << uint32(SOUND_ALLIANCEWINS);
			SendPacketToAll(&pkt);
			
			// set battleground win
			SetBattleGroundStatus(true);
			// alliance wins
			SetBattleGameWin(true);
	
			UpdatePVPData();
		}break;	
	case BGEVENT_AV_GENERAL_DEAD_ALLIANCE:	
		{	
			// Play sound
			WorldPacket pkt;
			pkt.Initialize(SMSG_PLAY_SOUND);
			pkt << uint32(SOUND_HORDEWINS);
			SendPacketToAll(&pkt);
	
			// set battleground win
			SetBattleGroundStatus(true);
			// horde wins
			SetBattleGameWin(false);
	
			UpdatePVPData();
		}break;	
	case BGEVENT_AV_PLAYER_DEATH:
		{
			Player *Source = ((Player*)src);
			if(!Source || src->GetTypeId() != TYPEID_PLAYER) return;

			uint64 guid = Source->GetGUID();
			std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid);
			if(itr == m_PlayerScores.end())
			{
				SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true);
				return;
			}
			itr->second.Deaths++;
			UpdatePVPData();
		}break;
	case BGEVENT_AV_PLAYER_KILL:
		{
			Player *Source = ((Player*)src);
			if(!Source || src->GetTypeId() != TYPEID_PLAYER) return;

			uint64 guid = Source->GetGUID();
			std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid);
			if(itr == m_PlayerScores.end())
			{
				SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true);
				return;
			}
			itr->second.KillingBlows++;
			UpdatePVPData();
		}break;
	}	
}