]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Port hitplotfh to ClientState
authorMario <mario@smbclan.net>
Tue, 18 Jul 2017 02:30:34 +0000 (12:30 +1000)
committerMario <mario@smbclan.net>
Tue, 18 Jul 2017 02:30:34 +0000 (12:30 +1000)
qcsrc/common/state.qc
qcsrc/server/client.qh
qcsrc/server/weapons/hitplot.qc

index cbf9eff72a8f68ad2f9e6da25d03539f1e2f4b32..7013cff1c15282956d1e8e008abead47910a2f29 100644 (file)
@@ -71,6 +71,7 @@ void ClientState_detach(entity this)
 {
     accuracy_free(this); // TODO: needs to be before CS() is deleted!
     PlayerScore_Detach(this); // what ^they^ said
+    W_HitPlotClose(this);
        delete(CS(this));
        this._cs = NULL;
 
@@ -78,7 +79,6 @@ void ClientState_detach(entity this)
 
     bot_clientdisconnect(this);
 
-    W_HitPlotClose(this);
     anticheat_report_to_eventlog(this);
     playerdemo_shutdown(this);
     entcs_detach(this);
index 88614214cccb5291889d7a3f2d69a7e8ad45e0bd..0c3eddfeba707231b386cdd2000e1332b7b64990 100644 (file)
@@ -105,6 +105,7 @@ CLASS(Client, Object)
     ATTRIB(Client, hasweapon_complain_spam, float, this.hasweapon_complain_spam);
     ATTRIB(Client, scorekeeper, entity, this.scorekeeper);
     ATTRIB(Client, specialcommand_pos, int, this.specialcommand_pos);
+    ATTRIB(Client, hitplotfh, int, this.hitplotfh);
 
     METHOD(Client, m_unwind, bool(Client this));
 
index 2a0fad7dee0c832e086d8feb2ff85ea347d7f3d3..89cec6aea98dacaadca0f44df7c58e82e63653c1 100644 (file)
@@ -54,27 +54,23 @@ vector W_HitPlotNormalizedUntransform(vector org, entity targ, vector screenforw
 
 void W_HitPlotAnalysis(entity player, .entity weaponentity, vector screenforward, vector screenright, vector screenup)
 {
-       vector hitplot;
-       vector org;
-       float lag;
-
-       if(player.hitplotfh >= 0)
+       if(CS(player).hitplotfh >= 0)
        {
-               lag = ANTILAG_LATENCY(player);
+               float lag = ANTILAG_LATENCY(player);
                if(lag < 0.001)
                        lag = 0;
                if(!IS_REAL_CLIENT(player))
                        lag = 0; // only antilag for clients
 
-               org = player.origin + player.view_ofs;
+               vector org = player.origin + player.view_ofs;
                traceline_antilag_force(player, org, org + screenforward * max_shot_distance, MOVE_NORMAL, player, lag);
                if(IS_CLIENT(trace_ent) || IS_MONSTER(trace_ent))
                {
                    entity store = IS_CLIENT(trace_ent) ? CS(trace_ent) : trace_ent;
                        antilag_takeback(trace_ent, store, time - lag);
-                       hitplot = W_HitPlotNormalizedUntransform(org, trace_ent, screenforward, screenright, screenup, trace_endpos);
+                       vector hitplot = W_HitPlotNormalizedUntransform(org, trace_ent, screenforward, screenright, screenup, trace_endpos);
                        antilag_restore(trace_ent, store);
-                       fputs(player.hitplotfh, strcat(ftos(hitplot.x), " ", ftos(hitplot.y), " ", ftos(hitplot.z), " ", ftos(player.(weaponentity).m_switchweapon.m_id), "\n"));
+                       fputs(CS(player).hitplotfh, strcat(ftos(hitplot.x), " ", ftos(hitplot.y), " ", ftos(hitplot.z), " ", ftos(player.(weaponentity).m_switchweapon.m_id), "\n"));
                        //print(strcat(ftos(hitplot_x), " ", ftos(hitplot_y), " ", ftos(hitplot_z), "\n"));
                }
        }
@@ -84,17 +80,17 @@ void W_HitPlotOpen(entity player)
 {
        if(autocvar_g_hitplots || strhasword(autocvar_g_hitplots_individuals, player.netaddress))
        {
-               player.hitplotfh = fopen(strcat("hits-", matchid, "-", player.netaddress, "-", ftos(player.playerid), ".plot"), FILE_WRITE);
-               fputs(player.hitplotfh, strcat("#name ", playername(player, false), "\n"));
+               CS(player).hitplotfh = fopen(strcat("hits-", matchid, "-", player.netaddress, "-", ftos(player.playerid), ".plot"), FILE_WRITE);
+               fputs(CS(player).hitplotfh, strcat("#name ", playername(player, false), "\n"));
        }
-       else { player.hitplotfh = -1; }
+       else { CS(player).hitplotfh = -1; }
 }
 
 void W_HitPlotClose(entity player)
 {
-       if(player.hitplotfh >= 0)
+       if(CS(player).hitplotfh >= 0)
        {
-               fclose(player.hitplotfh);
-               player.hitplotfh = -1;
+               fclose(CS(player).hitplotfh);
+               CS(player).hitplotfh = -1;
        }
 }