#include "include/hooks.h" #include "include/sdk.h" #include "include/globals.h" #include "include/util.h" /* bhop(), esp(), etc. */ #include "features/features.h" DECL_HOOK(CL_CreateMove); DECL_HOOK(HUD_Redraw); DECL_HOOK(StudioRenderModel); DECL_HOOK(glColor4f); bool hooks_init(void) { HOOK(i_client, CL_CreateMove); HOOK(i_client, HUD_Redraw); HOOK(i_studiomodelrenderer, StudioRenderModel); GL_HOOK(glColor4f); return true; } /*----------------------------------------------------------------------------*/ void h_CL_CreateMove(float frametime, usercmd_t* cmd, int active) { ORIGINAL(CL_CreateMove, frametime, cmd, active); vec3_t old_angles = cmd->viewangles; /* Declared in globals.c */ localplayer = i_engine->GetLocalPlayer(); bhop(cmd); correct_movement(cmd, old_angles); vec_clamp(cmd->viewangles); } /*----------------------------------------------------------------------------*/ int h_HUD_Redraw(float time, int intermission) { int ret = ORIGINAL(HUD_Redraw, time, intermission); /* Watermark */ i_engine->pfnDrawSetTextColor(1, 1, 1); i_engine->pfnDrawConsoleString(5, 5, "8dcc/hl-cheat"); #ifdef DEBUG char pos[100]; sprintf(pos, "x: %f, y: %f, z: %f", localplayer->origin[0], localplayer->origin[1], localplayer->origin[2]); i_engine->pfnDrawSetTextColor(1, 1, 1); i_engine->pfnDrawConsoleString(5, 20, pos); #endif esp(); return ret; } /*----------------------------------------------------------------------------*/ void h_StudioRenderModel(void* this_ptr) { if (!chams(this_ptr)) ORIGINAL(StudioRenderModel, this_ptr); } /*----------------------------------------------------------------------------*/ void h_glColor4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a) { /* This visible_mode variable is changed inside the chams() function, which * is called from the StudioRenderModel hook. * * Depending on the type of entity we are trying to render from there, and * depending on its visibility, we change this visible_mode variable. */ switch (visible_mode) { case VISIBLE: r = 0.40f; g = 0.73f; b = 0.41f; break; case NOT_VISIBLE: r = 0.90f; g = 0.07f; b = 0.27f; break; default: case NONE: break; } ORIGINAL(glColor4f, r, g, b, a); }