X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcommand%2Fcommon.qc;h=7c30baa02687681805b9f167c9ee2bac29c84ac2;hb=65cb61be9098965fe184060e34db4c0cfe22aa70;hp=db822eb71f7ea45e2536677da8f50aab4d071bcf;hpb=38c2e33f2b643b4e9d1878ceb3330cc05406edcc;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/command/common.qc b/qcsrc/server/command/common.qc index db822eb71..7c30baa02 100644 --- a/qcsrc/server/command/common.qc +++ b/qcsrc/server/command/common.qc @@ -1,16 +1,20 @@ #include "common.qh" -#include -#include - #include -#include "common.qh" - -#include "../scores.qh" - +#include #include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include // ==================================================== @@ -28,7 +32,7 @@ string GetCommandPrefix(entity caller) // if client return player nickname, or if server return admin nickname string GetCallerName(entity caller) { - if (caller) return playername(caller, false); + if (caller) return playername(caller.netname, caller.team, false); else return ((autocvar_sv_adminnick != "") ? autocvar_sv_adminnick : "SERVER ADMIN"); // autocvar_hostname } @@ -76,7 +80,7 @@ float VerifyClientNumber(float tmp_number) else return true; } -entity GetIndexedEntity(float argc, float start_index) +entity GetIndexedEntity(int argc, float start_index) { entity selection; float tmp_number, index; @@ -209,16 +213,33 @@ void timeout_handler_think(entity this) if (timeout_time == autocvar_sv_timeout_resumetime) // play a warning sound when only seconds are left Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_PREPARE); - this.nextthink = time + TIMEOUT_SLOWMO_VALUE; // think again in one second + //this.nextthink = time + TIMEOUT_SLOWMO_VALUE; // think again in one second + this.nextthink = time + 1; timeout_time -= 1; // decrease the time counter } + else if (timeout_time == -1) // infinite timer + { + Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_TIMEOUT_ONGOING); + this.nextthink = time + TIMEOUT_SLOWMO_VALUE; + } else // time to end the timeout { Kill_Notification(NOTIF_ALL, NULL, MSG_CENTER, CPID_TIMEIN); timeout_status = TIMEOUT_INACTIVE; + float total_time = time - timeout_last; // reset the slowmo value back to normal - cvar_set("slowmo", ftos(orig_slowmo)); + // z411 TODO + //cvar_set("slowmo", ftos(orig_slowmo)); + + // Disable timeout and fix times + game_timeout = false; + timeout_total_time += total_time; + game_starttime += total_time; + if(round_handler && round_handler_GetEndTime() > 0) + round_handler.round_endtime += total_time; + + LOG_INFOF("Timeout lasted %d secs", total_time); // unlock the view for players so they can move around again FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), { @@ -245,7 +266,12 @@ void timeout_handler_think(entity this) timeout_status = TIMEOUT_ACTIVE; // set the slowmo value to the timeout default slowmo value - cvar_set("slowmo", ftos(TIMEOUT_SLOWMO_VALUE)); + //cvar_set("slowmo", ftos(TIMEOUT_SLOWMO_VALUE)); + game_timeout = true; + timeout_last = time; + + // play timeout sound + sound(NULL, CH_INFO, SND_TIMEOUT, VOL_BASE, ATTN_NONE); // reset all the flood variables FOREACH_CLIENT(true, { @@ -280,7 +306,7 @@ void timeout_handler_think(entity this) // Common commands used in both sv_cmd.qc and cmd.qc // =================================================== -void CommonCommand_cvar_changes(float request, entity caller) +void CommonCommand_cvar_changes(int request, entity caller) { switch (request) { @@ -301,7 +327,7 @@ void CommonCommand_cvar_changes(float request, entity caller) } } -void CommonCommand_cvar_purechanges(float request, entity caller) +void CommonCommand_cvar_purechanges(int request, entity caller) { switch (request) { @@ -395,7 +421,7 @@ void CommonCommand_editmob(int request, entity caller, int argc) totalspawned += 1; WarpZone_TraceBox(CENTER_OR_VIEWOFS(caller), caller.mins, caller.maxs, CENTER_OR_VIEWOFS(caller) + v_forward * 150, true, caller); - mon = spawnmonster(spawn(), arg_lower, 0, caller, caller, trace_endpos, false, false, moveflag); + mon = spawnmonster(spawn(), arg_lower, MON_Null, caller, caller, trace_endpos, false, false, moveflag); print_to(caller, strcat("Spawned ", mon.monster_name)); return; } @@ -405,7 +431,7 @@ void CommonCommand_editmob(int request, entity caller, int argc) if (mon.realowner != caller && autocvar_g_monsters_edit < 2) { print_to(caller, "This monster does not belong to you"); return; } if (!is_visible) { print_to(caller, "You must look at your monster to edit it"); return; } - Damage(mon, NULL, NULL, mon.health + mon.max_health + 200, DEATH_KILL.m_id, DMG_NOWEP, mon.origin, '0 0 0'); + Damage(mon, NULL, NULL, GetResource(mon, RES_HEALTH) + mon.max_health + 200, DEATH_KILL.m_id, DMG_NOWEP, mon.origin, '0 0 0'); print_to(caller, strcat("Your pet '", mon.monster_name, "' has been brutally mutilated")); return; } @@ -416,7 +442,7 @@ void CommonCommand_editmob(int request, entity caller, int argc) if (!autocvar_g_monsters_edit) { print_to(caller, "Monster editing is disabled"); return; } if (!is_visible) { print_to(caller, "You must look at your monster to edit it"); return; } if (mon.realowner != caller && autocvar_g_monsters_edit < 2) { print_to(caller, "This monster does not belong to you"); return; } - if (mon.monsterid == MON_MAGE.monsterid) { print_to(caller, "Mage skins can't be changed"); return; } // TODO + if (mon.monsterdef == MON_MAGE) { print_to(caller, "Mage skins can't be changed"); return; } // TODO mon.skin = stof(argument); print_to(caller, strcat("Monster skin successfully changed to ", ftos(mon.skin))); @@ -437,7 +463,7 @@ void CommonCommand_editmob(int request, entity caller, int argc) case "butcher": { if (caller) { print_to(caller, "This command is not available to players"); return; } - if (MUTATOR_CALLHOOK(AllowMobButcher)) { LOG_INFOF("%s", M_ARGV(0, string)); return; } + if (MUTATOR_CALLHOOK(AllowMobButcher)) { LOG_INFO(M_ARGV(0, string)); return; } int tmp_remcount = 0; @@ -469,13 +495,13 @@ void CommonCommand_editmob(int request, entity caller, int argc) } } -void CommonCommand_info(float request, entity caller, float argc) +void CommonCommand_info(int request, entity caller, int argc) { switch (request) { case CMD_REQUEST_COMMAND: { - string command = builtin_cvar_string(strcat("sv_info_", argv(1))); + string command = cvar_string(strcat("sv_info_", argv(1))); if (command) wordwrap_sprint(caller, command, 1000); else print_to(caller, "ERROR: unsupported info command"); @@ -493,7 +519,7 @@ void CommonCommand_info(float request, entity caller, float argc) } } -void CommonCommand_ladder(float request, entity caller) +void CommonCommand_ladder(int request, entity caller) { switch (request) { @@ -513,7 +539,7 @@ void CommonCommand_ladder(float request, entity caller) } } -void CommonCommand_lsmaps(float request, entity caller) +void CommonCommand_lsmaps(int request, entity caller) { switch (request) { @@ -533,7 +559,7 @@ void CommonCommand_lsmaps(float request, entity caller) } } -void CommonCommand_printmaplist(float request, entity caller) +void CommonCommand_printmaplist(int request, entity caller) { switch (request) { @@ -553,7 +579,7 @@ void CommonCommand_printmaplist(float request, entity caller) } } -void CommonCommand_rankings(float request, entity caller) +void CommonCommand_rankings(int request, entity caller) { switch (request) { @@ -573,7 +599,7 @@ void CommonCommand_rankings(float request, entity caller) } } -void CommonCommand_records(float request, entity caller) +void CommonCommand_records(int request, entity caller) { switch (request) { @@ -601,7 +627,7 @@ void CommonCommand_records(float request, entity caller) } } -void CommonCommand_teamstatus(float request, entity caller) +void CommonCommand_teamstatus(int request, entity caller) { switch (request) { @@ -621,7 +647,7 @@ void CommonCommand_teamstatus(float request, entity caller) } } -void CommonCommand_time(float request, entity caller) +void CommonCommand_time(int request, entity caller) { switch (request) { @@ -632,8 +658,8 @@ void CommonCommand_time(float request, entity caller) print_to(caller, strcat("realtime = ", ftos(gettime(GETTIME_REALTIME)))); print_to(caller, strcat("hires = ", ftos(gettime(GETTIME_HIRES)))); print_to(caller, strcat("uptime = ", ftos(gettime(GETTIME_UPTIME)))); - print_to(caller, strcat("localtime = ", strftime(true, "%a %b %e %H:%M:%S %Z %Y"))); - print_to(caller, strcat("gmtime = ", strftime(false, "%a %b %e %H:%M:%S %Z %Y"))); + print_to(caller, strcat("localtime = ", strftime(true, "%a %b %d %H:%M:%S %Z %Y"))); + print_to(caller, strcat("gmtime = ", strftime(false, "%a %b %d %H:%M:%S %Z %Y"))); return; } @@ -647,7 +673,7 @@ void CommonCommand_time(float request, entity caller) } } -void CommonCommand_timein(float request, entity caller) +void CommonCommand_timein(int request, entity caller) { switch (request) { @@ -678,7 +704,7 @@ void CommonCommand_timein(float request, entity caller) { timeout_time = autocvar_sv_timeout_resumetime; timeout_handler.nextthink = time; // timeout_handler has to take care of it immediately - bprint(strcat("^1Attention: ^7", GetCallerName(caller), " resumed the game! Prepare for battle!\n")); + bprint(strcat("\{1}^1Attention: ^7", GetCallerName(caller), " resumed the game! Prepare for battle!\n")); return; } @@ -702,7 +728,7 @@ void CommonCommand_timein(float request, entity caller) } } -void CommonCommand_timeout(float request, entity caller) // DEAR GOD THIS COMMAND IS TERRIBLE. +void CommonCommand_timeout(int request, entity caller) // DEAR GOD THIS COMMAND IS TERRIBLE. { switch (request) { @@ -717,7 +743,7 @@ void CommonCommand_timeout(float request, entity caller) // DEAR GOD THIS COMMA { print_to(caller, "^7Error: You can not call a timeout while a vote is active."); } - else if (warmup_stage && !g_warmup_allow_timeout) + else if (warmup_stage && !autocvar_g_warmup_allow_timeout) { print_to(caller, "^7Error: You can not call a timeout in warmup-stage."); } @@ -742,17 +768,17 @@ void CommonCommand_timeout(float request, entity caller) // DEAR GOD THIS COMMA { if (caller) CS(caller).allowed_timeouts -= 1; // write a bprint who started the timeout (and how many they have left) - bprint(GetCallerName(caller), " ^7called a timeout", (caller ? strcat(" (", ftos(CS(caller).allowed_timeouts), " timeout(s) left)") : ""), "!\n"); + bprint("\{1}", GetCallerName(caller), " ^7called a timeout", (caller ? strcat(" (", ftos(CS(caller).allowed_timeouts), " timeout(s) left)") : ""), "!\n"); timeout_status = TIMEOUT_LEADTIME; timeout_caller = caller; timeout_time = autocvar_sv_timeout_length; timeout_leadtime = autocvar_sv_timeout_leadtime; - timeout_handler = spawn(); + timeout_handler = new(timeout_handler); setthink(timeout_handler, timeout_handler_think); timeout_handler.nextthink = time; // always let the entity think asap - + Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_TIMEOUT); } } @@ -771,7 +797,7 @@ void CommonCommand_timeout(float request, entity caller) // DEAR GOD THIS COMMA } } -void CommonCommand_who(float request, entity caller, float argc) +void CommonCommand_who(int request, entity caller, int argc) { switch (request) { @@ -836,7 +862,7 @@ void CommonCommand_who(float request, entity caller, float argc) /* use this when creating a new command, making sure to place it in alphabetical order... also, ** ADD ALL NEW COMMANDS TO commands.cfg WITH PROPER ALIASES IN THE SAME FASHION! -void CommonCommand_(float request, entity caller) +void CommonCommand_(int request, entity caller) { switch(request) {