Advertisement
Guest User

Untitled

a guest
Jan 25th, 2016
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.59 KB | None | 0 0
  1. void __thiscall BroadcastSyncData(CPlayer *this)
  2. {
  3.   CPlayer *p; // esi@1
  4.   DWORD v2; // eax@1
  5.   BYTE v3; // al@3
  6.   BYTE v4; // al@13
  7.   char v5; // cl@13
  8.   BYTE v6; // al@18
  9.   float *v7; // ecx@26
  10.   BYTE v8; // al@34
  11.   char v9; // cl@34
  12.   BYTE v10; // al@39
  13.   WORD v11; // bx@59
  14.   char v12; // [sp+8h] [bp-128h]@7
  15.   float v13; // [sp+Ch] [bp-124h]@7
  16.   float v14; // [sp+10h] [bp-120h]@1
  17.   int v15; // [sp+12Ch] [bp-4h]@1
  18.  
  19.   p = this;
  20.   sub_44DFF0((int)&v14);
  21.   v2 = p->bHasSetVehiclePos;
  22.   v15 = 0;
  23.   if ( v2 )
  24.   {
  25.     v15 = -1;
  26.     BitStream::Reset((int)&v14);
  27.     return;
  28.   }
  29.   v3 = p->byteState;
  30.   if ( v3 != 1 || p->iUpdateState != 1 )
  31.   {
  32.     if ( v3 != 2 || p->iUpdateState != 2 )
  33.     {
  34.       if ( v3 == 3 && p->iUpdateState == 3 )
  35.       {
  36.         if ( !p->bUpdateKeys )
  37.         {
  38.           p->passengerSyncData.wUDAnalog = 0;
  39.           p->passengerSyncData.wLRAnalog = 0;
  40.           p->passengerSyncData.wKeys = 0;
  41.         }
  42.         v11 = p->passengerSyncData.wKeys;
  43.         if ( (p->passengerSyncData.bytePlayerWeapon & 0x3F) == 43 )
  44.           p->passengerSyncData.wKeys &= 0xFBu;
  45.         v12 = -45;
  46.         BitStream::Write(&v12, 8, 1);
  47.         LODWORD(v13) = p->wPlayerId;
  48.         BitStream::Write(&v13, 16, 1);
  49.         BitStream::WriteArray(&p->passengerSyncData, 24);
  50.         CNetGame::BroadcastData((int)pNetGame, COERCE_FLOAT(&v14), p->wPlayerId, 1);
  51.         p->passengerSyncData.wKeys = v11;
  52.       }
  53.       goto LABEL_62;
  54.     }
  55.     if ( !p->bUpdateKeys )
  56.     {
  57.       p->vehicleSyncData.wUDAnalog = 0;
  58.       p->vehicleSyncData.wLRAnalog = 0;
  59.       p->vehicleSyncData.wKeys = 0;
  60.     }
  61.     v12 = -56;
  62.     BitStream::Write(&v12, 8, 1);
  63.     LODWORD(v13) = p->wPlayerId;
  64.     BitStream::Write(&v13, 16, 1);
  65.     LODWORD(v13) = p->vehicleSyncData.wVehicleId;
  66.     BitStream::Write(&v13, 16, 1);
  67.     LODWORD(v13) = p->vehicleSyncData.wUDAnalog;
  68.     BitStream::Write(&v13, 16, 1);
  69.     LODWORD(v13) = p->vehicleSyncData.wLRAnalog;
  70.     BitStream::Write(&v13, 16, 1);
  71.     LODWORD(v13) = p->vehicleSyncData.wKeys;
  72.     BitStream::Write(&v13, 16, 1);
  73.     BitStream::WriteNormQuat(
  74.       p->vehicleSyncData.fQuaternionAngle,
  75.       p->vehicleSyncData.vecQuaternion.fX,
  76.       p->vehicleSyncData.vecQuaternion.fY,
  77.       p->vehicleSyncData.vecQuaternion.fZ);
  78.     BitStream::WriteArray(&p->vehicleSyncData.vecPosition, 12);
  79.     BitStream::WriteVector(
  80.       p->vehicleSyncData.vecVelocity.fX,
  81.       p->vehicleSyncData.vecVelocity.fY,
  82.       p->vehicleSyncData.vecVelocity.fZ);
  83.     LODWORD(v13) = (unsigned __int64)p->vehicleSyncData.fHealth;
  84.     BitStream::Write(&v13, 16, 1);
  85.     v8 = p->vehicleSyncData.bytePlayerHealth;
  86.     v9 = 0;
  87.     if ( v8 )
  88.     {
  89.       if ( v8 >= 100u )
  90.         v9 = -16;
  91.       else
  92.         v9 = 16
  93.            * (((signed int)(v8 + (-1840700269i64 * (unsigned __int64)v8 >> 32)) >> 2)
  94.             + ((unsigned int)(v8 + (-1840700269i64 * (unsigned __int64)v8 >> 32)) >> 31));
  95.     }
  96.     v10 = p->vehicleSyncData.bytePlayerArmour;
  97.     if ( v10 )
  98.     {
  99.       if ( v10 >= 100u )
  100.         v9 |= 0xFu;
  101.       else
  102.         v9 |= ((signed int)(v10 + (-1840700269i64 * (unsigned __int64)v10 >> 32)) >> 2)
  103.             + ((unsigned int)(v10 + (-1840700269i64 * (unsigned __int64)v10 >> 32)) >> 31);
  104.     }
  105.     v12 = v9;
  106.     BitStream::Write(&v12, 8, 1);
  107.     v12 = p->vehicleSyncData.bytePlayerWeapon & 0x3F;
  108.     BitStream::Write(&v12, 8, 1);
  109.     if ( p->vehicleSyncData.byteSirenState )
  110.       WriteBool((signed int *)&v14);
  111.     else
  112.       sub_44E5B0((signed int *)&v14);
  113.     if ( p->vehicleSyncData.byteGearState )
  114.       WriteBool((signed int *)&v14);
  115.     else
  116.       sub_44E5B0((signed int *)&v14);
  117.     if ( LODWORD(p->vehicleSyncData.fTrainSpeed) )
  118.     {
  119.       WriteBool((signed int *)&v14);
  120.       v13 = p->vehicleSyncData.fTrainSpeed;
  121.       BitStream::Write(&v13, 32, 1);
  122.     }
  123.     else
  124.     {
  125.       sub_44E5B0((signed int *)&v14);
  126.     }
  127.     v7 = &v14;
  128.     if ( p->vehicleSyncData.wTrailerID )
  129.     {
  130.       WriteBool((signed int *)&v14);
  131.       LODWORD(v13) = p->vehicleSyncData.wTrailerID;
  132.       BitStream::Write(&v13, 16, 1);
  133.       goto LABEL_29;
  134.     }
  135.     goto LABEL_28;
  136.   }
  137.   if ( !p->bUpdateKeys )
  138.   {
  139.     p->syncData.wUDAnalog = 0;
  140.     p->syncData.wLRAnalog = 0;
  141.     p->syncData.wKeys = 0;
  142.   }
  143.   v12 = -49;
  144.   BitStream::Write(&v12, 8, 1);
  145.   LODWORD(v13) = p->wPlayerId;
  146.   BitStream::Write(&v13, 16, 1);
  147.   if ( p->syncData.wUDAnalog )
  148.   {
  149.     WriteBool((signed int *)&v14);
  150.     LODWORD(v13) = p->syncData.wUDAnalog;
  151.     BitStream::Write(&v13, 16, 1);
  152.   }
  153.   else
  154.   {
  155.     sub_44E5B0((signed int *)&v14);
  156.   }
  157.   if ( p->syncData.wLRAnalog )
  158.   {
  159.     WriteBool((signed int *)&v14);
  160.     LODWORD(v13) = p->syncData.wLRAnalog;
  161.     BitStream::Write(&v13, 16, 1);
  162.   }
  163.   else
  164.   {
  165.     sub_44E5B0((signed int *)&v14);
  166.   }
  167.   LODWORD(v13) = p->syncData.wKeys;
  168.   BitStream::Write(&v13, 16, 1);
  169.   BitStream::WriteArray(&p->syncData.vecPosition, 12);
  170.   BitStream::WriteNormQuat(
  171.     p->syncData.fQuaternion[0],
  172.     p->syncData.fQuaternion[1],
  173.     p->syncData.fQuaternion[2],
  174.     p->syncData.fQuaternion[3]);
  175.   v4 = p->syncData.byteHealth;
  176.   v5 = 0;
  177.   if ( v4 )
  178.   {
  179.     if ( v4 >= 100u )
  180.       v5 = -16;
  181.     else
  182.       v5 = 16
  183.          * (((signed int)(v4 + (-1840700269i64 * (unsigned __int64)v4 >> 32)) >> 2)
  184.           + ((unsigned int)(v4 + (-1840700269i64 * (unsigned __int64)v4 >> 32)) >> 31));
  185.   }
  186.   v6 = p->syncData.byteArmour;
  187.   if ( v6 )
  188.   {
  189.     if ( v6 >= 100u )
  190.       v5 |= 0xFu;
  191.     else
  192.       v5 |= ((signed int)(v6 + (-1840700269i64 * (unsigned __int64)v6 >> 32)) >> 2)
  193.           + ((unsigned int)(v6 + (-1840700269i64 * (unsigned __int64)v6 >> 32)) >> 31);
  194.   }
  195.   v12 = v5;
  196.   BitStream::Write(&v12, 8, 1);
  197.   v12 = p->syncData.byteWeapon & 63;
  198.   BitStream::Write(&v12, 8, 1);
  199.   v12 = p->syncData.byteSpecialAction;
  200.   BitStream::Write(&v12, 8, 1);
  201.   BitStream::WriteVector(p->syncData.vecVelocity.fX, p->syncData.vecVelocity.fY, p->syncData.vecVelocity.fZ);
  202.   if ( p->syncData.wSurfingInfo )
  203.   {
  204.     WriteBool((signed int *)&v14);
  205.     LODWORD(v13) = p->syncData.wSurfingInfo;
  206.     BitStream::Write(&v13, 16, 1);
  207.     BitStream::WriteArray(&p->syncData.vecSurfing, 12);
  208.   }
  209.   else
  210.   {
  211.     sub_44E5B0((signed int *)&v14);
  212.   }
  213.   v7 = &v14;
  214.   if ( !p->syncData.dwAnimationData )
  215.   {
  216. LABEL_28:
  217.     sub_44E5B0((signed int *)v7);
  218.     goto LABEL_29;
  219.   }
  220.   WriteBool((signed int *)&v14);
  221.   v13 = *(float *)&p->syncData.dwAnimationData;
  222.   BitStream::Write(&v13, 32, 1);
  223. LABEL_29:
  224.   CNetGame::BroadcastData((int)pNetGame, COERCE_FLOAT(&v14), p->wPlayerId, 1);
  225. LABEL_62:
  226.   if ( p->bHasAimSync )
  227.   {
  228.     BitStream_Reset(&v14);
  229.     v12 = -53;
  230.     BitStream::Write(&v12, 8, 1);
  231.     LODWORD(v13) = p->wPlayerId;
  232.     BitStream::Write(&v13, 16, 1);
  233.     BitStream::WriteArray(p, 31);
  234.     CNetGame::BroadcastData((int)pNetGame, COERCE_FLOAT(&v14), p->wPlayerId, 1);
  235.     p->bHasAimSync = 0;
  236.   }
  237.   if ( p->bHasTrailerSync )
  238.   {
  239.     BitStream_Reset(&v14);
  240.     v12 = -46;
  241.     BitStream::Write(&v12, 8, 1);
  242.     LODWORD(v13) = p->wPlayerId;
  243.     BitStream::Write(&v13, 16, 1);
  244.     BitStream::WriteArray(&p->trailerSyncData, 54);
  245.     CNetGame::BroadcastData((int)pNetGame, COERCE_FLOAT(&v14), p->wPlayerId, 1);
  246.     p->bHasTrailerSync = 0;
  247.   }
  248.   if ( p->bHasUnoccupiedSync )
  249.   {
  250.     BitStream_Reset(&v14);
  251.     v12 = -47;
  252.     BitStream::Write(&v12, 8, 1);
  253.     LODWORD(v13) = p->wPlayerId;
  254.     BitStream::Write(&v13, 16, 1);
  255.     BitStream::WriteArray(&p->unoccupiedSyncData, 67);
  256.     sub_48BE00((int)pNetGame, (int)&v14, p->unoccupiedSyncData.wVehicleID, p->wPlayerId);
  257.     p->bHasUnoccupiedSync = 0;
  258.   }
  259.   v15 = -1;
  260.   BitStream::Reset((int)&v14);
  261. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement