Пример #1
0
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);		
	}
}
Пример #2
0
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);
	}
}
Пример #3
0
void CNetGame::UpdateNetwork()
{
	Packet* p;
	unsigned char packetIdentifier;

	while(p=m_pRak->Receive())
	{
		packetIdentifier = GetPacketID(p);
		//printf("Raw Packet ID: %u\n",packetIdentifier);
		
		switch(packetIdentifier) {

		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:
			Packet_ModifiedPacket(p);
			break;
		/*
		// Not in latest RakNet, so not going to support it.
		case ID_REMOTE_PORT_REFUSED:
			Packet_RemotePortRefused(p);
			break;
		*/
		case ID_PLAYER_SYNC:
			Packet_PlayerSync(p);
			break;
		case ID_VEHICLE_SYNC:
			Packet_VehicleSync(p);
			break;
		case ID_PASSENGER_SYNC:
			Packet_PassengerSync(p);
			break;
		case ID_SPECTATOR_SYNC:
			Packet_SpectatorSync(p);
			break;
		case ID_AIM_SYNC:
			Packet_AimSync(p);
			break;
		case ID_RCON_COMMAND:
			Packet_InGameRcon(p);
			break;
		case ID_STATS_UPDATE:
			Packet_StatsUpdate(p);
			break;
		case ID_WEAPONS_UPDATE:
			Packet_WeaponsUpdate(p);
			break;
		case ID_TRAILER_SYNC:
			Packet_TrailerSync(p);
			break;
		}

		m_pRak->DeallocatePacket(p);		
	}
}