]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Alternative fix: don't modify the player state if it's not owned by the client
authorMario <mario@smbclan.net>
Mon, 8 Aug 2016 03:42:03 +0000 (13:42 +1000)
committerMario <mario@smbclan.net>
Mon, 8 Aug 2016 03:42:03 +0000 (13:42 +1000)
qcsrc/common/state.qc
qcsrc/server/cl_client.qc

index eaa96892f64aba3e9e1cb38f5b2e34af51358ed3..891461c6a4dd24f92886c1c89522af11e67f2093 100644 (file)
@@ -16,12 +16,12 @@ void PlayerState_detach(entity this)
        if (!ps) return;  // initial connect
        PS(this) = NULL;
 
+       if (ps.m_client != this) return;  // don't own state, spectator
        ps.m_switchweapon = WEP_Null;
        ps.m_weapon = WEP_Null;
        ps.m_switchingweapon = WEP_Null;
        ps.ps_push(ps, this);
-
-       if (ps.m_client != this) return;  // don't own state, spectator
+       
        FOREACH_CLIENT(PS(it) == ps, { PS(it) = NULL; });
        delete(ps);
 
index a37227d03024614a464ff56e4b27167b832ae72b..c212691db7598c912f8841085243c918d7e5db7d 100644 (file)
@@ -218,8 +218,7 @@ void FixPlayermodel(entity player);
 void PutObserverInServer(entity this)
 {
     bool mutator_returnvalue = MUTATOR_CALLHOOK(MakePlayerObserver, this);
-    if(IS_PLAYER(this)) // our own state
-               PlayerState_detach(this);
+       PlayerState_detach(this);
 
        if (IS_PLAYER(this) && this.health >= 1) {
         // despawn effect