]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/anticheat.qc
Merge branch 'master' into TimePath/unified_weapons
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / anticheat.qc
index 1e6759684a593df5fea8690173ee76946d2b4fbe..32742d82d9555e41330fa559acbee64314a1b7f3 100644 (file)
@@ -8,37 +8,11 @@
 #include "../dpdefs/progsdefs.qh"
 #include "../dpdefs/dpextensions.qh"
 
-#include "../warpzonelib/mathlib.qh"
 
 #include "command/common.qh"
 
 .float anticheat_jointime;
 
-void mean_accumulate(entity e, .float a, .float c, float mean, float value, float weight)
-{
-       if (weight == 0)
-               return;
-       if (mean == 0)
-               e.(a) *= pow(value, weight);
-       else
-               e.(a) += pow(value, mean) * weight;
-       e.(c) += weight;
-}
-
-float mean_evaluate(entity e, .float a, .float c, float mean)
-{
-       if (e.(c) == 0)
-               return 0;
-       if (mean == 0)
-               return pow(e.(a), 1.0 / e.(c));
-       else
-               return pow(e.(a) / e.(c), 1.0 / mean);
-}
-
-#define MEAN_ACCUMULATE(prefix,v,w) mean_accumulate(self,prefix##_accumulator,prefix##_count,prefix##_mean,v,w)
-#define MEAN_EVALUATE(prefix) mean_evaluate(self,prefix##_accumulator,prefix##_count,prefix##_mean)
-#define MEAN_DECLARE(prefix,m) float prefix##_mean = m; .float prefix##_count, prefix##_accumulator
-
 .float anticheat_fixangle_endtime;
 
 float anticheat_div0_evade_evasion_delta;
@@ -89,7 +63,7 @@ float movement_oddity(vector m0, vector m1)
 }
 
 void anticheat_physics()
-{
+{SELFPARAM();
        float f;
 
        // div0_evade -> SPECTATORS
@@ -176,13 +150,13 @@ void anticheat_physics()
 }
 
 void anticheat_spectatecopy(entity spectatee)
-{
+{SELFPARAM();
        // div0_evade -> SPECTATORS
        self.angles = spectatee.anticheat_div0_evade_v_angle;
 }
 
 void anticheat_prethink()
-{
+{SELFPARAM();
        // div0_evade -> SPECTATORS
        self.anticheat_div0_evade_offset = 0;
 }
@@ -199,7 +173,7 @@ string anticheat_display(float f, float tmin, float mi, float ma)
 }
 
 void anticheat_report()
-{
+{SELFPARAM();
        if(!autocvar_sv_eventlog)
                return;
        // TODO(divVerent): Use xonstat to acquire good thresholds.
@@ -224,7 +198,7 @@ void anticheat_report()
 }
 
 float anticheat_getvalue(string id)
-{
+{SELFPARAM();
        switch(id) {
                case "_time": return servertime - self.anticheat_jointime;
                case "speedhack": return MEAN_EVALUATE(anticheat_speedhack);
@@ -254,22 +228,22 @@ void anticheat_startframe()
 }
 
 void anticheat_fixangle()
-{
+{SELFPARAM();
        self.anticheat_fixangle_endtime = servertime + ANTILAG_LATENCY(self) + 0.2;
 }
 
 void anticheat_endframe()
-{
-       entity oldself = self;
-       FOR_EACH_CLIENT(self)
-               if (self.fixangle)
-                       anticheat_fixangle();
-       self = oldself;
+{SELFPARAM();
+       entity e;
+       FOR_EACH_CLIENT(e)
+               if (e.fixangle) {
+                       WITH(entity, self, e, anticheat_fixangle());
+               }
        anticheat_div0_evade_evasion_delta += frametime * (0.5 + random());
 }
 
 void anticheat_init()
-{
+{SELFPARAM();
        self.anticheat_speedhack_offset = 0;
        self.anticheat_jointime = servertime;
 }