#include "defs.qh"
#include "miscfunctions.qh"
-#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;
}
void anticheat_physics()
-{
+{SELFPARAM();
float f;
// div0_evade -> SPECTATORS
}
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;
}
}
void anticheat_report()
-{
+{SELFPARAM();
if(!autocvar_sv_eventlog)
return;
// TODO(divVerent): Use xonstat to acquire good thresholds.
}
float anticheat_getvalue(string id)
-{
+{SELFPARAM();
switch(id) {
case "_time": return servertime - self.anticheat_jointime;
case "speedhack": return MEAN_EVALUATE(anticheat_speedhack);
}
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;
}