Welcome to Halo's most popular Server App's website, also known as SAPP.

Version 10.1 has been released (2017. 04. 29.)
Continue to the Download page >>

SAPP is the most powerful extension for the Halo PC and Halo CE dedicated server, some of its features are:

  1.     Anticheat
  2.     No-Lead mode
  3.     Auto Update
  4.     Alias function
  5.     Advanced aimbot detection
  6.     Basic scripting with Lua
  7.     Remote Console protocol
  8.     Player Commands (\info, \stats, \about)
  9.     Creating new commands by combining existing ones
  10.     Using server events (join, kill, betray etc.)
  11.     Map downloading
  12.     AFK kick
  13.     Ping kick
  14.     Antiwarp
  15.     Antiglitch
  16.     Object management
  17.     Admin system without rcon, via chat
  18.     Admin levels, customizable command levels and names
  19.     Unique password for each admin, in chat & rcon also
  20.     Rcon bruteforce protection
  21.     Players can vote to skip the map
  22.     Map Vote function
  23.     IP & IP Range Banning players
  24.     Players can be banned from using the chat
  25.     Auto mute spammers
  26.     Sending private server messages
  27.     Balancing teams
  28.     Switching teams of a player
  29.     Naughty commands :P

Stock Halo Commands

These commands are Halo’s stock commands.

While this list does not include devmode commands (cheat commands, debug commands, etc.), devmode is automatically enabled by SAPP on both versions of the dedicated server rather than just Halo Custom Edition.

Command usage Effect

quit

This command closes the server application.

sv_ban <player> [length]

Ban a player by cd-key. Specifying a length will ban a player for that amount of time. Otherwise, the player will be banned indefinitely.

sv_ban_penalty [1] [2] [3] [4]

Display or specify the cd-key ban length for a certain number of teamkill bans. Up to four ban lengths can be specified before a permanent ban is given.

Default: 5m, 1d, 10d, 0 (indefinite)

sv_banlist

Display the ban list. (cd-key only)

sv_banlist_file

Locate the ban list file.

sv_end_game

End the current game without starting a new game.

This command will remove all players from the server and prevent players from joining until a new game is started on the server. SAPP will try to restart its mapcycle, mapvote, and default Halo mapcycle (in this order) if there is one, or else the server will hang indefinitely. Use sv_map_next if you want to skip the current game.

sv_friendly_fire

Set friendly fire parameters. This overrides the game variant settings. Note that explosion-only friendly fire can only be toggled from the game variant.

0 = Default (game variant)
1 = Off
2 = Shield only
3 = On

Default: 0 (use game variant)

sv_gamelist

List all usable game variants in the savegames folder. This can be reloaded with the reload_gametypes command.

sv_kick <player>

Remove a player from the game.

sv_log_echo_chat [enabled]

Enable or disable chat echoing into the (non-SAPP) server log. This command only works in Halo: Custom Edition.

Default: false

sv_log_enabled [enabled]

Enable or disable the (non-SAPP) server log. This command only works in Halo: Custom Edition.

Default: false

sv_log_file [path]

Get or specify the path to the (non-SAPP) server log. This command only works in Halo: Custom Edition.

Default: haloserver.log

sv_log_note [string]

Write a note into the (non-SAPP) server log. This command only works in Halo: Custom Edition.

sv_log_rotation_threshold [KiB]

Get or specify the minimum file size (in kibibytes) before Halo renames the server log and creates a new one. This command only works in Halo: Custom Edition.

Default: 4096

sv_map <map> <game variant>

Change the map and/or game variant. The use of this command will suspend any running map cycle and cancel SAPP’s map voting for the current game, if it was enabled.

sv_map_next

End the current game, loading the next game. If the game is on a map cycle, it’ll load the next game. If map voting is enabled, that will take place. Otherwise, it’ll repeat the game.

sv_map_reset

Reset the game, respawning all objects and players and clearing score, kills, deaths, and assists.

sv_mapcycle

Display the current (non-SAPP) map cycle.

sv_mapcycle_add <map> <game variant>

Add an entry to the (non-SAPP) map cycle.

sv_mapcycle_begin

Start the (non-SAPP) map cycle from the beginning.

sv_mapcycle_del <#>

Remove an entry from the map cycle.

sv_mapcycle_timeout [time]

Gets or sets the time between games. Setting it to 0 or less will prevent the next game from being loaded, similar to sv_end_game, essentially kicking all players out.

Default: 10 seconds

sv_maplist Displays all loaded maps.
sv_maxplayers [players]

Get or set the maximum players. The maximum number of players is 16, and the minimum is 1. A warning is shown if the maximum players is set to 1.

Default: 16 players

sv_motd [motd.txt]

Specify a path for a text file for the server motd. This command only works in Halo Custom Edition.

Default: “” (disabled)

sv_name [name]

Get or set the server name. The maximum character length is 63.

Default: “Halo”

sv_password [password]

Get or set the password in order to join the game. The maximum character length is 8. If players are in-game when a password is added or changed but not removed, they will be kicked after the game.

Default: “” (no password)

sv_players

Get a list of players and player indices which can be used in both Halo’s and SAPP’s commands.

Other information such as team, ping, score, betrayals, and TK timer is also displayed here for each player.

sv_public [public]

Set whether or not the server is allowed to broadcast to the master server. Making the server non-public effectively makes it a LAN server.

Setting sv_public to 0 is somewhat buggy in that it can can occasionally prevent players from joining. You’re better off setting a password if possible.

Default: true

sv_rcon_password [password]

Get or set the rcon password. The maximum character length is 8.

Default: “” (no password - rcon is disabled)

sv_single_flag_force_reset [enabled]

Get or set whether or not the flag can be reset when a player is holding the flag in single-flag games.

Default: false

sv_status Display the current map, number of players, and maximum players. This command is automatically executed in the console periodically as the game is running.
sv_timelimit

Get or set the time limit for future games in minutes. Setting it to 0 results in an indefinite time limit, while setting it to -1 uses the game variant settings.

Default: -1 (use game variant time limit)

sv_tk_ban [bans]

Get or set the number of team kills required for a player to be banned from the server. Ban length is determined by sv_ban_penalty.

Default: 4

sv_tk_cooldown [time]

Set the time required to wait before a player loses a TK point.

Default: 300s

sv_tk_grace [time]

Set the grace period between TK points.

Default: 3s

sv_unban <#>

Unbans a player and removes the player completely from the ban list, bypassing sv_ban_penalty.

 

Custom Commands

Custom commands allow one to execute a series of commands in one go. This can be used for either convenience or additional server functionality. One advantage to doing this is that only the custom command’s level is checked. Almost any commands executed through a custom command can be used regardless of the player’s level. Using custom events and using the cevent command can also be used to add additional logic. Like events, custom commands are non-volatile and are stored in commands.txt.

The format for a line in commands.txt:
command_name
#argument1 #argument2... ‘command1;command2;etc...’ level

Arguments function like variables, but require a pound sign (#) instead of a dollar sign ($). Arguments and levels are not required, and your command will default to requiring level 4 if you do not specify a level.
You can also have SAPP add and remove commands with these commands:

Command Effect
cmd_add <command> [arguments] <command sequence> [level]

This creates a new custom command and places it at the end of commands.txt.

cmd_del <command>

This removes a command from commands.txt.

Examples

As an example of custom commands, custom variables, and custom event, let’s say you want to add a basic economy system without using any Lua scripts. First, you’d want to set up the money variable in your SAPP init.txt:

var_add money 4

What you’re doing here is creating a custom variable, an integer on the player scope. These are initially blank or 0, but can be set later through the use of the var_set command, which can be useful if you intend to use the value later. Refer to the Custom Variables section if you want to know more about custom variables.

Now, give players a small amount of cash for when the player joins the game. Place this in your events.txt file:

event_join var_set money 100 $n

Why don’t you also award them some points for when they score, too.

event_score var_set money +50 $n; say $n +50 ($money)”’

Next, you’ll need to add some custom events for this, which will serve as checking if the player has enough money to max out grenades, which you’ll be selling for 100 points. Refer to the Custom Events section if this isn’t familiar.

event_custom $ename=buynades $money<100 say $n Insufficient funds ($money)”’
event_custom
$ename=buynades $money>=100 var_set money -100 $n; nades $n 4; say $n Nades maxed ($money)”’

Lastly, we can add a command to get this custom event to be used. Put this in your commands.txt file:

buynades cevent buynades $n-1

What this will do is it’ll run the custom event buynades. If the player’s $money variable is less than 100 (the price to refill nades to 4), it’ll tell the player that the item cannot be afforded and remind the player of the current balance. Otherwise, it’ll deduct 100 from the player’s $money variable, then set the player’s nade count to four fragmentation and plasma grenades. The -1 means that all players can use it.

Custom events, custom commands, and custom variables are as powerful as SAPP gets before Lua scripting.

Configuration Commands

Most of these commands are used for configuring your server rather than being invoked by administrators (though administrators level 4, by default, can still execute these commands). These commands do not retain their settings when SAPP is reloaded, so use of the SAPP init.txt file is recommended.

Command usage Effect

admin_prefix <prefix>

This is the prefix inserted before messages made by administrators who are manually using the say command (rcon, console, or through chat commands). This differs from msg_prefix which is used when a script or event invokes the say command.

Default: ** ADMIN **

adminadd_samelevel [value]

Setting this will allow/disallow admins to add other V1 admins at certain levels using the adminadd command.

0 = Admins cannot add other admins.
1 = Admins can add admins to any lower level.
2 = Admins can add admins to lower/equal levels.

Default: 0 (admins cannot add admins)

adminban [type]

Setting this will allow/disallow admins from banning another admin depending on the level of both admins.

This is no substitute for hiring non-abusive, trustworthy admins.

0 = Admins can freely kick/ban other admins.
1 = Admins cannot ban admins with a higher level.
2 = Admins can only ban admins with a lower level.

Default: 0 (admins can ban admins)

admindel_samelevel [value]

Setting this will allow/disallow admins to remove other V1 admins at certain levels using the admindel command.

This is no substitute for hiring non-abusive, trustworthy admins.

0 = Admins cannot delete admins.
1 = Admins can delete admins of a lower level.
2 = Admins can delete admins of lower/equal levels.

Default: 0 (admins cannot delete admins)

afk_kick [time]

Enabling this will automatically remove AFK players from the server after a specified amount of time.

Default: 0 (disabled)

aimbot_ban [length] [type]

Enabling this will automatically kick and/or ban aimbotters for a specified length of time in minutes.

0 = CD-hash ban
1 = IP ban
2 = CD and IP ban
3 = Kick

Default: 0 minutes (disabled)

alias <player expr>

Search for an alias recorded in aliases.txt.

anticamp [time] [distance]

Enabling this will raise event_camp if a player has killed someone while camping a certain area (world units) for a number of seconds.

1 world unit = 10 feet or ~3.048 meters
Forward speed (default) = 2.25 world units/second

Default: 0 seconds (disabled)

anticaps [enabled]

Enabling this will prevent players from typing in excessive caps.

Default: false

anticheat [enabled]

Enabling this will require players to use SAPP’s anticheat. This command must be specified in SAPP’s init.txt and cannot be disabled.

Default: false

antiglitch [enabled]

Enabling this will automatically kill all players who have left the map’s BSP (the ground of the map). This is useful in maps such as Danger Canyon and Coldsnap to prevent players from glitching through the map, or when fall damage is disabled to prevent players falling forever.

Default: false

antihalofp [enabled]

Enabling this will IP ban (five minutes) people who attempt to join too often in a short amount of time.

Default: false

antilagspawn [enable]

Enabling this will prevent players from lag-spawning.

Default: false

antispam [type]

Enabling this will automatically mute players who send too many chat messages in a short amount of time on your server (spam).

0 = Disabled
1 = CD-key (
textban)
2 = IP-based (
mute)

Default: 0 (disabled)

antiwarp [warp_num]

Enabling this will raise event_warp if a player has warped warp_num times.

 

Default: 0 (disabled)

auto_update [enabled]

Enabling this will have SAPP automatically update when a new update is available. When SAPP updates, it will unload, interrupting events and scripts. The game itself will continue to function as SAPP is unloaded and loaded.

Default: true

network_thread [enabled]

Disabling this will prevent the server from being listed on the SAPP server list, disable map downloading and auto update, and disable Anticheat. This can be useful if the global Sapp server is down to prevent the server from hanging for up to 30 seconds when using the reload command.

Default: true

block_tc [enabled] Enabling this blocks team changing, preventing players from changing to a more full team.

Default: false
chat_console_echo [enabled] This command will toggle whether or not the chat is output into the console. This is recommended if you have access to your server’s console output.

Default: false
cmdstart1 [character] This is the prefix players and admins must place before commands if they wish to use commands from the chat instead of using rcon.

Default: “\”
cmdstart2 [character] This is an alternative prefix used before commands in chat.

Default: “/”
collect_aliases [enabled] [valid CD keys only] Enabling this will have aliases be collected into alias.txt.

Default: false
console_input [enabled] Enabling this will allow the console to accept input.

Default: true
custom_sleep [ms]

This command will modify the amount of time Halo’s thread sleeps per cycle (ms).

Default: 8 (stock: 0)

disable_timer_offsets [enabled]

Enabling this will spawn items on a fixed timer as defined by the map, similar to how spawn timers worked on the Xbox version of Halo rather than using an arbitrary counter.

Default: false

dns [url]

This value changes the master server address used when broadcasting.

Default (as of Halo PC 1.10): s1.master.hosthpc.com

full_ipban [enabled] Enabling this will block all traffic from banned IPs instead of only server queries and join challenges. This may reduce performance with longer ban lists.

Default: false
hide_admin [enabled]

Enabling this will hide the name of admins who use kick or ban commands (k, b, etc.). This setting does not apply to vanilla Halo commands (sv_kick, etc.), which are always silent.

Default: false

hill_timer [int_expr]

Set the amount of time (in seconds) after the hill changes in the “Crazy King” gametype.

Default: 60

log [enabled] Enabling this will log events into a log file.

Default: false
log rotation [kb]

Set the max log size (kB) before the log is archived.

Default: 4096

log_name [name] Set the log file name. “.log” is appended.

Default: log
lua [enabled]

Enabling this will enable Lua scripting.

Default: false

lua_api_v Display the current Lua API version.
lua_call <script> <function> [arguments…]

Manually call a function from <script>.lua. The script must be loaded, first. All arguments supplied through this command are passed as strings.

Because SAPP’s lua scripting functions (e.g. timer()) are on set on the script’s global level, you can also use this command to call these functions, as well.

lua_load <script> Load <script>.lua if it’s not already loaded. This command will also call the script’s OnScriptLoad() function.
lua_unload <script> Unload <script>.lua if it’s not already unloaded. This command will also call the script’s OnScriptUnload() function, unregister all of the script’s callbacks, and disable all the script’s timers.
map_skip [%]

Enable the use of the skip command, skipping when a certain percentage of people want the game to be skipped.

Default: 0 (disabled)

mapvote [enabled]

Enable map voting at the end of each game.

Default: false

max_idle [time]

SAPP will restart the mapcycle if the server idle for this many seconds.

Default: 60 seconds

max_votes [count]

This is the maximum displayed votes per round. However, if your map voting requires a certain number of players, then there may be less votes displayed if these games are unavailable.

Default: 5

motd [string] Set the server motd.
msg_prefix <string>

Set the prefix used in server messages.

Default: ** SAPP **

mtv [enabled]

Enable multi-team vehicles, allowing players to enter vehicles occupied by players in separate teams.

This will only sync for anticheat and HAC2 users. Players that cannot see the modification will lag and probably ragequit.

no_lead [enabled]

Enable no-lead mode. This will compensate for ping in terms of aiming. Players will not have to lead based on network latency.

Note that this command does not make ping a non-factor, as players will only see the game as it was <ping> ms ago.

Default: false

packet_limit [amount] Set the maximum packets per second from an IP address.

Default: 1000
ping_kick [ping]

Kick players with pings exceeding this value (ms).

Default: 0 (disabled)

reload_gametypes This will reload all game variants in the savegames folder, therefore you don’t need to restart the server to use newly created ones.
remote_console [enabled]

Enabling this will enable the remote console.

Default: false

remote_console_list List all connected remote console clients.
remote_console_port [port]

Set the TCP port of the remote console. Using this command will require restarting the remote console to take effect.

Default: Port for the Halo server

sapp_console [enabled]

This will disable the periodic sv_status messages that is displayed every few seconds, instead displaying messages when a player leaves/joins or when a game begins. This is recommended if you have access to your server’s console output.

Default: false

sapp_mapcycle [enabled]

This will enable SAPP’s mapcycle. mapcycle_begin will also automatically enable this if it isn’t already enabled.

Default: false

sapp_rcon [enabled]

Enabling this will require rcon users to be admins. “v1” admins must use the rcon password set in sv_rcon_password. “v2” admins must use their passwords rather than the set rcon password.

If a v2 admin has a password that exceeds 8 characters, then that admin cannot use rcon.

This is not an excuse to use a weak rcon password, as rcon can be used by anyone when SAPP is unloaded (such as due to an update). If this is a problem, use a script that changes the rcon password to “” when the script is unloaded, then changes it back when SAPP is loaded again.

Default: false

save_scores [enabled]

Enabling this will prevent a player’s score from being reset when the player leaves the server.

Default: false

say_prefix [enabled]

Enabling this will enable the ** SERVER ** prefix on server messages. This feature doesn’t work outside of Custom Edition.

Default: true

scorelimit [int_expr] Get or edit the score limit for the current game.
scrim_mode [enabled]

Enabling this will disable naughty commands and lua scripts while also disallowing sightjacking.

Default: false

set_ccolor [value]

You can set the console color.

To calculate the color, add the foreground color to the background color multiplied by 16

setcmd <command> <name/level> This command will allow you to change either the name or the required admin level of (almost) any other SAPP commands or custom-defined command.
sj_level [level]

This command will set the minimum level to use HAC2’s sightjacker on a server.

Default: -1 (everybody can use sightjacker)

spawn_protection [time]

Set the length of protection in seconds for a player to be invulnerable upon spawning.

Default: 0 (disabled)

timelimit [int_expr] Get or edit the time limit on the fly in minutes.
unlock_console_log <enabled>

The console becomes more chatty? It’s CE only.

Default: false

v [version] View or modify the Halo version string.
zombies [team] This enables zombies medals for HAC2.

0 = None
1 = Red
2 = Blue

Default: 0 (none)
Copyright © 2025 SAPP: Halo and Halo Custom Edition Server App. All Rights Reserved.
SAPP is sponsored by Elite Game Servers