// *** Campaign - simpleton: we dont verify map is allowed/exists *** int G_Campaign_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { // Vote request (vote is being initiated) if(arg) { char serverinfo[MAX_INFO_STRING]; trap_GetServerinfo(serverinfo, sizeof(serverinfo)); if(!vote_allow_map.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); if( g_gametype.integer == GT_WOLF_CAMPAIGN ) { G_voteCurrentSetting(ent, arg, g_campaigns[level.currentCampaign].shortname ); } return(G_INVALID); } else if(G_voteDescription(ent, fRefereeCmd, dwVoteIndex)) { if( g_gametype.integer == GT_WOLF_CAMPAIGN ) { G_voteCurrentSetting(ent, arg, g_campaigns[level.currentCampaign].shortname ); } return(G_INVALID); } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); // Vote action (vote has passed) } else { char s[MAX_STRING_CHARS]; trap_Cvar_VariableStringBuffer("nextcampaign", s, sizeof(s)); trap_SendConsoleCommand(EXEC_APPEND, va("campaign %s%s\n", level.voteInfo.vote_value, ((*s) ? va("; set nextcampaign \"%s\"", s) : ""))); } return(G_OK); }
// *** Timelimit *** int G_Timelimit_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { // Vote request (vote is being initiated) if(arg) { if(!vote_allow_timelimit.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); G_voteCurrentSetting(ent, arg, g_timelimit.string); return(G_INVALID); } else if(G_voteDescription(ent, fRefereeCmd, dwVoteIndex)) { G_voteCurrentSetting(ent, arg, g_timelimit.string); return(G_INVALID); } else if(atoi(arg2) < 0) { G_refPrintf(ent, "Sorry, can't specify a timelimit < 0!"); return(G_INVALID); } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); // Vote action (vote has passed) } else { // Timelimit change G_voteSetVoteString("Timelimit"); } return(G_OK); }
// *** Map - simpleton: we dont verify map is allowed/exists *** int G_Map_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { // Vote request (vote is being initiated) if (arg) { char serverinfo[MAX_INFO_STRING]; trap_GetServerinfo(serverinfo, sizeof (serverinfo)); if (!vote_allow_map.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); G_voteCurrentSetting(ent, arg, Info_ValueForKey(serverinfo, "mapname")); return G_INVALID; } else if (G_voteDescription(ent, fRefereeCmd, dwVoteIndex)) { G_voteCurrentSetting(ent, arg, Info_ValueForKey(serverinfo, "mapname")); return G_INVALID; } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); // Vote action (vote has passed) } else { // Nico, delay the map change G_delay_map_change(level.voteInfo.vote_value, 0); } return G_OK; }
// Vote toggling int G_voteProcessOnOff(gentity_t *ent, char *arg, char *arg2, qboolean fRefereeCmd, int curr_setting, int vote_allow, int vote_type) { if (!vote_allow && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, aVoteInfo[vote_type].pszVoteName); G_voteCurrentSetting(ent, aVoteInfo[vote_type].pszVoteName, ((curr_setting) ? ENABLED : DISABLED)); return(G_INVALID); } if (G_voteDescription(ent, fRefereeCmd, vote_type)) { G_voteCurrentSetting(ent, aVoteInfo[vote_type].pszVoteName, ((curr_setting) ? ENABLED : DISABLED)); return(G_INVALID); } if ((atoi(arg2) && curr_setting) || (!atoi(arg2) && !curr_setting)) { G_refPrintf(ent, "^3%s^5 is already %s!", aVoteInfo[vote_type].pszVoteName, ((curr_setting) ? ENABLED : DISABLED)); return(G_INVALID); } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); Com_sprintf(arg2, VOTE_MAXSTRING, "%s", (atoi(arg2)) ? ACTIVATED : DEACTIVATED); return(G_OK); }
// *** GameType *** int G_Gametype_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { // Vote request (vote is being initiated) if (arg) { int i = atoi(arg2); if (!vote_allow_gametype.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); G_GametypeList(ent); G_voteCurrentSetting(ent, arg, va("%d (%s)", g_gametype.integer, gameNames[g_gametype.integer])); return G_INVALID; } else if (G_voteDescription(ent, fRefereeCmd, dwVoteIndex)) { G_GametypeList(ent); G_voteCurrentSetting(ent, arg, va("%d (%s)", g_gametype.integer, gameNames[g_gametype.integer])); return G_INVALID; } if (i < GT_WOLF || i >= GT_MAX_GAME_TYPE || i == GT_WOLF_CAMPAIGN) { G_refPrintf(ent, "\n^3Invalid gametype: ^7%d", i); G_GametypeList(ent); return G_INVALID; } if (i == g_gametype.integer) { G_refPrintf(ent, "\n^3Gametype^5 is already set to %s!", gameNames[i]); return G_INVALID; } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); Com_sprintf(arg2, VOTE_MAXSTRING, "%s", gameNames[i]); // Vote action (vote has passed) } else { char s[MAX_STRING_CHARS]; // Set gametype G_voteSetValue("Gametype", "g_gametype"); trap_Cvar_VariableStringBuffer("mapname", s, sizeof(s)); trap_SendConsoleCommand(EXEC_APPEND, va("map %s\n", s)); } return G_OK; }
// *** Map - simpleton: we dont verify map is allowed/exists *** int G_Map_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { // Vote request (vote is being initiated) if(arg) { char serverinfo[MAX_INFO_STRING]; trap_GetServerinfo(serverinfo, sizeof(serverinfo)); if(!vote_allow_map.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); G_voteCurrentSetting(ent, arg, Info_ValueForKey(serverinfo, "mapname")); return(G_INVALID); } else if(G_voteDescription(ent, fRefereeCmd, dwVoteIndex)) { G_voteCurrentSetting(ent, arg, Info_ValueForKey(serverinfo, "mapname")); return(G_INVALID); } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); // Vote action (vote has passed) } else { int i; char s[MAX_STRING_CHARS]; if(!level.intermissiontime){ if(g_XPSave.integer & XPSF_STORE_AT_RESTART){ for( i = 0; i < level.numConnectedClients; i++ ) { G_xpsave_add(&g_entities[level.sortedClients[i]],qfalse); } if(g_spreeOptions.integer & SPREE_SAVE_RECORD_RESTART){ G_AddSpreeRecord(); } G_xpsave_writeconfig(); }else if(g_spreeOptions.integer & SPREE_SAVE_RECORD_RESTART){ G_xpsave_readconfig(); G_AddSpreeRecord(); G_xpsave_writeconfig(); } } G_reset_disconnects(); if( g_gametype.integer == GT_WOLF_CAMPAIGN ) { trap_Cvar_VariableStringBuffer("nextcampaign", s, sizeof(s)); trap_SendConsoleCommand(EXEC_APPEND, va("campaign %s%s\n", level.voteInfo.vote_value, ((*s) ? va("; set nextcampaign \"%s\"", s) : ""))); } else { Svcmd_ResetMatch_f(qtrue, qfalse); trap_Cvar_VariableStringBuffer("nextmap", s, sizeof(s)); trap_SendConsoleCommand(EXEC_APPEND, va("map %s%s\n", level.voteInfo.vote_value, ((*s) ? va("; set nextmap \"%s\"", s) : ""))); } } return(G_OK); }
// *** Warmup Weapon Fire *** int G_Warmupfire_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { // Vote request (vote is being initiated) if (arg) { int i = atoi(arg2), val = (match_warmupDamage.integer < 0) ? 0 : (match_warmupDamage.integer > 2) ? 2 : match_warmupDamage.integer; if (!vote_allow_warmupdamage.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); G_WarmupDamageTypeList(ent); G_voteCurrentSetting(ent, arg, va("%d (%s)", val, warmupType[val])); return(G_INVALID); } else if (G_voteDescription(ent, fRefereeCmd, dwVoteIndex)) { G_WarmupDamageTypeList(ent); G_voteCurrentSetting(ent, arg, va("%d (%s)", val, warmupType[val])); return(G_INVALID); } if (i < 0 || i > 2) { G_refPrintf(ent, "\n^3Invalid Warmup Damage type: ^7%d", i); G_WarmupDamageTypeList(ent); return(G_INVALID); } if (i == val) { G_refPrintf(ent, "\n^3Warmup Damage^5 is already set to %s!", warmupType[i]); return(G_INVALID); } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); Com_sprintf(arg2, VOTE_MAXSTRING, "%s", warmupType[i]); // Vote action (vote has passed) } else { // Warmup damage setting AP(va("print \"^3Warmup Damage set to: ^5%s\n\"", warmupType[atoi(level.voteInfo.vote_value)])); trap_SendConsoleCommand(EXEC_APPEND, va("match_warmupDamage %s\n", level.voteInfo.vote_value)); } return(G_OK); }
// *** GameType *** int G_Gametype_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { // Vote request (vote is being initiated) if (arg) { int i = atoi(arg2); if (!vote_allow_gametype.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); G_GametypeList(ent); G_voteCurrentSetting(ent, arg, va("%d (%s)", g_gametype.integer, gameNames[g_gametype.integer])); return(G_INVALID); } else if (G_voteDescription(ent, fRefereeCmd, dwVoteIndex)) { G_GametypeList(ent); G_voteCurrentSetting(ent, arg, va("%d (%s)", g_gametype.integer, gameNames[g_gametype.integer])); return(G_INVALID); } if (i < GT_WOLF || i >= GT_MAX_GAME_TYPE || i == GT_WOLF_CAMPAIGN) { G_refPrintf(ent, "\n^3Invalid gametype: ^7%d", i); G_GametypeList(ent); return(G_INVALID); } if (i == g_gametype.integer) { G_refPrintf(ent, "\n^3Gametype^5 is already set to %s!", gameNames[i]); return(G_INVALID); } Com_sprintf(level.voteInfo.vote_value, VOTE_MAXSTRING, "%s", arg2); Com_sprintf(arg2, VOTE_MAXSTRING, "%s", gameNames[i]); // Vote action (vote has passed) } else { // Set gametype G_voteSetValue("Gametype", "g_gametype"); Svcmd_ResetMatch_f(qtrue, qtrue); } return(G_OK); }
// *** Map Restart *** int G_MapRestart_v(gentity_t *ent, unsigned int dwVoteIndex, char *arg, char *arg2, qboolean fRefereeCmd) { char serverinfo[MAX_INFO_STRING]; trap_GetServerinfo(serverinfo, sizeof (serverinfo)); // Vote request (vote is being initiated) if (arg) { // suburb, if map voting disabled, also disable maprestart if (!vote_allow_map.integer && ent && !ent->client->sess.referee) { G_voteDisableMessage(ent, arg); G_voteCurrentSetting(ent, arg, Info_ValueForKey(serverinfo, "mapname")); return G_INVALID; } if (trap_Argc() > 2) { if (!Q_stricmp(arg2, "?")) { G_refPrintf(ent, "Usage: ^3%s %s%s\n", ((fRefereeCmd) ? "\\ref" : "\\callvote"), arg, aVoteInfo[dwVoteIndex].pszVoteHelp); return(G_INVALID); } } } else { // Restart the map G_delay_map_change(Info_ValueForKey(serverinfo, "mapname"), 0); } return(G_OK); }