Beispiel #1
0
void CNetSends::UpdateScoreAndPing( unsigned char uc )
{
	CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc );
	if ( pPlayer )
	{
		RakNet::BitStream bsSend;

		unsigned char uc = 0, uc1 = 0;
		while ( ( uc < MAX_PLAYERS ) && ( uc1 < CPlayerPoolManager::Count() ) )
		{
			CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc );
			if ( pPlayer )
			{
				bsSend.Write( uc );
				bsSend.Write( (int)pPlayer->GetScore() );
				bsSend.Write( (int)pPlayer->GetPing() );

				if ( pPlayer->IsAdmin() )
				{
					bsSend.Write( (unsigned long)pPlayer->GetPlayerID().binaryAddress );
				}
				else bsSend.Write((unsigned long)0UL);

				uc1++;
			}
			uc++;
		}

		NetInterface->RPC( "UpdateScPing", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), FALSE, FALSE );
	}
}
Beispiel #2
0
void UpdateScoreAndPing(PCHAR Data, int iBitLength, PlayerID sender)
{
	RakNet::BitStream bsData(Data,iBitLength/8,FALSE);
	RakNet::BitStream bsSend;
	BYTE bytePlayerID = pRak->GetIndexFromPlayerID(sender);
	if(!pNetGame->GetPlayerPool()->GetSlotState(bytePlayerID)) return;

	CPlayerPool *pPlayerPool = pNetGame->GetPlayerPool();

	int write_counter=0;
	PlayerID pID;

	BYTE x=0;
	while(x!=MAX_PLAYERS) {
		if(pPlayerPool->GetSlotState(x) == TRUE) {

			pID = pRak->GetPlayerIDFromIndex(x);

			bsSend.Write((BYTE)x);
			bsSend.Write((int)pPlayerPool->GetScore(x));
			bsSend.Write((int)pRak->GetLastPing(pRak->GetPlayerIDFromIndex(x)));
			
			if(pPlayerPool->IsAdmin(bytePlayerID)) {
				bsSend.Write(pID.binaryAddress);
			} else {
				bsSend.Write((unsigned long)0UL);
			}

			write_counter++;
		}
		x++;
	}
		
	pRak->RPC("UpdateScPing",&bsSend,HIGH_PRIORITY,RELIABLE,0,sender,FALSE,FALSE);
}