Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool __fastcall hkWriteUsercmdDeltaToBuffer( IBaseClientDll* ecx, void* edx, int m_nSlot, BufWrite* m_pBuffer, int m_nFrom, int m_nTo, bool m_bNewCmd )
- {
- DWORD m_dwDesiredRetn = FindPattern( "engine.dll", "84 C0 74 04 B0 01 EB 02 32 C0 8B FE 46 3B F3 7E C9 85 C0 0F 84 ? ? ? ?" );
- if ( ( DWORD ) _ReturnAddress( ) != m_dwDesiredRetn )
- return o_WriteUsercmdDeltaToBuffer(ECX, nSlot, buf, from, to, isNewCmd);
- if ( m_nFrom != -1 )
- return true;
- int m_nTickbase = g_pGlobals->RageBot->g_nTickbase;
- g_pGlobals->RageBot->g_nTickbase = 0;
- int* m_pnBackupCmds = ( int* )( reinterpret_cast< uintptr_t >( m_pBuffer ) - 0x30 );
- int* m_pnNewCmds = ( int* )( reinterpret_cast< uintptr_t >( m_pBuffer ) - 0x2C );
- *m_pnBackupCmds = 0;
- int m_nNewCmds, m_nNextCmd;
- if ( m_nTickbase > 0 ) // optimize me!!!
- {
- m_nNewCmds = std::max( *m_pnNewCmds - m_nTickbase, 1 );
- *m_pnNewCmds = m_nNewCmds;
- m_nNextCmd = g_pClientState->m_nLastOutgoingCmd + g_pClientState->m_nChokedCmds + 1;
- for ( m_nTo = m_nNextCmd - m_nNewCmds + 1; to <= m_nNextCmd; to++ )
- {
- if ( !o_WriteUsercmdDeltaToBuffer( ecx, m_nSlot, m_pBuffer, m_nFrom, m_nTo, true ) )
- return false;
- m_nFrom = m_nTo;
- }
- return true;
- }
- m_nFrom = -2;
- int m_nTotalNewCmds = std::min( *m_pnNewCmds + abs( m_nTickbase ), 62 );
- m_nNewCmds = *m_pnNewCmds;
- *m_pnNewCmds = m_nTotalNewCmds;
- m_nNextCmd = g_pClientState->m_nLastOutgoingCmd + g_pClientState->m_nChokedCmds + 1;
- for ( m_nTo = m_nNextCmd - m_nNewCmds + 1; to <= m_nNextCmd; to++ )
- {
- if ( !o_WriteUsercmdDeltaToBuffer( ecx, m_nSlot, m_pBuffer, m_nFrom, m_nTo, true ) )
- return false;
- m_nFrom = m_nTo;
- }
- CUserCmd* m_pLastRealCmd = g_pInput->GetUserCmd( m_nSlot, m_nFrom );
- CUserCmd m_FromCmd, m_ToCmd;
- if ( !m_pLastRealCmd )
- return true;
- m_FromCmd = *m_pLastRealCmd;
- m_ToCmd = m_FromCmd;
- m_ToCmd.m_nCommand++;
- m_ToCmd.m_nTickcount += 3 * g_pGlobals->CSGO->g_iTickrate;
- if ( m_nNewCmds > m_nTotalNewCmds )
- return false;
- int m_nShift = m_nTotalNewCmds - m_nNewCmds + 1;
- while ( m_nShift > 0 ) // i should be "for" loop tbh
- {
- WriteUsercmd( m_pBuffer, &m_ToCmd, &m_FromCmd );
- m_nFromCmd.m_nCommand = m_nToCmd.m_nCommand;
- m_nFromCmd.m_nTickcount = m_nToCmd.m_nTickcount;
- // look at pseudo, you still need to store some more records
- m_ToCmd.m_nCommand++;
- m_ToCmd.m_nTickcount++;
- m_nShift--; // hm
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement