From 19568c59ebe46e31b1af8f4857cbef0c117c1639 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sun, 5 Feb 2023 08:47:17 -0500 Subject: [PATCH] Skip division by zero in snapback anticheat. --- qcsrc/server/anticheat.qc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/qcsrc/server/anticheat.qc b/qcsrc/server/anticheat.qc index 622f74c83f..a818df3eb6 100644 --- a/qcsrc/server/anticheat.qc +++ b/qcsrc/server/anticheat.qc @@ -117,9 +117,12 @@ void anticheat_physics(entity this) float f = bound(0, dt * 4, 1); // About 0.25 seconds horizon for snapping back. vector aim_move = v_forward - CS(this).anticheat_div0_strafebot_forward_prev; vector snapback_prev = CS(this).anticheat_div0_snapback_prev; - float aim_snap = max(0, (aim_move * snapback_prev) / -vlen(snapback_prev)); - // Scales with aim_move, but is positive only when snapping back, otherwise zero. - MEAN_ACCUMULATE(CS(this), anticheat_div0_snapback, aim_snap, dt); + float snapback_len = vlen(snapback_prev); + if (snapback_len != 0) { + float aim_snap = max(0, (aim_move * snapback_prev) / -snapback_len); + // Scales with aim_move, but is positive only when snapping back, otherwise zero. + MEAN_ACCUMULATE(CS(this), anticheat_div0_snapback, aim_snap, dt); + } CS(this).anticheat_div0_snapback_prev = snapback_prev * (1 - f) + aim_move * f; } } -- 2.39.2