diff --git a/reaction/cgame/cg_consolecmds.c b/reaction/cgame/cg_consolecmds.c index b02d65fa..cc0a3e62 100644 --- a/reaction/cgame/cg_consolecmds.c +++ b/reaction/cgame/cg_consolecmds.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.43 2002/04/07 12:49:53 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.42 2002/04/03 09:26:47 jbravo // New FF system. Warns and then finally kickbans teamwounders and // teamkillers @@ -975,6 +978,7 @@ void CG_InitConsoleCommands( void ) { trap_AddCommand ("captain"); trap_AddCommand ("ready"); trap_AddCommand ("sub"); + trap_AddCommand ("teamname"); // aasimon: refeere mm trap_AddCommand ("reflogin"); trap_AddCommand ("ref"); diff --git a/reaction/cgame/cg_local.h b/reaction/cgame/cg_local.h index ce1c2471..2fdaa137 100644 --- a/reaction/cgame/cg_local.h +++ b/reaction/cgame/cg_local.h @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.64 2002/04/07 12:49:53 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.63 2002/04/03 03:13:48 blaze // NEW BREAKABLE CODE - will break all old breakables(wont appear in maps) // @@ -1590,8 +1593,9 @@ extern vmCvar_t cg_RQ3_team_round_going; extern vmCvar_t cg_RQ3_team1name; extern vmCvar_t cg_RQ3_team2name; //Slicer: matchmode team status cvars -extern vmCvar_t RQ3_team1; -extern vmCvar_t RQ3_team2; +extern vmCvar_t cg_RQ3_team1ready; +extern vmCvar_t cg_RQ3_team2ready; + // // cg_main.c diff --git a/reaction/cgame/cg_main.c b/reaction/cgame/cg_main.c index d47c1942..506316aa 100644 --- a/reaction/cgame/cg_main.c +++ b/reaction/cgame/cg_main.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.53 2002/04/07 12:49:53 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.52 2002/04/03 03:13:49 blaze // NEW BREAKABLE CODE - will break all old breakables(wont appear in maps) // @@ -290,8 +293,8 @@ vmCvar_t cg_RQ3_team1name; vmCvar_t cg_RQ3_team2name; //Slicer: matchmode team status cvars -vmCvar_t MM_team1; -vmCvar_t MM_team2; +vmCvar_t cg_RQ3_team1ready; +vmCvar_t cg_RQ3_team2ready; // NiceAss: Taken out of the missionpack vmCvar_t cg_enableBreath; // JBravo: ditto @@ -453,8 +456,8 @@ static cvarTable_t cvarTable[] = { // bk001129 { &cg_RQ3_team2name, "g_RQ3_team2name", "0", 0}, { &cg_gravity, "g_gravity", "0", 0}, //Slicer: Team Status Cvars for MM - { &MM_team1, "MM_team1", "0", 0}, - { &MM_team2, "MM_team2", "0", 0} + { &cg_RQ3_team1ready, "g_RQ3_team1ready", "0", 0}, + { &cg_RQ3_team2ready, "g_RQ3_team2ready", "0", 0} // { &cg_pmove_fixed, "cg_pmove_fixed", "0", CVAR_USERINFO | CVAR_ARCHIVE } }; diff --git a/reaction/game/g_client.c b/reaction/game/g_client.c index 5fb4cc32..605332ed 100644 --- a/reaction/game/g_client.c +++ b/reaction/game/g_client.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.63 2002/04/07 12:49:10 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.62 2002/04/07 03:22:48 jbravo // Tweaks and crashbug fixes // @@ -1740,10 +1743,10 @@ void ClientDisconnect( int clientNum ) { if(g_RQ3_matchmode.integer) { switch(ent->client->pers.captain ) { case TEAM_RED: - trap_Cvar_Set("RQ3_team1", "0"); + trap_Cvar_Set("g_RQ3_team1ready", "0"); break; case TEAM_BLUE: - trap_Cvar_Set("RQ3_team2", "0"); + trap_Cvar_Set("g_RQ3_team2ready", "0"); break; default: break; diff --git a/reaction/game/g_cmds.c b/reaction/game/g_cmds.c index 2f7fea93..41927e1d 100644 --- a/reaction/game/g_cmds.c +++ b/reaction/game/g_cmds.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.91 2002/04/07 12:49:10 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.90 2002/04/07 03:22:48 jbravo // Tweaks and crashbug fixes // @@ -892,10 +895,10 @@ void SetTeam( gentity_t *ent, char *s ) // client->sess.savedTeam = team; switch(ent->client->pers.captain) { case TEAM_RED: - trap_Cvar_Set("RQ3_team1", "0"); + trap_Cvar_Set("g_RQ3_team1ready", "0"); break; case TEAM_BLUE: - trap_Cvar_Set("RQ3_team2", "0"); + trap_Cvar_Set("g_RQ3_team2ready", "0"); break; default: break; @@ -2945,6 +2948,8 @@ void ClientCommand( int clientNum ) { MM_Ready_f( ent ); else if (Q_stricmp (cmd, "sub") == 0) MM_Sub_f( ent ); + else if (Q_stricmp (cmd, "teamname") == 0) + MM_TeamName_f(ent); // aasimon: referee for MM else if (Q_stricmp (cmd, "reflogin") == 0) Ref_Auth ( ent ); diff --git a/reaction/game/g_local.h b/reaction/game/g_local.h index 1aca2528..47438f2c 100644 --- a/reaction/game/g_local.h +++ b/reaction/game/g_local.h @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.66 2002/04/07 12:49:10 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.65 2002/04/03 09:26:47 jbravo // New FF system. Warns and then finally kickbans teamwounders and // teamkillers @@ -659,6 +662,7 @@ char *G_NewString( const char *string ); // // g_cmds.c // +char *ConcatArgs( int start ); void Cmd_Score_f (gentity_t *ent); void StopFollowing( gentity_t *ent ); void BroadcastTeamChange( gclient_t *client, int oldTeam ); @@ -1081,8 +1085,8 @@ extern vmCvar_t g_RQ3_maxteamkills; // JBravo: Max teamkills extern vmCvar_t g_RQ3_twbanrounds; // JBravo: no. of games team wounders are banned extern vmCvar_t g_RQ3_tkbanrounds; // JBravo: no. of games team killers are banned //Slicer: Team Status Cvars for MM -extern vmCvar_t RQ3_team1; -extern vmCvar_t RQ3_team2; +extern vmCvar_t g_RQ3_team1ready; +extern vmCvar_t g_RQ3_team2ready; //aasimon: Ref System for MM extern vmCvar_t g_RQ3_AllowRef; extern vmCvar_t g_RQ3_RefPass; diff --git a/reaction/game/g_main.c b/reaction/game/g_main.c index 79ddf372..b4c51f60 100644 --- a/reaction/game/g_main.c +++ b/reaction/game/g_main.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.43 2002/04/07 12:49:10 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.42 2002/04/03 09:26:47 jbravo // New FF system. Warns and then finally kickbans teamwounders and // teamkillers @@ -195,8 +198,8 @@ vmCvar_t g_RQ3_maxteamkills; vmCvar_t g_RQ3_twbanrounds; vmCvar_t g_RQ3_tkbanrounds; //Slicer: Team Status Cvars for MM -vmCvar_t RQ3_team1; -vmCvar_t RQ3_team2; +vmCvar_t g_RQ3_team1ready; +vmCvar_t g_RQ3_team2ready; // aasimon: Ref System for MM vmCvar_t g_RQ3_AllowRef; vmCvar_t g_RQ3_RefPass; @@ -327,8 +330,8 @@ static cvarTable_t gameCvarTable[] = { { &g_RQ3_tgren, "g_RQ3_tgren", "0", CVAR_ARCHIVE, 0, qtrue}, { &g_RQ3_limchasecam, "g_RQ3_limchasecam", "0", CVAR_ARCHIVE, 0, qtrue}, { &g_RQ3_sniperup, "g_RQ3_sniperup", "0", CVAR_ARCHIVE, 0, qtrue}, - { &g_RQ3_team1name, "g_RQ3_team1name", "Robbers", CVAR_SYSTEMINFO | CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qtrue, qtrue }, - { &g_RQ3_team2name, "g_RQ3_team2name", "Swat", CVAR_SYSTEMINFO | CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qtrue, qtrue }, + { &g_RQ3_team1name, "g_RQ3_team1name", "Robbers", CVAR_SYSTEMINFO | CVAR_SERVERINFO , 0, qfalse }, + { &g_RQ3_team2name, "g_RQ3_team2name", "Swat", CVAR_SYSTEMINFO | CVAR_SERVERINFO , 0, qfalse }, { &g_RQ3_teamCount1, "g_RQ3_teamCount1", "0", CVAR_SYSTEMINFO, 0, qfalse }, { &g_RQ3_teamCount2, "g_RQ3_teamCount2", "0", CVAR_SYSTEMINFO, 0, qfalse }, { &g_RQ3_numSpectators, "g_RQ3_numSpectators", "0", CVAR_SYSTEMINFO, 0, qfalse }, @@ -337,8 +340,8 @@ static cvarTable_t gameCvarTable[] = { { &g_RQ3_twbanrounds, "g_RQ3_twbanrounds", "2", CVAR_ARCHIVE, 0, qtrue}, { &g_RQ3_tkbanrounds, "g_RQ3_tkbanrounds", "2", CVAR_ARCHIVE, 0, qtrue}, //Slicer: Team Status Cvars for MM - { &RQ3_team1, "RQ3_team1", "0", 0, 0, qfalse}, - { &RQ3_team2, "RQ3_team2", "0", 0, 0, qfalse}, + { &g_RQ3_team1ready, "g_RQ3_team1ready", "0", CVAR_SYSTEMINFO, 0, qfalse}, + { &g_RQ3_team2ready, "g_RQ3_team2ready", "0", CVAR_SYSTEMINFO, 0, qfalse}, // aasimon: Ref system for MM,added infor for referee id (clientnumber) { &g_RQ3_AllowRef, "g_RQ3_AllowRef", "0", CVAR_SERVERINFO, 0, qtrue}, { &g_RQ3_RefPass, "g_RQ3_RefPassword", "", CVAR_USERINFO, 0, qfalse}, @@ -695,8 +698,8 @@ void G_InitGame( int levelTime, int randomSeed, int restart ) { if(g_RQ3_matchmode.integer && g_gametype.integer == GT_TEAMPLAY) { level.matchTime = 0; level.inGame = qfalse; - trap_Cvar_Set("RQ3_team1", "0"); - trap_Cvar_Set("RQ3_team2", "0"); + trap_Cvar_Set("g_RQ3_team1ready", "0"); + trap_Cvar_Set("g_RQ3_team2ready", "0"); } if ( trap_Cvar_VariableIntegerValue( "bot_enable" ) ) { diff --git a/reaction/game/g_matchmode.c b/reaction/game/g_matchmode.c index a98ac1ce..996325fd 100644 --- a/reaction/game/g_matchmode.c +++ b/reaction/game/g_matchmode.c @@ -64,13 +64,13 @@ void MM_Captain_f( gentity_t *ent ) { return; } if(ent->client->pers.captain == TEAM_RED) { - trap_Cvar_Set("RQ3_team1", "0"); + trap_Cvar_Set("g_RQ3_team1ready", "0"); trap_SendServerCommand( -1, va("print \"%s is no longer %s's Captain.\n\"", ent->client->pers.netname,"Red Team"));// Teams will have names in the future.. ent->client->pers.captain = TEAM_FREE; } else if(ent->client->pers.captain == TEAM_BLUE) { - trap_Cvar_Set("RQ3_team2", "0"); + trap_Cvar_Set("g_RQ3_team2ready", "0"); trap_SendServerCommand( -1, va("print \"%s is no longer %s's Captain.\n\"", ent->client->pers.netname,"Blue Team"));// Teams will have names in the future.. ent->client->pers.captain = TEAM_FREE; @@ -94,22 +94,22 @@ void MM_Ready_f(gentity_t *ent) { if(ent->client->pers.captain != TEAM_FREE) { if(ent->client->sess.savedTeam == TEAM_RED) { trap_SendServerCommand( -1, va("cp \"%s is%s Ready.\n\"", - "Red Team",RQ3_team1.integer == 0 ? "": "no longer")); + "Red Team",g_RQ3_team1ready.integer == 0 ? "": "no longer")); - if(RQ3_team1.integer) - trap_Cvar_Set("RQ3_Team1", "0"); + if(g_RQ3_team1ready.integer) + trap_Cvar_Set("g_RQ3_team1ready", "0"); else - trap_Cvar_Set("RQ3_Team1", "1"); + trap_Cvar_Set("g_RQ3_team1ready", "1"); } else { trap_SendServerCommand( -1, va("cp \"%s is%s Ready.\n\"", - "Blue Team",RQ3_team2.integer == 0 ? "": " no longer")); + "Blue Team",g_RQ3_team2ready.integer == 0 ? "": " no longer")); - if(RQ3_team2.integer) - trap_Cvar_Set("RQ3_Team2", "0"); + if(g_RQ3_team2ready.integer) + trap_Cvar_Set("g_RQ3_team2ready", "0"); else - trap_Cvar_Set("RQ3_Team2", "1"); + trap_Cvar_Set("g_RQ3_team2ready", "1"); } } @@ -118,6 +118,66 @@ void MM_Ready_f(gentity_t *ent) { } +void MM_TeamName_f(gentity_t *ent) { + int args; + team_t team; + char *buff; + + team = ent->client->sess.savedTeam; + if(!g_RQ3_matchmode.integer) + return; + if(team == TEAM_SPECTATOR) { + return; + } + + args = trap_Argc(); + + if(args < 2) { + trap_SendServerCommand(ent-g_entities, va("print \"Your Team Name: %s\n\"", + ent->client->sess.savedTeam == TEAM_RED ? g_RQ3_team1name.string : g_RQ3_team2name.string )); + return; + } + else { + if(ent->client->pers.captain == TEAM_FREE) { + trap_SendServerCommand(ent-g_entities, "print \"You need to be a captain for that\n\""); + return; + } + + if(level.team_game_going || level.team_round_going) { + trap_SendServerCommand(ent-g_entities, "print \"You cannot change your team's name while playing or ready.\n\""); + } + + buff = ConcatArgs( 1 ); + + if( strlen(buff) > TEAM_NAME_SIZE ) + buff[TEAM_NAME_SIZE] = 0; + + if(team == TEAM_RED) { + if(g_RQ3_team1ready.integer) { + trap_SendServerCommand(ent-g_entities, "print \"You need to un-ready your team for that..\n\""); + return; + } + trap_Cvar_Set("g_RQ3_team1name",buff); + trap_SendServerCommand(-1,va("print \"New Team 1 Name: %s\n\"",buff)); + + + + } + else { + if(g_RQ3_team2ready.integer) { + trap_SendServerCommand(ent-g_entities, "print \"You need to un-ready your team for that..\n\""); + return; + } + trap_Cvar_Set("g_RQ3_team2name",buff); + trap_SendServerCommand(-1,va("print \"New Team 2 Name: %s\n\"",buff)); + + } + + + } +} + + // // aasimon: Referee Functions Definition, with some aid functions first // diff --git a/reaction/game/g_matchmode.h b/reaction/game/g_matchmode.h index c9a39ca1..08a80138 100644 --- a/reaction/game/g_matchmode.h +++ b/reaction/game/g_matchmode.h @@ -1,8 +1,10 @@ + void MM_RunFrame( void ); void MM_Captain_f(gentity_t *ent ); void MM_Sub_f( gentity_t *ent); void MM_Ready_f(gentity_t *ent); void MM_ClearScores( void ); +void MM_TeamName_f(gentity_t *ent); // aasimon: Declarations for Ref system qboolean Ref_Exists( void ); diff --git a/reaction/game/g_teamplay.c b/reaction/game/g_teamplay.c index 310b0a4c..62ef0df4 100644 --- a/reaction/game/g_teamplay.c +++ b/reaction/game/g_teamplay.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.61 2002/04/07 12:49:10 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.60 2002/04/07 03:22:48 jbravo // Tweaks and crashbug fixes // @@ -253,7 +256,7 @@ void CheckTeamRules() } else { //Slicer: Adding Matchmode if(g_RQ3_matchmode.integer) { - if(RQ3_team1.integer && RQ3_team2.integer) + if(g_RQ3_team1ready.integer && g_RQ3_team2ready.integer) trap_SendServerCommand( -1, "cp \"Not enough players to play!\n\""); else trap_SendServerCommand( -1, "cp \"Both Teams Must Be Ready!\n\""); @@ -289,8 +292,8 @@ void CheckTeamRules() level.inGame = level.team_round_going = level.team_round_countdown = level.team_game_going = level.matchTime = 0; trap_SendServerCommand( -1, "roundend"); - trap_Cvar_Set("RQ3_Team1", "0"); - trap_Cvar_Set("RQ3_Team2", "0"); + trap_Cvar_Set("g_RQ3_team1ready", "0"); + trap_Cvar_Set("g_RQ3_team2ready", "0"); MakeAllLivePlayersObservers (); trap_SendServerCommand( -1, "cp \"Match is OVER !!!.\n\""); return; @@ -380,7 +383,7 @@ qboolean BothTeamsHavePlayers() int onteam1 = 0, onteam2 = 0; //Slicer: Matchmode - if(g_RQ3_matchmode.integer && (!RQ3_team1.integer || !RQ3_team2.integer)) + if(g_RQ3_matchmode.integer && (!g_RQ3_team1ready.integer || !g_RQ3_team2ready.integer)) return 0; @@ -534,8 +537,8 @@ int WonGame(int winner) level.inGame = level.team_round_going = level.team_round_countdown = level.team_game_going = level.matchTime = 0; trap_SendServerCommand( -1, "roundend"); - trap_Cvar_Set("RQ3_Team1", "0"); - trap_Cvar_Set("RQ3_Team2", "0"); + trap_Cvar_Set("g_RQ3_team1ready", "0"); + trap_Cvar_Set("g_RQ3_team2ready", "0"); MakeAllLivePlayersObservers (); trap_SendServerCommand( -1, "cp \"Match is OVER !!!.\n\""); return 1; @@ -560,8 +563,8 @@ int WonGame(int winner) level.inGame = level.team_round_going = level.team_round_countdown = level.team_game_going = level.matchTime = 0; trap_SendServerCommand( -1, "roundend"); - trap_Cvar_Set("RQ3_Team1", "0"); - trap_Cvar_Set("RQ3_Team2", "0"); + trap_Cvar_Set("g_RQ3_team1ready", "0"); + trap_Cvar_Set("g_RQ3_team2ready", "0"); MakeAllLivePlayersObservers (); trap_SendServerCommand( -1, "cp \"Match is OVER !!!.\n\""); return 1; diff --git a/reaction/game/g_teamplay.h b/reaction/game/g_teamplay.h index b60d8b2b..c9e0552f 100644 --- a/reaction/game/g_teamplay.h +++ b/reaction/game/g_teamplay.h @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.11 2002/04/07 12:49:10 slicer +// Added 'teamname' command for MM, and tweaked the cvar system. +// // Revision 1.10 2002/04/03 09:26:47 jbravo // New FF system. Warns and then finally kickbans teamwounders and // teamkillers @@ -44,6 +47,8 @@ #define WINNER_TEAM1 1 #define WINNER_TEAM2 2 #define WINNER_TIE 3 +//Slicer TeamName Size. +#define TEAM_NAME_SIZE 30 void CheckTeamRules(); void StartLCA();