]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
more accurate accuracy sending
authorRudolf Polzer <divverent@xonotic.org>
Mon, 1 Oct 2012 12:40:42 +0000 (14:40 +0200)
committerRudolf Polzer <divverent@xonotic.org>
Mon, 1 Oct 2012 12:40:42 +0000 (14:40 +0200)
qcsrc/client/Main.qc
qcsrc/server/accuracy.qc

index 391a9b908cb09e08e4d12ac8e617d246db68b320..c7a66a8680271478e17323116cc577a02fec1272 100644 (file)
@@ -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;
        }
 }
 
index f17593af95c8cb54fc85ccb33073ddef8ce193d2..9271e03d0ad20ef4b7e8e9a6536d68b723b40348 100644 (file)
@@ -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")