From 202a3ec0c92580716d8b5517d041aab98a7576fb Mon Sep 17 00:00:00 2001 From: asofold Date: Fri, 4 Jan 2013 14:49:11 +0100 Subject: [PATCH] [Bleeding] Account for server side lag in fight.speed. --- .../nocheatplus/checks/fight/Speed.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Speed.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Speed.java index 371ae867..16390fcd 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Speed.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/fight/Speed.java @@ -50,14 +50,24 @@ public class Speed extends Check { // Add to frequency. data.speedBuckets.add(now, 1f); - // Medium term (normalized to one second). - final float total = data.speedBuckets.score(cc.speedBucketFactor) * 1000f / (float) (cc.speedBucketDur * cc.speedBuckets); + // Medium term (normalized to one second), account for server side lag. + final long fullTime = cc.speedBucketDur * cc.speedBuckets; + final float fullLag = cc.lag ? TickTask.getLag(fullTime, true) : 1f; + final float total = data.speedBuckets.score(cc.speedBucketFactor) * 1000f / (fullLag * fullTime); // Short term. final int tick = TickTask.getTick(); if (tick - data.speedShortTermTick < cc.speedShortTermTicks){ - // Within range, add. - data.speedShortTermCount ++; + // Account for server side lag. + if (!cc.lag || TickTask.getLag(50L * (tick - data.speedShortTermTick), true) < 1.5f){ + // Within range, add. + data.speedShortTermCount ++; + } + else{ + // Too much lag, reset. + data.speedShortTermTick = tick; + data.speedShortTermCount = 1; + } } else{ data.speedShortTermTick = tick;