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 ); } }
void CNetSends::RequestAmmu( unsigned char uc, unsigned char ucAmmu ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { CAmmuPool* pAmmu = CAmmuPoolManager::Find( ucAmmu ); if ( pAmmu ) { unsigned char ucThing = 1; RakNet::BitStream bsSend; bsSend.Write( ucThing ); bsSend.Write( ucAmmu ); bsSend.Write( pAmmu->GetX() ); bsSend.Write( pAmmu->GetY() ); bsSend.Write( pAmmu->GetZ() ); bsSend.Write( pAmmu->GetCameraAngleX() ); bsSend.Write( pAmmu->GetCameraAngleY() ); bsSend.Write( pAmmu->GetCameraAngleZ() ); bsSend.Write( pAmmu->GetCameraX() ); bsSend.Write( pAmmu->GetCameraY() ); bsSend.Write( pAmmu->GetCameraZ() ); NetInterface->RPC( "RequestAmmu", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } } }
void CNetSends::RequestWep( unsigned char uc, unsigned char ucAmmu, unsigned int iWeapon ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { CAmmuPool* pAmmu = CAmmuPoolManager::Find( ucAmmu ); if ( pAmmu ) { unsigned char ucEnabled = 0; if ( pAmmu->GetWeaponEnabled( iWeapon ) ) ucEnabled = 1; RakNet::BitStream bsSend; bsSend.Write( ucEnabled ); bsSend.Write( iWeapon ); bsSend.Write( ucAmmu ); bsSend.Write( pAmmu->GetWeaponX() ); bsSend.Write( pAmmu->GetWeaponY() ); bsSend.Write( pAmmu->GetWeaponZ() ); bsSend.Write( pAmmu->GetWeapon( iWeapon ) ); bsSend.Write( pAmmu->GetWeaponCost( iWeapon ) ); NetInterface->RPC( "RequestWep", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } } }
void CNetSends::SpawnVehicleForPlayer( unsigned char uc, unsigned char ucVehicle ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { CVehiclePool* pVehicle = CVehiclePoolManager::Find( ucVehicle ); if ( pVehicle ) { RakNet::BitStream bsSend; bsSend.Write( ucVehicle ); bsSend.Write( pVehicle->GetModel() ); bsSend.Write( pVehicle->GetX() ); bsSend.Write( pVehicle->GetY() ); bsSend.Write( pVehicle->GetZ() ); bsSend.Write( pVehicle->GetRotation() ); bsSend.Write( (int)pVehicle->GetColour1() ); bsSend.Write( (int)pVehicle->GetColour2() ); bsSend.Write( pVehicle->GetHealth() ); // Spawn stuff bsSend.Write( pVehicle->GetSpawnX() ); bsSend.Write( pVehicle->GetSpawnY() ); bsSend.Write( pVehicle->GetSpawnZ() ); bsSend.Write( pVehicle->GetSpawnRotation() ); NetInterface->RPC( "VehicleSpawn", &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } } }
void CNetSends::SpawnForPlayer( unsigned char uc, unsigned char ucPlayer ) { CPlayerPool* pPlayerToSend = CPlayerPoolManager::Find( uc ); if ( pPlayerToSend ) { if ( !pPlayerToSend->GetSyncBlocked() ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( ucPlayer ); if ( pPlayer ) { RakNet::BitStream bsSend; CSpawnPool* pSpawn = CSpawnPoolManager::Find( pPlayer->GetClassID() ); if ( pSpawn ) { bsSend.Write( ucPlayer ); bsSend.Write( pSpawn->GetTeam() ); bsSend.Write( pSpawn->GetSkin() ); bsSend.Write( pSpawn->GetX() ); bsSend.Write( pSpawn->GetY() ); bsSend.Write( pSpawn->GetZ() ); bsSend.Write( pSpawn->GetAngle() ); bsSend.Write( pSpawn->GetWeapon( 0 ) ); bsSend.Write( pSpawn->GetWeaponAmmo( 0 ) ); bsSend.Write( pSpawn->GetWeapon( 1 ) ); bsSend.Write( pSpawn->GetWeaponAmmo( 1 ) ); bsSend.Write( pSpawn->GetWeapon( 2 ) ); bsSend.Write( pSpawn->GetWeaponAmmo( 2 ) ); NetInterface->RPC( "Spawn", &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, pPlayerToSend->GetPlayerID(), FALSE, FALSE ); } } } } }
void CNetSends::PM( unsigned char ucPlayer, unsigned char ucPlayerTo, char* szText ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( ucPlayer ); if ( pPlayer ) { CPlayerPool* pPlayerTo = CPlayerPoolManager::Find( ucPlayerTo ); if ( pPlayerTo ) { if ( !pPlayerTo->GetIgnored( ucPlayer ) ) { char szBlah[ MAX_TEXT_LEN ] = { 0 }; strcpy( szBlah, "PM" ); strcat( szBlah, szText ); BYTE byteTextLen = strlen( szBlah ); RakNet::BitStream bsSend; bsSend.Write( ucPlayer ); bsSend.Write( ucPlayerTo ); bsSend.Write( byteTextLen ); bsSend.Write( szBlah, byteTextLen ); NetInterface->RPC( "MsgChat", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayerTo->GetPlayerID(), FALSE, FALSE ); } } } }
void CNetSends::SpecOn( unsigned char uc ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { RakNet::BitStream bsSend; NetInterface->RPC( "SpecOn", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } }
void CNetSends::ExitVehicle( unsigned char uc, unsigned char ucVehicle ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { if ( !pPlayer->GetSyncBlocked() ) { RakNet::BitStream bsSend; bsSend.Write( uc ); bsSend.Write( ucVehicle ); NetInterface->RPC( "ExitVehicle", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), TRUE, FALSE ); } } }
void CNetSends::PassengerSync( unsigned char uc, unsigned char ucVehicle, unsigned int uiPassengerSeat ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { RakNet::BitStream bsSend; //bsSend.Write( (unsigned char)ID_PASSENGER_SYNC ); bsSend.Write( (unsigned char)uc ); bsSend.Write( (unsigned char)ucVehicle ); bsSend.Write( uiPassengerSeat ); NetInterface->RPC( "Passenger", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), TRUE, FALSE ); } }
void CNetSends::DeletePickupForPlayer( unsigned char uc, unsigned int ui ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { CPickupPool* pPickup = CPickupPoolManager::Find( ui ); if ( pPickup ) { RakNet::BitStream bsSend; bsSend.Write( ui ); NetInterface->RPC( "PickedUp", &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } } }
void CNetSends::SetMarkerForPlayer( unsigned char uc, unsigned char uc2, float fX, float fY, float fZ ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { RakNet::BitStream bsSend; char szText[ 256 ] = { NULL }; BYTE byteTextLen = 0; sprintf( szText, "16 %i %f %f %f", uc2, fX, fY, fZ); byteTextLen = strlen( szText ); bsSend.Write( byteTextLen ); bsSend.Write( szText, byteTextLen ); NetInterface->RPC( "Set", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } }
void CNetSends::SetPlayerLocalMarker( unsigned char uc1, unsigned char uc2, unsigned char uc3 ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc1 ); CPlayerPool* pPlayerTo = CPlayerPoolManager::Find( uc3 ); if ( ( pPlayer ) && ( pPlayerTo ) ) { RakNet::BitStream bsSend; char szText[ 256 ] = { NULL }; BYTE byteTextLen = 0; sprintf(szText, "11 %i %i", uc1, uc2); byteTextLen = strlen( szText ); bsSend.Write( byteTextLen ); bsSend.Write( szText, byteTextLen ); NetInterface->RPC( "Set", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayerTo->GetPlayerID(), FALSE, FALSE ); } }
void CNetSends::AdminMsg( unsigned char uc, char* sz ) { CPlayerPool* pPlayerTo = CPlayerPoolManager::Find( uc ); if ( pPlayerTo ) { char szBlah[ MAX_TEXT_LEN ] = { 0 }; strcpy( szBlah, "PM" ); strcat( szBlah, sz ); unsigned char ucAdmin = 200; unsigned char byteTextLen = strlen( szBlah ); RakNet::BitStream bsSend; bsSend.Write( ucAdmin ); bsSend.Write( uc ); bsSend.Write( byteTextLen ); bsSend.Write( szBlah, byteTextLen ); NetInterface->RPC( "MsgChat", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayerTo->GetPlayerID(), FALSE, FALSE ); } }
void CNetSends::AdminChat( char* szText ) { BYTE byteTextLen = strlen( szText ); RakNet::BitStream bsSend; bsSend.Write( byteTextLen ); bsSend.Write( szText, byteTextLen ); unsigned char uc = 0, uc1 = 0; while ( ( uc < MAX_PLAYERS ) && ( uc1 < CPlayerPoolManager::Count() ) ) { CPlayerPool* pSendTo = CPlayerPoolManager::Find( uc ); if ( pSendTo ) { NetInterface->RPC( "AdminChat", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pSendTo->GetPlayerID(), FALSE, FALSE ); uc1++; } uc++; } }
void CNetSends::SpawnPickupForPlayer( unsigned char uc, unsigned int uiPickup, unsigned char ucOwner ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { CPickupPool* pPickup = CPickupPoolManager::Find( uiPickup ); if ( pPickup ) { RakNet::BitStream bsSend; bsSend.Write( ucOwner ); bsSend.Write( uiPickup ); bsSend.Write( pPickup->GetModel() ); bsSend.Write( pPickup->GetX() ); bsSend.Write( pPickup->GetY() ); bsSend.Write( pPickup->GetZ() ); if ( pPickup->GetSpawned() ) bsSend.Write( (BYTE)1 ); else bsSend.Write( (BYTE)0 ); NetInterface->RPC( "PickupSpawn", &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 1, pPlayer->GetPlayerID(), FALSE, FALSE ); } } }
void CNetSends::Chat( unsigned char ucPlayer, char* szText ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( ucPlayer ); if ( pPlayer ) { if ( !pPlayer->GetMuted() ) { BYTE byteTextLen = strlen( szText ); RakNet::BitStream bsSend; bsSend.Write( ucPlayer ); bsSend.Write( byteTextLen ); bsSend.Write( szText, byteTextLen ); //NetInterface->RPC( "Chat", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), TRUE, FALSE ); unsigned char uc = 0, uc1 = 0; while ( ( uc < MAX_PLAYERS ) && ( uc1 < CPlayerPoolManager::Count() ) ) { CPlayerPool* pSendTo = CPlayerPoolManager::Find( uc ); if ( pSendTo ) { if ( pSendTo != pPlayer ) { // If the player hasn't ignored the player talking, send the message if ( !pSendTo->GetIgnored( ucPlayer ) ) NetInterface->RPC( "Chat", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pSendTo->GetPlayerID(), FALSE, FALSE ); } uc1++; } uc++; } } } }
void CNetSends::ChatToPlayer( unsigned char ucPlayerTo, unsigned char ucPlayer, char* szText ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( ucPlayer ); CPlayerPool* pPlayerTo = CPlayerPoolManager::Find( ucPlayerTo ); if ( ( pPlayer ) && ( pPlayerTo ) ) { BYTE byteTextLen = strlen( szText ); RakNet::BitStream bsSend; bsSend.Write( ucPlayer ); bsSend.Write( byteTextLen ); bsSend.Write( szText, byteTextLen ); unsigned char uc = 0, uc1 = 0; if ( ucPlayerTo != ucPlayer ) { // If the player hasn't ignored the player talking, send the message if ( !pPlayer->GetIgnored( ucPlayerTo ) ) NetInterface->RPC( "Chat", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayerTo->GetPlayerID(), FALSE, FALSE ); } } }
void CNetSends::InitGame( unsigned char uc ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { // Send this back as the 'InitGame' RPC RakNet::BitStream bsInitGame; VECTOR vInitPlayerPos = CConfigLoader::GetInitPlayerPos(); VECTOR vInitCameraPos = CConfigLoader::GetInitCameraPos(); VECTOR vInitCameraLook = CConfigLoader::GetInitCameraLook(); bsInitGame.Write( (float)vInitPlayerPos.X ); bsInitGame.Write( (float)vInitPlayerPos.Y ); bsInitGame.Write( (float)vInitPlayerPos.Z ); bsInitGame.Write( (float)vInitCameraPos.X ); bsInitGame.Write( (float)vInitCameraPos.Y ); bsInitGame.Write( (float)vInitCameraPos.Z ); bsInitGame.Write( (float)vInitCameraLook.X ); bsInitGame.Write( (float)vInitCameraLook.Y ); bsInitGame.Write( (float)vInitCameraLook.Z ); bsInitGame.Write( (float)CConfigLoader::GetWorldBounds( 0 ) ); bsInitGame.Write( (float)CConfigLoader::GetWorldBounds( 1 ) ); bsInitGame.Write( (float)CConfigLoader::GetWorldBounds( 2 ) ); bsInitGame.Write( (float)CConfigLoader::GetWorldBounds( 3 ) ); bsInitGame.Write( (int)CSpawnPoolManager::Count() ); // Spawns Available if ( CConfigLoader::GetFriendlyFire() ) bsInitGame.Write( (BYTE)1 ); else bsInitGame.Write((BYTE)0); bsInitGame.Write( (unsigned char)CConfigLoader::GetShowOnRadar() ); bsInitGame.Write( uc ); bsInitGame.Write( (unsigned char)CAmmuPoolManager::Count() ); CNet::GetInterface()->RPC( "InitGame", &bsInitGame, HIGH_PRIORITY, RELIABLE_ORDERED, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } }
void CNetSends::PlayerJoin( unsigned char uc ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { RakNet::BitStream bsSend; bsSend.Write( uc ); bsSend.Write( (int)strlen( pPlayer->GetNick() ) ); bsSend.Write( pPlayer->GetNick(), strlen( pPlayer->GetNick() ) ); CNet::GetInterface()->RPC( "ServerJoin", &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, pPlayer->GetPlayerID(), TRUE, FALSE ); } }
void CNetSends::Death( unsigned char uc, unsigned char ucKiller, unsigned char ucReason ) { CPlayerPool* pPlayer = CPlayerPoolManager::Find( uc ); if ( pPlayer ) { RakNet::BitStream bsSend; bsSend.Write( uc ); bsSend.Write( ucReason ); bsSend.Write( ucKiller ); if ( ( ucKiller != INVALID_PLAYER_ID ) && ( ucKiller < MAX_PLAYERS ) ) { CPlayerPool* pKiller = CPlayerPoolManager::Find( ucKiller ); if ( pKiller ) { if ( ( pKiller->GetTeam() == INVALID_TEAM_ID ) || ( ( pKiller->GetTeam() != INVALID_TEAM_ID ) && ( pKiller->GetTeam() != pPlayer->GetTeam() ) ) ) { if (CConfigLoader::GetDeathmatchScoreB()) pKiller->IncScore(); bsSend.Write( (unsigned char)VALID_KILL ); CScripting::PushFunction( "onPlayerKill" ); CScripting::PushPlayerPointer( pKiller ); CScripting::PushPlayerPointer( pPlayer ); CScripting::PushInteger( ucReason ); CScripting::CallFunction(); CPlayerSendPackets::Kill( ucKiller, pKiller->GetTeam(), uc, pPlayer->GetTeam(), ucReason ); } else { if (CConfigLoader::GetDeathmatchScoreB()) pKiller->DecScore(); bsSend.Write( (unsigned char)TEAM_KILL ); CScripting::PushFunction( "onPlayerTeamKill" ); CScripting::PushPlayerPointer( pKiller ); CScripting::PushPlayerPointer( pPlayer ); CScripting::PushInteger( ucReason ); CScripting::CallFunction(); CPlayerSendPackets::TeamKill( ucKiller, pKiller->GetTeam(), uc, pPlayer->GetTeam(), ucReason ); } } else { bsSend.Write( (unsigned char)SELF_KILL ); CScripting::PushFunction( "onPlayerDeath" ); CScripting::PushPlayerPointer( pPlayer ); CScripting::PushInteger( ucReason ); CScripting::CallFunction(); CPlayerSendPackets::Death( uc, ucReason ); } } else { bsSend.Write( (unsigned char)SELF_KILL ); CScripting::PushFunction( "onPlayerDeath" ); CScripting::PushPlayerPointer( pPlayer ); CScripting::PushInteger( ucReason ); CScripting::CallFunction(); CPlayerSendPackets::Death( uc, ucReason ); } // Broadcast it NetInterface->RPC( "Death", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), TRUE, FALSE ); // Now let the player who died know aswell. NetInterface->RPC( "OwnDeath", &bsSend, HIGH_PRIORITY, RELIABLE, 0, pPlayer->GetPlayerID(), FALSE, FALSE ); } }