From d177ec2583239f01eb1ae116cd1e8ddf0502f850 Mon Sep 17 00:00:00 2001 From: div0 Date: Wed, 4 Feb 2009 10:37:18 +0000 Subject: [PATCH] shotorg adjuster: make the client send the shot origin to the server, so the weapons all shoot with the currently "adjusted" shot origin (for testing) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@5742 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/client/Main.qc | 7 ++++++- data/qcsrc/server/cl_weaponsystem.qc | 3 +++ data/qcsrc/server/defs.qh | 2 ++ data/qcsrc/server/gamecommand.qc | 6 ++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/data/qcsrc/client/Main.qc b/data/qcsrc/client/Main.qc index 970c7a0d3..b047f9a92 100644 --- a/data/qcsrc/client/Main.qc +++ b/data/qcsrc/client/Main.qc @@ -374,7 +374,7 @@ void ShotOrg_Spawn() precache_model("models/shotorg_adjuster.md3"); setmodel(debug_shotorg, "models/shotorg_adjuster.md3"); debug_shotorg.scale = 3; - debug_shotorg.alpha = 0.8; + debug_shotorg.alpha = 0.7; debug_shotorg.view_ofs = '25 8 -8'; } @@ -427,6 +427,7 @@ void GameCommand(string msg) else debug_shotorg.view_ofs = debug_shotorg.view_ofs + stov(argv(1)); print(vtos(debug_shotorg.view_ofs), "\n"); + localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n"); } else if(cmd == "shotorg_movez") { if(!debug_shotorg) @@ -434,6 +435,7 @@ void GameCommand(string msg) else debug_shotorg.view_ofs = debug_shotorg.view_ofs + stof(argv(1)) * (debug_shotorg.view_ofs * (1 / debug_shotorg.view_ofs_x)); // closer/farther, same xy pos print(vtos(debug_shotorg.view_ofs), "\n"); + localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n"); } else if(cmd == "shotorg_set") { if(!debug_shotorg) @@ -441,6 +443,7 @@ void GameCommand(string msg) else debug_shotorg.view_ofs = stov(argv(1)); print(vtos(debug_shotorg.view_ofs), "\n"); + localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n"); } else if(cmd == "shotorg_setz") { if(!debug_shotorg) @@ -448,6 +451,7 @@ void GameCommand(string msg) else debug_shotorg.view_ofs = debug_shotorg.view_ofs * (stof(argv(1)) / debug_shotorg.view_ofs_x); // closer/farther, same xy pos print(vtos(debug_shotorg.view_ofs), "\n"); + localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n"); } else if(cmd == "shotorg_end") { if(debug_shotorg) @@ -456,6 +460,7 @@ void GameCommand(string msg) remove(debug_shotorg); debug_shotorg = world; } + localcmd("sv_cmd debug_shotorg\n"); } else { diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 7e37cfbb0..cd1c42901 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -39,6 +39,9 @@ void W_SetupShot(entity ent, vector vecs, float antilag, float recoil, string sn traceline(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, self); trueaimpoint = trace_endpos; + if(debug_shotorg != '0 0 0') + vecs = debug_shotorg; + if (cvar("g_shootfromeye")) w_shotorg = ent.origin + ent.view_ofs; else if (cvar("g_shootfromcenter")) diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index b538aca67..ad2170977 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -531,3 +531,5 @@ void SUB_UseTargets(); .void() reset2; // if set, an entity is reset using this (after calling ALL the reset functions for other entities) void ClientData_Touch(entity e); + +vector debug_shotorg; // if non-zero, overrides the shot origin of all weapons diff --git a/data/qcsrc/server/gamecommand.qc b/data/qcsrc/server/gamecommand.qc index 08eafd393..c1192840b 100644 --- a/data/qcsrc/server/gamecommand.qc +++ b/data/qcsrc/server/gamecommand.qc @@ -826,6 +826,12 @@ void GameCommand(string command) return; } + if(argv(0) == "debug_shotorg") + { + debug_shotorg = stov(argv(1)); + return; + } + print("Invalid command. For a list of supported commands, try sv_cmd help.\n"); } -- 2.39.2