From 0e7a307948bb0421cdfc70ef5c57ad991c79e4d0 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 6 Oct 2007 19:25:31 +0000 Subject: [PATCH] make use of DP_CON_BESTWEAPON to make the bestweapon command actually work git-svn-id: svn://svn.icculus.org/nexuiz/trunk@2814 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_client.qc | 10 ++++++++++ data/qcsrc/server/cl_weaponsystem.qc | 25 +++++++++++++++++++++++++ data/qcsrc/server/defs.qh | 1 + data/qcsrc/server/w_crylink.qc | 2 ++ data/qcsrc/server/w_electro.qc | 2 ++ data/qcsrc/server/w_grenadelauncher.qc | 2 ++ data/qcsrc/server/w_hagar.qc | 2 ++ data/qcsrc/server/w_laser.qc | 2 ++ data/qcsrc/server/w_nex.qc | 2 ++ data/qcsrc/server/w_rocketlauncher.qc | 2 ++ data/qcsrc/server/w_shotgun.qc | 2 ++ data/qcsrc/server/w_uzi.qc | 4 +++- 12 files changed, 55 insertions(+), 1 deletion(-) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index c3a6a6248..918bebb23 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -639,6 +639,7 @@ string ColoredTeamName(float t); void ClientConnect (void) { local string s; + float wep; if(Ban_IsClientBanned(self)) { @@ -718,6 +719,15 @@ void ClientConnect (void) // get version info from player stuffcmd(self, "cmd clientversion $gameversion\n"); + // send all weapon info strings + stuffcmd(self, "register_bestweapon clear\n"); // clear the Quake stuff + wep = WEP_FIRST; + while (wep <= WEP_LAST) + { + weapon_action(wep, WR_REGISTER); + wep = wep + 1; + } + // get other cvars from player GetCvars(0); diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 37321d3df..b60583b28 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -494,4 +494,29 @@ void(entity missile) W_SetupProjectileVelocity = error("Unowned missile"); missile.velocity = W_CalculateProjectileVelocity(missile.owner.velocity, missile.velocity); +} + +void(float wepcode, float minammo) weapon_register = +{ + string s; + float itemcode; + s = strcat("register_bestweapon ", ftos(wepcode), " "); // char for bestweapon + s = strcat(s, ftos(wepcode), " "); // impulse + s = strcat(s, ftos(W_ItemCode(wepcode)), " "); // item code + s = strcat(s, ftos(wepcode), " "); // self.weapon code + + // ammo stat + itemcode = W_AmmoItemCode(wepcode); + if(itemcode == IT_SHELLS) + s = strcat(s, "6 "); + else if(itemcode == IT_NAILS) + s = strcat(s, "7 "); + else if(itemcode == IT_ROCKETS) + s = strcat(s, "8 "); + else // if(itemcode == IT_CELLS) + s = strcat(s, "9 "); + + s = strcat(s, ftos(minammo), "\n"); + //dprint(s); + stuffcmd(self, s); } diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index f59c07463..059d20795 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -138,6 +138,7 @@ float WR_CHECKAMMO1 = 3; // checks ammo for weapon float WR_CHECKAMMO2 = 4; // checks ammo for weapon float WR_AIM = 5; // runs bot aiming code for this weapon float WR_PRECACHE = 6; // precaches models/sounds used by this weapon +float WR_REGISTER = 7; // send data about the weapon to the client self (for ClientConnect) // Weapon indexes float WEP_LASER = 1; // float IT_LASER = 4096; diff --git a/data/qcsrc/server/w_crylink.qc b/data/qcsrc/server/w_crylink.qc index 324491a4a..65f38566f 100644 --- a/data/qcsrc/server/w_crylink.qc +++ b/data/qcsrc/server/w_crylink.qc @@ -217,5 +217,7 @@ float(float req) w_crylink = return self.ammo_cells >= cvar("g_balance_crylink_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_cells >= cvar("g_balance_crylink_secondary_ammo"); + else if (req == WR_REGISTER) + weapon_register(WEP_CRYLINK, min(cvar("g_balance_crylink_primary_ammo"), cvar("g_balance_crylink_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index 3b3731f9c..d3a981648 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -212,5 +212,7 @@ float(float req) w_electro = return self.ammo_cells >= cvar("g_balance_electro_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_cells >= cvar("g_balance_electro_secondary_ammo"); + else if (req == WR_REGISTER) + weapon_register(WEP_ELECTRO, min(cvar("g_balance_electro_primary_ammo"), cvar("g_balance_electro_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_grenadelauncher.qc b/data/qcsrc/server/w_grenadelauncher.qc index e0dc8795a..329bb1347 100644 --- a/data/qcsrc/server/w_grenadelauncher.qc +++ b/data/qcsrc/server/w_grenadelauncher.qc @@ -201,5 +201,7 @@ float(float req) w_glauncher = return self.ammo_rockets >= cvar("g_balance_grenadelauncher_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_rockets >= cvar("g_balance_grenadelauncher_secondary_ammo"); + else if (req == WR_REGISTER) + weapon_register(WEP_GRENADE_LAUNCHER, min(cvar("g_balance_grenadelauncher_primary_ammo"), cvar("g_balance_grenadelauncher_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_hagar.qc b/data/qcsrc/server/w_hagar.qc index e30c9e0f2..3ed72d376 100644 --- a/data/qcsrc/server/w_hagar.qc +++ b/data/qcsrc/server/w_hagar.qc @@ -189,5 +189,7 @@ float(float req) w_hagar = return self.ammo_rockets >= cvar("g_balance_hagar_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_rockets >= cvar("g_balance_hagar_secondary_ammo"); + else if (req == WR_REGISTER) + weapon_register(WEP_HAGAR, min(cvar("g_balance_hagar_primary_ammo"), cvar("g_balance_hagar_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_laser.qc b/data/qcsrc/server/w_laser.qc index 2d052d0bc..1c0079cec 100644 --- a/data/qcsrc/server/w_laser.qc +++ b/data/qcsrc/server/w_laser.qc @@ -131,5 +131,7 @@ float(float req) w_laser = return TRUE; else if (req == WR_CHECKAMMO2) return TRUE; + else if (req == WR_REGISTER) + weapon_register(WEP_LASER, 0); return TRUE; }; diff --git a/data/qcsrc/server/w_nex.qc b/data/qcsrc/server/w_nex.qc index 58eef3876..094b273a3 100644 --- a/data/qcsrc/server/w_nex.qc +++ b/data/qcsrc/server/w_nex.qc @@ -192,5 +192,7 @@ float(float req) w_nex = } else if (req == WR_CHECKAMMO2) return FALSE; + else if (req == WR_REGISTER) + weapon_register(WEP_NEX, cvar("g_balance_nex_ammo")); return TRUE; }; diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index 47077b28a..bc04d4010 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -411,5 +411,7 @@ float(float req) w_rlauncher = } else if (req == WR_CHECKAMMO2) return FALSE; + else if (req == WR_REGISTER) + weapon_register(WEP_ROCKET_LAUNCHER, cvar("g_balance_rocketlauncher_ammo")); return TRUE; }; diff --git a/data/qcsrc/server/w_shotgun.qc b/data/qcsrc/server/w_shotgun.qc index d6d35681d..e53e30b89 100644 --- a/data/qcsrc/server/w_shotgun.qc +++ b/data/qcsrc/server/w_shotgun.qc @@ -108,5 +108,7 @@ float(float req) w_shotgun = return self.ammo_shells >= cvar("g_balance_shotgun_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_shells >= cvar("g_balance_shotgun_secondary_ammo") * 3; + else if (req == WR_REGISTER) + weapon_register(WEP_SHOTGUN, min(cvar("g_balance_shotgun_primary_ammo"), cvar("g_balance_shotgun_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_uzi.qc b/data/qcsrc/server/w_uzi.qc index 9cb91c8bb..0576b8ba5 100644 --- a/data/qcsrc/server/w_uzi.qc +++ b/data/qcsrc/server/w_uzi.qc @@ -126,6 +126,8 @@ float(float req) w_uzi = else if (req == WR_CHECKAMMO1) return self.ammo_nails >= cvar("g_balance_uzi_first_ammo"); else if (req == WR_CHECKAMMO2) - return self.ammo_nails >= cvar("g_balance_uzi_sustained_ammo"); + return self.ammo_nails >= cvar("g_balance_uzi_first_ammo"); + else if (req == WR_REGISTER) + weapon_register(WEP_UZI, cvar("g_balance_uzi_first_ammo")); return TRUE; }; -- 2.39.2