Well, nexon did just patch up combat arms na, took me 1 hour to fix my whole cheat, good luck.
Probably some of "your" patterns are broken( oh noes waht to do ) fix them by youself
Everyone who will use this from now will have to put correct credits to the real creators.
Changes:
Code:
#define ptr_GameClientShell 0x377F1D10//37867438
#define ptr_WeaponMgr 0x377F8854//3786E17C
#define ptr_LTClient 0x377B2940//378206B8
// Add a virtual before GetClientInfoMgr()( gameclientshell )
// Add a virtual after LTModel( ltclient )
// Remove a virtual before SendToServer( ltclient @ 0x160 )
CONVARS( new way )
Code:
class ConVars
{
public:
ConVars()
{
}
void Init()
{
// do patterns by youself
_updated = false;
_BaseMoveAccel = 0x377A462C;
_StartAccel = 0x377A4650;
_MaxAccel = 0x377A4674;
_AccelInc = 0x377A4698;
_WalkVel = 0x377A46BC;
_FRunVel = 0x377A46E0;
_BRunVel = 0x377A4704;
_SRunVel = 0x377A4728;
_DuckVel = 0x377A4770;
_PlayerGravity = 0x377A42F0;
_JumpVel = 0x377A474C;
_ShowFps = 0x377A0CB8;
_ShowFirePath = 0x377AA4D4;
_ActivationDistance = 0x377A9D24;
_updated = true;
}
bool _updated;
bool IsUpdated()
{
return _updated;
}
// SpeedHack
DWORD _BaseMoveAccel;
DWORD _StartAccel;
DWORD _MaxAccel;
DWORD _AccelInc;
DWORD _WalkVel;
DWORD _FRunVel;
DWORD _BRunVel;
DWORD _SRunVel;
DWORD _DuckVel;
// SuperJump
DWORD _JumpVel;
// FlyHack
DWORD _PlayerGravity;
// Show FPS
DWORD _ShowFps;
// ShowFirePath
DWORD _ShowFirePath;
// Activation distance
DWORD _ActivationDistance;
template< class T >
void SetConvarValue( DWORD addr ,T val )
{
*(T*)addr = val;
}
}conVars;
usage:
if( !conVars.IsUpdated() )
{
conVars.Init();
return;
}
float multiplier = 3;
// speedhack
conVars.SetConvarValue<float>( conVars._BaseMoveAccel,3000+(3000*multiplier) );
conVars.SetConvarValue<float>( conVars._StartAccel,500+(500*multiplier) );
conVars.SetConvarValue<float>( conVars._MaxAccel,3000+(3000*multiplier) );
conVars.SetConvarValue<float>( conVars._AccelInc,6000+(6000*multiplier) );
conVars.SetConvarValue<float>( conVars._WalkVel,70+(70*multiplier) );
conVars.SetConvarValue<float>( conVars._FRunVel,285+(285*multiplier) );
conVars.SetConvarValue<float>( conVars._BRunVel,285+(285*multiplier) );
conVars.SetConvarValue<float>( conVars._SRunVel,285+(285*multiplier) );
conVars.SetConvarValue<float>( conVars._DuckVel,50+(50*multiplier) );
RunConsoleString
Code:
static DWORD rccAdr = NULL;
if(!rccAdr)
rccAdr = /*unwrapped console address*/;
typedef void(__cdecl*RunConsoleCommandFn)(const char*,int&);
RunConsoleCommandFn RunConsoleCmd = (RunConsoleCommandFn)rccAdr;
int v4;
RunConsoleCmd(command,v4);
some working ptc's
Code:
RunConsoleCommand("+SkelModelStencil 1");
RunConsoleCommand("+FogEnable 0");
Full credits to xCyniu, credit if you use.
Thanks to NeoIII and Gellin for unwrappedconsole address