/
CreateMove.h
77 lines (63 loc) · 2.14 KB
/
CreateMove.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#pragma once
#include "HookIncludes.h"
#include "Misc.h"
#include "MovementRecorder.h"
#include "RageBot.h"
#include "LegitBot.h"
#include "GrenadePrediction.h"
#include "LagComp.h"
using create_move_t = void(__thiscall *)(IBaseClientDLL *, int, float, bool);
QAngle qLastTickAngles = QAngle(0.0f, 0.0f, 0.0f);
void __stdcall CHLCreateMove(int sequence_number, float input_sample_frametime, bool active, bool& bSendPacket)
{
static auto ofunc = hooks::client.get_original<create_move_t>(21);
ofunc(g_CHLClient, sequence_number, input_sample_frametime, active);
C_BaseEntity *local = g_EntityList->GetClientEntity(g_Engine->GetLocalPlayer());
CInput::CUserCmd *cmd = g_Input->GetUserCmd(0, sequence_number);
if (!cmd)
return;
if (!cmd->command_number)
return;
CInput::CVerifiedUserCmd *verifiedCommands = *(CInput::CVerifiedUserCmd **)(reinterpret_cast< uint32_t >(g_Input) + 0xF0);
CInput::CVerifiedUserCmd *verified = &verifiedCommands[sequence_number % 150];
if (!verified)
return;
if (!local)
return;
QAngle oldAngle = cmd->viewangles;
float oldForward = cmd->forwardmove;
float oldSideMove = cmd->sidemove;
backtracking->legitBackTrack(cmd, local);
//RankReveal(cmd);
misc::instance().OnCreateMove(cmd, local);
legitbot::instance().OnCreateMove(cmd, local);
ragebot::instance().OnCreateMove(cmd, bSendPacket);
grenade_prediction::instance().Tick(cmd->buttons);
if (!bSendPacket && g_Options.Ragebot.YawFake) qLastTickAngles = cmd->viewangles;
else if (bSendPacket && !g_Options.Ragebot.YawFake) qLastTickAngles = cmd->viewangles;
if (!sanitize_angles(cmd->viewangles))
return;
movementfix(oldAngle, cmd, oldForward, oldSideMove);
clampMovement(cmd);
verified->m_cmd = *cmd;
verified->m_crc = cmd->GetChecksum();
}
#pragma warning(disable : 4409)
__declspec(naked) void __stdcall hkCreateMove(int sequence_number, float input_sample_frametime, bool active)
{
__asm
{
PUSH EBP
MOV EBP, ESP
PUSH EBX
LEA ECX, [ESP]
PUSH ECX
PUSH active
PUSH input_sample_frametime
PUSH sequence_number
CALL CHLCreateMove
POP EBX
POP EBP
RETN 0xC
}
}