X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fanticheat.qc;h=32742d82d9555e41330fa559acbee64314a1b7f3;hb=4df4683fde3d24fa365851451f44bf44afe93d43;hp=33c82913116b2b350ba1ff0ea1c3917a09da76df;hpb=ac5366add2c2d44bff2e03fc916b991eb009a10a;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/anticheat.qc b/qcsrc/server/anticheat.qc index 33c829131..32742d82d 100644 --- a/qcsrc/server/anticheat.qc +++ b/qcsrc/server/anticheat.qc @@ -1,29 +1,17 @@ -.float anticheat_jointime; +#include "anticheat.qh" -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; -} +#include "antilag.qh" +#include "autocvars.qh" +#include "defs.qh" +#include "miscfunctions.qh" -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); -} +#include "../dpdefs/progsdefs.qh" +#include "../dpdefs/dpextensions.qh" -#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 + +#include "command/common.qh" + +.float anticheat_jointime; .float anticheat_fixangle_endtime; @@ -75,7 +63,7 @@ float movement_oddity(vector m0, vector m1) } void anticheat_physics() -{ +{SELFPARAM(); float f; // div0_evade -> SPECTATORS @@ -162,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; } @@ -185,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. @@ -210,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); @@ -240,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; }