class CNetInputMessage
{
public:
std::int32_t m_nRenderTickCount; //0x0000
float m_flRenderTickFraction; //0x0004
std::int32_t m_nPlayerTickCount; //0x0008
float m_flPlayerTickFraction; //0x000C
char __pad0010[ 24 ]; //0x0010
std::int32_t m_nInvalidIndex; //0x0028
char __pad002C[ 8 ]; //0x002C
}; // size: 0x0034
__int64 __fastcall C_Hooks::ModifyInputHistory( CNetInputMessage* a1, void* a2, char a3, __int64 a4, __int64 a5, __int64 a6 )
{
if ( Globals::m_bUnloading )
return ogModifyInputHistory( a1, a2, a3, a4, a5, a6 );
// its just an example, in order to do it properly you need to backtrack yourself here. backtracking works the same as in csgo
// modify tickcount in createmove and recieve your instant VAC.
if ( a1 != nullptr )
{
if ( Config::m_bRapidFire )
{
a1->m_nPlayerTickCount = 0;
a1->m_nRenderTickCount = 0;
// another input history?
[I]( int[/I] ) ( ( DWORD64 ) a2 + 0x0068 ) = 0; // nPlayerTickCount
[I]( int[/I] ) ( ( DWORD64 ) a2 + 0x0060 ) = 0; // nRenderTickCount
}
// you should restore after the user disabled rapidfire
}
return ogModifyInputHistory( a1, a2, a3, a4, a5, a6 );
}