Update anti_aim.c, globals.c, and 7 more files...
This commit is contained in:
@@ -8,6 +8,25 @@
|
||||
#include "../include/sdk.h"
|
||||
#include "../include/settings.h"
|
||||
#include "../include/util.h"
|
||||
#include "../include/globals.h"
|
||||
|
||||
#define AA_PITCH_NONE 0
|
||||
#define AA_PITCH_DOWN 1
|
||||
#define AA_PITCH_UP 2
|
||||
#define AA_PITCH_ZERO 3
|
||||
#define AA_PITCH_JITTER 4
|
||||
#define AA_PITCH_CUSTOM 5
|
||||
|
||||
#define AA_YAW_NONE 0
|
||||
#define AA_YAW_BACKWARD 1
|
||||
#define AA_YAW_SPIN 2
|
||||
#define AA_YAW_JITTER 3
|
||||
#define AA_YAW_SIDEWAYS 4
|
||||
#define AA_YAW_CUSTOM 5
|
||||
|
||||
static float spin_angle = 0.0f;
|
||||
static float last_update_time = 0.0f;
|
||||
static float jitter_next_update = 0.0f;
|
||||
|
||||
float random_float(float min, float max) {
|
||||
return (max - min) * ((float)rand() / (float)RAND_MAX) + min;
|
||||
@@ -28,17 +47,160 @@ bool isSpacebarPressed() {
|
||||
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;
|
||||
bool is_key_pressed(int key_code) {
|
||||
if (key_code <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Display* display = XOpenDisplay(NULL);
|
||||
if (!display) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!g_settings.antiaim) {
|
||||
char keys_return[32];
|
||||
XQueryKeymap(display, keys_return);
|
||||
|
||||
KeyCode kc;
|
||||
if (key_code >= 'A' && key_code <= 'Z') {
|
||||
kc = XKeysymToKeycode(display, XK_a + (key_code - 'A'));
|
||||
} else if (key_code >= 'a' && key_code <= 'z') {
|
||||
kc = XKeysymToKeycode(display, XK_a + (key_code - 'a'));
|
||||
} else {
|
||||
switch (key_code) {
|
||||
case K_SPACE: kc = XKeysymToKeycode(display, XK_space); break;
|
||||
case K_CTRL: kc = XKeysymToKeycode(display, XK_Control_L); break;
|
||||
case K_SHIFT: kc = XKeysymToKeycode(display, XK_Shift_L); break;
|
||||
case K_ALT: kc = XKeysymToKeycode(display, XK_Alt_L); break;
|
||||
case K_TAB: kc = XKeysymToKeycode(display, XK_Tab); break;
|
||||
default: kc = XKeysymToKeycode(display, key_code);
|
||||
}
|
||||
}
|
||||
|
||||
bool pressed = (keys_return[kc >> 3] & (1 << (kc & 7))) != 0;
|
||||
XCloseDisplay(display);
|
||||
return pressed;
|
||||
}
|
||||
|
||||
void apply_pitch_anti_aim(vec3_t* view_angles, int pitch_mode, float custom_pitch) {
|
||||
switch (pitch_mode) {
|
||||
case AA_PITCH_DOWN:
|
||||
view_angles->x = 89.0f;
|
||||
break;
|
||||
case AA_PITCH_UP:
|
||||
view_angles->x = -89.0f;
|
||||
break;
|
||||
case AA_PITCH_ZERO:
|
||||
view_angles->x = 0.0f;
|
||||
break;
|
||||
case AA_PITCH_JITTER: {
|
||||
static bool flip_pitch = false;
|
||||
if (flip_pitch) {
|
||||
view_angles->x = 89.0f;
|
||||
} else {
|
||||
view_angles->x = -89.0f;
|
||||
}
|
||||
|
||||
if (g_flCurrentTime > jitter_next_update) {
|
||||
flip_pitch = !flip_pitch;
|
||||
jitter_next_update = g_flCurrentTime + random_float(0.1f, 0.3f);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AA_PITCH_CUSTOM:
|
||||
view_angles->x = CLAMP(custom_pitch, -89.0f, 89.0f);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void apply_yaw_anti_aim(vec3_t* view_angles, int yaw_mode, float custom_yaw, float speed, float jitter_range) {
|
||||
float time_now;
|
||||
float time_delta;
|
||||
static bool is_left = true;
|
||||
|
||||
switch (yaw_mode) {
|
||||
case AA_YAW_BACKWARD:
|
||||
view_angles->y += 180.0f;
|
||||
break;
|
||||
case AA_YAW_SPIN:
|
||||
time_now = g_flCurrentTime;
|
||||
time_delta = time_now - last_update_time;
|
||||
|
||||
spin_angle += time_delta * speed;
|
||||
|
||||
if (spin_angle > 360.0f) {
|
||||
spin_angle -= 360.0f;
|
||||
}
|
||||
|
||||
view_angles->y = spin_angle;
|
||||
|
||||
last_update_time = time_now;
|
||||
break;
|
||||
case AA_YAW_JITTER:
|
||||
if (g_flCurrentTime > jitter_next_update) {
|
||||
view_angles->y += random_float(-jitter_range, jitter_range);
|
||||
jitter_next_update = g_flCurrentTime + random_float(0.1f, 0.3f);
|
||||
}
|
||||
break;
|
||||
case AA_YAW_SIDEWAYS:
|
||||
if (g_flCurrentTime > jitter_next_update) {
|
||||
is_left = !is_left;
|
||||
jitter_next_update = g_flCurrentTime + random_float(0.5f, 1.5f);
|
||||
}
|
||||
|
||||
if (is_left) {
|
||||
view_angles->y += 90.0f;
|
||||
} else {
|
||||
view_angles->y -= 90.0f;
|
||||
}
|
||||
break;
|
||||
case AA_YAW_CUSTOM:
|
||||
view_angles->y = custom_yaw;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void apply_lby_breaker(vec3_t* view_angles, bool enable_breaker) {
|
||||
if (!enable_breaker)
|
||||
return;
|
||||
|
||||
static bool lby_update = false;
|
||||
static float next_lby_update = 0.0f;
|
||||
|
||||
if (g_flCurrentTime > next_lby_update) {
|
||||
lby_update = !lby_update;
|
||||
next_lby_update = g_flCurrentTime + 1.1f;
|
||||
|
||||
if (lby_update) {
|
||||
view_angles->y += 120.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void apply_fake_duck(usercmd_t* cmd, bool enable_duck) {
|
||||
if (!enable_duck)
|
||||
return;
|
||||
|
||||
static int duck_state = 0;
|
||||
static float next_duck_time = 0.0f;
|
||||
|
||||
if (g_flCurrentTime > next_duck_time) {
|
||||
duck_state = (duck_state + 1) % 4;
|
||||
next_duck_time = g_flCurrentTime + 0.05f;
|
||||
}
|
||||
|
||||
if (duck_state < 2) {
|
||||
cmd->buttons |= IN_DUCK;
|
||||
} else {
|
||||
cmd->buttons &= ~IN_DUCK;
|
||||
}
|
||||
}
|
||||
|
||||
void anti_aim(usercmd_t* cmd) {
|
||||
if (!g_settings.antiaim_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -46,54 +208,102 @@ void anti_aim(usercmd_t* cmd) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((cmd->buttons & IN_ATTACK) && !g_settings.antiaim_on_attack) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd->buttons & IN_USE) {
|
||||
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);
|
||||
|
||||
if (g_settings.fakeduck && (isStationary || isBunnyHopping || isSpacebarPressed())) {
|
||||
static int duckCounter = 0;
|
||||
if (duckCounter < 2) {
|
||||
cmd->buttons |= IN_DUCK;
|
||||
} else if (duckCounter < 4) {
|
||||
cmd->buttons &= ~IN_DUCK;
|
||||
if (g_settings.antiaim_pitch_enabled) {
|
||||
if (g_settings.antiaim_pitch_mode == 0) {
|
||||
view_angles.x = g_settings.antiaim_pitch;
|
||||
|
||||
view_angles.x = CLAMP(view_angles.x, -89.0f, 89.0f);
|
||||
} else {
|
||||
duckCounter = 0;
|
||||
apply_pitch_anti_aim(&view_angles, g_settings.antiaim_pitch_mode, g_settings.antiaim_custom_pitch);
|
||||
}
|
||||
|
||||
static float last_debug_time = 0.0f;
|
||||
if (g_flCurrentTime > last_debug_time + 5.0f) {
|
||||
i_engine->Con_Printf("Anti-Aim: Applied pitch angle %.1f (mode %d)\n",
|
||||
view_angles.x, g_settings.antiaim_pitch_mode);
|
||||
last_debug_time = g_flCurrentTime;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_settings.antiaim_yaw_enabled) {
|
||||
if (g_settings.antiaim_yaw_mode == 0) {
|
||||
if (g_settings.antiaim_legit) {
|
||||
float legit_yaw_max = 35.0f;
|
||||
view_angles.y += CLAMP(g_settings.antiaim_yaw, -legit_yaw_max, legit_yaw_max);
|
||||
} else {
|
||||
view_angles.y += g_settings.antiaim_yaw;
|
||||
}
|
||||
} else {
|
||||
apply_yaw_anti_aim(&view_angles, g_settings.antiaim_yaw_mode, g_settings.antiaim_custom_yaw,
|
||||
g_settings.antiaim_spin_speed, g_settings.antiaim_jitter_range);
|
||||
}
|
||||
|
||||
if (view_angles.y > 180.0f) view_angles.y -= 360.0f;
|
||||
if (view_angles.y < -180.0f) view_angles.y += 360.0f;
|
||||
}
|
||||
|
||||
apply_lby_breaker(&view_angles, g_settings.antiaim_lby_breaker);
|
||||
|
||||
if (g_settings.antiaim_desync) {
|
||||
static bool switch_side = false;
|
||||
static float next_switch = 0.0f;
|
||||
|
||||
if (g_flCurrentTime > next_switch) {
|
||||
switch_side = !switch_side;
|
||||
next_switch = g_flCurrentTime + random_float(0.4f, 0.8f);
|
||||
}
|
||||
|
||||
float desync_amount = switch_side ? 58.0f : -58.0f;
|
||||
|
||||
static vec3_t real_angles;
|
||||
vec_copy(real_angles, view_angles);
|
||||
|
||||
view_angles.y += desync_amount;
|
||||
|
||||
if (view_angles.y > 180.0f) view_angles.y -= 360.0f;
|
||||
if (view_angles.y < -180.0f) view_angles.y += 360.0f;
|
||||
|
||||
if (!g_settings.antiaim_view) {
|
||||
vec_copy(cmd->viewangles, view_angles);
|
||||
i_engine->SetViewAngles(real_angles);
|
||||
return;
|
||||
}
|
||||
duckCounter++;
|
||||
}
|
||||
|
||||
if (view_angles.y > 180.0f) view_angles.y -= 360.0f;
|
||||
if (view_angles.y < -180.0f) view_angles.y += 360.0f;
|
||||
bool should_fake_duck = false;
|
||||
|
||||
if (g_settings.antiaim_fakeduck_key > 0) {
|
||||
should_fake_duck = g_settings.antiaim_fakeduck && is_key_pressed(g_settings.antiaim_fakeduck_key);
|
||||
} else {
|
||||
should_fake_duck = g_settings.antiaim_fakeduck;
|
||||
}
|
||||
|
||||
if (should_fake_duck) {
|
||||
apply_fake_duck(cmd, true);
|
||||
}
|
||||
|
||||
if (g_settings.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;
|
||||
if (g_flCurrentTime > last_log_time + 5.0f) {
|
||||
i_engine->Con_Printf("Anti-Aim active: Pitch=%.1f, Yaw=%.1f, Mode=%d/%d\n",
|
||||
view_angles.x, view_angles.y,
|
||||
g_settings.antiaim_pitch_mode, g_settings.antiaim_yaw_mode);
|
||||
last_log_time = g_flCurrentTime;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user