X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fcommand%2Fvote.qc;h=6edccafb156f8a48a40a325ff67438b533c88282;hp=f92a0a40cd37a140df63da39f7aa1d0a73b00c0e;hb=4dd3c23aa51dd6fe855d8c5d97126a12a372eb3b;hpb=e7e55b1a2aa1c0fdd3dad3e72a92370dca8023ea diff --git a/qcsrc/server/command/vote.qc b/qcsrc/server/command/vote.qc index f92a0a40cd..6edccafb15 100644 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@ -1,3 +1,25 @@ +#if defined(CSQC) +#elif defined(MENUQC) +#elif defined(SVQC) + #include "../../dpdefs/progsdefs.qh" + #include "../../dpdefs/dpextensions.qh" + #include "../../common/constants.qh" + #include "../../common/util.qh" + #include "../../common/command/shared_defs.qh" + #include "../autocvars.qh" + #include "../constants.qh" + #include "../defs.qh" + #include "../../common/notifications.qh" + #include "../mutators/mutators_include.qh" + #include "../../common/mapinfo.qh" + #include "common.qh" + #include "vote.qh" + #include "../../common/playerstats.qh" + #include "../scores.qh" + #include "../race.qh" + #include "../round_handler.qh" +#endif + // ============================================= // Server side voting code, reworked by Samual // Last updated: December 27th, 2011 @@ -6,7 +28,7 @@ // Nagger for players to know status of voting float Nagger_SendEntity(entity to, float sendflags) { - float nags, i, f, b; + int nags, i, f, b; entity e; WriteByte(MSG_ENTITY, ENT_CLIENT_NAGGER); @@ -69,12 +91,12 @@ float Nagger_SendEntity(entity to, float sendflags) } } - return TRUE; + return true; } void Nagger_Init() { - Net_LinkEntity(nagger = spawn(), FALSE, 0, Nagger_SendEntity); + Net_LinkEntity(nagger = spawn(), false, 0, Nagger_SendEntity); } void Nagger_VoteChanged() @@ -306,7 +328,7 @@ void VoteThink() if(vote_endtime > 0) // a vote was called if(time > vote_endtime) // time is up { - VoteCount(FALSE); + VoteCount(false); } return; @@ -326,9 +348,7 @@ void reset_map(float dorespawn) if(time <= game_starttime && round_handler_IsActive()) round_handler_Reset(game_starttime); - if(g_race || g_cts) - race_ReadyRestart(); - else MUTATOR_CALLHOOK(reset_map_global); + MUTATOR_CALLHOOK(reset_map_global); for(self = world; (self = nextent(self)); ) if(IS_NOT_A_CLIENT(self)) @@ -357,6 +377,10 @@ void reset_map(float dorespawn) } } + FOR_EACH_PLAYER(self) + if(self.frozen) + Unfreeze(self); + // Moving the player reset code here since the player-reset depends // on spawnpoint entities which have to be reset first --blub if(dorespawn) @@ -394,7 +418,7 @@ void reset_map(float dorespawn) void ReadyRestart_think() { restart_mapalreadyrestarted = 1; - reset_map(TRUE); + reset_map(true); Score_ClearAll(); remove(self); @@ -423,7 +447,7 @@ void ReadyRestart_force() { tmp_player.alivetime = 0; tmp_player.killcount = 0; - PlayerStats_Event(tmp_player, PLAYERSTATS_ALIVETIME, -PlayerStats_Event(tmp_player, PLAYERSTATS_ALIVETIME, 0)); + PS_GR_P_ADDVAL(tmp_player, PLAYERSTATS_ALIVETIME, -PS_GR_P_ADDVAL(tmp_player, PLAYERSTATS_ALIVETIME, 0)); } restart_mapalreadyrestarted = 0; // reset this var, needed when cvar sv_ready_restart_repeatable is in use @@ -455,7 +479,7 @@ void ReadyRestart_force() if(autocvar_sv_timeout) { FOR_EACH_REALPLAYER(tmp_player) { tmp_player.allowed_timeouts = autocvar_sv_timeout_number; } } //reset map immediately if this cvar is not set - if (!autocvar_sv_ready_restart_after_countdown) { reset_map(TRUE); } + if (!autocvar_sv_ready_restart_after_countdown) { reset_map(true); } if(autocvar_sv_eventlog) { GameLogEcho(":restart"); } } @@ -521,10 +545,10 @@ float Votecommand_check_assignment(entity caller, float assignment) || ((!from_server && assignment == VC_ASGNMNT_CLIENTONLY) || (from_server && assignment == VC_ASGNMNT_SERVERONLY))) { - return TRUE; + return true; } - return FALSE; + return false; } string VoteCommand_extractcommand(string input, float startpos, float argc) @@ -545,9 +569,9 @@ float VoteCommand_checknasty(string vote_command) || (strstrofs(vote_command, "\n", 0) >= 0) || (strstrofs(vote_command, "\r", 0) >= 0) || (strstrofs(vote_command, "$", 0) >= 0)) - return FALSE; + return false; - return TRUE; + return true; } float VoteCommand_checkinlist(string vote_command, string list) @@ -555,9 +579,9 @@ float VoteCommand_checkinlist(string vote_command, string list) string l = strcat(" ", list, " "); if(strstrofs(l, strcat(" ", vote_command, " "), 0) >= 0) - return TRUE; + return true; - return FALSE; + return false; } string ValidateMap(string validated_map, entity caller) @@ -597,7 +621,7 @@ float VoteCommand_checkargs(float startpos, float argc) float checkmate; if(cmdrestriction == "") - return TRUE; + return true; ++startpos; // skip command name @@ -609,11 +633,11 @@ float VoteCommand_checkargs(float startpos, float argc) minargs = stof(cmdrestriction); if(argc - startpos < minargs) - return FALSE; + return false; p = strstrofs(cmdrestriction, ";", 0); // find first semicolon - for(;;) + for (;;) { // we know that at any time, startpos <= argc - minargs // so this means: argc-minargs >= startpos >= argc, thus @@ -630,7 +654,7 @@ float VoteCommand_checkargs(float startpos, float argc) break; // otherwise fail - return FALSE; + return false; } // cut to next semicolon @@ -650,7 +674,7 @@ float VoteCommand_checkargs(float startpos, float argc) checkmate = strlen(arg); for(check = 0; check < checkmate; ++check) if(strstrofs(charlist, substring(arg, check, 1), 0) < 0) - return FALSE; // not allowed character + return false; // not allowed character // all characters are allowed. FINE. } @@ -659,7 +683,7 @@ float VoteCommand_checkargs(float startpos, float argc) p = q; } - return TRUE; + return true; } float VoteCommand_parse(entity caller, string vote_command, string vote_list, float startpos, float argc) @@ -678,13 +702,13 @@ float VoteCommand_parse(entity caller, string vote_command, string vote_list, fl && (strlen(substring(vote_command, argv_start_index(startpos), strlen(vote_command) - argv_start_index(startpos))) > autocvar_sv_vote_limit) ) - return FALSE; + return false; if (!VoteCommand_checkinlist(first_command, vote_list)) - return FALSE; + return false; if (!VoteCommand_checkargs(startpos, argc)) - return FALSE; + return false; switch(first_command) // now go through and parse the proper commands to adjust as needed. { @@ -692,7 +716,7 @@ float VoteCommand_parse(entity caller, string vote_command, string vote_list, fl case "kickban": // catch all kick/kickban commands { entity victim = GetIndexedEntity(argc, (startpos + 1)); - float accepted = VerifyClientEntity(victim, TRUE, FALSE); + float accepted = VerifyClientEntity(victim, true, false); if(accepted > 0) { @@ -707,7 +731,7 @@ float VoteCommand_parse(entity caller, string vote_command, string vote_list, fl vote_parsed_command = strcat(first_command, " # ", ftos(num_for_edict(victim)), " ", command_arguments); vote_parsed_display = strcat("^1", vote_command, " (^7", victim.netname, "^1): ", reason); } - else { print_to(caller, strcat("vcall: ", GetClientErrorString(accepted, argv(startpos + 1)), ".\n")); return FALSE; } + else { print_to(caller, strcat("vcall: ", GetClientErrorString(accepted, argv(startpos + 1)), ".\n")); return false; } break; } @@ -717,7 +741,7 @@ float VoteCommand_parse(entity caller, string vote_command, string vote_list, fl case "gotomap": // re-direct all map selection commands to gotomap { vote_command = ValidateMap(argv(startpos + 1), caller); - if (!vote_command) { return FALSE; } + if (!vote_command) { return false; } vote_parsed_command = strcat("gotomap ", vote_command); vote_parsed_display = strzone(strcat("^1", vote_parsed_command)); @@ -733,7 +757,7 @@ float VoteCommand_parse(entity caller, string vote_command, string vote_list, fl } } - return TRUE; + return true; } @@ -755,7 +779,7 @@ void VoteCommand_abstain(float request, entity caller) // CLIENT ONLY print_to(caller, "^1You abstained from your vote."); caller.vote_selection = VOTE_SELECT_ABSTAIN; msg_entity = caller; - if(!autocvar_sv_vote_singlecount) { VoteCount(FALSE); } + if(!autocvar_sv_vote_singlecount) { VoteCount(false); } } return; @@ -790,6 +814,7 @@ void VoteCommand_call(float request, entity caller, float argc, string vote_comm else if(!autocvar_sv_vote_gamestart && time < game_starttime) { print_to(caller, "^1Vote calling is not allowed before the match has started."); } else if(vote_called) { print_to(caller, "^1There is already a vote called."); } else if(!spectators_allowed && (caller && !IS_PLAYER(caller))) { print_to(caller, "^1Only players can call a vote."); } + else if(caller && !IS_CLIENT(caller)) { print_to(caller, "^1Only connected clients can vote."); } else if(timeout_status) { print_to(caller, "^1You can not call a vote while a timeout is active."); } else if(caller && (time < caller.vote_waittime)) { print_to(caller, strcat("^1You have to wait ^2", ftos(ceil(caller.vote_waittime - time)), "^1 seconds before you can again call a vote.")); } else if (!VoteCommand_checknasty(vote_command)) { print_to(caller, "^1Syntax error in command, see 'vhelp' for more info."); } @@ -816,7 +841,7 @@ void VoteCommand_call(float request, entity caller, float argc, string vote_comm bprint("\{1}^2* ^3", GetCallerName(vote_caller), "^2 calls a vote for ", vote_called_display, "\n"); if(autocvar_sv_eventlog) { GameLogEcho(strcat(":vote:vcall:", ftos(vote_caller.playerid), ":", vote_called_display)); } Nagger_VoteChanged(); - VoteCount(TRUE); // needed if you are the only one + VoteCount(true); // needed if you are the only one } return; @@ -871,7 +896,7 @@ void VoteCommand_master(float request, entity caller, float argc, string vote_co else // everything went okay, proceed with giving this player master privilages { - caller.vote_master = TRUE; + caller.vote_master = true; print_to(caller, strcat("Accepted vote master login from ", GetCallerName(caller))); bprint("\{1}^2* ^3", GetCallerName(caller), "^2 logged in as ^3master^2\n"); if(autocvar_sv_eventlog) { GameLogEcho(strcat(":vote:vlogin:", ftos(caller.playerid))); } @@ -905,7 +930,7 @@ void VoteCommand_master(float request, entity caller, float argc, string vote_co bprint("\{1}^2* ^3", GetCallerName(vote_caller), "^2 calls a vote to become ^3master^2.\n"); if(autocvar_sv_eventlog) { GameLogEcho(strcat(":vote:vcall:", ftos(vote_caller.playerid), ":", vote_called_display)); } Nagger_VoteChanged(); - VoteCount(TRUE); // needed if you are the only one + VoteCount(true); // needed if you are the only one } return; @@ -943,7 +968,7 @@ void VoteCommand_no(float request, entity caller) // CLIENT ONLY print_to(caller, "^1You rejected the vote."); caller.vote_selection = VOTE_SELECT_REJECT; msg_entity = caller; - if(!autocvar_sv_vote_singlecount) { VoteCount(FALSE); } + if(!autocvar_sv_vote_singlecount) { VoteCount(false); } } return; @@ -1020,7 +1045,7 @@ void VoteCommand_yes(float request, entity caller) // CLIENT ONLY print_to(caller, "^1You accepted the vote."); caller.vote_selection = VOTE_SELECT_ACCEPT; msg_entity = caller; - if(!autocvar_sv_vote_singlecount) { VoteCount(FALSE); } + if(!autocvar_sv_vote_singlecount) { VoteCount(false); } } return; @@ -1086,7 +1111,7 @@ void VoteCommand_macro_help(entity caller, float argc) #define VOTE_COMMAND(name,function,description,assignment) \ { if(Votecommand_check_assignment(caller, assignment)) { print_to(caller, strcat(" ^2", name, "^7: ", description)); } } - VOTE_COMMANDS(0, caller, 0, "") + VOTE_COMMANDS(0, caller, 0, ""); #undef VOTE_COMMAND print_to(caller, strcat("\nUsage:^3 ", command_origin, " vote COMMAND...^7, where possible commands are listed above.\n")); @@ -1098,7 +1123,7 @@ void VoteCommand_macro_help(entity caller, float argc) #define VOTE_COMMAND(name,function,description,assignment) \ { if(Votecommand_check_assignment(caller, assignment)) { if(name == strtolower(argv(2))) { function; return; } } } - VOTE_COMMANDS(CMD_REQUEST_USAGE, caller, argc, "") + VOTE_COMMANDS(CMD_REQUEST_USAGE, caller, argc, ""); #undef VOTE_COMMAND } @@ -1108,12 +1133,12 @@ void VoteCommand_macro_help(entity caller, float argc) float VoteCommand_macro_command(entity caller, float argc, string vote_command) { #define VOTE_COMMAND(name,function,description,assignment) \ - { if(Votecommand_check_assignment(caller, assignment)) { if(name == strtolower(argv(1))) { function; return TRUE; } } } + { if(Votecommand_check_assignment(caller, assignment)) { if(name == strtolower(argv(1))) { function; return true; } } } - VOTE_COMMANDS(CMD_REQUEST_COMMAND, caller, argc, vote_command) + VOTE_COMMANDS(CMD_REQUEST_COMMAND, caller, argc, vote_command); #undef VOTE_COMMAND - return FALSE; + return false; }