X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Faccuracy.qc;h=de6b52752b95b358503e9fdd1a846377bd4f6bc6;hb=6eeab865ebe5dd796bde14c88a1d562114ef20ed;hp=335683c73a42be3fc4bd8b210b415da910548e53;hpb=136bde75f76430926f45692fc783f12f053c3b1e;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/accuracy.qc b/qcsrc/server/accuracy.qc index 335683c73..de6b52752 100644 --- a/qcsrc/server/accuracy.qc +++ b/qcsrc/server/accuracy.qc @@ -1,12 +1,11 @@ -.entity accuracy; .float accuracy_hit[WEP_MAXCOUNT]; .float accuracy_fired[WEP_MAXCOUNT]; -FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(accuracy_hit); -FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(accuracy_fired); +.float accuracy_cnt_hit[WEP_MAXCOUNT]; +.float accuracy_cnt_fired[WEP_MAXCOUNT]; float accuracy_byte(float n, float d) { - print(sprintf("accuracy: %d / %d\n", n, d)); + //print(sprintf("accuracy: %d / %d\n", n, d)); if(n <= 0) return 0; if(n > d) @@ -74,6 +73,11 @@ void accuracy_set(entity e, float w, float fired, float hit) b = accuracy_byte(a.(accuracy_hit[w]), a.(accuracy_fired[w])); a.(accuracy_hit[w]) = hit; a.(accuracy_fired[w]) = fired; + + if(hit) + a.(accuracy_cnt_hit[w]) = 1; + a.(accuracy_cnt_fired[w]) = 1; + if(b == accuracy_byte(hit, fired)) return; w = pow(2, w); @@ -84,6 +88,9 @@ void accuracy_set(entity e, float w, float fired, float hit) a.SendFlags |= w; } +.float hit_time; +.float fired_time; + void accuracy_add(entity e, float w, float fired, float hit) { entity a; @@ -97,6 +104,19 @@ void accuracy_add(entity e, float w, float fired, float hit) a.(accuracy_hit[w]) += hit; if(fired) a.(accuracy_fired[w]) += fired; + + if(hit && a.hit_time != time) // only run this once per frame + { + a.(accuracy_cnt_hit[w]) += 1; + a.hit_time = time; + } + + if(fired && a.fired_time != time) // only run this once per frame + { + a.(accuracy_cnt_fired[w]) += 1; + a.fired_time = time; + } + if(b == accuracy_byte(a.(accuracy_hit[w]), a.(accuracy_fired[w]))) return; w = pow(2, w);