void CNetGame::UpdateNetwork() { Packet* p; unsigned char packetId; while(p = this->rakServerInterface->Receive()) { packetId = p->data[0]; switch(packetId) { case ID_NEW_INCOMING_CONNECTION: Packet_NewIncomingConnection(p); break; case ID_DISCONNECTION_NOTIFICATION: Packet_DisconnectionNotification(p); break; case ID_CONNECTION_LOST: Packet_ConnectionLost(p); break; /*case ID_MODIFIED_PACKET: //unused? Packet_ModifiedPacket(p); break;*/ case ID_UNOCCUPIED_SYNC: Packet_UnoccupiedSync(p); break; case ID_TRAILER_SYNC: Packet_TrailerSync(p); break; case ID_PASSENGER_SYNC: Packet_PassengerSync(p); break; case ID_PLAYER_SYNC: Packet_PlayerSync(p); break; case ID_WEAPONS_UPDATE: Packet_WeaponsUpdate(p); break; case ID_SPECTATOR_SYNC: Packet_SpectatorSync(p); break; case ID_AIM_SYNC: Packet_AimSync(p); break; case ID_VEHICLE_SYNC: Packet_VehicleSync(p); break; case ID_RCON_COMMAND: Packet_InGameRcon(p); break; case ID_STATS_UPDATE: Packet_StatsUpdate(p); break; } this->rakServerInterface->DeallocatePacket(p); } }
void UpdateNetwork() { unsigned char packetIdentifier; Packet *pkt; while(pkt = pRakServer->Receive()) { if ( ( unsigned char ) pkt->data[ 0 ] == ID_TIMESTAMP ) { if ( pkt->length > sizeof( unsigned char ) + sizeof( unsigned int ) ) packetIdentifier = ( unsigned char ) pkt->data[ sizeof( unsigned char ) + sizeof( unsigned int ) ]; else return; } else packetIdentifier = ( unsigned char ) pkt->data[ 0 ]; //Log("[RAKSAMP] Packet received. PacketID: %d, PlayerID: %d.", pkt->data[0], pkt->playerId); PLAYERID playerID = pkt->playerIndex; switch(packetIdentifier) { case ID_DISCONNECTION_NOTIFICATION: for(int i = 0; i < iScriptsRunning; i++) { if(script.scriptVM[i] != NULL && script.szScriptName[i][0] != 0x00) ScriptEvent_OnPlayerDisconnect(script.scriptVM[i], playerID, playerPool[playerID].szPlayerName, "Leaving"); } removePlayerFromPool(pkt->playerIndex, 0); break; case ID_NEW_INCOMING_CONNECTION: for(int i = 0; i < iScriptsRunning; i++) { if(script.scriptVM[i] != NULL && script.szScriptName[i][0] != 0x00) ScriptEvent_OnNewConnection(script.scriptVM[i], playerID, pkt->playerId.ToString(false), pkt->playerId.port); } break; case ID_MODIFIED_PACKET: Log("Modified packet from: %s", pkt->playerId.ToString(true)); break; case ID_CONNECTION_LOST: for(int i = 0; i < iScriptsRunning; i++) { if(script.scriptVM[i] != NULL && script.szScriptName[i][0] != 0x00) ScriptEvent_OnPlayerDisconnect(script.scriptVM[i], playerID, playerPool[playerID].szPlayerName, "Lost connection"); } removePlayerFromPool(pkt->playerIndex, 1); break; case ID_PLAYER_SYNC: Packet_PlayerSync(pkt); break; case ID_VEHICLE_SYNC: Packet_VehicleSync(pkt); break; case ID_PASSENGER_SYNC: Packet_PassengerSync(pkt); break; case ID_AIM_SYNC: Packet_AimSync(pkt); break; case ID_TRAILER_SYNC: Packet_TrailerSync(pkt); break; case ID_UNOCCUPIED_SYNC: Packet_UnoccupiedSync(pkt); break; case ID_MARKERS_SYNC: Packet_MarkersSync(pkt); break; case ID_BULLET_SYNC: Packet_BulletSync(pkt); } pRakServer->DeallocatePacket(pkt); } }