// Pause/unpause a match. void G_refPause_cmd(gentity_t *ent, qboolean fPause) { char *status[2] = { "^5UN", "^1" }; char *referee = (ent) ? "Referee" : "ref"; if((PAUSE_UNPAUSING >= level.match_pause && !fPause) || (PAUSE_NONE != level.match_pause && fPause)) { // CHRUKER: b047 - Remove unneeded \" and linebreak G_refPrintf(ent, "The match is already %sPAUSED!", status[fPause]); return; } if(ent && !G_cmdDebounce(ent, ((fPause)?"pause":"unpause"))) return; // Trigger the auto-handling of pauses if(fPause) { level.match_pause = 100 + ((ent) ? (1 + ent - g_entities) : 0); G_globalSound("sound/misc/referee.wav"); G_spawnPrintf(DP_PAUSEINFO, level.time + 15000, NULL); AP(va("print \"^3%s ^1PAUSED^3 the match^3!\n", referee)); // CHRUKER: b047 - Remove unneeded \" and linebreak CP(va("cp \"^3Match is ^1PAUSED^3! (^7%s^3)", referee)); level.server_settings |= CV_SVS_PAUSE; trap_SetConfigstring(CS_SERVERTOGGLES, va("%d", level.server_settings)); } else { AP(va("print \"\n^3%s ^5UNPAUSES^3 the match ... resuming in 10 seconds!\n\n\"", referee)); level.match_pause = PAUSE_UNPAUSING; G_globalSound("sound/osp/prepare.wav"); G_spawnPrintf(DP_UNPAUSING, level.time + 10, NULL); return; } }
// ************** PAUSE / UNPAUSE // // Pause/unpause a match. void G_pause_cmd(gentity_t *ent, unsigned int dwCommand, qboolean fPause) { char *status[2] = { "^5UN", "^1" }; if(team_nocontrols.integer) { G_noTeamControls(ent); return; } if((PAUSE_UNPAUSING >= level.match_pause && !fPause) || (PAUSE_NONE != level.match_pause && fPause)) { CP(va("print \"The match is already %sPAUSED^7!\n\"", status[fPause])); return; } // Alias for referees if(ent->client->sess.referee) G_refPause_cmd(ent, fPause); else { int tteam = G_teamID(ent); if(!G_cmdDebounce(ent, aCommandInfo[dwCommand].pszCommandName)) return; // Trigger the auto-handling of pauses if(fPause) { if(0 == teamInfo[tteam].timeouts) { CP("cpm \"^3Your team has no more timeouts remaining!\n\""); return; } else { teamInfo[tteam].timeouts--; level.match_pause = tteam + 128; G_globalSound("sound/misc/referee.wav"); G_spawnPrintf(DP_PAUSEINFO, level.time + 15000, NULL); AP(va("print \"^3Match is ^1PAUSED^3!\n^7[%s^7: - %d Timeouts Remaining]\n\"", aTeams[tteam], teamInfo[tteam].timeouts)); // sta acqu-sdk (issue 2): CHRUKER: b040 - Was only sending this to the client sending the command AP(va("cp \"^3Match is ^1PAUSED^3! (%s^3)\n\"", aTeams[tteam])); //CP(va("cp \"^3Match is ^1PAUSED^3! (%s^3)\n\"", aTeams[tteam])); // end acqu-sdk (issue 2): CHRUKER: b040 level.server_settings |= CV_SVS_PAUSE; trap_SetConfigstring(CS_SERVERTOGGLES, va("%d", level.server_settings)); } } else if(tteam + 128 != level.match_pause) { CP("cpm \"^3Your team didn't call the timeout!\n\""); return; } else { // sta acqu-sdk (issue 2): CHRUKER: b068 - Had extra linebreaks, before and after. AP("print \"^3Match is ^5UNPAUSED^3 ... resuming in 10 seconds!\n\""); //AP("print \"\n^3Match is ^5UNPAUSED^3 ... resuming in 10 seconds!\n\n\""); // end acqu-sdk (issue 2): CHRUKER: b068 level.match_pause = PAUSE_UNPAUSING; G_globalSound("sound/osp/prepare.wav"); G_spawnPrintf(DP_UNPAUSING, level.time + 10, NULL); } } }
AbstractCommand::PostAction CryBaby::doExecute( Context& txt ) { if (txt._args.size() != 2) return PA_USAGE; Client* target; if (lookupPLAYER( txt._args[1], txt, target )) return PA_ERROR; G_globalSound( "sound/jaymod/crybaby.wav" ); const User& user = *connectedUsers[target->slot]; Buffer buf; buf << _name << ": " << xcvalue << xnone( user.namex) << " is crying like a little baby!\n"; printCpm( txt._client, buf, true ); return PA_NONE; }
void G_delayPrint(gentity_t *dpent) { int think_next = 0; qboolean fFree = qtrue; switch (dpent->spawnflags) { case DP_PAUSEINFO: { if (level.match_pause > PAUSE_UNPAUSING) { int cSeconds = match_timeoutlength.integer * 1000 - (level.time - dpent->timestamp); if (cSeconds > 1000) { AP(va("cp \"^3Match resuming in ^1%d^3 seconds!\n\"", cSeconds / 1000)); think_next = level.time + 15000; fFree = qfalse; } else { level.match_pause = PAUSE_UNPAUSING; AP("print \"^3Match resuming in 10 seconds!\n\""); G_globalSound("sound/osp/prepare.wav"); G_spawnPrintf(DP_UNPAUSING, level.time + 10, NULL); } } break; } case DP_UNPAUSING: { if (level.match_pause == PAUSE_UNPAUSING) { int cSeconds = 11 * 1000 - (level.time - dpent->timestamp); if (cSeconds > 1000) { AP(va("cp \"^3Match resuming in ^1%d^3 seconds!\n\"", cSeconds / 1000)); think_next = level.time + 1000; fFree = qfalse; } else { level.match_pause = PAUSE_NONE; G_globalSound("sound/osp/fight.wav"); G_printFull("^1FIGHT!", NULL); trap_SetConfigstring(CS_LEVEL_START_TIME, va("%i", level.startTime + level.timeDelta)); level.server_settings &= ~CV_SVS_PAUSE; trap_SetConfigstring(CS_SERVERTOGGLES, va("%d", level.server_settings)); } } break; } #ifdef FEATURE_MULTIVIEW case DP_MVSPAWN: { int i; gentity_t *ent; for (i = 0; i < level.numConnectedClients; i++) { ent = g_entities + level.sortedClients[i]; if (ent->client->pers.mvReferenceList == 0) { continue; } if (ent->client->sess.sessionTeam != TEAM_SPECTATOR) { continue; } G_smvRegenerateClients(ent, ent->client->pers.mvReferenceList); } break; } #endif default: break; } dpent->nextthink = think_next; if (fFree) { dpent->think = 0; G_FreeEntity(dpent); } }