// ************** READY / NOTREADY // // Sets a player's "ready" status. void G_ready_cmd(gentity_t * ent, unsigned int dwCommand, qboolean state) { char *status[2] = { " NOT", "" }; if(g_gamestate.integer == GS_PLAYING || g_gamestate.integer == GS_INTERMISSION) { CP("cpm \"Match is already in progress!\n\""); return; } if(!state && g_gamestate.integer == GS_WARMUP_COUNTDOWN) { CP("cpm \"Countdown started.... ^3notready^7 ignored!\n\""); return; } if(ent->client->sess.sessionTeam == TEAM_SPECTATOR) { CP("cpm \"You must be in the game to be ^3ready^7!\n\""); return; } // Can't ready until enough players. if(level.numPlayingClients < match_minplayers.integer) { CP("cpm \"Not enough players to start match!\n\""); return; } if(!G_cmdDebounce(ent, aCommandInfo[dwCommand].pszCommandName)) { return; } // Move them to correct ready state if(ent->client->pers.ready == state) { CP(va("print \"You are already%s ready!\n\"", status[state])); } else { ent->client->pers.ready = state; if(!level.intermissiontime) { if(state) { G_MakeReady(ent); } else { G_MakeUnready(ent); } AP(va("print \"%s^7 is%s ready!\n\"", ent->client->pers.netname, status[state])); AP(va("cp \"\n%s\n^3is%s ready!\n\"", ent->client->pers.netname, status[state])); } } G_readyMatchState(); }
// ************** TEAMREADY // // Sets a player's team "ready" status. void G_teamready_cmd(gentity_t *ent, unsigned int dwCommand, qboolean state) { int i, tteam = G_teamID(ent); gclient_t *cl; // forty - in mod flood protection if (ClientIsFlooding(ent, qfalse)) { CP("print \"^1Spam Protection: ^7dropping teamready\n\""); return; } if (g_gamestate.integer == GS_PLAYING || g_gamestate.integer == GS_INTERMISSION) { CP("cpm \"Match is already in progress!\n\""); return; } if (ent->client->sess.sessionTeam == TEAM_SPECTATOR) { CP("cpm \"Spectators can't ready a team!\n\""); return; } // Can't ready until enough players. if (level.numPlayingClients < match_minplayers.integer) { CP("cpm \"Not enough players to start match!\n\""); return; } if (!G_cmdDebounce(ent, aCommandInfo[dwCommand].pszCommandName)) { return; } // Move them to correct ready state for (i = 0; i < level.numPlayingClients; i++) { cl = level.clients + level.sortedClients[i]; if (cl->sess.sessionTeam == tteam) { cl->pers.ready = qtrue; G_MakeReady(ent); } } G_printFull(va("%s readied the %s team!", ent->client->pers.netname, aTeams[tteam]), NULL); G_readyMatchState(); }