/* Excessive Plus for Quake III Arena * www.excessiveplus.net * * Advanced callvote and referee commands * * Use "/set xp_vote callvote.txt" and/or "/set xp_referee callvote.txt" to * enable this file. **/ config, conf { // first argument 1 { // little helper, when using "/callvote config" it will show // something like "usage: /callvote config " // instead of "usage: /callvote config <*>" argument = "fileName"; // any argument * { // "load" is special, it will only pass if the config is // available/exists on the server command = "load $"; } } description = "Loads a custom gameplay config.\nAvailable configs include ^3baseq3^7,\n^3excessive3^7, ^3excessive5 ^7and more."; } restart, map_restart { // no arguments command = "map_restart"; description = "Restarts the current map."; } nextmap, rotate { command = "rotate"; description = "Forces the next map in server rotation to load."; } gametype, g_gametype { 1 { // don't let them vote for the current gametype if ( $g_gametype != GT_FFA ) { ffa, deathmatch, 0 { // client might have used one of the alternatives like "ffa" // explicit use the number "0" instead of the variable "$" command = "set g_gametype 0"; } } // just the same for all other gametypes if ( $g_gametype != GT_DUEL ) { duel, tourney, tournament, 1 { command = "set g_gametype 1"; } } if ( $g_gametype != GT_TDM ) { tdm, team, 3 { command = "set g_gametype 3"; } } if ( $g_gametype != GT_CTF ) { ctf, capture, 4 { command = "set g_gametype 4"; } } if ( $g_gametype != GT_RTF ) { rtf, return, returnflag, 5 { command = "set g_gametype 5"; } } if ( $g_gametype != GT_1FCTF ) { onectf, 1ctf, 1flag, 1fctf, oneflag, 1flagctf, oneflagctf, 6 { command = "set g_gametype 6"; } } if ( $g_gametype != GT_CA ) { ca, clan, arena, clanarena, 7 { command = "set g_gametype 7"; } } if ( $g_gametype != GT_FREEZE ) { freeze, tag, ftag, freezetag, 8 { command = "set g_gametype 8"; } } if ( $g_gametype != GT_PTL ) { ptl, protect, leader, protectleader, 9 { command = "set g_gametype 9"; } } } // second argument is optional 2 { argument = "mapName"; // empty and "" is just the same empty { // just restart the map so the new gametype is enforced command .= "; map_restart 0"; } // assume a valid mapname * { // "map" command is special, it will only pass if the map is // available/exists on the server command .= "; map $"; } } } map { 1 { argument = "mapName"; * { // "map" command is special, it will only pass if the map is // available/exists on the server command = "map $"; } } } if ( $g_gametype >= GT_TEAM ) { teamBalance { 1 { empty, FPH, 1 { command = "teamBalance 1"; } score, 2 { command = "teamBalance 2"; } } description = "Balance the teams on the fly, without resetting the game score."; } } timelimit { 1 { // referee is god, while mere mortals are limited to a range between 5 and 20 REF *, 5..20 { command = "set timelimit $"; } } } if ( in($g_gametype, GT_CTF, GT_RTF, GT_ONEFLAG) ) { capturelimit { 1 { REF *, 5..50 { command = "set roundlimit 0; set capturelimit $"; } } } } else { fraglimit { 1 { REF *, 5..100 { command = "set roundlimit 0; set fraglimit $"; } } } } roundlimit { 1 { REF *, 0..100 { command = "set roundlimit $"; } } } physics, xp_physics { 1 { //baseq3 { // command = "set xp_physics 0"; //} bunnyhop, +bunnyhop { command = "set xp_physics ". ( $xp_physics | PHYSICS_CONTROL_FORWARD | PHYSICS_CONTROL_SIDEWARD | PHYSICS_CONTROL_STOP ); } -bunnyhop { command = "set xp_physics ". ( $xp_physics & ~(PHYSICS_CONTROL_FORWARD | PHYSICS_CONTROL_SIDEWARD | PHYSICS_CONTROL_STOP) ); } // referee can set any value REF * { command = "set xp_physics $"; } } description = "Changes the movement physics."; } unlagged, xp_unlagged { 1 { if ( $xp_unlagged ) { off, 0 { command = "set xp_unlagged 0"; } } else { on, 1 { command = "set xp_unlagged 1"; } } } } // Referee commands REF warmup, REF g_warmup { 1 { on, 1 { command = "set g_doWarmup 1"; if ( $g_warmup < 5 ) { command .= "; set g_warmup 5"; } } off, 0 { command = "set g_doWarmup 0"; } 0..999 { command = "set g_doWarmup 1; set g_warmup $"; } } } if ( $g_gametype >= GT_TEAM ) { REF friendlyFire, REF g_friendlyFire { 1 { on, 1 { command = "set g_friendlyFire 1"; } off, 0 { command = "set g_friendlyFire 0"; } } description = "Allows hurting team members."; } } REF suddenDeath, REF xp_suddenDeath { 1 { on, 1 { command = "set xp_suddenDeath 1"; } off, 0 { command = "set xp_suddenDeath 0"; } } } REF forceTeam { 1 { 0..63 { command = "forceteam $"; } all { command = "forceteam all"; } bots, allbots { command = "forceteam allbots"; } } 2 { if ( $g_gametype >= GT_TEAM ) { auto, a, free, f { command .= " free"; } red, r { command .= " red"; } blue, b { command .= " blue"; } } else { free, f, auto, a { command .= " free"; } } spec, s { command .= " spectator"; } away { command .= " away"; } } } REF matchMode, REF xp_matchMode { 1 { on, 1 { command = "set xp_matchMode 1"; } off, 0 { command = "set xp_matchMode 0"; } } description = "Enables advanced clan war options like ^3/timeout^7, ^3/lock ^7etc."; } if ( $xp_matchMode ) { if ( $g_gametype >= GT_TEAM ) { REF forceJoin { 1 { argument = "playerId"; 0..63 { command = "forcejoin $"; } } 2 { red, r { command .= " red"; } blue, b { command .= " blue"; } none, n { command .= " none"; } } } REF lock { 1 { all, a { command = "lock all"; } red, r { command = "lock red"; } blue, b { command = "lock blue"; } } } REF unlock { 1 { all, a { command = "unlock all"; } red, r { command = "unlock red"; } blue, b { command = "unlock blue"; } } } } REF timeout { command = "timeout"; } REF pause { command = "pause"; } REF timein { command = "timein"; } REF ready { command = "ready"; } REF unpause { command = "unpause"; } REF notready { command = "notready"; } } REF mute { 1 { argument = "playerId"; 0..63 { command = "mute $"; } } } REF unmute { 1 { argument = "playerId"; 0..63 { command = "unmute $"; } } } REF status, REF s { command = "s"; } if ( $xp_userdb ) { REF whois, REF w { 1 { argument = "playerId"; empty { command = "w"; } 0..63 { command = "whois $"; } } } } REF kick, REF k { 1 { argument = "playerId"; 0..63 { command = "k $+"; } } // just to show some valuable information for "/ref kick ?" 2 { argument = "duration"; REF empty, REF * {} } 3 { argument = "reason"; REF empty, REF * {} } } REF ban { 1 { argument = "playerId"; 0..63 { command = "ban $+"; } } // just to show some valuable information for "/ref ban ?" 2 { argument = "duration"; REF empty, REF * {} } 3 { argument = "reason"; REF empty, REF * {} } description = "Bans a player.\n\n^3duration ^7can be used for a temporary ban\nlike ^31w ^7for one week, ^32d ^7for two days,\n^33h ^7for three hours etc."; }