This repository has been archived on 2024-06-01. You can view files and clone it, but cannot push or open issues or pull requests.
cathook/src/hooks/CreateMove.cpp
2017-02-25 16:29:36 +03:00

182 lines
5.5 KiB
C++

/*
* CreateMove.cpp
*
* Created on: Jan 8, 2017
* Author: nullifiedcat
*/
#include "CreateMove.h"
#include "../hooks.h"
#include "../hack.h"
#include "../common.h"
#include "hookedmethods.h"
float AngleDiff( float destAngle, float srcAngle )
{
float delta;
delta = fmodf(destAngle - srcAngle, 360.0f);
if ( destAngle > srcAngle )
{
if ( delta >= 180 )
delta -= 360;
}
else
{
if ( delta <= -180 )
delta += 360;
}
return delta;
}//TODO temporary
#include "../profiler.h"
bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
SEGV_BEGIN;
if (TF2C && g_phMisc->v_bMinigunJump->GetBool() && CE_GOOD(LOCAL_W)) {
//RemoveCondition(LOCAL_E, TFCond_Slowed);
CE_INT(LOCAL_W, netvar.iWeaponState) = 0;
//RemoveCondition(LOCAL_E, TFCond_Taunting);
}
bool ret = ((CreateMove_t*)hooks::hkClientMode->GetMethod(hooks::offCreateMove))(thisptr, inputSample, cmd);
PROF_SECTION(CreateMove);
if (!cmd) {
return ret;
}
if (!g_Settings.bHackEnabled->GetBool()) {
return ret;
}
if (!interfaces::engineClient->IsInGame()) {
g_Settings.bInvalid = true;
return true;
}
// PROF_BEGIN();
INetChannel* ch = (INetChannel*)interfaces::engineClient->GetNetChannelInfo();
if (ch && !hooks::IsHooked((void*)((uintptr_t)ch))) {
hooks::hkNetChannel = new hooks::VMTHook();
hooks::hkNetChannel->Init(ch, 0);
hooks::hkNetChannel->HookMethod((void*)CanPacket_hook, hooks::offCanPacket);
hooks::hkNetChannel->HookMethod((void*)SendNetMsg_hook, hooks::offSendNetMsg);
hooks::hkNetChannel->HookMethod((void*)Shutdown_hook, hooks::offShutdown);
hooks::hkNetChannel->Apply();
}
//logging::Info("canpacket: %i", ch->CanPacket());
//if (!cmd) return ret;
bool time_replaced = false;
float curtime_old = interfaces::gvars->curtime;;
if (CE_GOOD(g_pLocalPlayer->entity)) {
float servertime = (float)CE_INT(g_pLocalPlayer->entity, netvar.nTickBase) * interfaces::gvars->interval_per_tick;
interfaces::gvars->curtime = servertime;
time_replaced = true;
}
if (g_Settings.bInvalid) {
gEntityCache.Invalidate();
}
// PROF_BEGIN();
SAFE_CALL(gEntityCache.Update());
// PROF_END("Entity Cache updating");
SAFE_CALL(g_pPlayerResource->Update());
SAFE_CALL(g_pLocalPlayer->Update());
g_Settings.bInvalid = false;
if (CE_GOOD(g_pLocalPlayer->entity)) {
g_pLocalPlayer->v_OrigViewangles = cmd->viewangles;
// PROF_BEGIN();
//RunEnginePrediction(g_pLocalPlayer->entity, cmd);
SAFE_CALL(HACK_PROCESS_USERCMD(ESP, cmd));
if (!g_pLocalPlayer->life_state) {
//if (TF2) SAFE_CALL(HACK_PROCESS_USERCMD(Noisemaker, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(Bunnyhop, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(AutoStrafe, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(Aimbot, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(Airstuck, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(AntiAim, cmd));
if (TF) SAFE_CALL(HACK_PROCESS_USERCMD(AutoSticky, cmd));
if (TF) SAFE_CALL(HACK_PROCESS_USERCMD(AutoReflect, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(Triggerbot, cmd));
}
if (TF) SAFE_CALL(HACK_PROCESS_USERCMD(AntiDisguise, cmd));
if (TF) SAFE_CALL(HACK_PROCESS_USERCMD(AutoHeal, cmd));
if (TF2) SAFE_CALL(HACK_PROCESS_USERCMD(Glow, cmd));
//SAFE_CALL(CREATE_MOVE(FollowBot));
SAFE_CALL(HACK_PROCESS_USERCMD(Misc, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(KillSay, cmd));
SAFE_CALL(HACK_PROCESS_USERCMD(Spam, cmd));
// PROF_END("Hacks processing");
if (time_replaced) interfaces::gvars->curtime = curtime_old;
}
/*for (IHack* i_hack : hack::hacks) {
if (!i_hack->CreateMove(thisptr, inputSample, cmd)) {
ret = false;
}
}*/
g_Settings.bInvalid = false;
if (g_pChatStack)
g_pChatStack->OnCreateMove();
if (CE_GOOD(g_pLocalPlayer->entity)) {
bool speedapplied = false;
if (g_Settings.kRollSpeedhack->GetBool() && g_pGUI->m_bPressedState[g_Settings.kRollSpeedhack->GetInt()] && !(cmd->buttons & IN_ATTACK)) {
float speed = cmd->forwardmove;
if (fabs(speed) > 0.0f) {
cmd->forwardmove = -speed;
cmd->sidemove = 0.0f;
cmd->viewangles.y = g_pLocalPlayer->v_OrigViewangles.y;
cmd->viewangles.y -= 180.0f;
if (cmd->viewangles.y < -180.0f) cmd->viewangles.y += 360.0f;
cmd->viewangles.z = 90.0f;
g_pLocalPlayer->bUseSilentAngles = true;
speedapplied = true;
}
/*Vector vecMove( cmd->forwardmove, 0.0f, 0.0f );
float flLength = vecMove.Length();
if( flLength > 0.0f && !(cmd->buttons & IN_ATTACK) )
{
//Vector nvm = -vecMove;
Vector angMoveReverse;
VectorAngles( vecMove, angMoveReverse );
cmd->forwardmove = -flLength;
cmd->sidemove = 0.0f; // Move only backwards, no sidemove
cmd->viewangles.y = AngleDiff( cmd->viewangles.y , angMoveReverse.y ) ;
logging::Info("yaw %.2f", cmd->viewangles.y);
cmd->viewangles.y += 180.0f;
if (cmd->viewangles.y > 180.0f) cmd->viewangles.y -= 360.0f;
cmd->viewangles.z = 89.0f; // OMFG SUPER 1337 SPEEDHAQ METHODS 8)
g_pLocalPlayer->bUseSilentAngles = true;
}*/
}
if (g_pLocalPlayer->bUseSilentAngles) {
if (!speedapplied) {
Vector vsilent(cmd->forwardmove, cmd->sidemove, cmd->upmove);
float speed = sqrt(vsilent.x * vsilent.x + vsilent.y * vsilent.y);
Vector ang;
VectorAngles(vsilent, ang);
float yaw = DEG2RAD(ang.y - g_pLocalPlayer->v_OrigViewangles.y + cmd->viewangles.y);
cmd->forwardmove = cos(yaw) * speed;
cmd->sidemove = sin(yaw) * speed;
}
ret = false;
}
if (cmd)
g_Settings.last_angles = cmd->viewangles;
}
// PROF_END("CreateMove");
g_pLocalPlayer->bAttackLastTick = (cmd->buttons & IN_ATTACK);
return ret;
SEGV_END;
return true;
}