예제 #1
0
void CNetGame::Packet_AimSync(Packet* p)
{
	CPlayer* pPlayer = this->playerPool->GetPlayer((_PlayerID)p->playerIndex);
	RakNet::BitStream bsAimSync((char*)p->data, p->length, false);

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

	uint8_t			bytePacketID=0;
	AIM_SYNC		aimSync;
	
	bsAimSync.Read(bytePacketID);
#ifdef _BIG_ENDIAN_SYSTEM
	bsAimSync.Read(aimSync.cameraMode);
	bsAimSync.Read(aimSync.cameraFrontVector.X), bsAimSync.Read(aimSync.cameraFrontVector.Y), bsAimSync.Read(aimSync.cameraFrontVector.Z);
	bsAimSync.Read(aimSync.cameraPosition.X), bsAimSync.Read(aimSync.cameraPosition.Y), bsAimSync.Read(aimSync.cameraPosition.Z);
	bsAimSync.Read(aimSync.aimZaxis);
	bsAimSync.Read(aimSync.weaponState);
	bsAimSync.Read(aimSync.unknown001E);
#else
	bsAimSync.Read((char*)&aimSync,sizeof(AIM_SYNC));
#endif
		
	if(pPlayer)
		pPlayer->ProcessAimingSyncData(&aimSync);
}
예제 #2
0
파일: netgame.cpp 프로젝트: BinL3R/RakSAMP
void Packet_AimSync(Packet *p)
{
	//Log("Packet_AimSync: %d  %d", pRakServer->GetIndexFromPlayerID(p->playerId), p->length);

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

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

	bsAimSync.IgnoreBits(8);
	bsAimSync.Read((PCHAR)&playerInfo[playerId].aimData, sizeof(AIM_SYNC_DATA));


	// BROADCAST DATA
	RakNet::BitStream bsAimBC;
	bsAimBC.Write((BYTE)ID_AIM_SYNC);
	bsAimBC.Write((PLAYERID)playerId);
	bsAimBC.Write((PCHAR)&playerInfo[playerId].aimData, sizeof(AIM_SYNC_DATA));
	pRakServer->Send(&bsAimBC, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0, p->playerId, TRUE);
}