Captain and subs get saved on map_restarts ( moved to "sess" )

This commit is contained in:
Daniel Simoes 2002-05-05 15:51:16 +00:00
parent 746b33120f
commit c3f97d9235
7 changed files with 61 additions and 31 deletions

View file

@ -5,6 +5,9 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// //
// $Log$ // $Log$
// Revision 1.72 2002/05/05 15:51:16 slicer
// Captain and subs get saved on map_restarts ( moved to "sess" )
//
// Revision 1.71 2002/05/03 18:09:20 makro // Revision 1.71 2002/05/03 18:09:20 makro
// Bot stuff. Jump kicks // Bot stuff. Jump kicks
// //
@ -1331,10 +1334,10 @@ void ClientBegin(int clientNum) {
//Slicer : Reseting matchmode vars //Slicer : Reseting matchmode vars
//Note: Each time a player changes team, this will also be called.. //Note: Each time a player changes team, this will also be called..
if(g_RQ3_matchmode.integer && g_gametype.integer == GT_TEAMPLAY) { //if(g_RQ3_matchmode.integer && g_gametype.integer == GT_TEAMPLAY) {
client->pers.captain = TEAM_FREE; // client->sess.captain = TEAM_FREE;
client->pers.sub = TEAM_FREE; // client->sess.sub = TEAM_FREE;
} //}
//Slicer: Saving persistant and ping //Slicer: Saving persistant and ping
if (g_gametype.integer == GT_TEAMPLAY) { if (g_gametype.integer == GT_TEAMPLAY) {
@ -1790,7 +1793,7 @@ void ClientDisconnect( int clientNum ) {
//Slicer: matchmode //Slicer: matchmode
if(g_RQ3_matchmode.integer) { if(g_RQ3_matchmode.integer) {
switch(ent->client->pers.captain ) { switch(ent->client->sess.captain ) {
case TEAM_RED: case TEAM_RED:
trap_Cvar_Set("g_RQ3_team1ready", "0"); trap_Cvar_Set("g_RQ3_team1ready", "0");
break; break;

View file

@ -5,6 +5,9 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// //
// $Log$ // $Log$
// Revision 1.103 2002/05/05 15:51:16 slicer
// Captain and subs get saved on map_restarts ( moved to "sess" )
//
// Revision 1.102 2002/05/04 16:19:02 jbravo // Revision 1.102 2002/05/04 16:19:02 jbravo
// Fixing the stuff cmd to work on dedicated servers. // Fixing the stuff cmd to work on dedicated servers.
// //
@ -902,18 +905,18 @@ void SetTeam( gentity_t *ent, char *s )
//Slicer : Matchmode - If a captain changes team , that team is no longer ready //Slicer : Matchmode - If a captain changes team , that team is no longer ready
if(g_RQ3_matchmode.integer) { if(g_RQ3_matchmode.integer) {
// client->sess.savedTeam = team; // client->sess.savedTeam = team;
switch(ent->client->pers.captain) { switch(ent->client->sess.captain) {
case TEAM_RED: case TEAM_RED:
trap_Cvar_Set("g_RQ3_team1ready", "0"); trap_Cvar_Set("g_RQ3_team1ready", "0");
ent->client->pers.captain = TEAM_FREE;
break; break;
case TEAM_BLUE: case TEAM_BLUE:
trap_Cvar_Set("g_RQ3_team2ready", "0"); trap_Cvar_Set("g_RQ3_team2ready", "0");
ent->client->pers.captain = TEAM_FREE;
break; break;
default: default:
break; break;
} }
ent->client->sess.captain = TEAM_FREE;
ent->client->sess.sub = TEAM_FREE;
} }
// they go to the end of the line for tournements // they go to the end of the line for tournements

View file

@ -5,6 +5,9 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// //
// $Log$ // $Log$
// Revision 1.76 2002/05/05 15:51:16 slicer
// Captain and subs get saved on map_restarts ( moved to "sess" )
//
// Revision 1.75 2002/05/05 04:23:00 jbravo // Revision 1.75 2002/05/05 04:23:00 jbravo
// Some MM fixes and cleanups // Some MM fixes and cleanups
// //
@ -378,6 +381,9 @@ typedef struct {
// time and reading them back at connection time. Anything added here // time and reading them back at connection time. Anything added here
// MUST be dealt with in G_InitSessionData() / G_ReadSessionData() / G_WriteSessionData() // MUST be dealt with in G_InitSessionData() / G_ReadSessionData() / G_WriteSessionData()
typedef struct { typedef struct {
//Slicer Matchmode
team_t captain;
team_t sub;
team_t sessionTeam; team_t sessionTeam;
team_t savedTeam; // JBravo: Used to hold the real team status of a player. team_t savedTeam; // JBravo: Used to hold the real team status of a player.
int spectatorTime; // for determining next-in-line to play int spectatorTime; // for determining next-in-line to play
@ -396,9 +402,6 @@ typedef struct {
// client data that stays across multiple respawns, but is cleared // client data that stays across multiple respawns, but is cleared
// on each level change or team change at ClientBegin() // on each level change or team change at ClientBegin()
typedef struct { typedef struct {
//Slicer: Matchmode
team_t captain;
team_t sub;
clientConnected_t connected; clientConnected_t connected;
// aasimon: No Need for this here, using a cvar to record the clientnumber of referee, so that map_restarts dont change // aasimon: No Need for this here, using a cvar to record the clientnumber of referee, so that map_restarts dont change
// the referee // the referee

View file

@ -5,6 +5,9 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// //
// $Log$ // $Log$
// Revision 1.53 2002/05/05 15:51:16 slicer
// Captain and subs get saved on map_restarts ( moved to "sess" )
//
// Revision 1.52 2002/05/05 04:23:00 jbravo // Revision 1.52 2002/05/05 04:23:00 jbravo
// Some MM fixes and cleanups // Some MM fixes and cleanups
// //
@ -564,8 +567,6 @@ void G_RegisterCvars( void ) {
if (remapped) { if (remapped) {
G_RemapTeamShaders(); G_RemapTeamShaders();
} }
G_Printf("Testing\n");
// check some things // check some things
if ( g_gametype.integer < 0 || g_gametype.integer >= GT_MAX_GAME_TYPE ) { if ( g_gametype.integer < 0 || g_gametype.integer >= GT_MAX_GAME_TYPE ) {
G_Printf( "g_gametype %i is out of range, defaulting to 0\n", g_gametype.integer ); G_Printf( "g_gametype %i is out of range, defaulting to 0\n", g_gametype.integer );

View file

@ -9,7 +9,7 @@ qboolean checkCaptain (team_t team) {
ent = &g_entities[i]; ent = &g_entities[i];
if (!ent->inuse) if (!ent->inuse)
continue; continue;
if(ent->client->sess.savedTeam == team && ent->client->pers.captain == team) if(ent->client->sess.savedTeam == team && ent->client->sess.captain == team)
return qtrue; return qtrue;
} }
return qfalse; return qfalse;
@ -36,19 +36,19 @@ void MM_Sub_f (gentity_t *ent) {
trap_SendServerCommand (ent-g_entities, "print \"You need to be on a team for that\n\""); trap_SendServerCommand (ent-g_entities, "print \"You need to be on a team for that\n\"");
return; return;
} }
if (ent->client->pers.sub == TEAM_FREE) { if (ent->client->sess.sub == TEAM_FREE) {
// if (ent->client->ps.pm_type == PM_NORMAL) { // if (ent->client->ps.pm_type == PM_NORMAL) {
if (ent->client->sess.sessionTeam != TEAM_SPECTATOR) { if (ent->client->sess.sessionTeam != TEAM_SPECTATOR) {
ent->flags &= ~FL_GODMODE; ent->flags &= ~FL_GODMODE;
ent->client->ps.stats[STAT_HEALTH] = ent->health = 0; ent->client->ps.stats[STAT_HEALTH] = ent->health = 0;
player_die (ent, ent, ent, 100000, MOD_SUICIDE); player_die (ent, ent, ent, 100000, MOD_SUICIDE);
} }
ent->client->pers.sub = ent->client->sess.savedTeam; ent->client->sess.sub = ent->client->sess.savedTeam;
trap_SendServerCommand( -1, va("print \"%s is now a Substitute for %s.\n\"", trap_SendServerCommand( -1, va("print \"%s is now a Substitute for %s.\n\"",
ent->client->pers.netname, ent->client->pers.netname,
ent->client->sess.savedTeam==TEAM_BLUE ? g_RQ3_team2name.string: g_RQ3_team1name.string)); ent->client->sess.savedTeam==TEAM_BLUE ? g_RQ3_team2name.string: g_RQ3_team1name.string));
} else { } else {
ent->client->pers.sub = TEAM_FREE; ent->client->sess.sub = TEAM_FREE;
trap_SendServerCommand( -1, va("print \"%s is no longer a Substitute for %s.\n\"", trap_SendServerCommand( -1, va("print \"%s is no longer a Substitute for %s.\n\"",
ent->client->pers.netname, ent->client->pers.netname,
ent->client->sess.savedTeam==TEAM_BLUE ? g_RQ3_team2name.string: g_RQ3_team1name.string)); ent->client->sess.savedTeam==TEAM_BLUE ? g_RQ3_team2name.string: g_RQ3_team1name.string));
@ -62,19 +62,19 @@ void MM_Captain_f (gentity_t *ent) {
trap_SendServerCommand (ent-g_entities, "print \"You need to be on a team for that\n\""); trap_SendServerCommand (ent-g_entities, "print \"You need to be on a team for that\n\"");
return; return;
} }
if (ent->client->pers.captain == TEAM_RED) { if (ent->client->sess.captain == TEAM_RED) {
trap_Cvar_Set("g_RQ3_team1ready", "0"); trap_Cvar_Set("g_RQ3_team1ready", "0");
trap_SendServerCommand( -1, va("print \"%s is no longer %s's Captain.\n\"", trap_SendServerCommand( -1, va("print \"%s is no longer %s's Captain.\n\"",
ent->client->pers.netname, g_RQ3_team1name.string)); ent->client->pers.netname, g_RQ3_team1name.string));
ent->client->pers.captain = TEAM_FREE; ent->client->sess.captain = TEAM_FREE;
} else if (ent->client->pers.captain == TEAM_BLUE) { } else if (ent->client->sess.captain == TEAM_BLUE) {
trap_Cvar_Set("g_RQ3_team2ready", "0"); trap_Cvar_Set("g_RQ3_team2ready", "0");
trap_SendServerCommand( -1, va("print \"%s is no longer %s's Captain.\n\"", trap_SendServerCommand( -1, va("print \"%s is no longer %s's Captain.\n\"",
ent->client->pers.netname, g_RQ3_team2name.string)); ent->client->pers.netname, g_RQ3_team2name.string));
ent->client->pers.captain = TEAM_FREE; ent->client->sess.captain = TEAM_FREE;
} else { } else {
if (!checkCaptain(ent->client->sess.savedTeam)) { if (!checkCaptain(ent->client->sess.savedTeam)) {
ent->client->pers.captain = ent->client->sess.savedTeam; ent->client->sess.captain = ent->client->sess.savedTeam;
trap_SendServerCommand( -1, va("print \"%s is now %s's Captain.\n\"", trap_SendServerCommand( -1, va("print \"%s is now %s's Captain.\n\"",
ent->client->pers.netname, ent->client->pers.netname,
ent->client->sess.savedTeam==TEAM_BLUE ? g_RQ3_team2name.string: g_RQ3_team1name.string)); ent->client->sess.savedTeam==TEAM_BLUE ? g_RQ3_team2name.string: g_RQ3_team1name.string));
@ -87,7 +87,7 @@ void MM_Ready_f (gentity_t *ent) {
if (!g_RQ3_matchmode.integer) if (!g_RQ3_matchmode.integer)
return; return;
if (ent->client->pers.captain != TEAM_FREE) { if (ent->client->sess.captain != TEAM_FREE) {
if (ent->client->sess.savedTeam == TEAM_RED) { if (ent->client->sess.savedTeam == TEAM_RED) {
trap_SendServerCommand( -1, va("cp \"%s is%s Ready.\n\"", trap_SendServerCommand( -1, va("cp \"%s is%s Ready.\n\"",
g_RQ3_team1name.string, g_RQ3_team1ready.integer == 0 ? "": " no longer")); g_RQ3_team1name.string, g_RQ3_team1ready.integer == 0 ? "": " no longer"));
@ -128,7 +128,7 @@ void MM_TeamModel_f (gentity_t *ent) {
ent->client->sess.savedTeam == TEAM_RED ? g_RQ3_team1model.string : g_RQ3_team2model.string)); ent->client->sess.savedTeam == TEAM_RED ? g_RQ3_team1model.string : g_RQ3_team2model.string));
return; return;
} else { } else {
if (ent->client->pers.captain == TEAM_FREE) { if (ent->client->sess.captain == TEAM_FREE) {
trap_SendServerCommand(ent-g_entities, "print \"You need to be a captain for that\n\""); trap_SendServerCommand(ent-g_entities, "print \"You need to be a captain for that\n\"");
return; return;
} }
@ -176,7 +176,7 @@ void MM_TeamName_f (gentity_t *ent) {
ent->client->sess.savedTeam == TEAM_RED ? g_RQ3_team1name.string : g_RQ3_team2name.string)); ent->client->sess.savedTeam == TEAM_RED ? g_RQ3_team1name.string : g_RQ3_team2name.string));
return; return;
} else { } else {
if (ent->client->pers.captain == TEAM_FREE) { if (ent->client->sess.captain == TEAM_FREE) {
trap_SendServerCommand(ent-g_entities, "print \"You need to be a captain for that\n\""); trap_SendServerCommand(ent-g_entities, "print \"You need to be a captain for that\n\"");
return; return;
} }

View file

@ -5,6 +5,9 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// //
// $Log$ // $Log$
// Revision 1.14 2002/05/05 15:51:16 slicer
// Captain and subs get saved on map_restarts ( moved to "sess" )
//
// Revision 1.13 2002/03/30 21:51:42 jbravo // Revision 1.13 2002/03/30 21:51:42 jbravo
// Removed all those ifdefs for zcam. // Removed all those ifdefs for zcam.
// //
@ -71,7 +74,7 @@ void G_WriteClientSessionData( gclient_t *client ) {
//Reset teams on map changes / map_restarts, except on matchmode //Reset teams on map changes / map_restarts, except on matchmode
client->sess.savedTeam = TEAM_SPECTATOR; client->sess.savedTeam = TEAM_SPECTATOR;
} }
s = va("%i %i %i %i %i %i %i %i", s = va("%i %i %i %i %i %i %i %i %i %i",
client->sess.sessionTeam, client->sess.sessionTeam,
client->sess.spectatorTime, client->sess.spectatorTime,
client->sess.spectatorState, client->sess.spectatorState,
@ -80,7 +83,10 @@ void G_WriteClientSessionData( gclient_t *client ) {
client->sess.losses, client->sess.losses,
client->sess.teamLeader, client->sess.teamLeader,
//Adding saved Team //Adding saved Team
client->sess.savedTeam client->sess.savedTeam,
client->sess.captain,
client->sess.sub
//Captain and sub
); );
@ -108,11 +114,13 @@ void G_ReadSessionData( gclient_t *client ) {
int sessionTeam; int sessionTeam;
//Slicer //Slicer
int savedTeam; int savedTeam;
int captain;
int sub;
var = va( "session%i", client - level.clients ); var = va( "session%i", client - level.clients );
trap_Cvar_VariableStringBuffer( var, s, sizeof(s) ); trap_Cvar_VariableStringBuffer( var, s, sizeof(s) );
//Slicer: Reading savedTeam also. //Slicer: Reading savedTeam also.
sscanf( s, "%i %i %i %i %i %i %i %i", sscanf( s, "%i %i %i %i %i %i %i %i %i %i",
&sessionTeam, // bk010221 - format &sessionTeam, // bk010221 - format
&client->sess.spectatorTime, &client->sess.spectatorTime,
&spectatorState, // bk010221 - format &spectatorState, // bk010221 - format
@ -120,7 +128,9 @@ void G_ReadSessionData( gclient_t *client ) {
&client->sess.wins, &client->sess.wins,
&client->sess.losses, &client->sess.losses,
&teamLeader, // bk010221 - format &teamLeader, // bk010221 - format
&savedTeam &savedTeam,
&captain,
&sub
); );
// bk001205 - format issues // bk001205 - format issues
@ -129,6 +139,8 @@ void G_ReadSessionData( gclient_t *client ) {
client->sess.teamLeader = (qboolean)teamLeader; client->sess.teamLeader = (qboolean)teamLeader;
client->sess.savedTeam = (team_t)savedTeam; client->sess.savedTeam = (team_t)savedTeam;
client->sess.captain = (team_t)captain;
client->sess.sub = (team_t)sub;
camera_state_load (client); camera_state_load (client);
} }
@ -151,6 +163,11 @@ void G_InitSessionData( gclient_t *client, char *userinfo ) {
sess->savedTeam = TEAM_SPECTATOR; sess->savedTeam = TEAM_SPECTATOR;
//Slicer: init Matchmode stuff
sess->captain = TEAM_FREE;
sess->sub = TEAM_FREE;
// JBravo: adding PERS_SAVEDTEAM // JBravo: adding PERS_SAVEDTEAM
client->ps.persistant[PERS_SAVEDTEAM] = TEAM_SPECTATOR; client->ps.persistant[PERS_SAVEDTEAM] = TEAM_SPECTATOR;

View file

@ -5,6 +5,9 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// //
// $Log$ // $Log$
// Revision 1.79 2002/05/05 15:51:16 slicer
// Captain and subs get saved on map_restarts ( moved to "sess" )
//
// Revision 1.78 2002/05/05 04:23:00 jbravo // Revision 1.78 2002/05/05 04:23:00 jbravo
// Some MM fixes and cleanups // Some MM fixes and cleanups
// //
@ -671,7 +674,7 @@ team_t RQ3TeamCount( int ignoreClientNum, int team )
continue; continue;
} }
//Slicer: Matchmode - Subs don't count //Slicer: Matchmode - Subs don't count
if (g_RQ3_matchmode.integer && level.clients[i].pers.sub != TEAM_FREE) if (g_RQ3_matchmode.integer && level.clients[i].sess.sub != TEAM_FREE)
continue; continue;
if (level.clients[i].sess.savedTeam == team) { if (level.clients[i].sess.savedTeam == team) {
count++; count++;
@ -731,7 +734,7 @@ void SpawnPlayers()
continue; continue;
//Slicer: Matchmode - Subs don't spawn //Slicer: Matchmode - Subs don't spawn
if (g_RQ3_matchmode.integer && player->client->pers.sub != TEAM_FREE) if (g_RQ3_matchmode.integer && player->client->sess.sub != TEAM_FREE)
continue; continue;
// JBravo: lets not respawn spectators in free floating mode // JBravo: lets not respawn spectators in free floating mode
if (player->client->sess.savedTeam == TEAM_SPECTATOR && if (player->client->sess.savedTeam == TEAM_SPECTATOR &&