if_client alias if_dedicated ""
if_dedicated "alias" qc_cmd_sv "sv_cmd $$*"
+if_client "alias" qc_cmd_sv "sv_cmd $$*"
+// if_client "alias" qc_cmd_sv "echo This command only works on servers: sv_cmd $${* !}"
+if_dedicated "alias" qc_cmd_cl "echo This command only works on clients: cl_cmd $${* !}"
if_client "alias" qc_cmd_cl "cl_cmd $$*"
+if_dedicated "alias" qc_cmd_cmd "echo This command only works on clients: cmd $${* !}"
if_client "alias" qc_cmd_cmd "cmd $$*"
+
if_dedicated "alias" qc_cmd_svmenu "sv_cmd $$*"
if_client "alias" qc_cmd_svmenu "menu_cmd $$*"
if_dedicated "alias" qc_cmd_svcl "sv_cmd $$*"
if_dedicated "alias" qc_cmd_svcmd "sv_cmd $$*"
if_client "alias" qc_cmd_svcmd "cmd $$*"
+if_dedicated "alias" help "sv_cmd help"
+if_client "alias" help "cl_cmd help; cmd help"
+
// ========
// common
alias ladder "qc_cmd_svcmd ladder ${* ?}" // Get information about top players if supported
alias lsmaps "qc_cmd_svcmd lsmaps ${* ?}" // List maps which can be used with the current game mode
alias lsnewmaps "qc_cmd_svcmd lsnewmaps ${* ?}" // List maps which have no records or are seemingly unplayed yet
-alias maplist "qc_cmd_svcmd maplist ${* ?}" // Display full server maplist reply
+alias printmaplist "qc_cmd_svcmd printmaplist ${* ?}" // Display full server maplist reply
alias rankings "qc_cmd_svcmd rankings ${* ?}" // Print information about rankings
alias records "qc_cmd_svcmd records ${* ?}" // List top 10 records for the current map
alias teamstatus "qc_cmd_svcmd teamstatus ${* ?}" // Show information about player and team scores
alias who "qc_cmd_svcmd who ${* ?}" // Display detailed client information about all players
// generic commands (across all programs)
-alias addtolist "qc_cmd_svmenu addtolist ${* ?}" // Add a string to a cvar at the end of a list
+alias addtolist "qc_cmd_svmenu addtolist ${* ?}" // Add a string to a cvar
+alias qc_curl "qc_cmd_svmenu curl ${* ?}" // curl requests
alias dumpcommands "qc_cmd_svmenu dumpcommands ${* ?}" // Dump all commands on the program to *_cmd_dump.txt
alias maplist "qc_cmd_svmenu maplist ${* ?}" // Automatic control of maplist
+alias nextframe "qc_cmd_svmenu nextframe ${* ?}" // do something next frame
+alias removefromlist "qc_cmd_svmenu removefromlist ${* ?}" // Remove a string from a cvar
alias rpn "qc_cmd_svmenu rpn ${* ?}" // RPN calculator
//alias settemp "qc_cmd_svmenu settemp ${* ?}" // Temporarily set a value to a cvar which is restored later
//alias settemp_restore "qc_cmd_svmenu settemp_restore ${* ?}" // Restore all cvars set by settemp command
// ==========================================================
// commented out commands are really only intended for internal use
alias blurtest "qc_cmd_cl blurtest ${* ?}" // Feature for testing blur postprocessing
+alias create_scrshot_ent "qc_cmd_cl create_scrshot_ent ${* ?}" // Create an entity at this location for automatic screenshots
alias debugmodel "qc_cmd_cl debugmodel ${* ?}" // Spawn a debug model manually
//alias handlevote "qc_cmd_cl handlevote ${* ?}" // System to handle selecting a vote or option
alias hud "qc_cmd_cl hud ${* ?}" // Commands regarding/controlling the HUD system
alias localprint "qc_cmd_cl localprint ${* ?}" // Create your own centerprint sent to yourself
//alias mv_download "qc_cmd_cl mv_download ${* ?}" // Retrieve mapshot picture from the server
alias sendcvar "qc_cmd_cl sendcvar ${* ?}" // Send a cvar to the server (like weaponpriority)
+//alias vyes "qc_cmd_cl vyes ${* ?}" // COMPATIBILITY COMMAND FOR 0.5 CLIENTS
+//alias vno "qc_cmd_cl vno ${* ?}" // COMPATIBILITY COMMAND FOR 0.5 CLIENTS
// other aliases for local commands
alias hud_configure "qc_cmd_cl hud configure"
alias autoswitch "qc_cmd_cmd autoswitch ${* ?}" // Whether or not to switch automatically when getting a better weapon
alias checkfail "qc_cmd_cmd checkfail ${* ?}" // Report if a client-side check failed
alias clientversion "qc_cmd_cmd clientversion ${* ?}" // Release version of the game
-//alias getmapvotepic "qc_cmd_cmd getmapvotepic ${* ?}" // Retrieve mapshot picture from the server
+//alias mv_getpicture "qc_cmd_cmd mv_getpicture ${* ?}" // Retrieve mapshot picture from the server
alias join "qc_cmd_cmd join ${* ?}" // Become a player in the game
alias ready "qc_cmd_cmd ready ${* ?}" // Qualify as ready to end warmup stage (or restart server if allowed)
alias reportcvar "qc_cmd_cmd reportcvar ${* ?}" // Old system for sending a client cvar to the server
// Aliases for settemp subsystem. Warning: Do not touch.
// Usage: settemp variable value, next map resets it.
// =======================================================
-alias settemp "qc_cmd_svcl settemp $$*"
+alias settemp "qc_cmd_svcl settemp $*"
alias settemp_restore "qc_cmd_svcl settemp_restore"
// ===================================
// banning - server/command/ipban.qc
// ===================================
-alias bans "sv_cmd bans"
-alias ban "sv_cmd ban ${* ?}" // usage: ban address(maybe incomplete, like 1.2.3) bantime(seconds)
-alias kickban "sv_cmd kickban ${* ?}" // usage: kickban # playerno bantime(seconds) masksize(bytes)
-alias unban "sv_cmd unban ${* ?}" // usage: unban 3 (number from bans)
-
+alias ban "qc_cmd_sv ban ${* ?}" // Ban an IP address or a range of addresses (like 1.2.3)
+alias banlist "qc_cmd_sv banlist ${* ?}" // List all existing bans
+alias bans "qc_cmd_sv bans ${* ?}" // COMPATIBILITY COMMAND FOR 0.5 CLIENTS
+alias kickban "qc_cmd_sv kickban ${* ?}" // Disconnect a client and ban it at the same time
+alias unban "qc_cmd_sv unban ${* ?}" // Remove an existing ban
+
+// other aliases for ban commands
+alias bans "banlist"
+
+// character classes (intersected with 32..126 minus ", $, ;, ^, \ - if you
+// want these, include them explicitly)
+// note that QC code always forbids $ and ; in VoteCommand_checknasty
+set _iscntrl ""
+set _isblank " "
+set _ispunct "!#%&'()*+,-./:<=>?@[]_`{|}~"
+set _isdigit "0123456789"
+set _isupper "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+set _islower "abcdefghijklmnopqrstuvwxyz"
+set _isxdigit "0123456789abcdefABCDEF"
+
+// derived character classes
+set _isalpha "$_isupper$_islower"
+set _isalnum "$_isalpha$_isdigit"
+set _isgraph "$_ispunct$_isalnum"
+set _isascii "$_isgraph$_isblank"
+set _isprint "$_isgraph$_isblank"
+set _isspace "$_isblank"
+
+// restriction is specified as <minargs> followed by <maxargs> instances of ';'
+// and the optional character class to verify the argument by (no checking if
+// empty)
+// set cvar to empty string to not check the command at all
+// if cvar is not set there will be a warning
+set sv_vote_command_restriction_restart "0"
+set sv_vote_command_restriction_fraglimit "1;$_isdigit"
+set sv_vote_command_restriction_chmap "1;$_isgraph"
+set sv_vote_command_restriction_gotomap "1;$_isgraph"
+set sv_vote_command_restriction_nextmap "1;$_isgraph"
+set sv_vote_command_restriction_endmatch "0"
+set sv_vote_command_restriction_reducematchtime "0"
+set sv_vote_command_restriction_extendmatchtime "0"
+set sv_vote_command_restriction_allready "0"
+set sv_vote_command_restriction_kick "1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" // enough space for ban reason
+set sv_vote_command_restriction_kickban "1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" // enough space for ban reason
+set sv_vote_command_restriction_cointoss "0"
+set sv_vote_command_restriction_movetoauto "1;"
+set sv_vote_command_restriction_movetored "1;"
+set sv_vote_command_restriction_movetoblue "1;"
+set sv_vote_command_restriction_movetoyellow "1;"
+set sv_vote_command_restriction_movetopink "1;"
// =================================
// voting - server/command/vote.qc
set sv_vote_change 1 "Allow voters to change their mind after already voting"
set sv_vote_commands "restart fraglimit chmap gotomap nextmap endmatch reducematchtime extendmatchtime allready kick cointoss movetoauto" "these commands can be voted"
set sv_vote_only_commands ""
-set sv_vote_master_commands "movetored movetoblue movetoyellow movetopink" "Commands which vote masters can execute by themselves" // maybe add kickban here (but then sv_vote_master 0)
+set sv_vote_master_commands "movetored movetoblue movetoyellow movetopink" "Extra commands which vote masters can execute by themselves, along with the normal sv_vote_commands." // maybe add kickban here (but then sv_vote_master 0)
set sv_vote_master 1 "Allows the use of the vote master system"
set sv_vote_master_callable 1 "When set, users can use \"vmaster\" to call a vote to become master of voting commands"
set sv_vote_master_password "" "when set, users can use \"vlogin PASSWORD\" to log in as master"
// when disabled, don't allow game type changes "note: set these two equal to JUST support simple majorities"
set sv_vote_override_mostrecent 0
-alias vhelp "cmd vote help"
-alias vstatus "cmd vote status"
-alias vcall "cmd vote call ${* ?}"
-alias vstop "cmd vote stop"
-alias vmaster "cmd vote master"
-alias vlogin "cmd vote login ${* ?}"
-alias vdo "cmd vote do ${* ?}"
-alias vyes "cl_cmd handlevote yes"
-alias vno "cl_cmd handlevote no"
-alias vdontcare "cmd vote dontcare"
-alias vabstain "cmd vote abstain"
-
+// aliases for client only
+alias vmaster "qc_cmd_cmd vote master"
+alias vlogin "qc_cmd_cmd vote master login ${* ?}"
+alias vdo "qc_cmd_cmd vote master do ${* ?}"
+alias vyes "qc_cmd_cl handlevote yes; cl_cmd vyes" // NOTE: COMPATIBILITY FOR 0.5 IS ADDED HERE WITH "VYES", REMOVE LATER
+alias vno "qc_cmd_cl handlevote no; cl_cmd vno" // ^^^ same, see above
+alias vdontcare "qc_cmd_cmd vote abstain"
+alias vabstain "qc_cmd_cmd vote abstain"
+
+// aliases for both client and server
+alias vcall "qc_cmd_svcmd vote call ${* ?}"
+alias vhelp "qc_cmd_svcmd vote help"
+alias vstatus "qc_cmd_svcmd vote status"
+alias vstop "qc_cmd_svcmd vote stop"
+
+// general
alias vmap "vcall gotomap ${1 ?}"
alias vnextmap "vcall nextmap ${1 ?}"
alias vkick "vcall kick ${1 ?}"
// ======================
rcon_secure 1
set rcon_restricted_commands "restart fraglimit chmap gotomap endmatch reducematchtime extendmatchtime allready kick kickban \"sv_cmd bans\" \"sv_cmd unban *\" status \"sv_cmd teamstatus\" movetoauto movetored movetoblue movetoyellow movetopink"
-
-// =============================
-// other miscellaneous aliases
-// =============================
-alias autoscreenshot "screenshot screenshots/autoscreenshot/${1 !}-${2 !}.jpg; echo \"^5A screenshot has been taken at request of the server.\""
-