From 9d32643b069d6b0754fb5a8b80c6654c38f95143 Mon Sep 17 00:00:00 2001 From: rtxa Date: Sat, 20 Jul 2024 16:16:41 -0300 Subject: [PATCH] Add _toggleweapon command --- src/game/client/hud/ammo.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/game/client/hud/ammo.cpp b/src/game/client/hud/ammo.cpp index 1915c4f..7af5442 100644 --- a/src/game/client/hud/ammo.cpp +++ b/src/game/client/hud/ammo.cpp @@ -829,6 +829,35 @@ void CHudAmmo::UserCmd_PrevWeapon(void) gpActiveSel = NULL; } +CON_COMMAND(_toggleweapon, "Change to weapon if available, otherwise fallbacks to default weapon.") +{ + int argc = gEngfuncs.Cmd_Argc(); + if (argc <= 2 || argc > 3) + { + ConPrintf("usage: _toggleweapon \n"); + return; + } + + char arg1[MAX_WEAPON_NAME]; // weapon to toggle + char arg2[MAX_WEAPON_NAME]; // fallback weapon + + sprintf(arg1, "%s", gEngfuncs.Cmd_Argv(1)); + sprintf(arg2, "%s", gEngfuncs.Cmd_Argv(2)); + + for (int i = MAX_WEAPONS - 1; i > 0; i--) + { + WEAPON *p = gWR.GetWeapon(i); + + if (p && (gHUD.m_iWeaponBits & (1 << p->iId)) && strcmp(p->szName, arg1) == 0) + { + ServerCmd(arg1); + return; + } + } + + ServerCmd(arg2); +} + //------------------------------------------------------------------------- // Drawing code //-------------------------------------------------------------------------