Files
goldsrc-cheat/src/features/anti_aim.c
2023-09-21 02:30:31 -04:00

100 lines
2.7 KiB
C

#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include "features.h"
#include "../include/sdk.h"
#include "../include/cvars.h"
#include "../include/util.h"
float random_float(float min, float max) {
return (max - min) * ((float)rand() / (float)RAND_MAX) + min;
}
bool isSpacebarPressed() {
Display* display = XOpenDisplay(NULL);
if (!display) {
return false; // Could not open the display, assume not pressed
}
char keys_return[32];
XQueryKeymap(display, keys_return);
KeyCode kc = XKeysymToKeycode(display, XK_space);
bool pressed = (keys_return[kc >> 3] & (1 << (kc & 7))) != 0;
XCloseDisplay(display);
return pressed;
}
void anti_aim(usercmd_t* cmd) {
if (cmd->buttons & IN_ATTACK || cmd->buttons & IN_USE) {
if (cmd->buttons & IN_ATTACK) {
i_engine->pfnClientCmd("echo \"Attack detected. Spinbot stopped.\"");
} else if (cmd->buttons & IN_USE) {
i_engine->pfnClientCmd("echo \"Use key detected. Spinbot stopped.\"");
}
return;
}
if (!CVAR_ON(movement_antiaim)) {
return;
}
if (!is_alive(localplayer)) {
return;
}
vec3_t view_angles;
i_engine->GetViewAngles(view_angles);
static bool lbyBreak = false;
if (lbyBreak) {
view_angles.y += 120.0f;
}
lbyBreak = !lbyBreak;
static bool flipPitch = false;
if (flipPitch) {
view_angles.x = 89.0f;
} else {
view_angles.x = -89.0f;
}
flipPitch = !flipPitch;
view_angles.y += 30.0f;
bool isBunnyHopping = cmd->buttons & IN_JUMP;
bool isStationary = (cmd->forwardmove == 0.0f && cmd->sidemove == 0.0f);
// This shit busted right now
if (CVAR_ON(movement_fakeduck) && (isStationary || isBunnyHopping || isSpacebarPressed())) {
static int duckCounter = 0;
if (duckCounter < 2) {
cmd->buttons |= IN_DUCK;
} else if (duckCounter < 4) {
cmd->buttons &= ~IN_DUCK;
} else {
duckCounter = 0;
}
duckCounter++;
}
if (view_angles.y > 180.0f) view_angles.y -= 360.0f;
if (view_angles.y < -180.0f) view_angles.y += 360.0f;
if (CVAR_ON(movement_antiaim_view)) {
i_engine->SetViewAngles(view_angles);
i_engine->pfnClientCmd("echo \"Set view angles directly using movement_antiaim_view.\"");
} else {
vec_copy(cmd->viewangles, view_angles);
i_engine->pfnClientCmd("echo \"Set view angles silently.\"");
}
static float last_log_time = 0.0f;
if (cmd->msec - last_log_time >= 5000.0f) {
i_engine->pfnClientCmd("echo \"Advanced Anti-Aim has adjusted view angles.\"");
last_log_time = cmd->msec;
}
}