UwUHax/cmove.h

120 lines
2.3 KiB
C
Raw Permalink Normal View History

2021-08-27 19:58:23 +08:00
#pragma once
#include "bhop.h"
void CreateMove(CUserCmd* cmd)
{
CBaseEntity* pLocal = pEntList->GetClientEntity(pEngine->GetLocalPlayer());
CBaseCombatWeapon* pWeapon = (CBaseCombatWeapon*)pEntList->GetClientEntityFromHandle(pLocal->GetActiveWeaponHandle());
if (pLocal && pWeapon && pLocal->IsAlive())
{
if (gCvars.AUTOBH)
{
RunBhop(cmd, pLocal);
}
if (gCvars.LAGFAST > 0 && GetAsyncKeyState(gCvars.LAGKEY))
{
Sequence::RemoveConds(gCvars.LAGFAST);
}
if (pWeapon->HasAmmo())
{
Vector qOldAngle = cmd->viewangles;
float fCurTime = pGlobalvars->interval_per_tick * (pLocal->GetTickBase() + 1);
float fNextPrimary = pWeapon->GetNextPrimaryAttack();
bool bCanFire = true;
static bool bOldBullet;
if ((fNextPrimary > fCurTime) || bOldBullet)
bCanFire = false;
if (!(fNextPrimary > fCurTime))
bOldBullet = false;
if (pLocal->GetTeamNum() == TEAM_SURVIVOR)
{
if (GetAsyncKeyState(gCvars.triggerkey))
{
g_Aimbot.triggerbot(cmd, pLocal);
}
if (gCvars.ENABLEAIM && pWeapon->IsAimWep())
{
if (gCvars.AIMONFIRE)
{
if ((cmd->buttons & IN_ATTACK))
{
g_Aimbot.Main(cmd, pLocal);
}
}
else
{
if (bCanFire)
{
g_Aimbot.Main(cmd, pLocal);
}
}
}
if (gCvars.NORECOIL)
{
g_Aimbot.ApplyRecoil(pLocal, cmd->viewangles, -1.0f);
}
if (gCvars.NOSPREAD)
{
if ((cmd->buttons & IN_ATTACK))
{
g_Aimbot.ApplySpread(cmd->command_number, pLocal, cmd->viewangles, -1.0f);
}
}
g_Aimbot.FixMovement(cmd, qOldAngle);
}
}
}
}
template<typename T> inline T get_BP()
{
__asm mov eax, ebp
}
template<typename T> inline T get_SI()
{
__asm mov eax, esi
}
using SetViewAngleFn = void(__stdcall*)(Vector &);
SetViewAngleFn org_SetViewAngles = nullptr;
void __stdcall hooked_SetViewAngles(Vector &angles)
{
CUserCmd* cmd = get_SI<CUserCmd*>();
unsigned* sequence_number = (*get_BP<unsigned**>() + 2);
org_SetViewAngles(angles);
if (cmd && cmd->command_number == *sequence_number)
{
if (gCvars.SPEEDFAST > 0)
{
static int i = 0;
if (gCvars.SPEEDFAST && GetAsyncKeyState(gCvars.SPEEDKEY) && i-- > 0)
*(****get_BP<unsigned long*****>() + 1) -= 5;
else
i = gCvars.SPEEDFAST;
}
CreateMove(cmd);
*sequence_number = cmd->command_number;
}
}