From: Rudolf Polzer Date: Mon, 1 Oct 2012 12:40:42 +0000 (+0200) Subject: more accurate accuracy sending X-Git-Tag: xonotic-v0.7.0~208 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=4e2d18f603fb9b0f88d282f4b879a3b2146b82af;p=xonotic%2Fxonotic-data.pk3dir.git more accurate accuracy sending --- diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 391a9b908..c7a66a868 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -671,7 +671,7 @@ void Ent_ReadAccuracy(void) return; } - for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w, f *= 2) + for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w) { if(sf & f) { @@ -683,6 +683,10 @@ void Ent_ReadAccuracy(void) else weapon_accuracy[w] = (b - 1.0) / 100.0; } + if(f == 0x800000) + f = 1; + else + f *= 2; } } diff --git a/qcsrc/server/accuracy.qc b/qcsrc/server/accuracy.qc index f17593af9..9271e03d0 100644 --- a/qcsrc/server/accuracy.qc +++ b/qcsrc/server/accuracy.qc @@ -32,10 +32,14 @@ float accuracy_send(entity to, float sf) if(sf == 0) return TRUE; // note: we know that client and server agree about SendFlags... - for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w, f *= 2) + for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w) { if(sf & f) WriteByte(MSG_ENTITY, accuracy_byte(self.(accuracy_hit[w]), self.(accuracy_fired[w]))); + if(f == 0x800000) + f = 1; + else + f *= 2; } return TRUE; } @@ -95,7 +99,7 @@ void accuracy_add(entity e, float w, float fired, float hit) if(b == accuracy_byte(a.(accuracy_hit[w]), a.(accuracy_fired[w]))) return; - w = pow(2, w); + w = pow(2, mod(w, 24)); a.SendFlags |= w; FOR_EACH_CLIENT(a) if(a.classname == "spectator")