Skip to content

Instantly share code, notes, and snippets.

@AmyrAhmady
Created June 18, 2020 12:39
Show Gist options
  • Save AmyrAhmady/c8ba437e8e65f678070577c7c4c16740 to your computer and use it in GitHub Desktop.
Save AmyrAhmady/c8ba437e8e65f678070577c7c4c16740 to your computer and use it in GitHub Desktop.
void __thiscall CNetGame::Packet_VehicleSync(stSAMP *this, int a2)
{
stSAMP *v2; // ebp
bool v3; // zf
_BYTE *v4; // edx
char v5; // al
char v6; // cl
struct stRemotePlayer *v7; // eax
stRemotePlayerData *v8; // eax
char a2a; // [esp+Ch] [ebp-174h]
char v10; // [esp+Dh] [ebp-173h]
char v11; // [esp+Eh] [ebp-172h]
unsigned __int8 v12; // [esp+Fh] [ebp-171h]
unsigned __int16 v13; // [esp+10h] [ebp-170h]
unsigned __int16 v14; // [esp+14h] [ebp-16Ch]
int a3; // [esp+18h] [ebp-168h]
int v16; // [esp+1Ch] [ebp-164h]
stInCarData v17; // [esp+20h] [ebp-160h]
BitStream v18; // [esp+60h] [ebp-120h]
int v19; // [esp+17Ch] [ebp-4h]
v2 = this;
BitStream::BitStream(&v18, *(a2 + 16), *(a2 + 8), 0);
v3 = v2->iGameState == 5;
v19 = 0;
v11 = 0;
if ( v3 )
{
v4 = *(a2 + 16);
memset(&v17, 0, 0x3Cu);
*(v17.HydraThrustAngle + 1) = 0;
HIBYTE(v17.fBikeSideAngle) = 0;
a3 = 0;
if ( *v4 == 40 )
{
BitStream::Read(&v18, &v11, 8, 1);
BitStream::Read(&v18, &a3, 32, 1);
}
BitStream::Read(&v18, &v11, 8, 1);
BitStream::Read(&v18, &v14, 16, 1);
BitStream::Read(&v18, &v17, 16, 1);
BitStream::Read(&v18, &v17.sLeftRightKeys, 16, 1);
BitStream::Read(&v18, &v17.sUpDownKeys, 16, 1);
BitStream::Read(&v18, &v17.sKeys, 16, 1);
BitStream::ReadNormQuat(&v18, v17.fQuaternion, &v17.fQuaternion[1], &v17.fQuaternion[2], &v17.fQuaternion[3]);
BitStream::ReadString(&v18, v17.fPosition, 0xCu);
BitStream::ReadVector(&v18, v17.fMoveSpeed, &v17.fMoveSpeed[1], &v17.fMoveSpeed[2]);
BitStream::Read(&v18, &v13, 16, 1);
v16 = v13;
v17.fVehicleHealth = v13;
BitStream::Read(&v18, &v12, 8, 1);
v5 = v12 & 0xF;
v6 = v12 >> 4;
if ( (v12 & 0xF) == 15 )
{
v17.byteArmor = 100;
}
else if ( v5 )
{
v17.byteArmor = 7 * v5;
}
else
{
v17.byteArmor = 0;
}
if ( v6 == 15 )
{
v17.bytePlayerHealth = 100;
}
else if ( v6 )
{
v17.bytePlayerHealth = 7 * (v12 >> 4);
}
else
{
v17.bytePlayerHealth = 0;
}
v10 = 0;
BitStream::Read(&v18, &v10, 8, 1);
v17.byteCurrentWeapon ^= (v10 ^ v17.byteCurrentWeapon) & 0x3F;
BitStream::ReadBit(&v18, &a2a);
if ( a2a )
v17.byteSiren = 1;
BitStream::ReadBit(&v18, &a2a);
if ( a2a )
v17.byteLandingGearState = 1;
BitStream::ReadBit(&v18, &a2a);
if ( a2a )
BitStream::Read(&v18, &v17.fTrainSpeed, 32, 1);
BitStream::ReadBit(&v18, &a2a);
if ( a2a )
BitStream::Read(&v18, &v17.sTrailerID, 16, 1);
if ( v14 <= 0x3ECu )
{
v7 = v2->pPools->pPlayer->pRemotePlayer[v14];
if ( v7 )
{
v8 = v7->pPlayerData;
if ( v8 )
CRemotePlayerData::StoreInCarFullSyncData(v8, &v17, a3);
}
}
}
v19 = -1;
BitStream::Deallocate(&v18);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment