From 60219927918251baefbcd5d1f454f7d8cd515f79 Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Sun, 31 Mar 2002 23:41:45 +0000 Subject: [PATCH] Added the use command --- reaction/cgame/cg_consolecmds.c | 4 ++ reaction/game/g_cmds.c | 5 ++ reaction/game/g_teamplay.c | 90 ++++++++++++++++++++++++++++++++- reaction/game/g_teamplay.h | 4 ++ 4 files changed, 102 insertions(+), 1 deletion(-) diff --git a/reaction/cgame/cg_consolecmds.c b/reaction/cgame/cg_consolecmds.c index fbd86aa2..e4c9297f 100644 --- a/reaction/cgame/cg_consolecmds.c +++ b/reaction/cgame/cg_consolecmds.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.41 2002/03/31 23:41:45 jbravo +// Added the use command +// // Revision 1.40 2002/03/31 17:41:03 makro // Changed IR vision to be more like AQ2 // @@ -955,6 +958,7 @@ void CG_InitConsoleCommands( void ) { trap_AddCommand ("irvision"); // JBravo: adding choose and drop commands. trap_AddCommand ("choose"); + trap_AddCommand ("use"); trap_AddCommand ("drop"); // JBravo: for zcam trap_AddCommand ("camera"); diff --git a/reaction/game/g_cmds.c b/reaction/game/g_cmds.c index ec55a757..42646768 100644 --- a/reaction/game/g_cmds.c +++ b/reaction/game/g_cmds.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.87 2002/03/31 23:41:45 jbravo +// Added the use command +// // Revision 1.86 2002/03/31 03:31:24 jbravo // Compiler warning cleanups // @@ -2950,6 +2953,8 @@ void ClientCommand( int clientNum ) { RQ3_Cmd_Choose_f (ent); else if (Q_stricmp (cmd, "drop") == 0) RQ3_Cmd_Drop_f (ent); + else if (Q_stricmp (cmd, "use") == 0) + RQ3_Cmd_Use_f (ent); // JBravo: adding radio else if (Q_stricmp (cmd, "radiogender") == 0) RQ3_Cmd_Radiogender_f (ent); diff --git a/reaction/game/g_teamplay.c b/reaction/game/g_teamplay.c index f585b827..6164ba66 100644 --- a/reaction/game/g_teamplay.c +++ b/reaction/game/g_teamplay.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.51 2002/03/31 23:41:45 jbravo +// Added the use command +// // Revision 1.50 2002/03/31 18:36:27 jbravo // Added $T (Near by teammates) // @@ -648,7 +651,6 @@ void SpawnPlayers() /* Let the player Choose the weapon and/or item he wants */ void RQ3_Cmd_Choose_f( gentity_t *ent ) { -// char cmd[MAX_STRING_CHARS]; char *cmd; if ( !ent->client ) { @@ -1415,3 +1417,89 @@ void RQ3_SpectatorMode(gentity_t *ent) va("print \"\n" S_COLOR_MAGENTA "Spectator Mode-" S_COLOR_YELLOW"%s\n", (ent->client->sess.spectatorState == SPECTATOR_FREE)? "FREE":"FOLLOW")); } + +void RQ3_Cmd_Use_f(gentity_t *ent) +{ + char *cmd, buf[128]; + int weapon; + + if (!ent->client) { + return; // not fully in game yet + } + + cmd = ConcatArgs(1); + weapon = WP_NONE; + + if (Q_stricmp (cmd, RQ3_MP5_NAME) == 0 || Q_stricmp (cmd, "mp5") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_MP5) ) == (1 << WP_MP5)) { + weapon = WP_MP5; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_MP5_NAME)); + return; + } + } else if (Q_stricmp (cmd, RQ3_M3_NAME) == 0 || Q_stricmp (cmd, "m3") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_M3) ) == (1 << WP_M3)) { + weapon = WP_M3; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_M3_NAME)); + return; + } + } else if (Q_stricmp (cmd, RQ3_M4_NAME) == 0 || Q_stricmp (cmd, "m4") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_M4) ) == (1 << WP_M4)) { + weapon = WP_M4; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_M4_NAME)); + return; + } + } else if (Q_stricmp (cmd, RQ3_HANDCANNON_NAME) == 0 || Q_stricmp (cmd, "hc") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_HANDCANNON) ) == (1 << WP_HANDCANNON)) { + weapon = WP_HANDCANNON; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_HANDCANNON_NAME)); + return; + } + } else if (Q_stricmp (cmd, RQ3_SSG3000_NAME) == 0 || Q_stricmp (cmd, "sniper") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_SSG3000) ) == (1 << WP_SSG3000)) { + weapon = WP_SSG3000; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_SSG3000_NAME)); + return; + } + } else if (Q_stricmp (cmd, RQ3_AKIMBO_NAME) == 0 || Q_stricmp (cmd, "akimbo") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_AKIMBO) ) == (1 << WP_AKIMBO)) { + weapon = WP_AKIMBO; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_AKIMBO_NAME)); + return; + } + } else if (Q_stricmp (cmd, RQ3_PISTOL_NAME) == 0 || Q_stricmp (cmd, "pistol") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_PISTOL) ) == (1 << WP_PISTOL)) { + weapon = WP_PISTOL; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_AKIMBO_NAME)); + return; + } + } else if (Q_stricmp (cmd, "throwing combat knife") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_KNIFE) ) == (1 << WP_KNIFE)) { + weapon = WP_KNIFE; + ent->client->ps.persistant[PERS_WEAPONMODES] &= ~RQ3_KNIFEMODE; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_KNIFE_NAME)); + return; + } + } else if (Q_stricmp (cmd, "slashing combat knife") == 0) { + if ((ent->client->ps.stats[STAT_WEAPONS] & (1 << WP_KNIFE) ) == (1 << WP_KNIFE)) { + weapon = WP_KNIFE; + ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_KNIFEMODE; + } else { + trap_SendServerCommand(ent-g_entities, va("print \"Out of item: %s\n\"", RQ3_KNIFE_NAME)); + return; + } + } + if (weapon == WP_NONE) { + trap_SendServerCommand(ent-g_entities, va("print \"Unknown item: %s\n\"", cmd)); + return; + } + Com_sprintf (buf, sizeof(buf), "weapon %d\n", weapon); + trap_SendConsoleCommand(EXEC_APPEND, buf); +} diff --git a/reaction/game/g_teamplay.h b/reaction/game/g_teamplay.h index 68ccb97f..7675184f 100644 --- a/reaction/game/g_teamplay.h +++ b/reaction/game/g_teamplay.h @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.8 2002/03/31 23:41:45 jbravo +// Added the use command +// // Revision 1.7 2002/03/30 02:29:43 jbravo // Lots of spectator code updates. Removed debugshit, added some color. // @@ -49,6 +52,7 @@ void CleanLevel(); void CheckForUnevenTeams(gentity_t *player); void EquipPlayer (gentity_t *ent); void RQ3_Cmd_Choose_f(gentity_t *ent); +void RQ3_Cmd_Use_f(gentity_t *ent); void RQ3_Cmd_Drop_f( gentity_t *ent ); void UnstickPlayer( gentity_t *ent ); void MakeSpectator( gentity_t *ent );