Esempio n. 1
0
void Packet_PassengerSync(Packet *p)
{
	//Log("Packet_PassengerSync: %d  %d", pRakServer->GetIndexFromPlayerID(p->playerId), p->length);

	RakNet::BitStream bsPassengerSync((unsigned char *)p->data, p->length, false);
	PLAYERID playerId = pRakServer->GetIndexFromPlayerID(p->playerId);

	// clear last data
	memset(&playerInfo[playerId].passengerData, 0, sizeof(PASSENGER_SYNC_DATA));

	bsPassengerSync.IgnoreBits(8);
	bsPassengerSync.Read((PCHAR)&playerInfo[playerId].passengerData, sizeof(PASSENGER_SYNC_DATA));

	UpdatePosition(playerId, playerInfo[playerId].passengerData.vecPos[0], playerInfo[playerId].passengerData.vecPos[1], playerInfo[playerId].passengerData.vecPos[2]);
}
Esempio n. 2
0
void CNetGame::Packet_PassengerSync(Packet *p)
{
	CPlayer * pPlayer = GetPlayerPool()->GetAt((BYTE)p->playerIndex);
	RakNet::BitStream bsPassengerSync(p->data, p->length, false);

	if(GetGameState() != GAMESTATE_RUNNING) return;

	BYTE bytePacketID=0;
	PASSENGER_SYNC_DATA psSync;
	
	bsPassengerSync.Read(bytePacketID);
	bsPassengerSync.Read((PCHAR)&psSync,sizeof(PASSENGER_SYNC_DATA));

	if(pPlayer)	{
		if(psSync.VehicleID == 0xFFFF) {
			KickPlayer((BYTE)p->playerIndex);
			return;
		}
	    pPlayer->StorePassengerFullSyncData(&psSync);
	}
}
Esempio n. 3
0
void CNetGame::Packet_PassengerSync(Packet* p)
{
	CPlayer* pPlayer = this->playerPool->GetPlayer((_PlayerID)p->playerIndex);
	RakNet::BitStream bsPassengerSync((char*)p->data, p->length, false);

	if(this->gameState != 1) return;

	uint8_t			bytePacketID=0;
	PASSENGER_SYNC	psSync;
	
	bsPassengerSync.Read(bytePacketID);
#ifdef _BIG_ENDIAN_SYSTEM
	bsPassengerSync.Read(psSync.vehicleID);
	bsPassengerSync.Read(psSync.seatID);
	bsPassengerSync.Read(psSync.playerWeapon);
	bsPassengerSync.Read(psSync.playerHealth);
	bsPassengerSync.Read(psSync.playerArmour);
	bsPassengerSync.Read(psSync.leftRightKeysPassenger);
	bsPassengerSync.Read(psSync.updownKeysPassenger);
	bsPassengerSync.Read(psSync.passengersKeys);
	bsPassengerSync.Read(psSync.position.X), bsPassengerSync.Read(psSync.position.Y), bsPassengerSync.Read(psSync.position.Z);
#else
	bsPassengerSync.Read((char*)&psSync,sizeof(PASSENGER_SYNC));
#endif

	if(pPlayer)	
	{
		if(psSync.vehicleID == INVALID_VEHICLE_ID)
		{
			this->KickPlayer((uint8_t)p->playerIndex);
			return;
		}
	    pPlayer->ProcessPassengerSyncData(&psSync);
		if( this->gamemodeManager && this->filterscriptsManager )
		{
			if( this->gamemodeManager->OnPlayerUpdate( ( cell )p->playerIndex ) == 0 || this->filterscriptsManager->OnPlayerUpdate( ( cell )p->playerIndex ) == 0 )
				pPlayer->setSyncingType( SYNCING_TYPE_NONE );
		}
	}
}