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]); }
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); } }
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 ); } } }