Halo patcher + server APP
Server app (sapp.dll) is a simple plugin made for Halo CE Dedi that extends standard command set with a few additional ones
(11.06.2009) New version is to be released soon, I'm back to work on sapp.




Planned changes:
  • Further improvements in stability and security, sapp logging support.
  • Players identified by their names, support for wildcards
  • ...


List of commands:

Command Description
load Loads server plugin (sapp.dll), commands listed below are available only if 'load' had been issued before.
unload Unloads server app, useful when new version of sapp.dll is released :-) and you want to perform update without restarting server.
ip [player_number] Displays player's IP, Rev DNS and CD-KEY hash
v1 Change server's version to 01.00.00.0609 (popular 1.00)
v2 Changes back version back to 01.00.08.0616 (1.08 - official version)
v Display current version of server.
afk_kick [seconds] AFK players (unless they are admins) are kicked after a given period of inactivity, if [seconds] is 0 then afk kicking is disabled.
ping_kick [ping] If player's ping is higher than [ping] for about 20 seconds, he's kicked. However, player who just joined the game and his ping is high for a while is not punished by this feature. Admins are not kicked.
afk Displays inactivity periods (in seconds) of players.
coldsnap_ag [enabled] Coldsnap antiglitching - players trying to c4 switch or glitching into bases are kicked instatly, this feature also protects from a certain server crash that happens when player gets into certain location.
cpu Displays Processor brand string, and operating system version info.
uptime Displays uptime of sapp.dll and operating system.
pl = sv_players
k = sv_kick
b = sv_ban
reset = sv_map_reset
say player_number msg Sends ** SERVER ** message to a given player, if player_number is *, message is sent to all players.
Special sequences:
\n will be replaced with name of player that receives meesage.
\t will be raplaced with name of his team.
\o will be replaced with name of opposite team.
 Examples:
say * "Hi \n"
say 2 "Go to \o \n or ban!"
IP banning
ipban player_number seconds IP of player is banned for a given number of seconds. If seconds = 0 or undefined, ban is permanent
ipban ip_number For instance, ipban 66.66.66.66 60
ipbans List of IP Bananas.
ipunban Unbans IP.
"Naughty" commands
s player_number speed Changes speed of given player, default speed is 1, example: s 1 100
kill player_number Kills given player.
vexit player_number Ejects player from a vehicle.
lag player_number Lag given player.
unlag player_number Unlag given player.
t player_number x y z Teleports player to position (x,y,z). Example: t 3 100.4 34.4 34
t player_number location_name Teleports player to previously added location. Example:
t 3  red_base
t add location_name x y z Adds new location to list. Example:
 add red_base 546.4 3.3 24.3
t del location_name Remove location from list. Example:
t del red_base
t list Lists locations.
Admin management
adminadd player_number allowed_ips Adds player to admin list, admins are identified via their cd-key hashes, for additional security you can give list of ip ranges that admin is allowed to operate from. Admins are not kicked by afk_kick and ping_kick. Example:
adminadd 3 54.0.0.0/24 56.11.0.0/16
admindel index Removes admin with given index.
admins index Displays admin list.
Banning players from using text chat
textban player_number Bans player from using text chat
textunban index Let him use text chat again, use ipbans to get index
textbans List text-bans
Event system
Events were introduced to let server admins customize actions performed by server when something happens. For example, you can enable kick on third TK with the following command:
event_tk 3 'sv_kick $n'
General syntax for adding events is: event_[type] [event condition] 'command'
Here is the list of variables that can be used in event's command line:
$n, $number, $PlayerNumber - PlayerIndex from sv_players
$name - Player's name
$hash - Player's cd-key hash
$ip - Player's ip
$tk - Player's TK count
$kills - Player's kill count
$team - Player's team
Some samples:
event_kill * 'say $n "You have $kills kills, \n!" '
event_kill 2000 'say $n "You are bad cheater $name!;wait 5000;sv_ban $n"'
event_tk 2 'say $n "One more tk and you are banned, \n!"'
event_tk 3 'sa $n "Bye, \n";sv_ban $n;ipban $n'
event_join 'wait 7000;say $n "Welcome \n! Ur ip is $ip and ur hash is $hash"'



PS:Events for coldsnap_ag, ping_kick, and afk_kick will be added when i get more beer.
event_tk tk_count 'command' Event is executed when TK count of any player is equal to tk_count, or on any betray if tk_count is *
event_kill kill_count 'command' Event is executed when kill count of any player is equal to kill_count, or on anykill if kill_count is*
event_join 'command' Event is executed when player joins the server
event_switch_team team command Event executed on player's team change. Examples: event_switch_team red "say $n 'Don't switch to red or ban' "
event_switch_team blue "say $n 'Welcome to blue team' "
events Displays all events
eventdel index Deletes event from queue. Use 'events' to find index
wait n Wait n miliseconds before executing next command
Misc
debug Show halo addresses used by sapp.dll, since version 0.4 none of them are hardcoded, everyting is found during initialization procedure.
anticaps OVERUSING CAPS LOCK IS PUNISHED WITH lowercase text
antihalofp IP trying to connect to the server 3 or more times in a short time period is added to IP banlist.
d player_number Displays some shitty info about player.
beep Beeppp!!!
about :*
+All devmode commands !

player_number refers to player number taken from sv_players list !


Commands are accessible via console:
Console
rcon:
Console

Chat text (place \ before each command)


and init.txt file:
sv_name "Super, pr0, 1337 server"
sv_public 1
sv_maxplayers 4
sv_mapcycle_timeout 1
sv_motd "motd.txt"
sv_rcon_password 666
sv_tk_ban 0
sv_tk_grace 0s
sv_mapcycle_add coldsnap "CTF"
sv_mapcycle_begin

; sapp commands should be placed after sv_mapcycle_begin
load
afk_kick 300
ping_kick 1000
coldsnap_ag 1
ipban 127.0.0.1
antihalofp 1
anticaps 1
event_tk 1 'say $n "One more TK and you are kicked, \n"'
event_tk 2 'sv_kick $n'
event_tk * 'say $n "You are teh n00b, \n"'
event_kill 50 'say $n "Nice aimbot, \n"'
event_kill 500 'say $n "OMG WOW such a great bot , \n! BAN!!!";sv_ban $n'
event_join 'wait 6000;say $n "Hi \n! How are you?"'

Download
File Description
halo_ce_server_app.zip sapp.dll + Patcher (v0.6)