Advertisement
keybode

css v34 rebuilt CL_Move ( pseudo )

May 8th, 2014
1,134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | None | 0 0
  1. void __stdcall Hooked_CL_Move ( float accumulated_extra_samples, bool bFinalTick )
  2. {
  3.     Host_ShouldRun = (Host_ShouldRunFn)( m_engine + 0xCFFE0 );
  4.  
  5.     CL_SendMove = (CL_SendMoveFn)( m_engine + 0x423D0 );
  6.  
  7.     Unknown = (UnknownFn)( m_engine + 0x2D00 );
  8.  
  9.     if ( *(DWORD*)( m_engine + 0x390AA8 ) > 2 )
  10.         return;
  11.  
  12.     if ( !Host_ShouldRun () )
  13.         return;
  14.  
  15.     int index = m_pEngine->GetLocalPlayer ();
  16.  
  17.     bool bSendPacket = true;
  18.  
  19.     CBaseEntity* player = m_pEntList->GetClientEntity ( index );
  20.  
  21.     int lastoutgoingcommand = *(int*)( m_engine + 0x39539C );
  22.     int chokedcommands = *(int*)( m_engine + 0x3953A0 );
  23.  
  24.     if ( player )
  25.     {
  26.         CBaseWeapon* weapon = player->GetBaseWeapon ();
  27.  
  28.         if ( weapon )
  29.         {
  30.             float curtime = (player->GetTickBase () + 1) * m_pGlobal->interval_per_tick;
  31.             float nextattack = weapon->GetNextAttack ();
  32.  
  33.             bool bulletTime = true;
  34.  
  35.             if ( nextattack > curtime )
  36.                 bulletTime = false;
  37.  
  38.             CUserCmd* cmd = m_pInput->GetUserCmd ( lastoutgoingcommand + chokedcommands + 1 );
  39.  
  40.             if ( cmd )
  41.             {
  42.                 if ( (cmd->buttons & IN_ATTACK) && bulletTime )
  43.                 {
  44.                     bSendPacket = false;
  45.                 }
  46.                 else
  47.                 {
  48.                     bSendPacket = true;
  49.                 }
  50.             }
  51.         }
  52.     }
  53.  
  54.     IDemoPlayer* demoplayer = (IDemoPlayer*)( m_engine + 0x375F9C );
  55.  
  56.     if ( demoplayer->IsPlayingBack () )
  57.     {
  58.         if ( *(bool*)( m_engine + 0x3953B0 ) )
  59.         {
  60.             bSendPacket = false;
  61.         }
  62.         else
  63.         {
  64.             return;
  65.         }
  66.     }
  67.  
  68.     CNetChan* m_NetChannel = (CNetChan*)( m_engine + 0x390990 );
  69.  
  70.     ConVar* host_limitlocal = (ConVar*)( m_engine + 0x4D2A48 );
  71.  
  72.     double net_time = *(double*)( m_engine + 0x4F5660 );
  73.  
  74.     double m_flNextCmdTime = *(double*)( m_engine + 0x390AB0 );
  75.  
  76.     if ( (!m_NetChannel->IsLoopback () || host_limitlocal->GetInt ()) &&
  77.             ( ( net_time < m_flNextCmdTime ) || !m_NetChannel->CanPacket () || !bFinalTick ) )
  78.     {
  79.         bSendPacket = false;
  80.     }
  81.  
  82.     if ( *(DWORD*)( m_engine + 0x390AA8 ) == 6 )
  83.     {
  84.         int nextcommandnr = lastoutgoingcommand + chokedcommands + 1;
  85.  
  86.         m_pClient->CreateMove ( nextcommandnr, m_pGlobal->interval_per_tick - accumulated_extra_samples, true );
  87.  
  88.         if ( bSendPacket )
  89.         {
  90.             CL_SendMove ();
  91.         }
  92.         else
  93.         {
  94.             m_NetChannel->SetChoked ();
  95.             *(int*)( m_engine + 0x3953A0 ) += 1;
  96.             return;
  97.         }
  98.     }
  99.  
  100.     if ( !bSendPacket )
  101.         return;
  102.  
  103.     if ( *(DWORD*)( m_engine + 0x390AA8 ) == 6 )
  104.     {
  105.         DWORD v14 = Unknown ( *(DWORD*)( m_engine + 0x390B0C ) );
  106.  
  107.         (*(void (__stdcall **)( int, DWORD ))(*(DWORD*)0x20390990 + 144))(v14, 0);
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement