From 4e2d18f603fb9b0f88d282f4b879a3b2146b82af Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Mon, 1 Oct 2012 14:40:42 +0200 Subject: [PATCH] more accurate accuracy sending --- qcsrc/client/Main.qc | 6 +++++- qcsrc/server/accuracy.qc | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) 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") -- 2.39.2