<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.armagetronad.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smart</id>
	<title>Armagetron Advanced - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.armagetronad.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smart"/>
	<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Special:Contributions/Smart"/>
	<updated>2026-10-16T05:06:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39197</id>
		<title>Advanced Racing With race timer/Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39197"/>
		<updated>2012-06-01T17:52:51Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Last updated 1 June 2012&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*  Race Script&lt;br /&gt;
		Includes highscores per map, finish timers, map/cfg rotator, and more&lt;br /&gt;
		Requires a TargetZone as a finish line, winzones will not work&lt;br /&gt;
		If you are not using Rx Hosting your directory needs write permission&lt;br /&gt;
		Made by dukevin (dukevinjduke@gmail.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$save_directory_location = &amp;quot;/home/duke/aa/servers/smart/var/logs/&amp;quot;;   //The directory to save files. Must end with trailing slash&lt;br /&gt;
&lt;br /&gt;
$countdown_secs_after_finish = 30;	//After someone finishes, how many seconds on the timer before the round ends?&lt;br /&gt;
&lt;br /&gt;
$countdown_if_last_player = true; //If only 1 player remaining, start the timer?&lt;br /&gt;
&lt;br /&gt;
$max_time_limit = -1; //start the timer after this many seconds, -1 to disable time limits&lt;br /&gt;
&lt;br /&gt;
$points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1); //points awarded for 1st, 2nd, 3rd, 4th, 5th, etc...&lt;br /&gt;
&lt;br /&gt;
$display_mode = 2; //If set to &amp;quot;1&amp;quot; display a center_message of the map name, 2 for console_message, 3 for both, 0 for no message&lt;br /&gt;
&lt;br /&gt;
$display_prefix = &amp;quot;Current race: 0xffff00&amp;quot;; //When showing the map name, this is appended before it, if $display_mode is 0, this is disabled&lt;br /&gt;
&lt;br /&gt;
$smart_time = true; //If true, the game will determine how many seconds to put on the timer based on previous records instead of using $countdown_secs_after_finish which will be used as the minimum amount of time instead.&lt;br /&gt;
&lt;br /&gt;
$countdown_last_player_extra_time = 0; //If only 1 player remaining, give the last racer this many seconds of extra time to finish. Not needed if $smart_time is true&lt;br /&gt;
&lt;br /&gt;
//Below, inbetween quotes, if you are including maps, put something like: &amp;quot;/path/to/map.aamap.xml&amp;quot;. If you are using cfgs, put &amp;quot;mycfg.cfg&amp;quot; &lt;br /&gt;
$includes = array(&amp;quot;Default.cfg&amp;quot;,&amp;quot;100Watts.cfg&amp;quot;,&amp;quot;Aflac.cfg&amp;quot;,&amp;quot;AnimusonConfusion.cfg&amp;quot;,&amp;quot;Aoi.cfg&amp;quot;,&amp;quot;ApplePie.cfg&amp;quot;,&amp;quot;AQuickExplosion.cfg&amp;quot;,&amp;quot;Arco.cfg&amp;quot;,&amp;quot;AroundandAround.cfg&amp;quot;,&amp;quot;AroundTheHorn.cfg&amp;quot;,&amp;quot;Arsenal.cfg&amp;quot;,&amp;quot;AtlanticCharter.cfg&amp;quot;,&amp;quot;Axe.cfg&amp;quot;,&amp;quot;BatPigBear.cfg&amp;quot;,&amp;quot;BenignRevolution.cfg&amp;quot;,&amp;quot;Berlin.cfg&amp;quot;,&amp;quot;BlazingParadise.cfg&amp;quot;,&amp;quot;BloodyHell.cfg&amp;quot;,&amp;quot;Broken.cfg&amp;quot;,&amp;quot;Buffalo.cfg&amp;quot;,&amp;quot;CandyBar.cfg&amp;quot;,&amp;quot;Cell.cfg&amp;quot;,&amp;quot;Charriot.cfg&amp;quot;,&amp;quot;Cherrio.cfg&amp;quot;,&amp;quot;Chicken.cfg&amp;quot;,&amp;quot;Chihuahua.cfg&amp;quot;,&amp;quot;Claw.cfg&amp;quot;,&amp;quot;Colombo.cfg&amp;quot;,&amp;quot;Compact.cfg&amp;quot;,&amp;quot;Croma.cfg&amp;quot;,&amp;quot;DeathOctagon.cfg&amp;quot;,&amp;quot;DeathTrap.cfg&amp;quot;,&amp;quot;Disastro.cfg&amp;quot;,&amp;quot;Divided.cfg&amp;quot;,&amp;quot;Dizzy.cfg&amp;quot;,&amp;quot;DontFlinch.cfg&amp;quot;,&amp;quot;Dragrace.cfg&amp;quot;,&amp;quot;Eighty.cfg&amp;quot;,&amp;quot;FirePalace.cfg&amp;quot;,&amp;quot;Fobia.cfg&amp;quot;,&amp;quot;Four.cfg&amp;quot;,&amp;quot;Flex.cfg&amp;quot;,&amp;quot;FrizzleFraz.cfg&amp;quot;,&amp;quot;Glacier.cfg&amp;quot;,&amp;quot;Guitar.cfg&amp;quot;,&amp;quot;Handgrip.cfg&amp;quot;,&amp;quot;Holiday.cfg&amp;quot;,&amp;quot;Hurricania.cfg&amp;quot;,&amp;quot;Hyperpod.cfg&amp;quot;,&amp;quot;Illusion.cfg&amp;quot;,&amp;quot;Insanity.cfg&amp;quot;,&amp;quot;ItsABug.cfg&amp;quot;,&amp;quot;JailBreak.cfg&amp;quot;,&amp;quot;Jelly.cfg&amp;quot;,&amp;quot;Jester.cfg&amp;quot;,&amp;quot;KirbyDance.cfg&amp;quot;,&amp;quot;LetsDance.cfg&amp;quot;,&amp;quot;Lava.cfg&amp;quot;,&amp;quot;lol.cfg&amp;quot;,&amp;quot;Luigi.cfg&amp;quot;,&amp;quot;Marathon.cfg&amp;quot;,&amp;quot;Margarita.cfg&amp;quot;,&amp;quot;Mario.cfg&amp;quot;,&amp;quot;Mint.cfg&amp;quot;,&amp;quot;Moon.cfg&amp;quot;,&amp;quot;MovinOnUp.cfg&amp;quot;,&amp;quot;MrRoboto.cfg&amp;quot;,&amp;quot;Mutant.cfg&amp;quot;,&amp;quot;Nebraska.cfg&amp;quot;,&amp;quot;Nova.cfg&amp;quot;,&amp;quot;OctaGone2Death.cfg&amp;quot;,&amp;quot;Octarace.cfg&amp;quot;,&amp;quot;One.cfg&amp;quot;,&amp;quot;OnePathv2.cfg&amp;quot;,&amp;quot;Organius.cfg&amp;quot;,&amp;quot;Paura.cfg&amp;quot;,&amp;quot;PewPew.cfg&amp;quot;,&amp;quot;PillsburyDrummerboy.cfg&amp;quot;,&amp;quot;Pirata.cfg&amp;quot;,&amp;quot;PointOfNoReturn.cfg&amp;quot;,&amp;quot;Pow.cfg&amp;quot;,&amp;quot;PureRacingTorture.cfg&amp;quot;,&amp;quot;RacersOnYourMark.cfg&amp;quot;,&amp;quot;RatTunnels.cfg&amp;quot;,&amp;quot;Resurrection.cfg&amp;quot;,&amp;quot;RoadLessTraveled.cfg&amp;quot;,&amp;quot;Roundabout.cfg&amp;quot;,&amp;quot;Seven.cfg&amp;quot;,&amp;quot;Shield.cfg&amp;quot;,&amp;quot;ShoppingMall.cfg&amp;quot;,&amp;quot;SidebySide.cfg&amp;quot;,&amp;quot;Six.cfg&amp;quot;,&amp;quot;SmallSpaces.cfg&amp;quot;,&amp;quot;Spiral.cfg&amp;quot;,&amp;quot;SpiralHam.cfg&amp;quot;,&amp;quot;SquareRoot.cfg&amp;quot;,&amp;quot;Stardome.cfg&amp;quot;,&amp;quot;Sun.cfg&amp;quot;,&amp;quot;Symmetry.cfg&amp;quot;,&amp;quot;TannersBigTronDaddy.cfg&amp;quot;,&amp;quot;TheMachine.cfg&amp;quot;,&amp;quot;TheRoadNotTaken.cfg&amp;quot;,&amp;quot;Three.cfg&amp;quot;,&amp;quot;TikiTime.cfg&amp;quot;,&amp;quot;TortureChamber.cfg&amp;quot;,&amp;quot;Trijecture.cfg&amp;quot;,&amp;quot;Trucco.cfg&amp;quot;,&amp;quot;TurnAround.cfg&amp;quot;,&amp;quot;Two.cfg&amp;quot;,&amp;quot;Unfortunate.cfg&amp;quot;,&amp;quot;Verta.cfg&amp;quot;,&amp;quot;Verta2.cfg&amp;quot;,&amp;quot;Voltrobe.cfg&amp;quot;,&amp;quot;What.cfg&amp;quot;,&amp;quot;WhatTheHECK.cfg&amp;quot;,&amp;quot;Wrapper.cfg&amp;quot;,&amp;quot;XploderPro.cfg&amp;quot;,&amp;quot;Zero.cfg&amp;quot;,&amp;quot;ZigZag.cfg&amp;quot;,&amp;quot;ZigZagZaney.cfg&amp;quot;,&amp;quot;Zipper.cfg&amp;quot;,&amp;quot;Zone4.cfg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$rotate_mode = 2; //Set to 1 for simple random, 2 to play each map in order, 3 to randomly pick a map that hasn&#039;t been picked yet.&lt;br /&gt;
&lt;br /&gt;
$num_map_plays = 2; //play each map how many times before switching to next map&lt;br /&gt;
&lt;br /&gt;
$zombie_win = false;  //Does the winner get a zombie? (adjust zombie_zone_speed to fit your liking)&lt;br /&gt;
&lt;br /&gt;
$precision = 3; //How many decimal places to show times? A value of 3 shows X.xxx, 2 shows X.xx.  5 is max. &lt;br /&gt;
&lt;br /&gt;
/*===================== End of customization options =============================*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$reccomended_settings = array(&amp;quot;target_initial_score 0&amp;quot;, &amp;quot;sp_game_type 0&amp;quot;, &amp;quot;game_type 0&amp;quot;, &amp;quot;sp_finish_type 0&amp;quot;, &amp;quot;finish_type 0&amp;quot;, &amp;quot;sp_num_ais 0&amp;quot;, &amp;quot;num_ais 0&amp;quot;, &amp;quot;shot_seek_update_time 0.1&amp;quot;, &amp;quot;ladderlog_write_all 1|1&amp;quot;);  //these settings should be set for racing mode and is run every round&lt;br /&gt;
&lt;br /&gt;
class Player&lt;br /&gt;
{&lt;br /&gt;
	var $name;&lt;br /&gt;
	var $pname;&lt;br /&gt;
	var $place;&lt;br /&gt;
	var $finish_time;&lt;br /&gt;
	var $best_time;&lt;br /&gt;
	var $num_plays;&lt;br /&gt;
	function __construct($name) &lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;name = $name;&lt;br /&gt;
		$this-&amp;gt;read();&lt;br /&gt;
		if(empty($this-&amp;gt;num_plays)) $this-&amp;gt;num_plays = 0;&lt;br /&gt;
	}&lt;br /&gt;
	function read()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $precision;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		foreach($lines as $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);  //time name num_plays&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;best_time = round($pieces[0], $precision);&lt;br /&gt;
				$this-&amp;gt;num_plays = $pieces[2];&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	function write()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $current_inc;&lt;br /&gt;
		$found = false;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xff7777Warning: 0xffffffFile &#039;$current_inc.txt&#039; not found, file creation may have failed. Retrying...&amp;quot;);&lt;br /&gt;
			$fp = fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			$pieces[1] = trim($pieces[1]);&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$lines[$i] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
				$found = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!$found)&lt;br /&gt;
		{&lt;br /&gt;
			$lines[] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		sort(&amp;amp;$lines, SORT_NUMERIC);&lt;br /&gt;
		file_put_contents($file, $lines);&lt;br /&gt;
		fclose($fp);&lt;br /&gt;
	}&lt;br /&gt;
	function finished($time, $place)&lt;br /&gt;
	{&lt;br /&gt;
		global $points, $players, $current_inc, $precision, $file;&lt;br /&gt;
		$this-&amp;gt;num_plays++;&lt;br /&gt;
		$time = round($time,$precision);&lt;br /&gt;
		$this-&amp;gt;finish_time = $time;&lt;br /&gt;
		$this-&amp;gt;place = $place;&lt;br /&gt;
		$sufx = suffix($place);&lt;br /&gt;
		$score = $points[$place-1];&lt;br /&gt;
		if(empty($score)) $score = 0;&lt;br /&gt;
		if($place &amp;gt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
			{&lt;br /&gt;
				if($p-&amp;gt;place == 1)&lt;br /&gt;
				{&lt;br /&gt;
					$first = $p-&amp;gt;finish_time;&lt;br /&gt;
					$difference = &amp;quot; 0xffffff(&amp;quot; . round($this-&amp;gt;finish_time - $p-&amp;gt;finish_time,$precision) . &amp;quot; s behind 1st)&amp;quot;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
			$difference = &amp;quot;&amp;quot;;&lt;br /&gt;
		c(&amp;quot;0x55ccff &amp;gt; 0xffff99$this-&amp;gt;pname 0x55ccfffinished $place$sufx in 0xffff99$time 0x55ccffseconds.$difference 0x808080+{$score} pts&amp;quot;);&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;gt;= $this-&amp;gt;best_time &amp;amp;&amp;amp; !empty($this-&amp;gt;best_time)) //took longer than alltime best&lt;br /&gt;
		{&lt;br /&gt;
			pm($this-&amp;gt;name, &amp;quot;    0xaaaaffYour all-time best on 0xddddff{$current_inc}0xaaaaff is 0xffffff{$this-&amp;gt;best_time} 0xaaaaffs, you are 0xffffff&amp;quot;. round($this-&amp;gt;finish_time - $this-&amp;gt;best_time, $precision).&amp;quot; 0xaaaaffs 0xff7777slower0xaaaaff.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;lt; $this-&amp;gt;best_time || empty($this-&amp;gt;best_time))&lt;br /&gt;
		{&lt;br /&gt;
			if(!empty($this-&amp;gt;best_time)) $oldrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			$this-&amp;gt;write();&lt;br /&gt;
			$newrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			if(empty($this-&amp;gt;best_time)) &lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaffThis is your first time finishing 0xddddff{$current_inc}0xaaaaff!&amp;quot;);&lt;br /&gt;
			else pm($this-&amp;gt;name, &amp;quot;  0x3388ff* 0x55ff88New personal record! You improved 0xffffff&amp;quot; . round($this-&amp;gt;best_time - $this-&amp;gt;finish_time,$precision) . &amp;quot;0x55ff88 s raising 0xffffff&amp;quot;. ($oldrank - $newrank) .&amp;quot; 0x55ff88ranks!&amp;quot;);&lt;br /&gt;
			if($newrank == 1) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffd700Congratulate 0xffffff$this-&amp;gt;name 0xffd700for setting a new record on 0xffddaa$current_inc 0xffd700as the fastest time ever!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else if($newrank == 2) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xc0c0c0just ranked as the 0xffffff2nd 0xc0c0c0fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*\n&amp;quot;);&lt;br /&gt;
			else if($newrank == 3) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xcd7f32just ranked as the 0xffcc003rd 0xcd7f32fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;     0xaaaaaaYou are now rank 0xffffff$newrank 0xaaaaaaof &amp;quot;.(count(file($file))).&amp;quot; as the fastest time for 0xcccccc{$current_inc}0xaaaaaa!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;add_score_player $this-&amp;gt;name &amp;quot; . $score . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
$players = array();&lt;br /&gt;
$finished = 0;&lt;br /&gt;
$i=0;&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
	$line = rtrim(fgets(STDIN, 1024));&lt;br /&gt;
	if(preg_match(&amp;quot;/^CYCLE_CREATED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;,$line);&lt;br /&gt;
		$name = $split[1];&lt;br /&gt;
		if(getObject($name) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$num_racers++;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if(strstr($name,&amp;quot;\&amp;quot;&amp;quot;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0x000000 ! 0xffff00 $name is not allowed to use the characters 0xffffff« or \&amp;quot; 0xffff00 in their name.&amp;quot;);&lt;br /&gt;
			$clean = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;_&amp;quot;,$name);&lt;br /&gt;
			$wo = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$name);&lt;br /&gt;
			echo &amp;quot;rename $wo $clean \n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;rename $name $clean \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		$players[$i] = new Player($split[1]);&lt;br /&gt;
		if(isset($pretty))&lt;br /&gt;
		{&lt;br /&gt;
			for($x = 0; $x &amp;lt; sizeof($pretty); $x++)&lt;br /&gt;
			{&lt;br /&gt;
				$crack = explode(&amp;quot;*%$&amp;quot;, $pretty[$x]);&lt;br /&gt;
				if($crack[0] == $players[$i]-&amp;gt;name)&lt;br /&gt;
					$players[$i]-&amp;gt;pname = trim($crack[1]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!isset($players[$i]-&amp;gt;pname))&lt;br /&gt;
			$players[$i]-&amp;gt;pname = $players[$i]-&amp;gt;name;&lt;br /&gt;
		if($i == 0)&lt;br /&gt;
		{&lt;br /&gt;
			$xPos = $split[2];&lt;br /&gt;
			$yPos = $split[3];&lt;br /&gt;
		}&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) $rank = filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
		$sufx = suffix($rank);&lt;br /&gt;
		pm($players[$i]-&amp;gt;name, &amp;quot;0x808080Top 3 times for $current_inc:&amp;quot;);&lt;br /&gt;
		filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 3, true);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			$remind = &amp;quot;0x808080(Maybe because you&#039;re logged out?)&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			$remind = null;&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYour best time for $current_inc is 0xffffff{$players[$i]-&amp;gt;best_time}0x99ddff s ranking 0xffffff$rank{$sufx}0x99ddff of &amp;quot;.count(file($file)).&amp;quot;.&amp;quot;);&lt;br /&gt;
		if(empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYou have never won 0xcccccc$current_inc 0x99ddffbefore. $remind&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
		$i++;&lt;br /&gt;
		$num_racers = $i;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_ENTERED/&amp;quot;, $line))&lt;br /&gt;
	{   &lt;br /&gt;
		//PLAYER_ENTERED rx&amp;quot;dukevin 76.174.69.46 Rx«dukevin&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[1] . &amp;quot;*%$&amp;quot; . $split[3] . &amp;quot; &amp;quot; . $split[4] . &amp;quot; &amp;quot; . $split[5];&lt;br /&gt;
		$pretty = array_slice($pretty,sizeof($pretty)-40,40);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_RENAMED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[2] . &amp;quot;*%$&amp;quot; . $split[5] . &amp;quot; &amp;quot; . $split[6] . &amp;quot; &amp;quot; . $split[7];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_COMMENCING/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		foreach($reccomended_settings as $s)&lt;br /&gt;
			echo &amp;quot;$s \n&amp;quot;;&lt;br /&gt;
		unset($players);&lt;br /&gt;
		$finished = 0;&lt;br /&gt;
		$num_racers = 0;&lt;br /&gt;
		$a_player_finished = false;&lt;br /&gt;
		$i = 0;&lt;br /&gt;
		if(empty($num_plays)) $num_plays = 0;&lt;br /&gt;
		$num_plays++;&lt;br /&gt;
		if($num_plays &amp;gt;= $num_map_plays)&lt;br /&gt;
		{&lt;br /&gt;
			$pick = pickmap($includes, $rotate_mode);&lt;br /&gt;
			$num_plays = 0;&lt;br /&gt;
		}&lt;br /&gt;
		$current_inc = retrieve($pick);&lt;br /&gt;
		c(&amp;quot;Reading $current_inc.txt...&amp;quot;);&lt;br /&gt;
		switch($display_mode)&lt;br /&gt;
		{&lt;br /&gt;
			case 3:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
			case 2:&lt;br /&gt;
				echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
				break;&lt;br /&gt;
			case 1:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$file = &amp;quot;$save_directory_location&amp;quot; . &amp;quot;$current_inc&amp;quot; . &amp;quot;.txt&amp;quot;;&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffff$current_inc.txt not found, creating it...&amp;quot;);&lt;br /&gt;
			fopen($file, &#039;w&#039;);&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			if(!file_exists($file))&lt;br /&gt;
				c(&amp;quot;0xff7777Warning: 0xffffffFile creation failed, scores cannot be saved! Does your directory have write permission?&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($smart_time)&lt;br /&gt;
			$countdown_secs_after_finish = smart_time($countdown_secs_after_finish);&lt;br /&gt;
		echo &amp;quot;target_survive_time &amp;quot; . ($countdown_secs_after_finish+1) .&amp;quot;\n&amp;quot;;&lt;br /&gt;
		if(mt_rand(0,7)==7) c(&amp;quot;0x808080You can type /stats &amp;lt;name&amp;gt; &amp;lt;optional amount&amp;gt; to view high scores for maps.&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line) || preg_match(&amp;quot;/^ROUND_SCORE/&amp;quot;,$line))&lt;br /&gt;
	{&lt;br /&gt;
		if($finished == 0 || $a_player_finished == true)&lt;br /&gt;
			goto end;&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line))&lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;spawn_zone win $split[3] $split[4] 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
		}&lt;br /&gt;
		sleep(1);&lt;br /&gt;
		if(!empty($split[6])) echo &amp;quot;center_message Winner: {$split[6]}\n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;collapse_zone\n&amp;quot;;&lt;br /&gt;
		if(empty($split[6]))&lt;br /&gt;
			echo &amp;quot;spawn_zone win $xPos $yPos 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
		$a_player_finished = true;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^INVALID_COMMAND/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		//INVALID_COMMAND /cast rx&amp;quot;dukevin 76.174.69.46 accesslevel argument 50&lt;br /&gt;
		if($split[1] == &amp;quot;/stats&amp;quot; || $split[1] == &amp;quot;/s&amp;quot;|| $split[1] == &amp;quot;/search&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			if(empty($split[6]) || !isset($split[6])) $split[6] = 3;&lt;br /&gt;
			if(empty($split[5]) || !isset($split[5]))&lt;br /&gt;
				$split[5] = $split[2];&lt;br /&gt;
			search($obj, $split[5], $split[6]);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/version&amp;quot; || $split[1] == &amp;quot;/v&amp;quot; || $split[1] == &amp;quot;/ver&amp;quot; || $split[1] == &amp;quot;/vers&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			version($obj);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/debug&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;Number of maps rotating: &amp;quot; . count($includes));&lt;br /&gt;
			pm($split[2], &amp;quot;Number pnames in memory: &amp;quot; . count($pretty));&lt;br /&gt;
			pm($split[2], &amp;quot;Player Objects:&amp;quot;);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				pm($split[2], &amp;quot;$p-&amp;gt;name&amp;quot;);			&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;0xff7777Invalid command, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_PLAYER_ENTER/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		//TARGETZONE_PLAYER_ENTER 2 zonename 100 100 dukevin 90.8824 103.506 1 0 37.6366&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$name = $split[5];&lt;br /&gt;
		$time = $split[10];&lt;br /&gt;
		$obj = getObject($name);&lt;br /&gt;
		if(!method_exists($obj,&#039;finished&#039;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffffNo object to operate on, perhaps you just loaded scripts?&amp;quot;);&lt;br /&gt;
			echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;kill $name\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if($obj-&amp;gt;finish_time &amp;gt; 0) //already hit the finish line&lt;br /&gt;
			goto end;&lt;br /&gt;
		$finished++;&lt;br /&gt;
		$obj-&amp;gt;finished($time, $finished);&lt;br /&gt;
		$num_racers--;&lt;br /&gt;
		if($zombie_win) zombieplz($split[5], $split[6], $split[7]);&lt;br /&gt;
		@clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish);&lt;br /&gt;
		if($num_racers &amp;lt;= 0)&lt;br /&gt;
			echo &amp;quot;target_survive_time &amp;quot; . 1 .&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^GAME_TIME/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		@clock(&amp;quot;tick&amp;quot;);&lt;br /&gt;
		if($max_time_limit &amp;lt;= 0)&lt;br /&gt;
			goto end;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			if($split[1] == $max_time_limit)&lt;br /&gt;
				clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^DEATH_FRAG|DEATH_SUICIDE|PLAYER_KILLED|DEATH_SHOT_FRAG|DEATH_DEATHZONE|DEATH_SHOT_SUICIDE|DEATH_TEAMKILL|DEATH_SHOT_TEAMKILL|DEATH_ZOMBIEZONE|DEATH_DEATHSHOT|DEATH_SELF_DESTRUCT/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(empty(getObject($split[1])-&amp;gt;finish_time))&lt;br /&gt;
			$num_racers--;&lt;br /&gt;
		if(sizeof($players) &amp;lt;= 1) //if only 1 player, don&#039;t start the timer&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($countdown_if_last_player == false) //don&#039;t start the timer if user doesn&#039;t want it&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($num_racers &amp;lt;= 1)&lt;br /&gt;
		{&lt;br /&gt;
			if(@clock(&amp;quot;getState&amp;quot;) == &amp;quot;active&amp;quot; &amp;amp;&amp;amp; (empty(getObject($split[1])-&amp;gt;finish_time))) //only winner alive, last racer died &amp;amp;&amp;amp;racer not finish&lt;br /&gt;
			{&lt;br /&gt;
				echo &amp;quot;spawn_zone win $xPos $yPos 1000000 100000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
				@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			if($num_racers != 0) clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish + $countdown_last_player_extra_time, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_WINNER/&amp;quot;, $line))&lt;br /&gt;
		foreach($players as $p)&lt;br /&gt;
		{&lt;br /&gt;
			if(!(strstr($p-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
				pm($p-&amp;gt;name, &amp;quot;0xffddaaYou should /login to protect your times!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
end:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clock($action, $duration, $options)&lt;br /&gt;
{&lt;br /&gt;
	static $state, $time, $options;&lt;br /&gt;
	if($action == &amp;quot;start&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;active&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$state = &amp;quot;active&amp;quot;;&lt;br /&gt;
		$time = $duration;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;stop&amp;quot; || $state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
		$options = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;tick&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$time--;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
		if(empty($time) || $time &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			if($options = &amp;quot;kill&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				global $players;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					echo &amp;quot;kill $p-&amp;gt;name \n&amp;quot;;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
			$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;getState&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		return $state;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function filetee($search, $requester, $amount = 3, $display_top = false, $onlyrank = false)&lt;br /&gt;
{&lt;br /&gt;
	global $file;&lt;br /&gt;
	$found = false;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
	{&lt;br /&gt;
		$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pieces[1] = trim($pieces[1]);&lt;br /&gt;
		if($pieces[1] == $search) &lt;br /&gt;
		{	&lt;br /&gt;
			$found = true;&lt;br /&gt;
			if($onlyrank) return $i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($display_top) $i = 0;&lt;br /&gt;
	if($amount &amp;gt; 150) $amount = 150;&lt;br /&gt;
	if($amount %2 == 0) $amount += 1;&lt;br /&gt;
	$amount = floor($amount/2);&lt;br /&gt;
	if($i == 0 || $i == sizeof($lines)-1) //display an extra entry for 1st and last place&lt;br /&gt;
		$amount += 1;&lt;br /&gt;
	if($found == false &amp;amp;&amp;amp; $display_top == false)&lt;br /&gt;
		return false;&lt;br /&gt;
	for($x = $i-$amount; $x &amp;lt;= $i+$amount; $x++)&lt;br /&gt;
	{&lt;br /&gt;
		$cut = explode(&amp;quot; &amp;quot;, $lines[$x]);&lt;br /&gt;
		$color = ($cut[1] == $search) ? &#039;0xffff88&#039; : &#039;0xcccccc&#039;;&lt;br /&gt;
		if(!empty($cut[0])) pm($requester, $color . ($x+1) . &amp;quot;) $cut[0] - $cut[1]&amp;quot;);&lt;br /&gt;
		usleep(20000);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function suffix($number)&lt;br /&gt;
{&lt;br /&gt;
	$n = (string)$number;&lt;br /&gt;
    $n = $n[strlen($n)-1];&lt;br /&gt;
	if($n == 1) $sufx = &amp;quot;st&amp;quot;;&lt;br /&gt;
	elseif($n == 2) $sufx = &amp;quot;nd&amp;quot;;&lt;br /&gt;
	elseif($n == 3) $sufx = &amp;quot;rd&amp;quot;;&lt;br /&gt;
	else $sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	if($number == 11 || $number == 12 || $number == 13) //english is weird&lt;br /&gt;
		$sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	return $sufx;&lt;br /&gt;
}&lt;br /&gt;
function retrieve($mapname)&lt;br /&gt;
{&lt;br /&gt;
	$type = explode(&amp;quot;.&amp;quot;, $mapname);&lt;br /&gt;
	if($type[sizeof($type)-1] == &amp;quot;xml&amp;quot;) $head = &amp;quot;MAP_FILE&amp;quot;;&lt;br /&gt;
	elseif($type[sizeof($type)-1] == &amp;quot;cfg&amp;quot;) $head = &amp;quot;INCLUDE&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$tail = $mapname;&lt;br /&gt;
	echo $head . &amp;quot; &amp;quot; . $tail . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$cut = explode(&amp;quot;/&amp;quot;, $tail);&lt;br /&gt;
	$split = explode(&amp;quot;.&amp;quot;, $cut[sizeof($cut)-1]);&lt;br /&gt;
	foreach($split as $element)&lt;br /&gt;
	{&lt;br /&gt;
		if($element == &amp;quot;aamap&amp;quot; || $element == &amp;quot;xml&amp;quot; || $element == &amp;quot;cfg&amp;quot;)&lt;br /&gt;
			unset($element);&lt;br /&gt;
		$current_inc .= $element;&lt;br /&gt;
	}&lt;br /&gt;
	$cut = explode(&amp;quot;-&amp;quot;, $current_inc);&lt;br /&gt;
	$current_inc = trim($cut[0]);&lt;br /&gt;
	if(empty($current_inc)) c(&amp;quot;0xff7777Warning: 0xffffffUnable to retrieve current map name.&amp;quot;);&lt;br /&gt;
	return empty($current_inc) ? &amp;quot;null&amp;quot; : $current_inc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zombieplz($name, $x, $y)&lt;br /&gt;
{&lt;br /&gt;
	echo &amp;quot;spawn_zone zombieOwner $name $name $x $y 1 0 0 0 false\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function c($string){&lt;br /&gt;
	echo &amp;quot;console_message $string \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function pm($name, $string){&lt;br /&gt;
	echo &amp;quot;player_message {$name} \&amp;quot;{$string}\&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function getObject($name)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;name == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
function pickmap($includes, $rotate_mode)&lt;br /&gt;
{&lt;br /&gt;
	static $i;&lt;br /&gt;
	if($rotate_mode == 1)&lt;br /&gt;
		return $includes[mt_rand(0, sizeof($includes)-1)];&lt;br /&gt;
	if($rotate_mode == 2)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
	if($rotate_mode == 3)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		if($i == 0) shuffle($includes);&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function smart_time($countdown_secs_after_finish)&lt;br /&gt;
{&lt;br /&gt;
	global $file, $current_inc;&lt;br /&gt;
	static $initial_countdown_secs;&lt;br /&gt;
	if(empty($initial_countdown_secs)) $initial_countdown_secs = $countdown_secs_after_finish;&lt;br /&gt;
	if($initial_countdown_secs &amp;lt; 100)&lt;br /&gt;
		$MAX_TIME = 75; //smart time will not allow more than 75 secs&lt;br /&gt;
	else&lt;br /&gt;
		$MAX_TIME = $initial_countdown_secs * 1.3;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	if(!file_exists($file))	return $initial_countdown_secs;&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[0]);&lt;br /&gt;
	$hs = $split[0];&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[1]);&lt;br /&gt;
	$hs2nd = $split[0];&lt;br /&gt;
	if(empty($hs)) return 60;&lt;br /&gt;
	&lt;br /&gt;
	if($hs*1.3 &amp;lt; $initial_countdown_secs) return $initial_countdown_secs;&lt;br /&gt;
	if(empty($hs2nd)) return $hs * 2 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*2);&lt;br /&gt;
	if(($hs2nd - $hs) &amp;gt; 8) $hs = $hs2nd;&lt;br /&gt;
	return $hs * 1.3 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*1.3);&lt;br /&gt;
}&lt;br /&gt;
function search($me, $search, $amount = 3)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	$count = 0;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $search || $p-&amp;gt;name == $search)&lt;br /&gt;
		{&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
			$count = 1;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		if(stripos(&amp;quot;{$p-&amp;gt;pname}&amp;quot;,&amp;quot;$search&amp;quot;) !== false || stripos(&amp;quot;{$p-&amp;gt;name}&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$count++;&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($count &amp;gt; 1)&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;More than one player containing &#039;$search&#039;, using $found.&amp;quot;);&lt;br /&gt;
	if(empty($count))&lt;br /&gt;
	{&lt;br /&gt;
		if(filetee($search, $me-&amp;gt;name, $amount, false, false) == false)&lt;br /&gt;
		{&lt;br /&gt;
			global $file;&lt;br /&gt;
			$lines = file($file);&lt;br /&gt;
			foreach($lines as $line)&lt;br /&gt;
			{&lt;br /&gt;
				$pieces = explode(&amp;quot; &amp;quot;, $line); &lt;br /&gt;
				if(stripos(&amp;quot;$pieces[1]&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
				{&lt;br /&gt;
					$found = $pieces[1];&lt;br /&gt;
					$count++;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(empty($found) || empty($count) || filetee($found, $me-&amp;gt;name, -2, false, false) === false)&lt;br /&gt;
	{&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;No times found for player: $search&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	filetee($found, $me-&amp;gt;name, $amount, false, false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function version($me)&lt;br /&gt;
{&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Script programming by 0xffffffdukevin&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Email at 0xffffffdukevinjduke@gmail.com0xffff00 for suggestions, comments&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Made for smart&#039;s server&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
known bugs:&lt;br /&gt;
-/stats on rank 1 display twise&lt;br /&gt;
-respawn breaks script&lt;br /&gt;
+fixed: you should login to protect your times not showing&lt;br /&gt;
-times showed twise if time run out -&amp;gt; instead make all score things shown before round_Commencing?&lt;br /&gt;
- $me-&amp;gt;num_plays doesn&#039;t incriment unless you beat your time //because it doesn&#039;t write&lt;br /&gt;
+ fixed x of y&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39196</id>
		<title>Advanced Racing With race timer/Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39196"/>
		<updated>2012-06-01T17:51:42Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#!/usr/bin/php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*  Race Script&lt;br /&gt;
		Includes highscores per map, finish timers, map/cfg rotator, and more&lt;br /&gt;
		Requires a TargetZone as a finish line, winzones will not work&lt;br /&gt;
		If you are not using Rx Hosting your directory needs write permission&lt;br /&gt;
		Made by dukevin (dukevinjduke@gmail.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$save_directory_location = &amp;quot;/home/duke/aa/servers/smart/var/logs/&amp;quot;;   //The directory to save files. Must end with trailing slash&lt;br /&gt;
&lt;br /&gt;
$countdown_secs_after_finish = 30;	//After someone finishes, how many seconds on the timer before the round ends?&lt;br /&gt;
&lt;br /&gt;
$countdown_if_last_player = true; //If only 1 player remaining, start the timer?&lt;br /&gt;
&lt;br /&gt;
$max_time_limit = -1; //start the timer after this many seconds, -1 to disable time limits&lt;br /&gt;
&lt;br /&gt;
$points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1); //points awarded for 1st, 2nd, 3rd, 4th, 5th, etc...&lt;br /&gt;
&lt;br /&gt;
$display_mode = 2; //If set to &amp;quot;1&amp;quot; display a center_message of the map name, 2 for console_message, 3 for both, 0 for no message&lt;br /&gt;
&lt;br /&gt;
$display_prefix = &amp;quot;Current race: 0xffff00&amp;quot;; //When showing the map name, this is appended before it, if $display_mode is 0, this is disabled&lt;br /&gt;
&lt;br /&gt;
$smart_time = true; //If true, the game will determine how many seconds to put on the timer based on previous records instead of using $countdown_secs_after_finish which will be used as the minimum amount of time instead.&lt;br /&gt;
&lt;br /&gt;
$countdown_last_player_extra_time = 0; //If only 1 player remaining, give the last racer this many seconds of extra time to finish. Not needed if $smart_time is true&lt;br /&gt;
&lt;br /&gt;
//Below, inbetween quotes, if you are including maps, put something like: &amp;quot;/path/to/map.aamap.xml&amp;quot;. If you are using cfgs, put &amp;quot;mycfg.cfg&amp;quot; &lt;br /&gt;
$includes = array(&amp;quot;Default.cfg&amp;quot;,&amp;quot;100Watts.cfg&amp;quot;,&amp;quot;Aflac.cfg&amp;quot;,&amp;quot;AnimusonConfusion.cfg&amp;quot;,&amp;quot;Aoi.cfg&amp;quot;,&amp;quot;ApplePie.cfg&amp;quot;,&amp;quot;AQuickExplosion.cfg&amp;quot;,&amp;quot;Arco.cfg&amp;quot;,&amp;quot;AroundandAround.cfg&amp;quot;,&amp;quot;AroundTheHorn.cfg&amp;quot;,&amp;quot;Arsenal.cfg&amp;quot;,&amp;quot;AtlanticCharter.cfg&amp;quot;,&amp;quot;Axe.cfg&amp;quot;,&amp;quot;BatPigBear.cfg&amp;quot;,&amp;quot;BenignRevolution.cfg&amp;quot;,&amp;quot;Berlin.cfg&amp;quot;,&amp;quot;BlazingParadise.cfg&amp;quot;,&amp;quot;BloodyHell.cfg&amp;quot;,&amp;quot;Broken.cfg&amp;quot;,&amp;quot;Buffalo.cfg&amp;quot;,&amp;quot;CandyBar.cfg&amp;quot;,&amp;quot;Cell.cfg&amp;quot;,&amp;quot;Charriot.cfg&amp;quot;,&amp;quot;Cherrio.cfg&amp;quot;,&amp;quot;Chicken.cfg&amp;quot;,&amp;quot;Chihuahua.cfg&amp;quot;,&amp;quot;Claw.cfg&amp;quot;,&amp;quot;Colombo.cfg&amp;quot;,&amp;quot;Compact.cfg&amp;quot;,&amp;quot;Croma.cfg&amp;quot;,&amp;quot;DeathOctagon.cfg&amp;quot;,&amp;quot;DeathTrap.cfg&amp;quot;,&amp;quot;Disastro.cfg&amp;quot;,&amp;quot;Divided.cfg&amp;quot;,&amp;quot;Dizzy.cfg&amp;quot;,&amp;quot;DontFlinch.cfg&amp;quot;,&amp;quot;Dragrace.cfg&amp;quot;,&amp;quot;Eighty.cfg&amp;quot;,&amp;quot;FirePalace.cfg&amp;quot;,&amp;quot;Fobia.cfg&amp;quot;,&amp;quot;Four.cfg&amp;quot;,&amp;quot;Flex.cfg&amp;quot;,&amp;quot;FrizzleFraz.cfg&amp;quot;,&amp;quot;Glacier.cfg&amp;quot;,&amp;quot;Guitar.cfg&amp;quot;,&amp;quot;Handgrip.cfg&amp;quot;,&amp;quot;Holiday.cfg&amp;quot;,&amp;quot;Hurricania.cfg&amp;quot;,&amp;quot;Hyperpod.cfg&amp;quot;,&amp;quot;Illusion.cfg&amp;quot;,&amp;quot;Insanity.cfg&amp;quot;,&amp;quot;ItsABug.cfg&amp;quot;,&amp;quot;JailBreak.cfg&amp;quot;,&amp;quot;Jelly.cfg&amp;quot;,&amp;quot;Jester.cfg&amp;quot;,&amp;quot;KirbyDance.cfg&amp;quot;,&amp;quot;LetsDance.cfg&amp;quot;,&amp;quot;Lava.cfg&amp;quot;,&amp;quot;lol.cfg&amp;quot;,&amp;quot;Luigi.cfg&amp;quot;,&amp;quot;Marathon.cfg&amp;quot;,&amp;quot;Margarita.cfg&amp;quot;,&amp;quot;Mario.cfg&amp;quot;,&amp;quot;Mint.cfg&amp;quot;,&amp;quot;Moon.cfg&amp;quot;,&amp;quot;MovinOnUp.cfg&amp;quot;,&amp;quot;MrRoboto.cfg&amp;quot;,&amp;quot;Mutant.cfg&amp;quot;,&amp;quot;Nebraska.cfg&amp;quot;,&amp;quot;Nova.cfg&amp;quot;,&amp;quot;OctaGone2Death.cfg&amp;quot;,&amp;quot;Octarace.cfg&amp;quot;,&amp;quot;One.cfg&amp;quot;,&amp;quot;OnePathv2.cfg&amp;quot;,&amp;quot;Organius.cfg&amp;quot;,&amp;quot;Paura.cfg&amp;quot;,&amp;quot;PewPew.cfg&amp;quot;,&amp;quot;PillsburyDrummerboy.cfg&amp;quot;,&amp;quot;Pirata.cfg&amp;quot;,&amp;quot;PointOfNoReturn.cfg&amp;quot;,&amp;quot;Pow.cfg&amp;quot;,&amp;quot;PureRacingTorture.cfg&amp;quot;,&amp;quot;RacersOnYourMark.cfg&amp;quot;,&amp;quot;RatTunnels.cfg&amp;quot;,&amp;quot;Resurrection.cfg&amp;quot;,&amp;quot;RoadLessTraveled.cfg&amp;quot;,&amp;quot;Roundabout.cfg&amp;quot;,&amp;quot;Seven.cfg&amp;quot;,&amp;quot;Shield.cfg&amp;quot;,&amp;quot;ShoppingMall.cfg&amp;quot;,&amp;quot;SidebySide.cfg&amp;quot;,&amp;quot;Six.cfg&amp;quot;,&amp;quot;SmallSpaces.cfg&amp;quot;,&amp;quot;Spiral.cfg&amp;quot;,&amp;quot;SpiralHam.cfg&amp;quot;,&amp;quot;SquareRoot.cfg&amp;quot;,&amp;quot;Stardome.cfg&amp;quot;,&amp;quot;Sun.cfg&amp;quot;,&amp;quot;Symmetry.cfg&amp;quot;,&amp;quot;TannersBigTronDaddy.cfg&amp;quot;,&amp;quot;TheMachine.cfg&amp;quot;,&amp;quot;TheRoadNotTaken.cfg&amp;quot;,&amp;quot;Three.cfg&amp;quot;,&amp;quot;TikiTime.cfg&amp;quot;,&amp;quot;TortureChamber.cfg&amp;quot;,&amp;quot;Trijecture.cfg&amp;quot;,&amp;quot;Trucco.cfg&amp;quot;,&amp;quot;TurnAround.cfg&amp;quot;,&amp;quot;Two.cfg&amp;quot;,&amp;quot;Unfortunate.cfg&amp;quot;,&amp;quot;Verta.cfg&amp;quot;,&amp;quot;Verta2.cfg&amp;quot;,&amp;quot;Voltrobe.cfg&amp;quot;,&amp;quot;What.cfg&amp;quot;,&amp;quot;WhatTheHECK.cfg&amp;quot;,&amp;quot;Wrapper.cfg&amp;quot;,&amp;quot;XploderPro.cfg&amp;quot;,&amp;quot;Zero.cfg&amp;quot;,&amp;quot;ZigZag.cfg&amp;quot;,&amp;quot;ZigZagZaney.cfg&amp;quot;,&amp;quot;Zipper.cfg&amp;quot;,&amp;quot;Zone4.cfg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$rotate_mode = 2; //Set to 1 for simple random, 2 to play each map in order, 3 to randomly pick a map that hasn&#039;t been picked yet.&lt;br /&gt;
&lt;br /&gt;
$num_map_plays = 2; //play each map how many times before switching to next map&lt;br /&gt;
&lt;br /&gt;
$zombie_win = false;  //Does the winner get a zombie? (adjust zombie_zone_speed to fit your liking)&lt;br /&gt;
&lt;br /&gt;
$precision = 3; //How many decimal places to show times? A value of 3 shows X.xxx, 2 shows X.xx.  5 is max. &lt;br /&gt;
&lt;br /&gt;
/*===================== End of customization options =============================*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$reccomended_settings = array(&amp;quot;target_initial_score 0&amp;quot;, &amp;quot;sp_game_type 0&amp;quot;, &amp;quot;game_type 0&amp;quot;, &amp;quot;sp_finish_type 0&amp;quot;, &amp;quot;finish_type 0&amp;quot;, &amp;quot;sp_num_ais 0&amp;quot;, &amp;quot;num_ais 0&amp;quot;, &amp;quot;shot_seek_update_time 0.1&amp;quot;, &amp;quot;ladderlog_write_all 1|1&amp;quot;);  //these settings should be set for racing mode and is run every round&lt;br /&gt;
&lt;br /&gt;
class Player&lt;br /&gt;
{&lt;br /&gt;
	var $name;&lt;br /&gt;
	var $pname;&lt;br /&gt;
	var $place;&lt;br /&gt;
	var $finish_time;&lt;br /&gt;
	var $best_time;&lt;br /&gt;
	var $num_plays;&lt;br /&gt;
	function __construct($name) &lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;name = $name;&lt;br /&gt;
		$this-&amp;gt;read();&lt;br /&gt;
		if(empty($this-&amp;gt;num_plays)) $this-&amp;gt;num_plays = 0;&lt;br /&gt;
	}&lt;br /&gt;
	function read()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $precision;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		foreach($lines as $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);  //time name num_plays&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;best_time = round($pieces[0], $precision);&lt;br /&gt;
				$this-&amp;gt;num_plays = $pieces[2];&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	function write()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $current_inc;&lt;br /&gt;
		$found = false;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xff7777Warning: 0xffffffFile &#039;$current_inc.txt&#039; not found, file creation may have failed. Retrying...&amp;quot;);&lt;br /&gt;
			$fp = fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			$pieces[1] = trim($pieces[1]);&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$lines[$i] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
				$found = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!$found)&lt;br /&gt;
		{&lt;br /&gt;
			$lines[] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		sort(&amp;amp;$lines, SORT_NUMERIC);&lt;br /&gt;
		file_put_contents($file, $lines);&lt;br /&gt;
		fclose($fp);&lt;br /&gt;
	}&lt;br /&gt;
	function finished($time, $place)&lt;br /&gt;
	{&lt;br /&gt;
		global $points, $players, $current_inc, $precision, $file;&lt;br /&gt;
		$this-&amp;gt;num_plays++;&lt;br /&gt;
		$time = round($time,$precision);&lt;br /&gt;
		$this-&amp;gt;finish_time = $time;&lt;br /&gt;
		$this-&amp;gt;place = $place;&lt;br /&gt;
		$sufx = suffix($place);&lt;br /&gt;
		$score = $points[$place-1];&lt;br /&gt;
		if(empty($score)) $score = 0;&lt;br /&gt;
		if($place &amp;gt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
			{&lt;br /&gt;
				if($p-&amp;gt;place == 1)&lt;br /&gt;
				{&lt;br /&gt;
					$first = $p-&amp;gt;finish_time;&lt;br /&gt;
					$difference = &amp;quot; 0xffffff(&amp;quot; . round($this-&amp;gt;finish_time - $p-&amp;gt;finish_time,$precision) . &amp;quot; s behind 1st)&amp;quot;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
			$difference = &amp;quot;&amp;quot;;&lt;br /&gt;
		c(&amp;quot;0x55ccff &amp;gt; 0xffff99$this-&amp;gt;pname 0x55ccfffinished $place$sufx in 0xffff99$time 0x55ccffseconds.$difference 0x808080+{$score} pts&amp;quot;);&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;gt;= $this-&amp;gt;best_time &amp;amp;&amp;amp; !empty($this-&amp;gt;best_time)) //took longer than alltime best&lt;br /&gt;
		{&lt;br /&gt;
			pm($this-&amp;gt;name, &amp;quot;    0xaaaaffYour all-time best on 0xddddff{$current_inc}0xaaaaff is 0xffffff{$this-&amp;gt;best_time} 0xaaaaffs, you are 0xffffff&amp;quot;. round($this-&amp;gt;finish_time - $this-&amp;gt;best_time, $precision).&amp;quot; 0xaaaaffs 0xff7777slower0xaaaaff.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;lt; $this-&amp;gt;best_time || empty($this-&amp;gt;best_time))&lt;br /&gt;
		{&lt;br /&gt;
			if(!empty($this-&amp;gt;best_time)) $oldrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			$this-&amp;gt;write();&lt;br /&gt;
			$newrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			if(empty($this-&amp;gt;best_time)) &lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaffThis is your first time finishing 0xddddff{$current_inc}0xaaaaff!&amp;quot;);&lt;br /&gt;
			else pm($this-&amp;gt;name, &amp;quot;  0x3388ff* 0x55ff88New personal record! You improved 0xffffff&amp;quot; . round($this-&amp;gt;best_time - $this-&amp;gt;finish_time,$precision) . &amp;quot;0x55ff88 s raising 0xffffff&amp;quot;. ($oldrank - $newrank) .&amp;quot; 0x55ff88ranks!&amp;quot;);&lt;br /&gt;
			if($newrank == 1) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffd700Congratulate 0xffffff$this-&amp;gt;name 0xffd700for setting a new record on 0xffddaa$current_inc 0xffd700as the fastest time ever!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else if($newrank == 2) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xc0c0c0just ranked as the 0xffffff2nd 0xc0c0c0fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*\n&amp;quot;);&lt;br /&gt;
			else if($newrank == 3) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xcd7f32just ranked as the 0xffcc003rd 0xcd7f32fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;     0xaaaaaaYou are now rank 0xffffff$newrank 0xaaaaaaof &amp;quot;.(count(file($file))).&amp;quot; as the fastest time for 0xcccccc{$current_inc}0xaaaaaa!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;add_score_player $this-&amp;gt;name &amp;quot; . $score . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
$players = array();&lt;br /&gt;
$finished = 0;&lt;br /&gt;
$i=0;&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
	$line = rtrim(fgets(STDIN, 1024));&lt;br /&gt;
	if(preg_match(&amp;quot;/^CYCLE_CREATED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;,$line);&lt;br /&gt;
		$name = $split[1];&lt;br /&gt;
		if(getObject($name) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$num_racers++;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if(strstr($name,&amp;quot;\&amp;quot;&amp;quot;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0x000000 ! 0xffff00 $name is not allowed to use the characters 0xffffff« or \&amp;quot; 0xffff00 in their name.&amp;quot;);&lt;br /&gt;
			$clean = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;_&amp;quot;,$name);&lt;br /&gt;
			$wo = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$name);&lt;br /&gt;
			echo &amp;quot;rename $wo $clean \n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;rename $name $clean \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		$players[$i] = new Player($split[1]);&lt;br /&gt;
		if(isset($pretty))&lt;br /&gt;
		{&lt;br /&gt;
			for($x = 0; $x &amp;lt; sizeof($pretty); $x++)&lt;br /&gt;
			{&lt;br /&gt;
				$crack = explode(&amp;quot;*%$&amp;quot;, $pretty[$x]);&lt;br /&gt;
				if($crack[0] == $players[$i]-&amp;gt;name)&lt;br /&gt;
					$players[$i]-&amp;gt;pname = trim($crack[1]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!isset($players[$i]-&amp;gt;pname))&lt;br /&gt;
			$players[$i]-&amp;gt;pname = $players[$i]-&amp;gt;name;&lt;br /&gt;
		if($i == 0)&lt;br /&gt;
		{&lt;br /&gt;
			$xPos = $split[2];&lt;br /&gt;
			$yPos = $split[3];&lt;br /&gt;
		}&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) $rank = filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
		$sufx = suffix($rank);&lt;br /&gt;
		pm($players[$i]-&amp;gt;name, &amp;quot;0x808080Top 3 times for $current_inc:&amp;quot;);&lt;br /&gt;
		filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 3, true);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			$remind = &amp;quot;0x808080(Maybe because you&#039;re logged out?)&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			$remind = null;&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYour best time for $current_inc is 0xffffff{$players[$i]-&amp;gt;best_time}0x99ddff s ranking 0xffffff$rank{$sufx}0x99ddff of &amp;quot;.count(file($file)).&amp;quot;.&amp;quot;);&lt;br /&gt;
		if(empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYou have never won 0xcccccc$current_inc 0x99ddffbefore. $remind&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
		$i++;&lt;br /&gt;
		$num_racers = $i;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_ENTERED/&amp;quot;, $line))&lt;br /&gt;
	{   &lt;br /&gt;
		//PLAYER_ENTERED rx&amp;quot;dukevin 76.174.69.46 Rx«dukevin&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[1] . &amp;quot;*%$&amp;quot; . $split[3] . &amp;quot; &amp;quot; . $split[4] . &amp;quot; &amp;quot; . $split[5];&lt;br /&gt;
		$pretty = array_slice($pretty,sizeof($pretty)-40,40);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_RENAMED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[2] . &amp;quot;*%$&amp;quot; . $split[5] . &amp;quot; &amp;quot; . $split[6] . &amp;quot; &amp;quot; . $split[7];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_COMMENCING/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		foreach($reccomended_settings as $s)&lt;br /&gt;
			echo &amp;quot;$s \n&amp;quot;;&lt;br /&gt;
		unset($players);&lt;br /&gt;
		$finished = 0;&lt;br /&gt;
		$num_racers = 0;&lt;br /&gt;
		$a_player_finished = false;&lt;br /&gt;
		$i = 0;&lt;br /&gt;
		if(empty($num_plays)) $num_plays = 0;&lt;br /&gt;
		$num_plays++;&lt;br /&gt;
		if($num_plays &amp;gt;= $num_map_plays)&lt;br /&gt;
		{&lt;br /&gt;
			$pick = pickmap($includes, $rotate_mode);&lt;br /&gt;
			$num_plays = 0;&lt;br /&gt;
		}&lt;br /&gt;
		$current_inc = retrieve($pick);&lt;br /&gt;
		c(&amp;quot;Reading $current_inc.txt...&amp;quot;);&lt;br /&gt;
		switch($display_mode)&lt;br /&gt;
		{&lt;br /&gt;
			case 3:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
			case 2:&lt;br /&gt;
				echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
				break;&lt;br /&gt;
			case 1:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$file = &amp;quot;$save_directory_location&amp;quot; . &amp;quot;$current_inc&amp;quot; . &amp;quot;.txt&amp;quot;;&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffff$current_inc.txt not found, creating it...&amp;quot;);&lt;br /&gt;
			fopen($file, &#039;w&#039;);&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			if(!file_exists($file))&lt;br /&gt;
				c(&amp;quot;0xff7777Warning: 0xffffffFile creation failed, scores cannot be saved! Does your directory have write permission?&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($smart_time)&lt;br /&gt;
			$countdown_secs_after_finish = smart_time($countdown_secs_after_finish);&lt;br /&gt;
		echo &amp;quot;target_survive_time &amp;quot; . ($countdown_secs_after_finish+1) .&amp;quot;\n&amp;quot;;&lt;br /&gt;
		if(mt_rand(0,7)==7) c(&amp;quot;0x808080You can type /stats &amp;lt;name&amp;gt; &amp;lt;optional amount&amp;gt; to view high scores for maps.&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line) || preg_match(&amp;quot;/^ROUND_SCORE/&amp;quot;,$line))&lt;br /&gt;
	{&lt;br /&gt;
		if($finished == 0 || $a_player_finished == true)&lt;br /&gt;
			goto end;&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line))&lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;spawn_zone win $split[3] $split[4] 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
		}&lt;br /&gt;
		sleep(1);&lt;br /&gt;
		if(!empty($split[6])) echo &amp;quot;center_message Winner: {$split[6]}\n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;collapse_zone\n&amp;quot;;&lt;br /&gt;
		if(empty($split[6]))&lt;br /&gt;
			echo &amp;quot;spawn_zone win $xPos $yPos 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
		$a_player_finished = true;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^INVALID_COMMAND/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		//INVALID_COMMAND /cast rx&amp;quot;dukevin 76.174.69.46 accesslevel argument 50&lt;br /&gt;
		if($split[1] == &amp;quot;/stats&amp;quot; || $split[1] == &amp;quot;/s&amp;quot;|| $split[1] == &amp;quot;/search&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			if(empty($split[6]) || !isset($split[6])) $split[6] = 3;&lt;br /&gt;
			if(empty($split[5]) || !isset($split[5]))&lt;br /&gt;
				$split[5] = $split[2];&lt;br /&gt;
			search($obj, $split[5], $split[6]);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/version&amp;quot; || $split[1] == &amp;quot;/v&amp;quot; || $split[1] == &amp;quot;/ver&amp;quot; || $split[1] == &amp;quot;/vers&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			version($obj);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/debug&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;Number of maps rotating: &amp;quot; . count($includes));&lt;br /&gt;
			pm($split[2], &amp;quot;Number pnames in memory: &amp;quot; . count($pretty));&lt;br /&gt;
			pm($split[2], &amp;quot;Player Objects:&amp;quot;);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				pm($split[2], &amp;quot;$p-&amp;gt;name&amp;quot;);			&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;0xff7777Invalid command, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_PLAYER_ENTER/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		//TARGETZONE_PLAYER_ENTER 2 zonename 100 100 dukevin 90.8824 103.506 1 0 37.6366&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$name = $split[5];&lt;br /&gt;
		$time = $split[10];&lt;br /&gt;
		$obj = getObject($name);&lt;br /&gt;
		if(!method_exists($obj,&#039;finished&#039;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffffNo object to operate on, perhaps you just loaded scripts?&amp;quot;);&lt;br /&gt;
			echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;kill $name\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if($obj-&amp;gt;finish_time &amp;gt; 0) //already hit the finish line&lt;br /&gt;
			goto end;&lt;br /&gt;
		$finished++;&lt;br /&gt;
		$obj-&amp;gt;finished($time, $finished);&lt;br /&gt;
		$num_racers--;&lt;br /&gt;
		if($zombie_win) zombieplz($split[5], $split[6], $split[7]);&lt;br /&gt;
		@clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish);&lt;br /&gt;
		if($num_racers &amp;lt;= 0)&lt;br /&gt;
			echo &amp;quot;target_survive_time &amp;quot; . 1 .&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^GAME_TIME/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		@clock(&amp;quot;tick&amp;quot;);&lt;br /&gt;
		if($max_time_limit &amp;lt;= 0)&lt;br /&gt;
			goto end;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			if($split[1] == $max_time_limit)&lt;br /&gt;
				clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^DEATH_FRAG|DEATH_SUICIDE|PLAYER_KILLED|DEATH_SHOT_FRAG|DEATH_DEATHZONE|DEATH_SHOT_SUICIDE|DEATH_TEAMKILL|DEATH_SHOT_TEAMKILL|DEATH_ZOMBIEZONE|DEATH_DEATHSHOT|DEATH_SELF_DESTRUCT/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(empty(getObject($split[1])-&amp;gt;finish_time))&lt;br /&gt;
			$num_racers--;&lt;br /&gt;
		if(sizeof($players) &amp;lt;= 1) //if only 1 player, don&#039;t start the timer&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($countdown_if_last_player == false) //don&#039;t start the timer if user doesn&#039;t want it&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($num_racers &amp;lt;= 1)&lt;br /&gt;
		{&lt;br /&gt;
			if(@clock(&amp;quot;getState&amp;quot;) == &amp;quot;active&amp;quot; &amp;amp;&amp;amp; (empty(getObject($split[1])-&amp;gt;finish_time))) //only winner alive, last racer died &amp;amp;&amp;amp;racer not finish&lt;br /&gt;
			{&lt;br /&gt;
				echo &amp;quot;spawn_zone win $xPos $yPos 1000000 100000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
				@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			if($num_racers != 0) clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish + $countdown_last_player_extra_time, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_WINNER/&amp;quot;, $line))&lt;br /&gt;
		foreach($players as $p)&lt;br /&gt;
		{&lt;br /&gt;
			if(!(strstr($p-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
				pm($p-&amp;gt;name, &amp;quot;0xffddaaYou should /login to protect your times!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
end:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clock($action, $duration, $options)&lt;br /&gt;
{&lt;br /&gt;
	static $state, $time, $options;&lt;br /&gt;
	if($action == &amp;quot;start&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;active&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$state = &amp;quot;active&amp;quot;;&lt;br /&gt;
		$time = $duration;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;stop&amp;quot; || $state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
		$options = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;tick&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$time--;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
		if(empty($time) || $time &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			if($options = &amp;quot;kill&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				global $players;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					echo &amp;quot;kill $p-&amp;gt;name \n&amp;quot;;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
			$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;getState&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		return $state;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function filetee($search, $requester, $amount = 3, $display_top = false, $onlyrank = false)&lt;br /&gt;
{&lt;br /&gt;
	global $file;&lt;br /&gt;
	$found = false;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
	{&lt;br /&gt;
		$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pieces[1] = trim($pieces[1]);&lt;br /&gt;
		if($pieces[1] == $search) &lt;br /&gt;
		{	&lt;br /&gt;
			$found = true;&lt;br /&gt;
			if($onlyrank) return $i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($display_top) $i = 0;&lt;br /&gt;
	if($amount &amp;gt; 150) $amount = 150;&lt;br /&gt;
	if($amount %2 == 0) $amount += 1;&lt;br /&gt;
	$amount = floor($amount/2);&lt;br /&gt;
	if($i == 0 || $i == sizeof($lines)-1) //display an extra entry for 1st and last place&lt;br /&gt;
		$amount += 1;&lt;br /&gt;
	if($found == false &amp;amp;&amp;amp; $display_top == false)&lt;br /&gt;
		return false;&lt;br /&gt;
	for($x = $i-$amount; $x &amp;lt;= $i+$amount; $x++)&lt;br /&gt;
	{&lt;br /&gt;
		$cut = explode(&amp;quot; &amp;quot;, $lines[$x]);&lt;br /&gt;
		$color = ($cut[1] == $search) ? &#039;0xffff88&#039; : &#039;0xcccccc&#039;;&lt;br /&gt;
		if(!empty($cut[0])) pm($requester, $color . ($x+1) . &amp;quot;) $cut[0] - $cut[1]&amp;quot;);&lt;br /&gt;
		usleep(20000);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function suffix($number)&lt;br /&gt;
{&lt;br /&gt;
	$n = (string)$number;&lt;br /&gt;
    $n = $n[strlen($n)-1];&lt;br /&gt;
	if($n == 1) $sufx = &amp;quot;st&amp;quot;;&lt;br /&gt;
	elseif($n == 2) $sufx = &amp;quot;nd&amp;quot;;&lt;br /&gt;
	elseif($n == 3) $sufx = &amp;quot;rd&amp;quot;;&lt;br /&gt;
	else $sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	if($number == 11 || $number == 12 || $number == 13) //english is weird&lt;br /&gt;
		$sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	return $sufx;&lt;br /&gt;
}&lt;br /&gt;
function retrieve($mapname)&lt;br /&gt;
{&lt;br /&gt;
	$type = explode(&amp;quot;.&amp;quot;, $mapname);&lt;br /&gt;
	if($type[sizeof($type)-1] == &amp;quot;xml&amp;quot;) $head = &amp;quot;MAP_FILE&amp;quot;;&lt;br /&gt;
	elseif($type[sizeof($type)-1] == &amp;quot;cfg&amp;quot;) $head = &amp;quot;INCLUDE&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$tail = $mapname;&lt;br /&gt;
	echo $head . &amp;quot; &amp;quot; . $tail . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$cut = explode(&amp;quot;/&amp;quot;, $tail);&lt;br /&gt;
	$split = explode(&amp;quot;.&amp;quot;, $cut[sizeof($cut)-1]);&lt;br /&gt;
	foreach($split as $element)&lt;br /&gt;
	{&lt;br /&gt;
		if($element == &amp;quot;aamap&amp;quot; || $element == &amp;quot;xml&amp;quot; || $element == &amp;quot;cfg&amp;quot;)&lt;br /&gt;
			unset($element);&lt;br /&gt;
		$current_inc .= $element;&lt;br /&gt;
	}&lt;br /&gt;
	$cut = explode(&amp;quot;-&amp;quot;, $current_inc);&lt;br /&gt;
	$current_inc = trim($cut[0]);&lt;br /&gt;
	if(empty($current_inc)) c(&amp;quot;0xff7777Warning: 0xffffffUnable to retrieve current map name.&amp;quot;);&lt;br /&gt;
	return empty($current_inc) ? &amp;quot;null&amp;quot; : $current_inc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zombieplz($name, $x, $y)&lt;br /&gt;
{&lt;br /&gt;
	echo &amp;quot;spawn_zone zombieOwner $name $name $x $y 1 0 0 0 false\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function c($string){&lt;br /&gt;
	echo &amp;quot;console_message $string \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function pm($name, $string){&lt;br /&gt;
	echo &amp;quot;player_message {$name} \&amp;quot;{$string}\&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function getObject($name)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;name == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
function pickmap($includes, $rotate_mode)&lt;br /&gt;
{&lt;br /&gt;
	static $i;&lt;br /&gt;
	if($rotate_mode == 1)&lt;br /&gt;
		return $includes[mt_rand(0, sizeof($includes)-1)];&lt;br /&gt;
	if($rotate_mode == 2)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
	if($rotate_mode == 3)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		if($i == 0) shuffle($includes);&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function smart_time($countdown_secs_after_finish)&lt;br /&gt;
{&lt;br /&gt;
	global $file, $current_inc;&lt;br /&gt;
	static $initial_countdown_secs;&lt;br /&gt;
	if(empty($initial_countdown_secs)) $initial_countdown_secs = $countdown_secs_after_finish;&lt;br /&gt;
	if($initial_countdown_secs &amp;lt; 100)&lt;br /&gt;
		$MAX_TIME = 75; //smart time will not allow more than 75 secs&lt;br /&gt;
	else&lt;br /&gt;
		$MAX_TIME = $initial_countdown_secs * 1.3;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	if(!file_exists($file))	return $initial_countdown_secs;&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[0]);&lt;br /&gt;
	$hs = $split[0];&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[1]);&lt;br /&gt;
	$hs2nd = $split[0];&lt;br /&gt;
	if(empty($hs)) return 60;&lt;br /&gt;
	&lt;br /&gt;
	if($hs*1.3 &amp;lt; $initial_countdown_secs) return $initial_countdown_secs;&lt;br /&gt;
	if(empty($hs2nd)) return $hs * 2 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*2);&lt;br /&gt;
	if(($hs2nd - $hs) &amp;gt; 8) $hs = $hs2nd;&lt;br /&gt;
	return $hs * 1.3 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*1.3);&lt;br /&gt;
}&lt;br /&gt;
function search($me, $search, $amount = 3)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	$count = 0;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $search || $p-&amp;gt;name == $search)&lt;br /&gt;
		{&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
			$count = 1;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		if(stripos(&amp;quot;{$p-&amp;gt;pname}&amp;quot;,&amp;quot;$search&amp;quot;) !== false || stripos(&amp;quot;{$p-&amp;gt;name}&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$count++;&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($count &amp;gt; 1)&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;More than one player containing &#039;$search&#039;, using $found.&amp;quot;);&lt;br /&gt;
	if(empty($count))&lt;br /&gt;
	{&lt;br /&gt;
		if(filetee($search, $me-&amp;gt;name, $amount, false, false) == false)&lt;br /&gt;
		{&lt;br /&gt;
			global $file;&lt;br /&gt;
			$lines = file($file);&lt;br /&gt;
			foreach($lines as $line)&lt;br /&gt;
			{&lt;br /&gt;
				$pieces = explode(&amp;quot; &amp;quot;, $line); &lt;br /&gt;
				if(stripos(&amp;quot;$pieces[1]&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
				{&lt;br /&gt;
					$found = $pieces[1];&lt;br /&gt;
					$count++;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(empty($found) || empty($count) || filetee($found, $me-&amp;gt;name, -2, false, false) === false)&lt;br /&gt;
	{&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;No times found for player: $search&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	filetee($found, $me-&amp;gt;name, $amount, false, false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function version($me)&lt;br /&gt;
{&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Script programming by 0xffffffdukevin&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Email at 0xffffffdukevinjduke@gmail.com0xffff00 for suggestions, comments&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Made for smart&#039;s server&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
known bugs:&lt;br /&gt;
-/stats on rank 1 display twise&lt;br /&gt;
-respawn breaks script&lt;br /&gt;
+fixed: you should login to protect your times not showing&lt;br /&gt;
-times showed twise if time run out -&amp;gt; instead make all score things shown before round_Commencing?&lt;br /&gt;
- $me-&amp;gt;num_plays doesn&#039;t incriment unless you beat your time //because it doesn&#039;t write&lt;br /&gt;
+ fixed x of y&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39086</id>
		<title>Advanced Racing With race timer/Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39086"/>
		<updated>2012-05-21T20:13:52Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Last updated 21 May 2012&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*  Race Script&lt;br /&gt;
		Includes highscores per map, finish timers, map/cfg rotator, and more&lt;br /&gt;
		Requires a TargetZone as a finish line, winzones will not work&lt;br /&gt;
		If you are not using Rx Hosting your directory needs write permission&lt;br /&gt;
		Made by dukevin (dukevinjduke@gmail.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$save_directory_location = &amp;quot;/home/duke/aa/servers/smart/var/logs/&amp;quot;;   //The directory to save files. Must end with trailing slash&lt;br /&gt;
&lt;br /&gt;
$countdown_secs_after_finish = 30;	//After someone finishes, how many seconds on the timer before the round ends?&lt;br /&gt;
&lt;br /&gt;
$countdown_if_last_player = true; //If only 1 player remaining, start the timer?&lt;br /&gt;
&lt;br /&gt;
$max_time_limit = -1; //start the timer after this many seconds, -1 to disable time limits&lt;br /&gt;
&lt;br /&gt;
$points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1); //points awarded for 1st, 2nd, 3rd, 4th, 5th, etc...&lt;br /&gt;
&lt;br /&gt;
$display_mode = 2; //If set to &amp;quot;1&amp;quot; display a center_message of the map name, 2 for console_message, 3 for both, 0 for no message&lt;br /&gt;
&lt;br /&gt;
$display_prefix = &amp;quot;Current race: 0xffff00&amp;quot;; //When showing the map name, this is appended before it, if $display_mode is 0, this is disabled&lt;br /&gt;
&lt;br /&gt;
$smart_time = true; //If true, the game will determine how many seconds to put on the timer based on previous records instead of using $countdown_secs_after_finish which will be used as the minimum amount of time instead.&lt;br /&gt;
&lt;br /&gt;
$countdown_last_player_extra_time = 0; //If only 1 player remaining, give the last racer this many seconds of extra time to finish. Not needed if $smart_time is true&lt;br /&gt;
&lt;br /&gt;
//Below, inbetween quotes, if you are including maps, put something like: &amp;quot;/path/to/map.aamap.xml&amp;quot;. If you are using cfgs, put &amp;quot;mycfg.cfg&amp;quot; &lt;br /&gt;
$includes = array(&amp;quot;Default.cfg&amp;quot;,&amp;quot;Hurricania.cfg&amp;quot;,&amp;quot;100Watts.cfg&amp;quot;,&amp;quot;Aflac.cfg&amp;quot;,&amp;quot;AnimusonConfusion.cfg&amp;quot;,&amp;quot;Aoi.cfg&amp;quot;,&amp;quot;ApplePie.cfg&amp;quot;,&amp;quot;AQuickExplosion.cfg&amp;quot;,&amp;quot;Arco.cfg&amp;quot;,&amp;quot;AroundandAround.cfg&amp;quot;,&amp;quot;AroundTheHorn.cfg&amp;quot;,&amp;quot;Arsenal.cfg&amp;quot;,&amp;quot;AtlanticCharter.cfg&amp;quot;,&amp;quot;Axe.cfg&amp;quot;,&amp;quot;BatPigBear.cfg&amp;quot;,&amp;quot;BenignRevolution.cfg&amp;quot;,&amp;quot;Berlin.cfg&amp;quot;,&amp;quot;BlazingParadise.cfg&amp;quot;,&amp;quot;BloodyHell.cfg&amp;quot;,&amp;quot;Broken.cfg&amp;quot;,&amp;quot;Buffalo.cfg&amp;quot;,&amp;quot;CandyBar.cfg&amp;quot;,&amp;quot;Cell.cfg&amp;quot;,&amp;quot;Charriot.cfg&amp;quot;,&amp;quot;Cherrio.cfg&amp;quot;,&amp;quot;Chicken.cfg&amp;quot;,&amp;quot;Chihuahua.cfg&amp;quot;,&amp;quot;Claw.cfg&amp;quot;,&amp;quot;Colombo.cfg&amp;quot;,&amp;quot;Compact.cfg&amp;quot;,&amp;quot;Croma.cfg&amp;quot;,&amp;quot;DeathOctagon.cfg&amp;quot;,&amp;quot;DeathTrap.cfg&amp;quot;,&amp;quot;Disastro.cfg&amp;quot;,&amp;quot;Divided.cfg&amp;quot;,&amp;quot;Dizzy.cfg&amp;quot;,&amp;quot;DontFlinch.cfg&amp;quot;,&amp;quot;Dragrace.cfg&amp;quot;,&amp;quot;Eighty.cfg&amp;quot;,&amp;quot;FirePalace.cfg&amp;quot;,&amp;quot;Fobia.cfg&amp;quot;,&amp;quot;Four.cfg&amp;quot;,&amp;quot;Flex.cfg&amp;quot;,&amp;quot;FrizzleFraz.cfg&amp;quot;,&amp;quot;Glacier.cfg&amp;quot;,&amp;quot;Guitar.cfg&amp;quot;,&amp;quot;Handgrip.cfg&amp;quot;,&amp;quot;Holiday.cfg&amp;quot;,&amp;quot;Hurricania.cfg&amp;quot;,&amp;quot;Hyperpod.cfg&amp;quot;,&amp;quot;Illusion.cfg&amp;quot;,&amp;quot;Insanity.cfg&amp;quot;,&amp;quot;ItsABug.cfg&amp;quot;,&amp;quot;JailBreak.cfg&amp;quot;,&amp;quot;Jelly.cfg&amp;quot;,&amp;quot;Jester.cfg&amp;quot;,&amp;quot;KirbyDance.cfg&amp;quot;,&amp;quot;LetsDance.cfg&amp;quot;,&amp;quot;Lava.cfg&amp;quot;,&amp;quot;lol.cfg&amp;quot;,&amp;quot;Luigi.cfg&amp;quot;,&amp;quot;Marathon.cfg&amp;quot;,&amp;quot;Margarita.cfg&amp;quot;,&amp;quot;Mario.cfg&amp;quot;,&amp;quot;Mint.cfg&amp;quot;,&amp;quot;Moon.cfg&amp;quot;,&amp;quot;MovinOnUp.cfg&amp;quot;,&amp;quot;MrRoboto.cfg&amp;quot;,&amp;quot;Mutant.cfg&amp;quot;,&amp;quot;Nebraska.cfg&amp;quot;,&amp;quot;Nova.cfg&amp;quot;,&amp;quot;OctaGone2Death.cfg&amp;quot;,&amp;quot;Octarace.cfg&amp;quot;,&amp;quot;One.cfg&amp;quot;,&amp;quot;OnePathv2.cfg&amp;quot;,&amp;quot;Organius.cfg&amp;quot;,&amp;quot;Paura.cfg&amp;quot;,&amp;quot;PewPew.cfg&amp;quot;,&amp;quot;PillsburyDrummerboy.cfg&amp;quot;,&amp;quot;Pirata.cfg&amp;quot;,&amp;quot;PointOfNoReturn.cfg&amp;quot;,&amp;quot;Pow.cfg&amp;quot;,&amp;quot;PureRacingTorture.cfg&amp;quot;,&amp;quot;RacersOnYourMark.cfg&amp;quot;,&amp;quot;RatTunnels.cfg&amp;quot;,&amp;quot;Resurrection.cfg&amp;quot;,&amp;quot;RoadLessTraveled.cfg&amp;quot;,&amp;quot;Roundabout.cfg&amp;quot;,&amp;quot;Seven.cfg&amp;quot;,&amp;quot;Shield.cfg&amp;quot;,&amp;quot;ShoppingMall.cfg&amp;quot;,&amp;quot;SidebySide.cfg&amp;quot;,&amp;quot;Six.cfg&amp;quot;,&amp;quot;SmallSpaces.cfg&amp;quot;,&amp;quot;Spiral.cfg&amp;quot;,&amp;quot;SpiralHam.cfg&amp;quot;,&amp;quot;SquareRoot.cfg&amp;quot;,&amp;quot;Stardome.cfg&amp;quot;,&amp;quot;Sun.cfg&amp;quot;,&amp;quot;Symmetry.cfg&amp;quot;,&amp;quot;TannersBigTronDaddy.cfg&amp;quot;,&amp;quot;TheMachine.cfg&amp;quot;,&amp;quot;TheRoadNotTaken.cfg&amp;quot;,&amp;quot;Three.cfg&amp;quot;,&amp;quot;TikiTime.cfg&amp;quot;,&amp;quot;TortureChamber.cfg&amp;quot;,&amp;quot;Trijecture.cfg&amp;quot;,&amp;quot;Trucco.cfg&amp;quot;,&amp;quot;TurnAround.cfg&amp;quot;,&amp;quot;Two.cfg&amp;quot;,&amp;quot;Unfortunate.cfg&amp;quot;,&amp;quot;Verta.cfg&amp;quot;,&amp;quot;Verta2.cfg&amp;quot;,&amp;quot;Voltrobe.cfg&amp;quot;,&amp;quot;What.cfg&amp;quot;,&amp;quot;WhatTheHECK.cfg&amp;quot;,&amp;quot;Wrapper.cfg&amp;quot;,&amp;quot;XploderPro.cfg&amp;quot;,&amp;quot;Zero.cfg&amp;quot;,&amp;quot;ZigZag.cfg&amp;quot;,&amp;quot;ZigZagZaney.cfg&amp;quot;,&amp;quot;Zipper.cfg&amp;quot;,&amp;quot;Zone4.cfg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$rotate_mode = 2; //Set to 1 for simple random, 2 to play each map in order, 3 to randomly pick a map that hasn&#039;t been picked yet.&lt;br /&gt;
&lt;br /&gt;
$num_map_plays = 2; //play each map how many times before switching to next map&lt;br /&gt;
&lt;br /&gt;
$zombie_win = false;  //Does the winner get a zombie? (adjust zombie_zone_speed to fit your liking)&lt;br /&gt;
&lt;br /&gt;
$precision = 3; //How many decimal places to show times? A value of 3 shows X.xxx, 2 shows X.xx.  5 is max. &lt;br /&gt;
&lt;br /&gt;
/*===================== End of customization options =============================*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$reccomended_settings = array(&amp;quot;target_initial_score 0&amp;quot;, &amp;quot;sp_game_type 0&amp;quot;, &amp;quot;game_type 0&amp;quot;, &amp;quot;sp_finish_type 0&amp;quot;, &amp;quot;finish_type 0&amp;quot;, &amp;quot;sp_num_ais 0&amp;quot;, &amp;quot;num_ais 0&amp;quot;, &amp;quot;shot_seek_update_time 0.1&amp;quot;, &amp;quot;ladderlog_write_all 1|1&amp;quot;);  //these settings should be set for racing mode and is run every round&lt;br /&gt;
&lt;br /&gt;
class Player&lt;br /&gt;
{&lt;br /&gt;
	var $name;&lt;br /&gt;
	var $pname;&lt;br /&gt;
	var $place;&lt;br /&gt;
	var $finish_time;&lt;br /&gt;
	var $best_time;&lt;br /&gt;
	var $num_plays;&lt;br /&gt;
	function __construct($name) &lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;name = $name;&lt;br /&gt;
		$this-&amp;gt;read();&lt;br /&gt;
		if(empty($this-&amp;gt;num_plays)) $this-&amp;gt;num_plays = 0;&lt;br /&gt;
	}&lt;br /&gt;
	function read()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $precision;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		foreach($lines as $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);  //time name num_plays&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;best_time = round($pieces[0], $precision);&lt;br /&gt;
				$this-&amp;gt;num_plays = $pieces[2];&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	function write()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $current_inc;&lt;br /&gt;
		$found = false;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xff7777Warning: 0xffffffFile &#039;$current_inc.txt&#039; not found, file creation may have failed. Retrying...&amp;quot;);&lt;br /&gt;
			$fp = fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			$pieces[1] = trim($pieces[1]);&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$lines[$i] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
				$found = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!$found)&lt;br /&gt;
		{&lt;br /&gt;
			$lines[] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		sort(&amp;amp;$lines, SORT_NUMERIC);&lt;br /&gt;
		file_put_contents($file, $lines);&lt;br /&gt;
		fclose($fp);&lt;br /&gt;
	}&lt;br /&gt;
	function finished($time, $place)&lt;br /&gt;
	{&lt;br /&gt;
		global $points, $players, $current_inc, $precision, $file;&lt;br /&gt;
		$this-&amp;gt;num_plays++;&lt;br /&gt;
		$time = round($time,$precision);&lt;br /&gt;
		$this-&amp;gt;finish_time = $time;&lt;br /&gt;
		$this-&amp;gt;place = $place;&lt;br /&gt;
		$sufx = suffix($place);&lt;br /&gt;
		$score = $points[$place-1];&lt;br /&gt;
		if(empty($score)) $score = 0;&lt;br /&gt;
		if($place &amp;gt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
			{&lt;br /&gt;
				if($p-&amp;gt;place == 1)&lt;br /&gt;
				{&lt;br /&gt;
					$first = $p-&amp;gt;finish_time;&lt;br /&gt;
					$difference = &amp;quot; 0xffffff(&amp;quot; . round($this-&amp;gt;finish_time - $p-&amp;gt;finish_time,$precision) . &amp;quot; s behind 1st)&amp;quot;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
			$difference = &amp;quot;&amp;quot;;&lt;br /&gt;
		c(&amp;quot;0x55ccff &amp;gt; 0xffff99$this-&amp;gt;pname 0x55ccfffinished $place$sufx in 0xffff99$time 0x55ccffseconds.$difference 0x808080+{$score} pts&amp;quot;);&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;gt;= $this-&amp;gt;best_time &amp;amp;&amp;amp; !empty($this-&amp;gt;best_time)) //took longer than alltime best&lt;br /&gt;
		{&lt;br /&gt;
			pm($this-&amp;gt;name, &amp;quot;    0xaaaaffYour all-time best on 0xddddff{$current_inc}0xaaaaff is 0xffffff{$this-&amp;gt;best_time} 0xaaaaffs, you are 0xffffff&amp;quot;. round($this-&amp;gt;finish_time - $this-&amp;gt;best_time, $precision).&amp;quot; 0xaaaaffs 0xff7777slower0xaaaaff.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;lt; $this-&amp;gt;best_time || empty($this-&amp;gt;best_time))&lt;br /&gt;
		{&lt;br /&gt;
			if(!empty($this-&amp;gt;best_time)) $oldrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			$this-&amp;gt;write();&lt;br /&gt;
			$newrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			if(empty($this-&amp;gt;best_time)) &lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaffThis is your first time finishing 0xddddff{$current_inc}0xaaaaff!&amp;quot;);&lt;br /&gt;
			else pm($this-&amp;gt;name, &amp;quot;  0x3388ff* 0x55ff88New personal record! You improved 0xffffff&amp;quot; . round($this-&amp;gt;best_time - $this-&amp;gt;finish_time,$precision) . &amp;quot;0x55ff88 s raising 0xffffff&amp;quot;. ($oldrank - $newrank) .&amp;quot; 0x55ff88ranks!&amp;quot;);&lt;br /&gt;
			if($newrank == 1) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffd700Congratulate 0xffffff$this-&amp;gt;name 0xffd700for setting a new record on 0xffddaa$current_inc 0xffd700as the fastest time ever!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else if($newrank == 2) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xc0c0c0just ranked as the 0xffffff2nd 0xc0c0c0fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*\n&amp;quot;);&lt;br /&gt;
			else if($newrank == 3) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xcd7f32just ranked as the 0xffcc003rd 0xcd7f32fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;     0xaaaaaaYou are now rank 0xffffff$newrank 0xaaaaaaof &amp;quot;.(count(file($file))).&amp;quot; as the fastest time for 0xcccccc{$current_inc}0xaaaaaa!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;add_score_player $this-&amp;gt;name &amp;quot; . $score . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
$players = array();&lt;br /&gt;
$finished = 0;&lt;br /&gt;
$i=0;&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
	$line = rtrim(fgets(STDIN, 1024));&lt;br /&gt;
	if(preg_match(&amp;quot;/^CYCLE_CREATED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;,$line);&lt;br /&gt;
		$name = $split[1];&lt;br /&gt;
		if(getObject($name) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$num_racers++;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if(strstr($name,&amp;quot;\&amp;quot;&amp;quot;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0x000000 ! 0xffff00 $name is not allowed to use the characters 0xffffff« or \&amp;quot; 0xffff00 in their name.&amp;quot;);&lt;br /&gt;
			$clean = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;_&amp;quot;,$name);&lt;br /&gt;
			$wo = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$name);&lt;br /&gt;
			echo &amp;quot;rename $wo $clean \n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;rename $name $clean \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		$players[$i] = new Player($split[1]);&lt;br /&gt;
		if(isset($pretty))&lt;br /&gt;
		{&lt;br /&gt;
			for($x = 0; $x &amp;lt; sizeof($pretty); $x++)&lt;br /&gt;
			{&lt;br /&gt;
				$crack = explode(&amp;quot;*%$&amp;quot;, $pretty[$x]);&lt;br /&gt;
				if($crack[0] == $players[$i]-&amp;gt;name)&lt;br /&gt;
					$players[$i]-&amp;gt;pname = trim($crack[1]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!isset($players[$i]-&amp;gt;pname))&lt;br /&gt;
			$players[$i]-&amp;gt;pname = $players[$i]-&amp;gt;name;&lt;br /&gt;
		if($i == 0)&lt;br /&gt;
		{&lt;br /&gt;
			$xPos = $split[2];&lt;br /&gt;
			$yPos = $split[3];&lt;br /&gt;
		}&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) $rank = filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
		$sufx = suffix($rank);&lt;br /&gt;
		pm($players[$i]-&amp;gt;name, &amp;quot;0x808080Top 3 times for $current_inc:&amp;quot;);&lt;br /&gt;
		filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 3, true);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			$remind = &amp;quot;0x808080(Maybe because you&#039;re logged out?)&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			$remind = null;&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYour best time for $current_inc is 0xffffff{$players[$i]-&amp;gt;best_time}0x99ddff s ranking 0xffffff$rank{$sufx}0x99ddff of &amp;quot;.count(file($file)).&amp;quot;.&amp;quot;);&lt;br /&gt;
		if(empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYou have never won 0xcccccc$current_inc 0x99ddffbefore. $remind&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
		$i++;&lt;br /&gt;
		$num_racers = $i;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_ENTERED/&amp;quot;, $line))&lt;br /&gt;
	{   &lt;br /&gt;
		//PLAYER_ENTERED rx&amp;quot;dukevin 76.174.69.46 Rx«dukevin&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[1] . &amp;quot;*%$&amp;quot; . $split[3] . &amp;quot; &amp;quot; . $split[4] . &amp;quot; &amp;quot; . $split[5];&lt;br /&gt;
		$pretty = array_slice($pretty,sizeof($pretty)-40,40);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_RENAMED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[2] . &amp;quot;*%$&amp;quot; . $split[5] . &amp;quot; &amp;quot; . $split[6] . &amp;quot; &amp;quot; . $split[7];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_COMMENCING/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		foreach($reccomended_settings as $s)&lt;br /&gt;
			echo &amp;quot;$s \n&amp;quot;;&lt;br /&gt;
		unset($players);&lt;br /&gt;
		$finished = 0;&lt;br /&gt;
		$num_racers = 0;&lt;br /&gt;
		$a_player_finished = false;&lt;br /&gt;
		$i = 0;&lt;br /&gt;
		if(empty($num_plays)) $num_plays = 0;&lt;br /&gt;
		$num_plays++;&lt;br /&gt;
		if($num_plays &amp;gt;= $num_map_plays)&lt;br /&gt;
		{&lt;br /&gt;
			$pick = pickmap($includes, $rotate_mode);&lt;br /&gt;
			$num_plays = 0;&lt;br /&gt;
		}&lt;br /&gt;
		$current_inc = retrieve($pick);&lt;br /&gt;
		c(&amp;quot;Reading $current_inc.txt...&amp;quot;);&lt;br /&gt;
		switch($display_mode)&lt;br /&gt;
		{&lt;br /&gt;
			case 3:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
			case 2:&lt;br /&gt;
				echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
				break;&lt;br /&gt;
			case 1:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$file = &amp;quot;$save_directory_location&amp;quot; . &amp;quot;$current_inc&amp;quot; . &amp;quot;.txt&amp;quot;;&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffff$current_inc.txt not found, creating it...&amp;quot;);&lt;br /&gt;
			fopen($file, &#039;w&#039;);&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			if(!file_exists($file))&lt;br /&gt;
				c(&amp;quot;0xff7777Warning: 0xffffffFile creation failed, scores cannot be saved! Does your directory have write permission?&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($smart_time)&lt;br /&gt;
			$countdown_secs_after_finish = smart_time($countdown_secs_after_finish);&lt;br /&gt;
		echo &amp;quot;target_survive_time &amp;quot; . ($countdown_secs_after_finish+1) .&amp;quot;\n&amp;quot;;&lt;br /&gt;
		if(mt_rand(0,7)==7) c(&amp;quot;0x808080You can type /stats &amp;lt;name&amp;gt; &amp;lt;optional amount&amp;gt; to view high scores for maps.&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line) || preg_match(&amp;quot;/^ROUND_SCORE/&amp;quot;,$line))&lt;br /&gt;
	{&lt;br /&gt;
		if($finished == 0 || $a_player_finished == true)&lt;br /&gt;
			goto end;&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line))&lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;spawn_zone win $split[3] $split[4] 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
		}&lt;br /&gt;
		sleep(1);&lt;br /&gt;
		if(!empty($split[6])) echo &amp;quot;center_message Winner: {$split[6]}\n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;collapse_zone\n&amp;quot;;&lt;br /&gt;
		if(empty($split[6]))&lt;br /&gt;
			echo &amp;quot;spawn_zone win $xPos $yPos 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
		$a_player_finished = true;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^INVALID_COMMAND/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		//INVALID_COMMAND /cast rx&amp;quot;dukevin 76.174.69.46 accesslevel argument 50&lt;br /&gt;
		if($split[1] == &amp;quot;/stats&amp;quot; || $split[1] == &amp;quot;/s&amp;quot;|| $split[1] == &amp;quot;/search&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			if(empty($split[6]) || !isset($split[6])) $split[6] = 3;&lt;br /&gt;
			if(empty($split[5]) || !isset($split[5]))&lt;br /&gt;
				$split[5] = $split[2];&lt;br /&gt;
			search($obj, $split[5], $split[6]);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/version&amp;quot; || $split[1] == &amp;quot;/v&amp;quot; || $split[1] == &amp;quot;/ver&amp;quot; || $split[1] == &amp;quot;/vers&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			version($obj);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/debug&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;Number of maps rotating: &amp;quot; . count($includes));&lt;br /&gt;
			pm($split[2], &amp;quot;Number pnames in memory: &amp;quot; . count($pretty));&lt;br /&gt;
			pm($split[2], &amp;quot;Player Objects:&amp;quot;);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				pm($split[2], &amp;quot;$p-&amp;gt;name&amp;quot;);			&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;0xff7777Invalid command, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_PLAYER_ENTER/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		//TARGETZONE_PLAYER_ENTER 2 zonename 100 100 dukevin 90.8824 103.506 1 0 37.6366&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$name = $split[5];&lt;br /&gt;
		$time = $split[10];&lt;br /&gt;
		$obj = getObject($name);&lt;br /&gt;
		if(!method_exists($obj,&#039;finished&#039;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffffNo object to operate on, perhaps you just loaded scripts?&amp;quot;);&lt;br /&gt;
			echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;kill $name\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if($obj-&amp;gt;finish_time &amp;gt; 0) //already hit the finish line&lt;br /&gt;
			goto end;&lt;br /&gt;
		$finished++;&lt;br /&gt;
		$obj-&amp;gt;finished($time, $finished);&lt;br /&gt;
		$num_racers--;&lt;br /&gt;
		if($zombie_win) zombieplz($split[5], $split[6], $split[7]);&lt;br /&gt;
		@clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish);&lt;br /&gt;
		if($num_racers &amp;lt;= 0)&lt;br /&gt;
			echo &amp;quot;target_survive_time &amp;quot; . 1 .&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^GAME_TIME/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		@clock(&amp;quot;tick&amp;quot;);&lt;br /&gt;
		if($max_time_limit &amp;lt;= 0)&lt;br /&gt;
			goto end;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			if($split[1] == $max_time_limit)&lt;br /&gt;
				clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^DEATH_FRAG|DEATH_SUICIDE|PLAYER_KILLED|DEATH_SHOT_FRAG|DEATH_DEATHZONE|DEATH_SHOT_SUICIDE|DEATH_TEAMKILL|DEATH_SHOT_TEAMKILL|DEATH_ZOMBIEZONE|DEATH_DEATHSHOT|DEATH_SELF_DESTRUCT/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(empty(getObject($split[1])-&amp;gt;finish_time))&lt;br /&gt;
			$num_racers--;&lt;br /&gt;
		if(sizeof($players) &amp;lt;= 1) //if only 1 player, don&#039;t start the timer&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($countdown_if_last_player == false) //don&#039;t start the timer if user doesn&#039;t want it&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($num_racers &amp;lt;= 1)&lt;br /&gt;
		{&lt;br /&gt;
			if(@clock(&amp;quot;getState&amp;quot;) == &amp;quot;active&amp;quot; &amp;amp;&amp;amp; (empty(getObject($split[1])-&amp;gt;finish_time))) //only winner alive, last racer died &amp;amp;&amp;amp;racer not finish&lt;br /&gt;
			{&lt;br /&gt;
				echo &amp;quot;spawn_zone win $xPos $yPos 1000000 100000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
				@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			if($num_racers != 0) clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish + $countdown_last_player_extra_time, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_WINNER/&amp;quot;, $line))&lt;br /&gt;
		foreach($players as $p)&lt;br /&gt;
		{&lt;br /&gt;
			if(!(strstr($p-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
				pm($p-&amp;gt;name, &amp;quot;0xffddaaYou should /login to protect your times!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
end:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clock($action, $duration, $options)&lt;br /&gt;
{&lt;br /&gt;
	static $state, $time, $options;&lt;br /&gt;
	if($action == &amp;quot;start&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;active&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$state = &amp;quot;active&amp;quot;;&lt;br /&gt;
		$time = $duration;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;stop&amp;quot; || $state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
		$options = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;tick&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$time--;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
		if(empty($time) || $time &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			if($options = &amp;quot;kill&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				global $players;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					echo &amp;quot;kill $p-&amp;gt;name \n&amp;quot;;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
			$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;getState&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		return $state;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function filetee($search, $requester, $amount = 3, $display_top = false, $onlyrank = false)&lt;br /&gt;
{&lt;br /&gt;
	global $file;&lt;br /&gt;
	$found = false;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
	{&lt;br /&gt;
		$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pieces[1] = trim($pieces[1]);&lt;br /&gt;
		if($pieces[1] == $search) &lt;br /&gt;
		{	&lt;br /&gt;
			$found = true;&lt;br /&gt;
			if($onlyrank) return $i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($display_top) $i = 0;&lt;br /&gt;
	if($amount &amp;gt; 150) $amount = 150;&lt;br /&gt;
	if($amount %2 == 0) $amount += 1;&lt;br /&gt;
	$amount = floor($amount/2);&lt;br /&gt;
	if($i == 0 || $i == sizeof($lines)-1) //display an extra entry for 1st and last place&lt;br /&gt;
		$amount += 1;&lt;br /&gt;
	if($found == false &amp;amp;&amp;amp; $display_top == false)&lt;br /&gt;
		return false;&lt;br /&gt;
	for($x = $i-$amount; $x &amp;lt;= $i+$amount; $x++)&lt;br /&gt;
	{&lt;br /&gt;
		$cut = explode(&amp;quot; &amp;quot;, $lines[$x]);&lt;br /&gt;
		$color = ($cut[1] == $search) ? &#039;0xffff88&#039; : &#039;0xcccccc&#039;;&lt;br /&gt;
		if(!empty($cut[0])) pm($requester, $color . ($x+1) . &amp;quot;) $cut[0] - $cut[1]&amp;quot;);&lt;br /&gt;
		usleep(20000);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function suffix($number)&lt;br /&gt;
{&lt;br /&gt;
	$n = (string)$number;&lt;br /&gt;
    $n = $n[strlen($n)-1];&lt;br /&gt;
	if($n == 1) $sufx = &amp;quot;st&amp;quot;;&lt;br /&gt;
	elseif($n == 2) $sufx = &amp;quot;nd&amp;quot;;&lt;br /&gt;
	elseif($n == 3) $sufx = &amp;quot;rd&amp;quot;;&lt;br /&gt;
	else $sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	if($number == 11 || $number == 12 || $number == 13) //english is weird&lt;br /&gt;
		$sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	return $sufx;&lt;br /&gt;
}&lt;br /&gt;
function retrieve($mapname)&lt;br /&gt;
{&lt;br /&gt;
	$type = explode(&amp;quot;.&amp;quot;, $mapname);&lt;br /&gt;
	if($type[sizeof($type)-1] == &amp;quot;xml&amp;quot;) $head = &amp;quot;MAP_FILE&amp;quot;;&lt;br /&gt;
	elseif($type[sizeof($type)-1] == &amp;quot;cfg&amp;quot;) $head = &amp;quot;INCLUDE&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$tail = $mapname;&lt;br /&gt;
	echo $head . &amp;quot; &amp;quot; . $tail . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$cut = explode(&amp;quot;/&amp;quot;, $tail);&lt;br /&gt;
	$split = explode(&amp;quot;.&amp;quot;, $cut[sizeof($cut)-1]);&lt;br /&gt;
	foreach($split as $element)&lt;br /&gt;
	{&lt;br /&gt;
		if($element == &amp;quot;aamap&amp;quot; || $element == &amp;quot;xml&amp;quot; || $element == &amp;quot;cfg&amp;quot;)&lt;br /&gt;
			unset($element);&lt;br /&gt;
		$current_inc .= $element;&lt;br /&gt;
	}&lt;br /&gt;
	$cut = explode(&amp;quot;-&amp;quot;, $current_inc);&lt;br /&gt;
	$current_inc = trim($cut[0]);&lt;br /&gt;
	if(empty($current_inc)) c(&amp;quot;0xff7777Warning: 0xffffffUnable to retrieve current map name.&amp;quot;);&lt;br /&gt;
	return empty($current_inc) ? &amp;quot;null&amp;quot; : $current_inc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zombieplz($name, $x, $y)&lt;br /&gt;
{&lt;br /&gt;
	echo &amp;quot;spawn_zone zombieOwner $name $name $x $y 1 0 0 0 false\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function c($string){&lt;br /&gt;
	echo &amp;quot;console_message $string \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function pm($name, $string){&lt;br /&gt;
	echo &amp;quot;player_message {$name} \&amp;quot;{$string}\&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function getObject($name)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;name == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
function pickmap($includes, $rotate_mode)&lt;br /&gt;
{&lt;br /&gt;
	static $i;&lt;br /&gt;
	if($rotate_mode == 1)&lt;br /&gt;
		return $includes[mt_rand(0, sizeof($includes)-1)];&lt;br /&gt;
	if($rotate_mode == 2)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
	if($rotate_mode == 3)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		if($i == 0) shuffle($includes);&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function smart_time($countdown_secs_after_finish)&lt;br /&gt;
{&lt;br /&gt;
	global $file, $current_inc;&lt;br /&gt;
	static $initial_countdown_secs;&lt;br /&gt;
	if(empty($initial_countdown_secs)) $initial_countdown_secs = $countdown_secs_after_finish;&lt;br /&gt;
	if($initial_countdown_secs &amp;lt; 100)&lt;br /&gt;
		$MAX_TIME = 75; //smart time will not allow more than 75 secs&lt;br /&gt;
	else&lt;br /&gt;
		$MAX_TIME = $initial_countdown_secs * 1.3;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	if(!file_exists($file))	return $initial_countdown_secs;&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[0]);&lt;br /&gt;
	$hs = $split[0];&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[1]);&lt;br /&gt;
	$hs2nd = $split[0];&lt;br /&gt;
	if(empty($hs)) return 60;&lt;br /&gt;
	&lt;br /&gt;
	if($hs*1.3 &amp;lt; $initial_countdown_secs) return $initial_countdown_secs;&lt;br /&gt;
	if(empty($hs2nd)) return $hs * 2 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*2);&lt;br /&gt;
	if(($hs2nd - $hs) &amp;gt; 8) $hs = $hs2nd;&lt;br /&gt;
	return $hs * 1.3 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*1.3);&lt;br /&gt;
}&lt;br /&gt;
function search($me, $search, $amount = 3)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	$count = 0;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $search || $p-&amp;gt;name == $search)&lt;br /&gt;
		{&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
			$count = 1;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		if(stripos(&amp;quot;{$p-&amp;gt;pname}&amp;quot;,&amp;quot;$search&amp;quot;) !== false || stripos(&amp;quot;{$p-&amp;gt;name}&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$count++;&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($count &amp;gt; 1)&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;More than one player containing &#039;$search&#039;, using $found.&amp;quot;);&lt;br /&gt;
	if(empty($count))&lt;br /&gt;
	{&lt;br /&gt;
		if(filetee($search, $me-&amp;gt;name, $amount, false, false) == false)&lt;br /&gt;
		{&lt;br /&gt;
			global $file;&lt;br /&gt;
			$lines = file($file);&lt;br /&gt;
			foreach($lines as $line)&lt;br /&gt;
			{&lt;br /&gt;
				$pieces = explode(&amp;quot; &amp;quot;, $line); &lt;br /&gt;
				if(stripos(&amp;quot;$pieces[1]&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
				{&lt;br /&gt;
					$found = $pieces[1];&lt;br /&gt;
					$count++;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(empty($found) || empty($count) || filetee($found, $me-&amp;gt;name, -2, false, false) === false)&lt;br /&gt;
	{&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;No times found for player: $search&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	filetee($found, $me-&amp;gt;name, $amount, false, false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function version($me)&lt;br /&gt;
{&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Script programming by 0xffffffdukevin&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Email at 0xffffffdukevinjduke@gmail.com0xffff00 for suggestions, comments&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Made for smart&#039;s server&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
known bugs:&lt;br /&gt;
-/stats on rank 1 display twise&lt;br /&gt;
-respawn breaks script&lt;br /&gt;
+fixed: you should login to protect your times not showing&lt;br /&gt;
-times showed twise if time run out -&amp;gt; instead make all score things shown before round_Commencing?&lt;br /&gt;
- $me-&amp;gt;num_plays doesn&#039;t incriment unless you beat your time //because it doesn&#039;t write&lt;br /&gt;
+ fixed x of y&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39085</id>
		<title>Advanced Racing With race timer/Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=39085"/>
		<updated>2012-05-21T20:13:00Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Last updated 21 May 2012&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*  Race Script&lt;br /&gt;
		Includes highscores per map, finish timers, map/cfg rotator, and more&lt;br /&gt;
		Requires a TargetZone as a finish line, winzones will not work&lt;br /&gt;
		If you are not using Rx Hosting your directory needs write permission&lt;br /&gt;
		Made by dukevin (dukevinjduke@gmail.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$save_directory_location = &amp;quot;/home/duke/aa/servers/smart/var/logs/&amp;quot;;   //The directory to save files. Must end with trailing slash&lt;br /&gt;
&lt;br /&gt;
$countdown_secs_after_finish = 30;	//After someone finishes, how many seconds on the timer before the round ends?&lt;br /&gt;
&lt;br /&gt;
$countdown_if_last_player = true; //If only 1 player remaining, start the timer?&lt;br /&gt;
&lt;br /&gt;
$max_time_limit = -1; //start the timer after this many seconds, -1 to disable time limits&lt;br /&gt;
&lt;br /&gt;
$points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1); //points awarded for 1st, 2nd, 3rd, 4th, 5th, etc...&lt;br /&gt;
&lt;br /&gt;
$display_mode = 2; //If set to &amp;quot;1&amp;quot; display a center_message of the map name, 2 for console_message, 3 for both, 0 for no message&lt;br /&gt;
&lt;br /&gt;
$display_prefix = &amp;quot;Current race: 0xffff00&amp;quot;; //When showing the map name, this is appended before it, if $display_mode is 0, this is disabled&lt;br /&gt;
&lt;br /&gt;
$smart_time = true; //If true, the game will determine how many seconds to put on the timer based on previous records instead of using $countdown_secs_after_finish which will be used as the minimum amount of time instead.&lt;br /&gt;
&lt;br /&gt;
$countdown_last_player_extra_time = 0; //If only 1 player remaining, give the last racer this many seconds of extra time to finish. Not needed if $smart_time is true&lt;br /&gt;
&lt;br /&gt;
//Below, inbetween quotes, if you are including maps, put something like: &amp;quot;/path/to/map.aamap.xml&amp;quot;. If you are using cfgs, put &amp;quot;mycfg.cfg&amp;quot; &lt;br /&gt;
$includes = array(&amp;quot;Default.cfg&amp;quot;,&amp;quot;Hurricania.cfg&amp;quot;,&amp;quot;100Watts.cfg&amp;quot;,&amp;quot;Aflac.cfg&amp;quot;,&amp;quot;AnimusonConfusion.cfg&amp;quot;,&amp;quot;Aoi.cfg&amp;quot;,&amp;quot;ApplePie.cfg&amp;quot;,&amp;quot;AQuickExplosion.cfg&amp;quot;,&amp;quot;Arco.cfg&amp;quot;,&amp;quot;AroundandAround.cfg&amp;quot;,&amp;quot;AroundTheHorn.cfg&amp;quot;,&amp;quot;Arsenal.cfg&amp;quot;,&amp;quot;AtlanticCharter.cfg&amp;quot;,&amp;quot;Axe.cfg&amp;quot;,&amp;quot;BatPigBear.cfg&amp;quot;,&amp;quot;BenignRevolution.cfg&amp;quot;,&amp;quot;Berlin.cfg&amp;quot;,&amp;quot;BlazingParadise.cfg&amp;quot;,&amp;quot;BloodyHell.cfg&amp;quot;,&amp;quot;Broken.cfg&amp;quot;,&amp;quot;Buffalo.cfg&amp;quot;,&amp;quot;CandyBar.cfg&amp;quot;,&amp;quot;Cell.cfg&amp;quot;,&amp;quot;Charriot.cfg&amp;quot;,&amp;quot;Cherrio.cfg&amp;quot;,&amp;quot;Chicken.cfg&amp;quot;,&amp;quot;Chihuahua.cfg&amp;quot;,&amp;quot;Claw.cfg&amp;quot;,&amp;quot;Colombo.cfg&amp;quot;,&amp;quot;Compact.cfg&amp;quot;,&amp;quot;Croma.cfg&amp;quot;,&amp;quot;DeathOctagon.cfg&amp;quot;,&amp;quot;DeathTrap.cfg&amp;quot;,&amp;quot;Disastro.cfg&amp;quot;,&amp;quot;Divided.cfg&amp;quot;,&amp;quot;Dizzy.cfg&amp;quot;,&amp;quot;DontFlinch.cfg&amp;quot;,&amp;quot;Dragrace.cfg&amp;quot;,&amp;quot;Eighty.cfg&amp;quot;,&amp;quot;FirePalace.cfg&amp;quot;,&amp;quot;Fobia.cfg&amp;quot;,&amp;quot;Four.cfg&amp;quot;,&amp;quot;Flex.cfg&amp;quot;,&amp;quot;FrizzleFraz.cfg&amp;quot;,&amp;quot;Glacier.cfg&amp;quot;,&amp;quot;Guitar.cfg&amp;quot;,&amp;quot;Handgrip.cfg&amp;quot;,&amp;quot;Holiday.cfg&amp;quot;,&amp;quot;Hurricania.cfg&amp;quot;,&amp;quot;Hyperpod.cfg&amp;quot;,&amp;quot;Illusion.cfg&amp;quot;,&amp;quot;Insanity.cfg&amp;quot;,&amp;quot;ItsABug.cfg&amp;quot;,&amp;quot;JailBreak.cfg&amp;quot;,&amp;quot;Jelly.cfg&amp;quot;,&amp;quot;Jester.cfg&amp;quot;,&amp;quot;KirbyDance.cfg&amp;quot;,&amp;quot;LetsDance.cfg&amp;quot;,&amp;quot;Lava.cfg&amp;quot;,&amp;quot;lol.cfg&amp;quot;,&amp;quot;Luigi.cfg&amp;quot;,&amp;quot;Marathon.cfg&amp;quot;,&amp;quot;Margarita.cfg&amp;quot;,&amp;quot;Mario.cfg&amp;quot;,&amp;quot;Mint.cfg&amp;quot;,&amp;quot;Moon.cfg&amp;quot;,&amp;quot;MovinOnUp.cfg&amp;quot;,&amp;quot;MrRoboto.cfg&amp;quot;,&amp;quot;Mutant.cfg&amp;quot;,&amp;quot;Nebraska.cfg&amp;quot;,&amp;quot;Nova.cfg&amp;quot;,&amp;quot;OctaGone2Death.cfg&amp;quot;,&amp;quot;Octarace.cfg&amp;quot;,&amp;quot;One.cfg&amp;quot;,&amp;quot;OnePathv2.cfg&amp;quot;,&amp;quot;Organius.cfg&amp;quot;,&amp;quot;Paura.cfg&amp;quot;,&amp;quot;PewPew.cfg&amp;quot;,&amp;quot;PillsburyDrummerboy.cfg&amp;quot;,&amp;quot;Pirata.cfg&amp;quot;,&amp;quot;PointOfNoReturn.cfg&amp;quot;,&amp;quot;Pow.cfg&amp;quot;,&amp;quot;PureRacingTorture.cfg&amp;quot;,&amp;quot;RacersOnYourMark.cfg&amp;quot;,&amp;quot;RatTunnels.cfg&amp;quot;,&amp;quot;Resurrection.cfg&amp;quot;,&amp;quot;RoadLessTraveled.cfg&amp;quot;,&amp;quot;Roundabout.cfg&amp;quot;,&amp;quot;Seven.cfg&amp;quot;,&amp;quot;Shield.cfg&amp;quot;,&amp;quot;ShoppingMall.cfg&amp;quot;,&amp;quot;SidebySide.cfg&amp;quot;,&amp;quot;Six.cfg&amp;quot;,&amp;quot;SmallSpaces.cfg&amp;quot;,&amp;quot;Spiral.cfg&amp;quot;,&amp;quot;SpiralHam.cfg&amp;quot;,&amp;quot;SquareRoot.cfg&amp;quot;,&amp;quot;Stardome.cfg&amp;quot;,&amp;quot;Sun.cfg&amp;quot;,&amp;quot;Symmetry.cfg&amp;quot;,&amp;quot;TannersBigTronDaddy.cfg&amp;quot;,&amp;quot;TheMachine.cfg&amp;quot;,&amp;quot;TheRoadNotTaken.cfg&amp;quot;,&amp;quot;Three.cfg&amp;quot;,&amp;quot;TikiTime.cfg&amp;quot;,&amp;quot;TortureChamber.cfg&amp;quot;,&amp;quot;Trijecture.cfg&amp;quot;,&amp;quot;Trucco.cfg&amp;quot;,&amp;quot;TurnAround.cfg&amp;quot;,&amp;quot;Two.cfg&amp;quot;,&amp;quot;Unfortunate.cfg&amp;quot;,&amp;quot;Verta.cfg&amp;quot;,&amp;quot;Verta2.cfg&amp;quot;,&amp;quot;Voltrobe.cfg&amp;quot;,&amp;quot;What.cfg&amp;quot;,&amp;quot;WhatTheHECK.cfg&amp;quot;,&amp;quot;Wrapper.cfg&amp;quot;,&amp;quot;XploderPro.cfg&amp;quot;,&amp;quot;Zero.cfg&amp;quot;,&amp;quot;ZigZag.cfg&amp;quot;,&amp;quot;ZigZagZaney.cfg&amp;quot;,&amp;quot;Zipper.cfg&amp;quot;,&amp;quot;Zone4.cfg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$rotate_mode = 2; //Set to 1 for simple random, 2 to play each map in order, 3 to randomly pick a map that hasn&#039;t been picked yet.&lt;br /&gt;
&lt;br /&gt;
$num_map_plays = 2; //play each map how many times before switching to next map&lt;br /&gt;
&lt;br /&gt;
$zombie_win = false;  //Does the winner get a zombie? (adjust zombie_zone_speed to fit your liking)&lt;br /&gt;
&lt;br /&gt;
$precision = 3; //How many decimal places to show times? A value of 3 shows X.xxx, 2 shows X.xx.  5 is max. &lt;br /&gt;
&lt;br /&gt;
/*===================== End of customization options =============================*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$reccomended_settings = array(&amp;quot;target_initial_score 0&amp;quot;, &amp;quot;sp_game_type 0&amp;quot;, &amp;quot;game_type 0&amp;quot;, &amp;quot;sp_finish_type 0&amp;quot;, &amp;quot;finish_type 0&amp;quot;, &amp;quot;sp_num_ais 0&amp;quot;, &amp;quot;num_ais 0&amp;quot;, &amp;quot;shot_seek_update_time 0.1&amp;quot;, &amp;quot;ladderlog_write_all 1|1&amp;quot;);  //these settings should be set for racing mode and is run every round&lt;br /&gt;
&lt;br /&gt;
class Player&lt;br /&gt;
{&lt;br /&gt;
	var $name;&lt;br /&gt;
	var $pname;&lt;br /&gt;
	var $place;&lt;br /&gt;
	var $finish_time;&lt;br /&gt;
	var $best_time;&lt;br /&gt;
	var $num_plays;&lt;br /&gt;
	function __construct($name) &lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;name = $name;&lt;br /&gt;
		$this-&amp;gt;read();&lt;br /&gt;
		if(empty($this-&amp;gt;num_plays)) $this-&amp;gt;num_plays = 0;&lt;br /&gt;
	}&lt;br /&gt;
	function read()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $precision;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		foreach($lines as $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);  //time name num_plays&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;best_time = round($pieces[0], $precision);&lt;br /&gt;
				$this-&amp;gt;num_plays = $pieces[2];&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	function write()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $current_inc;&lt;br /&gt;
		$found = false;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xff7777Warning: 0xffffffFile &#039;$current_inc.txt&#039; not found, file creation may have failed. Retrying...&amp;quot;);&lt;br /&gt;
			$fp = fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			$pieces[1] = trim($pieces[1]);&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$lines[$i] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
				$found = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!$found)&lt;br /&gt;
		{&lt;br /&gt;
			$lines[] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		sort(&amp;amp;$lines, SORT_NUMERIC);&lt;br /&gt;
		file_put_contents($file, $lines);&lt;br /&gt;
		fclose($fp);&lt;br /&gt;
	}&lt;br /&gt;
	function finished($time, $place)&lt;br /&gt;
	{&lt;br /&gt;
		global $points, $players, $current_inc, $precision, $file;&lt;br /&gt;
		$this-&amp;gt;num_plays++;&lt;br /&gt;
		$time = round($time,$precision);&lt;br /&gt;
		$this-&amp;gt;finish_time = $time;&lt;br /&gt;
		$this-&amp;gt;place = $place;&lt;br /&gt;
		$sufx = suffix($place);&lt;br /&gt;
		$score = $points[$place-1];&lt;br /&gt;
		if(empty($score)) $score = 0;&lt;br /&gt;
		if($place &amp;gt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
			{&lt;br /&gt;
				if($p-&amp;gt;place == 1)&lt;br /&gt;
				{&lt;br /&gt;
					$first = $p-&amp;gt;finish_time;&lt;br /&gt;
					$difference = &amp;quot; 0xffffff(&amp;quot; . round($this-&amp;gt;finish_time - $p-&amp;gt;finish_time,$precision) . &amp;quot; s behind 1st)&amp;quot;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
			$difference = &amp;quot;&amp;quot;;&lt;br /&gt;
		c(&amp;quot;0x55ccff &amp;gt; 0xffff99$this-&amp;gt;pname 0x55ccfffinished $place$sufx in 0xffff99$time 0x55ccffseconds.$difference 0x808080+{$score} pts&amp;quot;);&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;gt;= $this-&amp;gt;best_time &amp;amp;&amp;amp; !empty($this-&amp;gt;best_time)) //took longer than alltime best&lt;br /&gt;
		{&lt;br /&gt;
			pm($this-&amp;gt;name, &amp;quot;    0xaaaaffYour all-time best on 0xddddff{$current_inc}0xaaaaff is 0xffffff{$this-&amp;gt;best_time} 0xaaaaffs, you are 0xffffff&amp;quot;. round($this-&amp;gt;finish_time - $this-&amp;gt;best_time, $precision).&amp;quot; 0xaaaaffs 0xff7777slower0xaaaaff.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;lt; $this-&amp;gt;best_time || empty($this-&amp;gt;best_time))&lt;br /&gt;
		{&lt;br /&gt;
			if(!empty($this-&amp;gt;best_time)) $oldrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			$this-&amp;gt;write();&lt;br /&gt;
			$newrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			if(empty($this-&amp;gt;best_time)) &lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaffThis is your first time finishing 0xddddff{$current_inc}0xaaaaff!&amp;quot;);&lt;br /&gt;
			else pm($this-&amp;gt;name, &amp;quot;  0x3388ff* 0x55ff88New personal record! You improved 0xffffff&amp;quot; . round($this-&amp;gt;best_time - $this-&amp;gt;finish_time,$precision) . &amp;quot;0x55ff88 s raising 0xffffff&amp;quot;. ($oldrank - $newrank) .&amp;quot; 0x55ff88ranks!&amp;quot;);&lt;br /&gt;
			if($newrank == 1) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffd700Congratulate 0xffffff$this-&amp;gt;name 0xffd700for setting a new record on 0xffddaa$current_inc 0xffd700as the fastest time ever!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else if($newrank == 2) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xc0c0c0just ranked as the 0xffffff2nd 0xc0c0c0fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*\n&amp;quot;);&lt;br /&gt;
			else if($newrank == 3) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xcd7f32just ranked as the 0xffcc003rd 0xcd7f32fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;     0xaaaaaaYou are now rank 0xffffff$newrank 0xaaaaaaof &amp;quot;.(count(file($file))).&amp;quot; as the fastest time for 0xcccccc{$current_inc}0xaaaaaa!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;add_score_player $this-&amp;gt;name &amp;quot; . $score . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
$players = array();&lt;br /&gt;
$finished = 0;&lt;br /&gt;
$i=0;&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
	$line = rtrim(fgets(STDIN, 1024));&lt;br /&gt;
	if(preg_match(&amp;quot;/^CYCLE_CREATED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;,$line);&lt;br /&gt;
		$name = $split[1];&lt;br /&gt;
		if(getObject($name) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$num_racers++;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if(strstr($name,&amp;quot;\&amp;quot;&amp;quot;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0x000000 ! 0xffff00 $name is not allowed to use the characters 0xffffff« or \&amp;quot; 0xffff00 in their name.&amp;quot;);&lt;br /&gt;
			$clean = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;_&amp;quot;,$name);&lt;br /&gt;
			$wo = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$name);&lt;br /&gt;
			echo &amp;quot;rename $wo $clean \n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;rename $name $clean \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		$players[$i] = new Player($split[1]);&lt;br /&gt;
		if(isset($pretty))&lt;br /&gt;
		{&lt;br /&gt;
			for($x = 0; $x &amp;lt; sizeof($pretty); $x++)&lt;br /&gt;
			{&lt;br /&gt;
				$crack = explode(&amp;quot;*%$&amp;quot;, $pretty[$x]);&lt;br /&gt;
				if($crack[0] == $players[$i]-&amp;gt;name)&lt;br /&gt;
					$players[$i]-&amp;gt;pname = trim($crack[1]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!isset($players[$i]-&amp;gt;pname))&lt;br /&gt;
			$players[$i]-&amp;gt;pname = $players[$i]-&amp;gt;name;&lt;br /&gt;
		if($i == 0)&lt;br /&gt;
		{&lt;br /&gt;
			$xPos = $split[2];&lt;br /&gt;
			$yPos = $split[3];&lt;br /&gt;
		}&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) $rank = filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
		$sufx = suffix($rank);&lt;br /&gt;
		pm($players[$i]-&amp;gt;name, &amp;quot;0x808080Top 3 times for $current_inc:&amp;quot;);&lt;br /&gt;
		filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 3, true);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			$remind = &amp;quot;0x808080(Maybe because you&#039;re logged out?)&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			$remind = null;&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYour best time for $current_inc is 0xffffff{$players[$i]-&amp;gt;best_time}0x99ddff s ranking 0xffffff$rank{$sufx}0x99ddff of &amp;quot;.count(file($file)).&amp;quot;.&amp;quot;);&lt;br /&gt;
		if(empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYou have never won 0xcccccc$current_inc 0x99ddffbefore. $remind&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
		$i++;&lt;br /&gt;
		$num_racers = $i;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_ENTERED/&amp;quot;, $line))&lt;br /&gt;
	{   &lt;br /&gt;
		//PLAYER_ENTERED rx&amp;quot;dukevin 76.174.69.46 Rx«dukevin&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[1] . &amp;quot;*%$&amp;quot; . $split[3] . &amp;quot; &amp;quot; . $split[4] . &amp;quot; &amp;quot; . $split[5];&lt;br /&gt;
		$pretty = array_slice($pretty,sizeof($pretty)-40,40);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_RENAMED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[2] . &amp;quot;*%$&amp;quot; . $split[5] . &amp;quot; &amp;quot; . $split[6] . &amp;quot; &amp;quot; . $split[7];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_COMMENCING/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		foreach($reccomended_settings as $s)&lt;br /&gt;
			echo &amp;quot;$s \n&amp;quot;;&lt;br /&gt;
		unset($players);&lt;br /&gt;
		$finished = 0;&lt;br /&gt;
		$num_racers = 0;&lt;br /&gt;
		$a_player_finished = false;&lt;br /&gt;
		$i = 0;&lt;br /&gt;
		if(empty($num_plays)) $num_plays = 0;&lt;br /&gt;
		$num_plays++;&lt;br /&gt;
		if($num_plays &amp;gt;= $num_map_plays)&lt;br /&gt;
		{&lt;br /&gt;
			$pick = pickmap($includes, $rotate_mode);&lt;br /&gt;
			$num_plays = 0;&lt;br /&gt;
		}&lt;br /&gt;
		$current_inc = retrieve($pick);&lt;br /&gt;
		c(&amp;quot;Reading $current_inc.txt...&amp;quot;);&lt;br /&gt;
		switch($display_mode)&lt;br /&gt;
		{&lt;br /&gt;
			case 3:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
			case 2:&lt;br /&gt;
				echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
				break;&lt;br /&gt;
			case 1:&lt;br /&gt;
				c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$file = &amp;quot;$save_directory_location&amp;quot; . &amp;quot;$current_inc&amp;quot; . &amp;quot;.txt&amp;quot;;&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffff$current_inc.txt not found, creating it...&amp;quot;);&lt;br /&gt;
			fopen($file, &#039;w&#039;);&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			if(!file_exists($file))&lt;br /&gt;
				c(&amp;quot;0xff7777Warning: 0xffffffFile creation failed, scores cannot be saved! Does your directory have write permission?&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($smart_time)&lt;br /&gt;
			$countdown_secs_after_finish = smart_time($countdown_secs_after_finish);&lt;br /&gt;
		echo &amp;quot;target_survive_time &amp;quot; . ($countdown_secs_after_finish+1) .&amp;quot;\n&amp;quot;;&lt;br /&gt;
		if(mt_rand(0,7)==7) c(&amp;quot;0x808080You can type /stats &amp;lt;name&amp;gt; &amp;lt;optional amount&amp;gt; to view high scores for maps.&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line) || preg_match(&amp;quot;/^ROUND_SCORE/&amp;quot;,$line))&lt;br /&gt;
	{&lt;br /&gt;
		if($finished == 0 || $a_player_finished == true)&lt;br /&gt;
			goto end;&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line))&lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;spawn_zone win $split[3] $split[4] 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
		}&lt;br /&gt;
		sleep(1);&lt;br /&gt;
		if(!empty($split[6])) echo &amp;quot;center_message Winner: {$split[6]}\n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;collapse_zone\n&amp;quot;;&lt;br /&gt;
		if(empty($split[6]))&lt;br /&gt;
			echo &amp;quot;spawn_zone win $xPos $yPos 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
		$a_player_finished = true;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^INVALID_COMMAND/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		//INVALID_COMMAND /cast rx&amp;quot;dukevin 76.174.69.46 accesslevel argument 50&lt;br /&gt;
		if($split[1] == &amp;quot;/stats&amp;quot; || $split[1] == &amp;quot;/s&amp;quot;|| $split[1] == &amp;quot;/search&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			if(empty($split[6]) || !isset($split[6])) $split[6] = 3;&lt;br /&gt;
			if(empty($split[5]) || !isset($split[5]))&lt;br /&gt;
				$split[5] = $split[2];&lt;br /&gt;
			search($obj, $split[5], $split[6]);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/version&amp;quot; || $split[1] == &amp;quot;/v&amp;quot; || $split[1] == &amp;quot;/ver&amp;quot; || $split[1] == &amp;quot;/vers&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			version($obj);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/debug&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;Number of maps rotating: &amp;quot; . count($includes));&lt;br /&gt;
			pm($split[2], &amp;quot;Number pnames in memory: &amp;quot; . count($pretty));&lt;br /&gt;
			pm($split[2], &amp;quot;Player Objects:&amp;quot;);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				pm($split[2], &amp;quot;$p-&amp;gt;name&amp;quot;);			&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;0xff7777Invalid command, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_PLAYER_ENTER/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		//TARGETZONE_PLAYER_ENTER 2 zonename 100 100 dukevin 90.8824 103.506 1 0 37.6366&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$name = $split[5];&lt;br /&gt;
		$time = $split[10];&lt;br /&gt;
		$obj = getObject($name);&lt;br /&gt;
		if(!method_exists($obj,&#039;finished&#039;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffffNo object to operate on, perhaps you just loaded scripts?&amp;quot;);&lt;br /&gt;
			echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;kill $name\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if($obj-&amp;gt;finish_time &amp;gt; 0) //already hit the finish line&lt;br /&gt;
			goto end;&lt;br /&gt;
		$finished++;&lt;br /&gt;
		$obj-&amp;gt;finished($time, $finished);&lt;br /&gt;
		$num_racers--;&lt;br /&gt;
		if($zombie_win) zombieplz($split[5], $split[6], $split[7]);&lt;br /&gt;
		@clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish);&lt;br /&gt;
		if($num_racers &amp;lt;= 0)&lt;br /&gt;
			echo &amp;quot;target_survive_time &amp;quot; . 1 .&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^GAME_TIME/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		@clock(&amp;quot;tick&amp;quot;);&lt;br /&gt;
		if($max_time_limit &amp;lt;= 0)&lt;br /&gt;
			goto end;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			if($split[1] == $max_time_limit)&lt;br /&gt;
				clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^DEATH_FRAG|DEATH_SUICIDE|PLAYER_KILLED|DEATH_SHOT_FRAG|DEATH_DEATHZONE|DEATH_SHOT_SUICIDE|DEATH_TEAMKILL|DEATH_SHOT_TEAMKILL|DEATH_ZOMBIEZONE|DEATH_DEATHSHOT|DEATH_SELF_DESTRUCT/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(empty(getObject($split[1])-&amp;gt;finish_time))&lt;br /&gt;
			$num_racers--;&lt;br /&gt;
		if(sizeof($players) &amp;lt;= 1) //if only 1 player, don&#039;t start the timer&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($countdown_if_last_player == false) //don&#039;t start the timer if user doesn&#039;t want it&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($num_racers &amp;lt;= 1)&lt;br /&gt;
		{&lt;br /&gt;
			if(@clock(&amp;quot;getState&amp;quot;) == &amp;quot;active&amp;quot; &amp;amp;&amp;amp; (empty(getObject($split[1])-&amp;gt;finish_time))) //only winner alive, last racer died &amp;amp;&amp;amp;racer not finish&lt;br /&gt;
			{&lt;br /&gt;
				echo &amp;quot;spawn_zone win $xPos $yPos 1000000 100000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
				@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			if($num_racers != 0) clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish + $countdown_last_player_extra_time, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_WINNER/&amp;quot;, $line))&lt;br /&gt;
		foreach($players as $p)&lt;br /&gt;
		{&lt;br /&gt;
			if(!(strstr($p-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
				pm($p-&amp;gt;name, &amp;quot;0xffddaaYou should /login to protect your times!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
end:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clock($action, $duration, $options)&lt;br /&gt;
{&lt;br /&gt;
	static $state, $time, $options;&lt;br /&gt;
	if($action == &amp;quot;start&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;active&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$state = &amp;quot;active&amp;quot;;&lt;br /&gt;
		$time = $duration;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;stop&amp;quot; || $state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
		$options = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;tick&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$time--;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
		if(empty($time) || $time &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			if($options = &amp;quot;kill&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				global $players;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					echo &amp;quot;kill $p-&amp;gt;name \n&amp;quot;;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
			$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;getState&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		return $state;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function filetee($search, $requester, $amount = 3, $display_top = false, $onlyrank = false)&lt;br /&gt;
{&lt;br /&gt;
	global $file;&lt;br /&gt;
	$found = false;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
	{&lt;br /&gt;
		$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pieces[1] = trim($pieces[1]);&lt;br /&gt;
		if($pieces[1] == $search) &lt;br /&gt;
		{	&lt;br /&gt;
			$found = true;&lt;br /&gt;
			if($onlyrank) return $i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($display_top) $i = 0;&lt;br /&gt;
	if($amount &amp;gt; 150) $amount = 150;&lt;br /&gt;
	if($amount %2 == 0) $amount += 1;&lt;br /&gt;
	$amount = floor($amount/2);&lt;br /&gt;
	if($i == 0 || $i == sizeof($lines)-1) //display an extra entry for 1st and last place&lt;br /&gt;
		$amount += 1;&lt;br /&gt;
	if($found == false &amp;amp;&amp;amp; $display_top == false)&lt;br /&gt;
		return false;&lt;br /&gt;
	for($x = $i-$amount; $x &amp;lt;= $i+$amount; $x++)&lt;br /&gt;
	{&lt;br /&gt;
		$cut = explode(&amp;quot; &amp;quot;, $lines[$x]);&lt;br /&gt;
		$color = ($cut[1] == $search) ? &#039;0xffff88&#039; : &#039;0xcccccc&#039;;&lt;br /&gt;
		if(!empty($cut[0])) pm($requester, $color . ($x+1) . &amp;quot;) $cut[0] - $cut[1]&amp;quot;);&lt;br /&gt;
		usleep(20000);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function suffix($number)&lt;br /&gt;
{&lt;br /&gt;
	$n = (string)$number;&lt;br /&gt;
    $n = $n[strlen($n)-1];&lt;br /&gt;
	if($n == 1) $sufx = &amp;quot;st&amp;quot;;&lt;br /&gt;
	elseif($n == 2) $sufx = &amp;quot;nd&amp;quot;;&lt;br /&gt;
	elseif($n == 3) $sufx = &amp;quot;rd&amp;quot;;&lt;br /&gt;
	else $sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	if($number == 11 || $number == 12 || $number == 13) //english is weird&lt;br /&gt;
		$sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	return $sufx;&lt;br /&gt;
}&lt;br /&gt;
function retrieve($mapname)&lt;br /&gt;
{&lt;br /&gt;
	$type = explode(&amp;quot;.&amp;quot;, $mapname);&lt;br /&gt;
	if($type[sizeof($type)-1] == &amp;quot;xml&amp;quot;) $head = &amp;quot;MAP_FILE&amp;quot;;&lt;br /&gt;
	elseif($type[sizeof($type)-1] == &amp;quot;cfg&amp;quot;) $head = &amp;quot;INCLUDE&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$tail = $mapname;&lt;br /&gt;
	echo $head . &amp;quot; &amp;quot; . $tail . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$cut = explode(&amp;quot;/&amp;quot;, $tail);&lt;br /&gt;
	$split = explode(&amp;quot;.&amp;quot;, $cut[sizeof($cut)-1]);&lt;br /&gt;
	foreach($split as $element)&lt;br /&gt;
	{&lt;br /&gt;
		if($element == &amp;quot;aamap&amp;quot; || $element == &amp;quot;xml&amp;quot; || $element == &amp;quot;cfg&amp;quot;)&lt;br /&gt;
			unset($element);&lt;br /&gt;
		$current_inc .= $element;&lt;br /&gt;
	}&lt;br /&gt;
	$cut = explode(&amp;quot;-&amp;quot;, $current_inc);&lt;br /&gt;
	$current_inc = trim($cut[0]);&lt;br /&gt;
	if(empty($current_inc)) c(&amp;quot;0xff7777Warning: 0xffffffUnable to retrieve current map name.&amp;quot;);&lt;br /&gt;
	return empty($current_inc) ? &amp;quot;null&amp;quot; : $current_inc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zombieplz($name, $x, $y)&lt;br /&gt;
{&lt;br /&gt;
	echo &amp;quot;spawn_zone zombieOwner $name $name $x $y 1 0 0 0 false\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function c($string){&lt;br /&gt;
	echo &amp;quot;console_message $string \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function pm($name, $string){&lt;br /&gt;
	echo &amp;quot;player_message {$name} \&amp;quot;{$string}\&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function getObject($name)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;name == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
function pickmap($includes, $rotate_mode)&lt;br /&gt;
{&lt;br /&gt;
	static $i;&lt;br /&gt;
	if($rotate_mode == 1)&lt;br /&gt;
		return $includes[mt_rand(0, sizeof($includes)-1)];&lt;br /&gt;
	if($rotate_mode == 2)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
	if($rotate_mode == 3)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		if($i == 0) shuffle($includes);&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function smart_time($countdown_secs_after_finish)&lt;br /&gt;
{&lt;br /&gt;
	global $file, $current_inc;&lt;br /&gt;
	static $initial_countdown_secs;&lt;br /&gt;
	if(empty($initial_countdown_secs)) $initial_countdown_secs = $countdown_secs_after_finish;&lt;br /&gt;
	if($initial_countdown_secs &amp;lt; 100)&lt;br /&gt;
		$MAX_TIME = 75; //smart time will not allow more than 75 secs&lt;br /&gt;
	else&lt;br /&gt;
		$MAX_TIME = $initial_countdown_secs * 1.3;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	if(!file_exists($file))	return $initial_countdown_secs;&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[0]);&lt;br /&gt;
	$hs = $split[0];&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[1]);&lt;br /&gt;
	$hs2nd = $split[0];&lt;br /&gt;
	if(empty($hs)) return 60;&lt;br /&gt;
	&lt;br /&gt;
	if($hs*1.3 &amp;lt; $initial_countdown_secs) return $initial_countdown_secs;&lt;br /&gt;
	if(empty($hs2nd)) return $hs * 2 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*2);&lt;br /&gt;
	if(($hs2nd - $hs) &amp;gt; 8) $hs = $hs2nd;&lt;br /&gt;
	return $hs * 1.3 &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*1.3);&lt;br /&gt;
}&lt;br /&gt;
function search($me, $search, $amount = 3)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	$count = 0;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $search || $p-&amp;gt;name == $search)&lt;br /&gt;
		{&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
			$count = 1;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		if(stripos(&amp;quot;{$p-&amp;gt;pname}&amp;quot;,&amp;quot;$search&amp;quot;) !== false || stripos(&amp;quot;{$p-&amp;gt;name}&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$count++;&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($count &amp;gt; 1)&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;More than one player containing &#039;$search&#039;, using $found.&amp;quot;);&lt;br /&gt;
	if(empty($count))&lt;br /&gt;
	{&lt;br /&gt;
		if(filetee($search, $me-&amp;gt;name, $amount, false, false) == false)&lt;br /&gt;
		{&lt;br /&gt;
			global $file;&lt;br /&gt;
			$lines = file($file);&lt;br /&gt;
			foreach($lines as $line)&lt;br /&gt;
			{&lt;br /&gt;
				$pieces = explode(&amp;quot; &amp;quot;, $line); &lt;br /&gt;
				if(stripos(&amp;quot;$pieces[1]&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
				{&lt;br /&gt;
					$found = $pieces[1];&lt;br /&gt;
					$count++;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(empty($found) || empty($count) || filetee($found, $me-&amp;gt;name, -2, false, false) === false)&lt;br /&gt;
	{&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;No times found for player: $search&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	filetee($found, $me-&amp;gt;name, $amount, false, false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function version($me)&lt;br /&gt;
{&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Script programming by 0xffffffdukevin&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Email at 0xffffffdukevinjduke@gmail.com0xffff00 for suggestions, comments&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Made for smart&#039;s server&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
known bugs:&lt;br /&gt;
-/stats on rank 1 display twise&lt;br /&gt;
-respawn breaks script&lt;br /&gt;
+fixed: you should login to protect your times not showing&lt;br /&gt;
-times showed twise if time run out -&amp;gt; instead make all score things shown before round_Commencing?&lt;br /&gt;
- $me-&amp;gt;num_plays doesn&#039;t incriment unless you beat your time //because it doesn&#039;t write&lt;br /&gt;
+ fixed x of y&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=38873</id>
		<title>Advanced Racing With race timer/Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=38873"/>
		<updated>2012-05-08T09:54:04Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Last Updated - 8 May 2012&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*  Race Script&lt;br /&gt;
		Includes highscores per map, finish timers, map/cfg rotator, and more&lt;br /&gt;
		Requires a TargetZone as a finish line, winzones will not work&lt;br /&gt;
		If you are not using Rx Hosting your directory needs write permission&lt;br /&gt;
		Made by dukevin (dukevinjduke@gmail.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$save_directory_location = &amp;quot;/home/duke/aa/servers/smart/var/logs/&amp;quot;;   //The directory to save files. Must end with trailing slash&lt;br /&gt;
&lt;br /&gt;
$countdown_secs_after_finish = 30;	//After someone finishes, how many seconds on the timer before the round ends?&lt;br /&gt;
&lt;br /&gt;
$countdown_if_last_player = true; //If only 1 player remaining, start the timer?&lt;br /&gt;
&lt;br /&gt;
$max_time_limit = -1; //start the timer after this many seconds, -1 to disable time limits&lt;br /&gt;
&lt;br /&gt;
$points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1); //points awarded for 1st, 2nd, 3rd, 4th, 5th, etc...&lt;br /&gt;
&lt;br /&gt;
$display_mode = 1; //If set to &amp;quot;1&amp;quot; display a center_message of the map name, 2 for console_message, 3 for both, 0 for no message&lt;br /&gt;
&lt;br /&gt;
$display_prefix = &amp;quot;Current race: 0xffff00&amp;quot;; //When showing the map name, this is appended before it, if $display_mode is 0, this is disabled&lt;br /&gt;
&lt;br /&gt;
$smart_time = true; //If true, the game will determine how many seconds to put on the timer based on previous records instead of using $countdown_secs_after_finish which will be used as the minimum amount of time instead.&lt;br /&gt;
&lt;br /&gt;
$countdown_last_player_extra_time = 0; //If only 1 player remaining, give the last racer this many seconds of extra time to finish. Not needed if $smart_time is true&lt;br /&gt;
&lt;br /&gt;
//Below, inbetween quotes, if you are including maps, put something like: &amp;quot;/path/to/map.aamap.xml&amp;quot;. If you are using cfgs, put &amp;quot;mycfg.cfg&amp;quot; &lt;br /&gt;
$includes = array(&amp;quot;Default.cfg&amp;quot;,&amp;quot;8Ball.cfg&amp;quot;,&amp;quot;100Watts.cfg&amp;quot;,&amp;quot;AQuickExplosion.cfg&amp;quot;,&amp;quot;Aflac.cfg&amp;quot;,&amp;quot;AnimusonConfusion.cfg&amp;quot;,&amp;quot;Aoi.cfg&amp;quot;,&amp;quot;Arsenal.cfg&amp;quot;,&amp;quot;AtlanticCharter.cfg&amp;quot;,&amp;quot;Berlin.cfg&amp;quot;,&amp;quot;Cell.cfg&amp;quot;,&amp;quot;Cherrio.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;Compact.cfg&amp;quot;,&amp;quot;DevilsSandglass.cfg&amp;quot;,&amp;quot;Dizzy.cfg&amp;quot;,&amp;quot;FirePalace.cfg&amp;quot;,&amp;quot;BenignRevolution.cfg&amp;quot;,&amp;quot;BloodyHell.cfg&amp;quot;,&amp;quot;Chihuahua.cfg&amp;quot;,&amp;quot;DeathOctagon.cfg&amp;quot;,&amp;quot;DeathTrap.cfg&amp;quot;,&amp;quot;Flex.cfg&amp;quot;,&amp;quot;FrizzleFraz.cfg&amp;quot;,&amp;quot;Glacier.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;Handgrip.cfg&amp;quot;,&amp;quot;Holiday.cfg&amp;quot;,&amp;quot;Hyperpod.cfg&amp;quot;,&amp;quot;Illusion.cfg&amp;quot;,&amp;quot;Insane.cfg&amp;quot;,&amp;quot;ItsABug.cfg&amp;quot;,&amp;quot;JailBreak.cfg&amp;quot;,&amp;quot;Jelly.cfg&amp;quot;,&amp;quot;Killzone.cfg&amp;quot;,&amp;quot;KirbyDance.cfg&amp;quot;,&amp;quot;lol.cfg&amp;quot;,&amp;quot;Marathon.cfg&amp;quot;,&amp;quot;Mint.cfg&amp;quot;,&amp;quot;MissionImpossible.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;Moon.cfg&amp;quot;,&amp;quot;MovinOnUp.cfg&amp;quot;,&amp;quot;MrRoboto.cfg&amp;quot;,&amp;quot;Mutant.cfg&amp;quot;,&amp;quot;Nebraska.cfg&amp;quot;,&amp;quot;Nova.cfg&amp;quot;,&amp;quot;OctaGone2Death.cfg&amp;quot;,&amp;quot;PointOfNoReturn.cfg&amp;quot;,&amp;quot;PureRacingTorture.cfg&amp;quot;,&amp;quot;RatTunnels.cfg&amp;quot;,&amp;quot;Red.cfg&amp;quot;,&amp;quot;Resurrection.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;RoadLessTraveled.cfg&amp;quot;,&amp;quot;RoadOfDeath.cfg&amp;quot;,&amp;quot;Roundabout.cfg&amp;quot;,&amp;quot;Shield.cfg&amp;quot;,&amp;quot;SidebySide.cfg&amp;quot;,&amp;quot;SmallSpaces.cfg&amp;quot;,&amp;quot;Spiral.cfg&amp;quot;,&amp;quot;SpiralHam.cfg&amp;quot;,&amp;quot;SquareRoot.cfg&amp;quot;,&amp;quot;Stardome.cfg&amp;quot;,&amp;quot;Sun.cfg&amp;quot;,&amp;quot;Symmetry.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;TannersBigTronDaddy.cfg&amp;quot;,&amp;quot;TheMachine.cfg&amp;quot;,&amp;quot;TheRoadNotTaken.cfg&amp;quot;,&amp;quot;TikiTime.cfg&amp;quot;,&amp;quot;TortureChamber.cfg&amp;quot;,&amp;quot;Trijecture.cfg&amp;quot;,&amp;quot;TurnAround.cfg&amp;quot;,&amp;quot;Unfair.cfg&amp;quot;,&amp;quot;Unfortunate.cfg&amp;quot;,&amp;quot;Verta.cfg&amp;quot;,&amp;quot;Wrapper.cfg&amp;quot;,&amp;quot;XploderPro.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;Zero.cfg&amp;quot;,&amp;quot;ZigZagZaney.cfg&amp;quot;,&amp;quot;Zipper.cfg&amp;quot;,&amp;quot;Zone3.cfg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$rotate_mode = 2; //Set to 1 for simple random, 2 to play each map in order, 3 to randomly pick a map that hasn&#039;t been picked yet.&lt;br /&gt;
&lt;br /&gt;
$num_map_plays = 1; //play each map how many times before switching to next map&lt;br /&gt;
&lt;br /&gt;
$zombie_win = false;  //Does the winner get a zombie? (adjust zombie_zone_speed to fit your liking)&lt;br /&gt;
&lt;br /&gt;
$precision = 2; //How many decimal places to show times? A value of 3 shows X.xxx, 2 shows X.xx.  5 is max. &lt;br /&gt;
&lt;br /&gt;
/*============================== End of customization options ===================================*/&lt;br /&gt;
&lt;br /&gt;
$reccomended_settings = array(&amp;quot;target_initial_score 0&amp;quot;, &amp;quot;sp_game_type 0&amp;quot;, &amp;quot;game_type 0&amp;quot;, &amp;quot;sp_finish_type 0&amp;quot;, &amp;quot;finish_type 0&amp;quot;, &amp;quot;sp_num_ais 0&amp;quot;, &amp;quot;num_ais 0&amp;quot;, &amp;quot;shot_seek_update_time 0.1&amp;quot;, &lt;br /&gt;
&amp;quot;ladderlog_write_all 1|1&amp;quot;);  //these settings should be set for racing mode and is run every round&lt;br /&gt;
class Player&lt;br /&gt;
{&lt;br /&gt;
	var $name;&lt;br /&gt;
	var $pname;&lt;br /&gt;
	var $place;&lt;br /&gt;
	var $finish_time;&lt;br /&gt;
	var $best_time;&lt;br /&gt;
	var $num_plays;&lt;br /&gt;
	function __construct($name) &lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;name = $name;&lt;br /&gt;
		$this-&amp;gt;read();&lt;br /&gt;
		if(empty($this-&amp;gt;num_plays)) $this-&amp;gt;num_plays = 0;&lt;br /&gt;
	}&lt;br /&gt;
	function read()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $precision;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		foreach($lines as $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);  //time name num_plays&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;best_time = round($pieces[0], $precision);&lt;br /&gt;
				$this-&amp;gt;num_plays = $pieces[2];&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	function write()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $current_inc;&lt;br /&gt;
		$found = false;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xff7777Warning: 0xffffffFile &#039;$current_inc.txt&#039; not found, file creation may have failed. Retrying...&amp;quot;);&lt;br /&gt;
			$fp = fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			$pieces[1] = trim($pieces[1]);&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$lines[$i] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
				$found = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!$found)&lt;br /&gt;
		{&lt;br /&gt;
			$lines[] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		sort(&amp;amp;$lines, SORT_NUMERIC);&lt;br /&gt;
		file_put_contents($file, $lines);&lt;br /&gt;
		fclose($fp);&lt;br /&gt;
	}&lt;br /&gt;
	function finished($time, $place)&lt;br /&gt;
	{&lt;br /&gt;
		global $points, $players, $current_inc, $precision;&lt;br /&gt;
		$this-&amp;gt;num_plays++;&lt;br /&gt;
		$time = round($time,$precision);&lt;br /&gt;
		$this-&amp;gt;finish_time = $time;&lt;br /&gt;
		$this-&amp;gt;place = $place;&lt;br /&gt;
		$sufx = suffix($place);&lt;br /&gt;
		$score = $points[$place-1];&lt;br /&gt;
		if(empty($score)) $score = 0;&lt;br /&gt;
		if($place &amp;gt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
			{&lt;br /&gt;
				if($p-&amp;gt;place == 1)&lt;br /&gt;
				{&lt;br /&gt;
					$first = $p-&amp;gt;finish_time;&lt;br /&gt;
					$difference = &amp;quot; 0xffffff(&amp;quot; . round($this-&amp;gt;finish_time - $p-&amp;gt;finish_time,$precision) . &amp;quot; s behind 1st)&amp;quot;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
			$difference = &amp;quot;&amp;quot;;&lt;br /&gt;
		c(&amp;quot;0x55ccff &amp;gt; 0xffff99$this-&amp;gt;pname 0x55ccfffinished $place$sufx in 0xffff99$time 0x55ccffseconds.$difference 0x808080+{$score} pts&amp;quot;);&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;gt;= $this-&amp;gt;best_time &amp;amp;&amp;amp; !empty($this-&amp;gt;best_time)) //took longer than alltime best&lt;br /&gt;
		{&lt;br /&gt;
			pm($this-&amp;gt;name, &amp;quot;    0xaaaaffYour all-time best on 0xddddff{$current_inc}0xaaaaff is 0xffffff{$this-&amp;gt;best_time} 0xaaaaffs, you are 0xffffff&amp;quot;. round($this-&amp;gt;finish_time - $this-&amp;gt;best_time, $precision).&amp;quot; 0xaaaaffs 0xff7777slower0xaaaaff.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;lt; $this-&amp;gt;best_time || empty($this-&amp;gt;best_time))&lt;br /&gt;
		{&lt;br /&gt;
			if(!empty($this-&amp;gt;best_time)) $oldrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			$this-&amp;gt;write();&lt;br /&gt;
			$newrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			if(empty($this-&amp;gt;best_time)) &lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaffThis is your first time finishing 0xddddff{$current_inc}0xaaaaff!&amp;quot;);&lt;br /&gt;
			else pm($this-&amp;gt;name, &amp;quot;  0x3388ff* 0x55ff88New personal record! You improved 0xffffff&amp;quot; . round($this-&amp;gt;best_time - $this-&amp;gt;finish_time,$precision) . &amp;quot;0x55ff88 s raising 0xffffff&amp;quot;. ($oldrank - $newrank) .&amp;quot; 0x55ff88ranks!&amp;quot;);&lt;br /&gt;
			if($newrank == 1) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffd700Congratulate 0xffffff$this-&amp;gt;name 0xffd700for setting a new record on 0xffddaa$current_inc 0xffd700as the fastest time ever!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else if($newrank == 2) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xc0c0c0just ranked as the 0xffffff2nd 0xc0c0c0fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*\n&amp;quot;);&lt;br /&gt;
			else if($newrank == 3) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xcd7f32just ranked as the 0xffcc003rd 0xcd7f32 fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;     0xaaaaaaYou are now rank 0xffffff$newrank 0xaaaaaaon the list of fastest times for 0xcccccc{$current_inc}0xaaaaaa!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;add_score_player $this-&amp;gt;name &amp;quot; . $score . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
$players = array();&lt;br /&gt;
$finished = 0;&lt;br /&gt;
&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
	$line = rtrim(fgets(STDIN, 1024));&lt;br /&gt;
	if(preg_match(&amp;quot;/^CYCLE_CREATED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;,$line);&lt;br /&gt;
		$name = $split[1];&lt;br /&gt;
		if(getObject($name) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$num_racers++;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if(strstr($name,&amp;quot;\&amp;quot;&amp;quot;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0x000000 ! 0xffff00 $name is not allowed to use the characters 0xffffff« or \&amp;quot; 0xffff00 in their name.&amp;quot;);&lt;br /&gt;
			$clean = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;_&amp;quot;,$name);&lt;br /&gt;
			$wo = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$name);&lt;br /&gt;
			echo &amp;quot;rename $wo $clean \n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;rename $name $clean \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		$players[$i] = new Player($split[1]);&lt;br /&gt;
		if(isset($pretty))&lt;br /&gt;
		{&lt;br /&gt;
			for($x = 0; $x &amp;lt; sizeof($pretty); $x++)&lt;br /&gt;
			{&lt;br /&gt;
				$crack = explode(&amp;quot;*%$&amp;quot;, $pretty[$x]);&lt;br /&gt;
				if($crack[0] == $players[$i]-&amp;gt;name)&lt;br /&gt;
					$players[$i]-&amp;gt;pname = trim($crack[1]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!isset($players[$i]-&amp;gt;pname))&lt;br /&gt;
			$players[$i]-&amp;gt;pname = $players[$i]-&amp;gt;name;&lt;br /&gt;
		if($i == 0)&lt;br /&gt;
		{&lt;br /&gt;
			$xPos = $split[2];&lt;br /&gt;
			$yPos = $split[3];&lt;br /&gt;
		}&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) $rank = filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
		$sufx = suffix($rank);&lt;br /&gt;
		pm($players[$i]-&amp;gt;name, &amp;quot;0x808080Top 3 times for $current_inc:&amp;quot;);&lt;br /&gt;
		filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 3, true);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			$remind = &amp;quot;0x808080(Maybe because you&#039;re logged out?)&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			$remind = null;&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYour best time for $current_inc is 0xffffff{$players[$i]-&amp;gt;best_time}0x99ddff s ranking 0xffffff$rank{$sufx}0x99ddff. 0x808080{$players[$i]-&amp;gt;num_plays} finishes&amp;quot;);&lt;br /&gt;
		if(empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0x99ddffYou have never won 0xcccccc$current_inc 0x99ddffbefore. $remind&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
		$i++;&lt;br /&gt;
		$num_racers = $i;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_ENTERED/&amp;quot;, $line))&lt;br /&gt;
	{   &lt;br /&gt;
		//PLAYER_ENTERED rx&amp;quot;dukevin 76.174.69.46 Rx«dukevin&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[1] . &amp;quot;*%$&amp;quot; . $split[3] . &amp;quot; &amp;quot; . $split[4] . &amp;quot; &amp;quot; . $split[5];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_RENAMED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[2] . &amp;quot;*%$&amp;quot; . $split[5] . &amp;quot; &amp;quot; . $split[6] . &amp;quot; &amp;quot; . $split[7];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_COMMENCING/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		foreach($reccomended_settings as $s)&lt;br /&gt;
			echo &amp;quot;$s \n&amp;quot;;&lt;br /&gt;
		unset($players);&lt;br /&gt;
		$finished = 0;&lt;br /&gt;
		$num_racers = 0;&lt;br /&gt;
		$a_player_finished = false;&lt;br /&gt;
		$i = 0;&lt;br /&gt;
		if(empty($num_plays)) $num_plays = 0;&lt;br /&gt;
		$num_plays++;&lt;br /&gt;
		if($num_plays &amp;gt;= $num_map_plays)&lt;br /&gt;
		{&lt;br /&gt;
			$pick = pickmap($includes, $rotate_mode);&lt;br /&gt;
			$num_plays = 0;&lt;br /&gt;
		}&lt;br /&gt;
		$current_inc = retrieve($pick);&lt;br /&gt;
		c(&amp;quot;Reading $current_inc.txt...&amp;quot;);&lt;br /&gt;
		if($display_mode == 1) echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
		if($display_mode == 2) c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		if($display_mode == 3) &lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
			c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$file = &amp;quot;$save_directory_location&amp;quot; . &amp;quot;$current_inc&amp;quot; . &amp;quot;.txt&amp;quot;;&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffff$current_inc.txt not found, creating it...&amp;quot;);&lt;br /&gt;
			fopen($file, &#039;w&#039;);&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			if(!file_exists($file))&lt;br /&gt;
				c(&amp;quot;0xff7777Warning: 0xffffffFile creation failed, scores cannot be saved! Does your directory have write permission?&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($smart_time)&lt;br /&gt;
			$countdown_secs_after_finish = smart_time($countdown_secs_after_finish);&lt;br /&gt;
		echo &amp;quot;target_survive_time &amp;quot; . ($countdown_secs_after_finish+1) .&amp;quot;\n&amp;quot;;&lt;br /&gt;
		if(mt_rand(0,7)==7) c(&amp;quot;0x808080You can type /stats &amp;lt;name&amp;gt; &amp;lt;optional amount&amp;gt; to view high scores for maps.&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line) || preg_match(&amp;quot;/^ROUND_SCORE/&amp;quot;,$line))&lt;br /&gt;
	{&lt;br /&gt;
		if($finished == 0 || $a_player_finished == true)&lt;br /&gt;
			goto end;&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line))&lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;spawn_zone win $split[3] $split[4] 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
		}&lt;br /&gt;
		sleep(1);&lt;br /&gt;
		if(!empty($split[6])) echo &amp;quot;center_message Winner: {$split[6]}\n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;collapse_zone\n&amp;quot;;&lt;br /&gt;
		if(empty($split[6]))&lt;br /&gt;
			echo &amp;quot;spawn_zone win $xPos $yPos 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
		$a_player_finished = true;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^INVALID_COMMAND/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		//INVALID_COMMAND /cast rx&amp;quot;dukevin 76.174.69.46 accesslevel argument 50&lt;br /&gt;
		if($split[1] == &amp;quot;/stats&amp;quot; || $split[1] == &amp;quot;/s&amp;quot;|| $split[1] == &amp;quot;/search&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			if(empty($split[5]))&lt;br /&gt;
			{&lt;br /&gt;
				pm($split[2], &amp;quot;0xff7777Invalid usage, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			if(empty($split[6]) || !isset($split[6])) $split[6] = 3;&lt;br /&gt;
			search($obj, $split[5], $split[6]);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/version&amp;quot; || $split[1] == &amp;quot;/v&amp;quot; || $split[1] == &amp;quot;/ver&amp;quot; || $split[1] == &amp;quot;/vers&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			version($obj);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/debug&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				pm($split[2], &amp;quot;$p-&amp;gt;name&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;0xff7777Invalid command, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_PLAYER_ENTER/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		//TARGETZONE_PLAYER_ENTER 2 zonename 100 100 dukevin 90.8824 103.506 1 0 37.6366&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$name = $split[5];&lt;br /&gt;
		$time = $split[10];&lt;br /&gt;
		$obj = getObject($name);&lt;br /&gt;
		if(!method_exists($obj,&#039;finished&#039;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffffNo object to operate on, perhaps you just loaded scripts?&amp;quot;);&lt;br /&gt;
			echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;kill $name\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if($obj-&amp;gt;finish_time &amp;gt; 0) //already hit the finish line&lt;br /&gt;
			goto end;&lt;br /&gt;
		$finished++;&lt;br /&gt;
		$obj-&amp;gt;finished($time, $finished);&lt;br /&gt;
		$num_racers--;&lt;br /&gt;
		if($zombie_win) zombieplz($split[5], $split[6], $split[7]);&lt;br /&gt;
		@clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish);&lt;br /&gt;
		if($num_racers &amp;lt;= 0)&lt;br /&gt;
			echo &amp;quot;target_survive_time &amp;quot; . 1 .&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^GAME_TIME/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		@clock(&amp;quot;tick&amp;quot;);&lt;br /&gt;
		if($max_time_limit &amp;lt;= 0)&lt;br /&gt;
			goto end;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			if($split[1] == $max_time_limit)&lt;br /&gt;
				clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^DEATH_FRAG|DEATH_SUICIDE|PLAYER_KILLED|DEATH_SHOT_FRAG|DEATH_DEATHZONE|DEATH_SHOT_SUICIDE|DEATH_TEAMKILL|DEATH_SHOT_TEAMKILL|DEATH_ZOMBIEZONE|DEATH_DEATHSHOT|DEATH_SELF_DESTRUCT/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(empty(getObject($split[1])-&amp;gt;finish_time))&lt;br /&gt;
			$num_racers--;&lt;br /&gt;
		if(sizeof($players) &amp;lt;= 1) //if only 1 player, don&#039;t start the timer&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($countdown_if_last_player == false) //don&#039;t start the timer if user doesn&#039;t want it&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($num_racers &amp;lt;= 1)&lt;br /&gt;
		{&lt;br /&gt;
			if(@clock(&amp;quot;getState&amp;quot;) == &amp;quot;active&amp;quot; &amp;amp;&amp;amp; (empty(getObject($split[1])-&amp;gt;finish_time))) //only winner alive, last racer died &amp;amp;&amp;amp;racer not finish&lt;br /&gt;
			{&lt;br /&gt;
				echo &amp;quot;spawn_zone win $xPos $yPos 1000000 100000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
				@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			if($num_racers != 0) clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish + $countdown_last_player_extra_time, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
end:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clock($action, $duration, $options)&lt;br /&gt;
{&lt;br /&gt;
	static $state, $time, $options;&lt;br /&gt;
	if($action == &amp;quot;start&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;active&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$state = &amp;quot;active&amp;quot;;&lt;br /&gt;
		$time = $duration;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;stop&amp;quot; || $state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
		$options = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;tick&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$time--;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
		if(empty($time) || $time &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			if($options = &amp;quot;kill&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				global $players;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
					echo &amp;quot;kill $p-&amp;gt;name \n&amp;quot;;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			sleep(1);&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
			$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;getState&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		return $state;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function filetee($search, $requester, $amount = 3, $display_top = false, $onlyrank = false)&lt;br /&gt;
{&lt;br /&gt;
	global $file;&lt;br /&gt;
	$found = false;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
	{&lt;br /&gt;
		$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pieces[1] = trim($pieces[1]);&lt;br /&gt;
		if($pieces[1] == $search) &lt;br /&gt;
		{	&lt;br /&gt;
			$found = true;&lt;br /&gt;
			if($onlyrank) return $i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($display_top) $i = 0;&lt;br /&gt;
	if($amount &amp;gt; 150) $amount = 150;&lt;br /&gt;
	if($amount %2 == 0) $amount += 1;&lt;br /&gt;
	$amount = floor($amount/2);&lt;br /&gt;
	if($i == 0 || $i == sizeof($lines)-1) //display an extra entry for 1st and last place&lt;br /&gt;
		$amount += 1;&lt;br /&gt;
	if($found == false &amp;amp;&amp;amp; $display_top == false)&lt;br /&gt;
		return false;&lt;br /&gt;
	for($x = $i-$amount; $x &amp;lt;= $i+$amount; $x++)&lt;br /&gt;
	{&lt;br /&gt;
		$cut = explode(&amp;quot; &amp;quot;, $lines[$x]);&lt;br /&gt;
		$color = ($cut[1] == $search) ? &#039;0xffff88&#039; : &#039;0xcccccc&#039;;&lt;br /&gt;
		if(!empty($cut[0])) pm($requester, $color . ($x+1) . &amp;quot;) $cut[0] - $cut[1]&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function suffix($number)&lt;br /&gt;
{&lt;br /&gt;
	$n = (string)$number;&lt;br /&gt;
    $n = $n[strlen($n)-1];&lt;br /&gt;
	if($n == 1) $sufx = &amp;quot;st&amp;quot;;&lt;br /&gt;
	elseif($n == 2) $sufx = &amp;quot;nd&amp;quot;;&lt;br /&gt;
	elseif($n == 3) $sufx = &amp;quot;rd&amp;quot;;&lt;br /&gt;
	else $sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	if($number == 11 || $number == 12 || $number == 13) //english is weird&lt;br /&gt;
		$sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	return $sufx;&lt;br /&gt;
}&lt;br /&gt;
function retrieve($mapname)&lt;br /&gt;
{&lt;br /&gt;
	$type = explode(&amp;quot;.&amp;quot;, $mapname);&lt;br /&gt;
	if($type[sizeof($type)-1] == &amp;quot;xml&amp;quot;) $head = &amp;quot;MAP_FILE&amp;quot;;&lt;br /&gt;
	elseif($type[sizeof($type)-1] == &amp;quot;cfg&amp;quot;) $head = &amp;quot;INCLUDE&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$tail = $mapname;&lt;br /&gt;
	echo $head . &amp;quot; &amp;quot; . $tail . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$cut = explode(&amp;quot;/&amp;quot;, $tail);&lt;br /&gt;
	$split = explode(&amp;quot;.&amp;quot;, $cut[sizeof($cut)-1]);&lt;br /&gt;
	foreach($split as $element)&lt;br /&gt;
	{&lt;br /&gt;
		if($element == &amp;quot;aamap&amp;quot; || $element == &amp;quot;xml&amp;quot; || $element == &amp;quot;cfg&amp;quot;)&lt;br /&gt;
			unset($element);&lt;br /&gt;
		$current_inc .= $element;&lt;br /&gt;
	}&lt;br /&gt;
	$cut = explode(&amp;quot;-&amp;quot;, $current_inc);&lt;br /&gt;
	$current_inc = trim($cut[0]);&lt;br /&gt;
	if(empty($current_inc)) c(&amp;quot;0xff7777Warning: 0xffffffUnable to retrieve current map name.&amp;quot;);&lt;br /&gt;
	return empty($current_inc) ? &amp;quot;null&amp;quot; : $current_inc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zombieplz($name, $x, $y)&lt;br /&gt;
{&lt;br /&gt;
	echo &amp;quot;spawn_zone zombieOwner $name $name $x $y 1 0 0 0 false\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function c($string){&lt;br /&gt;
	echo &amp;quot;console_message $string \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function pm($name, $string){&lt;br /&gt;
	echo &amp;quot;player_message {$name} \&amp;quot;{$string}\&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function getObject($name)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;name == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
function pickmap($includes, $rotate_mode)&lt;br /&gt;
{&lt;br /&gt;
	static $i;&lt;br /&gt;
	if($rotate_mode == 1)&lt;br /&gt;
		return $includes[mt_rand(0, sizeof($includes)-1)];&lt;br /&gt;
	if($rotate_mode == 2)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
	if($rotate_mode == 3)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		if($i == 0) shuffle($includes);&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function smart_time($countdown_secs_after_finish)&lt;br /&gt;
{&lt;br /&gt;
	global $file, $current_inc;&lt;br /&gt;
	static $initial_countdown_secs;&lt;br /&gt;
	if(empty($initial_countdown_secs)) $initial_countdown_secs = $countdown_secs_after_finish;&lt;br /&gt;
	if($initial_countdown_secs &amp;lt; 100)&lt;br /&gt;
		$MAX_TIME = 75; //smart time will not allow more than 75 secs&lt;br /&gt;
	else&lt;br /&gt;
		$MAX_TIME = $initial_countdown_secs * 1.3;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	if(!file_exists($file))	return $initial_countdown_secs;&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[0]);&lt;br /&gt;
	$hs = $split[0];&lt;br /&gt;
	$split = explode(&amp;quot; &amp;quot;, $lines[1]);&lt;br /&gt;
	$hs2nd = $split[0];&lt;br /&gt;
	if(empty($hs)) return 60;&lt;br /&gt;
	&lt;br /&gt;
	if($hs*1.3 &amp;lt; $initial_countdown_secs) return $initial_countdown_secs;&lt;br /&gt;
	if(empty($hs2nd)) return ($hs*2) &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*2);&lt;br /&gt;
	if(($hs2nd - $hs) &amp;gt; 8) $hs = $hs2nd;&lt;br /&gt;
	return ($hs*1.3) &amp;gt; $MAX_TIME ? $MAX_TIME : round($hs*1.3);&lt;br /&gt;
}&lt;br /&gt;
function search($me, $search, $amount = 3)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	$count = 0;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $search || $p-&amp;gt;name == $search)&lt;br /&gt;
		{&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
			$count = 1;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		if(stripos(&amp;quot;{$p-&amp;gt;pname}&amp;quot;,&amp;quot;$search&amp;quot;) !== false || stripos(&amp;quot;{$p-&amp;gt;name}&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
		{&lt;br /&gt;
			$count++;&lt;br /&gt;
			$found = $p-&amp;gt;name;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($count &amp;gt; 1)&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;More than one player with the name &#039;$search&#039;, using $found.&amp;quot;);&lt;br /&gt;
	if(empty($count))&lt;br /&gt;
	{&lt;br /&gt;
		if(filetee($search, $me-&amp;gt;name, $amount, false, false) == false)&lt;br /&gt;
		{&lt;br /&gt;
			global $file;&lt;br /&gt;
			$lines = file($file);&lt;br /&gt;
			foreach($lines as $line)&lt;br /&gt;
			{&lt;br /&gt;
				$pieces = explode(&amp;quot; &amp;quot;, $line); &lt;br /&gt;
				if(stripos(&amp;quot;$pieces[1]&amp;quot;,&amp;quot;$search&amp;quot;) !== false)&lt;br /&gt;
				{&lt;br /&gt;
					$found = $pieces[1];&lt;br /&gt;
					$count++;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(empty($found) || empty($count) || filetee($found, $me-&amp;gt;name, -2, false, false) === false)&lt;br /&gt;
	{&lt;br /&gt;
		pm($me-&amp;gt;name, &amp;quot;No times found for player: $search&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	filetee($found, $me-&amp;gt;name, $amount, false, false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function version($me)&lt;br /&gt;
{&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Script programming by 0xffffffdukevin&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Email at 0xffffffdukevinjduke@gmail.com0xffff00 for suggestions, comments&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Made for smart&#039;s server&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
known bugs:&lt;br /&gt;
-respawn breaks script&lt;br /&gt;
-you should login to protect your times not showing&lt;br /&gt;
-times showed twise if time run out&lt;br /&gt;
-if you never won, top 3 won&#039;t show&lt;br /&gt;
&lt;br /&gt;
		foreach($players as $p)&lt;br /&gt;
		{&lt;br /&gt;
			if(!(strstr($p-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
				pm($p-&amp;gt;name, &amp;quot;0xffddaaYou should /login to protect your times!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=38857</id>
		<title>Advanced Racing With race timer/Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=38857"/>
		<updated>2012-05-07T10:35:32Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*  Race Script&lt;br /&gt;
		Includes highscores per map, finish timers, map/cfg rotator, and more&lt;br /&gt;
		Requires a TargetZone as a finish line, winzones will not work&lt;br /&gt;
		If you are not using Rx Hosting, make sure your directory has write permissions&lt;br /&gt;
		Made by dukevin (dukevinjduke@gmail.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$save_directory_location = &amp;quot;/home/duke/aa/servers/smart/var/logs/&amp;quot;;   //The directory to save files. Must end with trailing slash&lt;br /&gt;
$countdown_secs_after_finish = 30;	//After someone finishes, how many seconds on the timer before the round ends?&lt;br /&gt;
$countdown_if_last_player = true; //If only 1 player remaining, start the timer?&lt;br /&gt;
$countdown_last_player_extra_time = 0; //If only 1 player remaining, give the last racer this many seconds of extra time to finish&lt;br /&gt;
$max_time_limit = -1; //start the timer after this many seconds, -1 to disable time limits&lt;br /&gt;
$points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1); //points awarded for 1st, 2nd, 3rd, 4th, 5th, etc...&lt;br /&gt;
$display_mode = 1; //If set to &amp;quot;1&amp;quot; display a center_message of the map name, 2 for console_message, 3 for both, 0 for no message&lt;br /&gt;
$display_prefix = &amp;quot;Current race: 0xffff00&amp;quot;; //When showing the map name, this is appended before it, if $display_mode is 0, this is disabled&lt;br /&gt;
&lt;br /&gt;
//Below, inbetween quotes, if you are including maps, put something like: &amp;quot;/path/to/map.aamap.xml&amp;quot;. If you are using cfgs, put &amp;quot;mycfg.cfg&amp;quot; &lt;br /&gt;
$includes = array(&amp;quot;8Ball.cfg&amp;quot;,&amp;quot;100Watts.cfg&amp;quot;,&amp;quot;Aflac.cfg&amp;quot;,&amp;quot;AnimusonConfusion.cfg&amp;quot;,&amp;quot;Aoi.cfg&amp;quot;,&amp;quot;Arsenal.cfg&amp;quot;,&amp;quot;AtlanticCharter.cfg&amp;quot;,&amp;quot;Cell.cfg&amp;quot;,&amp;quot;Cherrio.cfg&amp;quot;,&amp;quot;Compact.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;DevilsSandglass.cfg&amp;quot;,&amp;quot;Dizzy.cfg&amp;quot;,&amp;quot;FirePalace.cfg&amp;quot;,&amp;quot;AQuickExplosion.cfg&amp;quot;,&amp;quot;BenignRevolution.cfg&amp;quot;,&amp;quot;BloodyHell.cfg&amp;quot;,&amp;quot;Chihuahua.cfg&amp;quot;,&amp;quot;DeathOctagon.cfg&amp;quot;,&amp;quot;DeathTrap.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;Flex.cfg&amp;quot;,&amp;quot;FrizzleFraz.cfg&amp;quot;,&amp;quot;Glacier.cfg&amp;quot;,&amp;quot;Handgrip.cfg&amp;quot;,&amp;quot;Holiday.cfg&amp;quot;,&amp;quot;Hyperpod.cfg&amp;quot;,&amp;quot;Insane.cfg&amp;quot;,&amp;quot;ItsABug.cfg&amp;quot;,&amp;quot;JailBreak.cfg&amp;quot;,&amp;quot;Jelly.cfg&amp;quot;,&amp;quot;Killzone.cfg&amp;quot;,&amp;quot;KirbyDance.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;lol.cfg&amp;quot;,&amp;quot;Marathon.cfg&amp;quot;,&amp;quot;Mint.cfg&amp;quot;,&amp;quot;MissionImpossible.cfg&amp;quot;,&amp;quot;Moon.cfg&amp;quot;,&amp;quot;MovinOnUp.cfg&amp;quot;,&amp;quot;MrRoboto.cfg&amp;quot;,&amp;quot;Mutant.cfg&amp;quot;,&amp;quot;Nebraska.cfg&amp;quot;,&amp;quot;Nova.cfg&amp;quot;,&amp;quot;OctaGone2Death.cfg&amp;quot;,&amp;quot;PointOfNoReturn.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;PureRacingTorture.cfg&amp;quot;,&amp;quot;RatTunnels.cfg&amp;quot;,&amp;quot;Red.cfg&amp;quot;,&amp;quot;Resurrection.cfg&amp;quot;,&amp;quot;RoadLessTraveled.cfg&amp;quot;,&amp;quot;RoadOfDeath.cfg&amp;quot;,&amp;quot;Roundabout.cfg&amp;quot;,&amp;quot;Shield.cfg&amp;quot;,&amp;quot;SidebySide.cfg&amp;quot;,&amp;quot;SmallSpaces.cfg&amp;quot;,&amp;quot;Spiral.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;SpiralHam.cfg&amp;quot;,&amp;quot;SquareRoot.cfg&amp;quot;,&amp;quot;Stardome.cfg&amp;quot;,&amp;quot;Sun.cfg&amp;quot;,&amp;quot;Symmetry.cfg&amp;quot;,&amp;quot;TannersBigTronDaddy.cfg&amp;quot;,&amp;quot;TheMachine.cfg&amp;quot;,&amp;quot;TikiTime.cfg&amp;quot;,&amp;quot;TortureChamber.cfg&amp;quot;,&amp;quot;Trijecture.cfg&amp;quot;,&amp;quot;TurnAround.cfg&amp;quot;,&lt;br /&gt;
&amp;quot;Unfair.cfg&amp;quot;,&amp;quot;Unfortunate.cfg&amp;quot;,&amp;quot;Verta.cfg&amp;quot;,&amp;quot;Wrapper.cfg&amp;quot;,&amp;quot;XploderPro.cfg&amp;quot;,&amp;quot;Zero.cfg&amp;quot;,&amp;quot;ZigZagZaney.cfg&amp;quot;,&amp;quot;Zipper.cfg&amp;quot;,&amp;quot;Zone3.cfg&amp;quot;);&lt;br /&gt;
$rotate_mode = 2; //Set to 1 for simple random, 2 to play each map in order, 3 to randomly pick a map that hasn&#039;t been picked yet.&lt;br /&gt;
$num_map_plays = 1; //play each map how many times before switching to next map&lt;br /&gt;
&lt;br /&gt;
$zombie_win = false;  //Does the winner get a zombie? (adjust zombie_zone_speed to fit your liking)&lt;br /&gt;
&lt;br /&gt;
/*=================================================================*/&lt;br /&gt;
&lt;br /&gt;
$reccomended_settings = array(&amp;quot;target_initial_score 0&amp;quot;, &amp;quot;sp_game_type 0&amp;quot;, &amp;quot;game_type 0&amp;quot;, &amp;quot;sp_finish_type 0&amp;quot;, &amp;quot;finish_type 0&amp;quot;, &amp;quot;sp_num_ais 0&amp;quot;, &amp;quot;num_ais 0&amp;quot;, &amp;quot;shot_seek_update_time 0.1&amp;quot;, &amp;quot;ladderlog_write_all 1|1&amp;quot;);  &lt;br /&gt;
//these settings should be set for racing mode and is run once when the script is loaded&lt;br /&gt;
class Player&lt;br /&gt;
{&lt;br /&gt;
	var $name;&lt;br /&gt;
	var $pname;&lt;br /&gt;
	var $place;&lt;br /&gt;
	var $finish_time;&lt;br /&gt;
	var $best_time;&lt;br /&gt;
	var $num_plays;&lt;br /&gt;
	function __construct($name) &lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;name = $name;&lt;br /&gt;
		$this-&amp;gt;read();&lt;br /&gt;
		if(empty($this-&amp;gt;num_plays)) $this-&amp;gt;num_plays = 0;&lt;br /&gt;
	}&lt;br /&gt;
	function read()&lt;br /&gt;
	{&lt;br /&gt;
		global $file;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		foreach($lines as $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);  //time name num_plays        (if time is -1, never won it)&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;best_time = round($pieces[0],2);&lt;br /&gt;
				$this-&amp;gt;num_plays = $pieces[2];&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	function write()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $current_inc;&lt;br /&gt;
		$found = false;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xff7777Warning: 0xffffffFile &#039;$current_inc.txt&#039; not found, file creation may have failed. Retrying...&amp;quot;);&lt;br /&gt;
			$fp = fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			$pieces[1] = trim($pieces[1]);&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$lines[$i] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
				$found = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!$found)&lt;br /&gt;
		{&lt;br /&gt;
			$lines[] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		sort(&amp;amp;$lines, SORT_NUMERIC);&lt;br /&gt;
		file_put_contents($file, $lines);&lt;br /&gt;
		fclose($fp);&lt;br /&gt;
		//return pos&lt;br /&gt;
	}&lt;br /&gt;
	function finished($time, $place)&lt;br /&gt;
	{&lt;br /&gt;
		global $points, $players, $current_inc;&lt;br /&gt;
		$this-&amp;gt;num_plays++;&lt;br /&gt;
		$time = round($time,2);&lt;br /&gt;
		$this-&amp;gt;finish_time = $time;&lt;br /&gt;
		$this-&amp;gt;place = $place;&lt;br /&gt;
		$sufx = suffix($place);&lt;br /&gt;
		$score = $points[$place-1];&lt;br /&gt;
		if(empty($score)) $score = 0;&lt;br /&gt;
		if($place &amp;gt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
			{&lt;br /&gt;
				if($p-&amp;gt;place == 1)&lt;br /&gt;
				{&lt;br /&gt;
					$first = $p-&amp;gt;finish_time;&lt;br /&gt;
					$difference = &amp;quot; 0xffffff(&amp;quot; . round($this-&amp;gt;finish_time - $p-&amp;gt;finish_time,2) . &amp;quot; s behind 1st)&amp;quot;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
			$difference = &amp;quot;&amp;quot;;&lt;br /&gt;
		c(&amp;quot;0xffff00 &amp;gt; 0xffff99$this-&amp;gt;pname 0x55ccfffinished $place$sufx in 0xffff99$time 0x55ccffseconds.$difference 0x808080+{$score} pts&amp;quot;);&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;gt;= $this-&amp;gt;best_time &amp;amp;&amp;amp; !empty($this-&amp;gt;best_time)) //took longer than alltime best&lt;br /&gt;
		{&lt;br /&gt;
			pm($this-&amp;gt;name, &amp;quot;    0xaaaaffYour all-time best on 0xddddff{$current_inc}0xaaaaff is 0xffffff{$this-&amp;gt;best_time} 0xaaaaffs, you are 0xffffff&amp;quot;.($this-&amp;gt;finish_time - $this-&amp;gt;best_time).&amp;quot; 0xaaaaffs 0xff7777slower0xaaaaff.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;lt; $this-&amp;gt;best_time || empty($this-&amp;gt;best_time))&lt;br /&gt;
		{&lt;br /&gt;
			if(!empty($this-&amp;gt;best_time)) $oldrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			$this-&amp;gt;write();&lt;br /&gt;
			$newrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			if(empty($this-&amp;gt;best_time)) &lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaffThis is your first time finishing 0xddddff{$current_inc}0xaaaaff!&amp;quot;);&lt;br /&gt;
			else pm($this-&amp;gt;name, &amp;quot;  0x3388ff* 0x55ff88New personal record! You improved 0xffffff&amp;quot; . round($this-&amp;gt;best_time - $this-&amp;gt;finish_time,2) . &amp;quot;0x55ff88 s raising 0xffffff&amp;quot;. ($oldrank - $newrank) .&amp;quot; 0x55ff88ranks!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			if($newrank == 1) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffd700Congratulate 0xffffff$this-&amp;gt;pname 0xffd700for setting a new record on 0xffddaa$current_inc 0xffd700as the fastest time ever!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else if($newrank == 2) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;pname 0xc0c0c0just ranked 0xffffff2nd 0xc0c0c0as the fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*\n&amp;quot;);&lt;br /&gt;
			else if($newrank == 3) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xcd7f32just ranked 0xffcc003rd 0xcd7f32as the fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaaaYou are now rank 0xffffff$newrank 0xaaaaaaon the list of fastest times for 0xcccccc{$current_inc}0xaaaaaa!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;add_score_player $this-&amp;gt;name &amp;quot; . $score . &amp;quot;  \n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
$players = array();&lt;br /&gt;
$finished = 0;&lt;br /&gt;
&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
	$line = rtrim(fgets(STDIN, 1024));&lt;br /&gt;
	if(preg_match(&amp;quot;/^CYCLE_CREATED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;,$line);&lt;br /&gt;
		$name = $split[1];&lt;br /&gt;
		if(strstr($name,&amp;quot;\&amp;quot;&amp;quot;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0x000000 ! 0xffff00 $name is not allowed to use the characters 0xffffff« or \&amp;quot; 0xffff00 in their name.&amp;quot;);&lt;br /&gt;
			$clean = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;_&amp;quot;,$name);&lt;br /&gt;
			$wo = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$name);&lt;br /&gt;
			echo &amp;quot;rename $wo $clean \n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;rename $name $clean \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		$players[$i] = new Player($split[1]);&lt;br /&gt;
		if(isset($pretty))&lt;br /&gt;
		{&lt;br /&gt;
			for($x = 0; $x &amp;lt; sizeof($pretty); $x++)&lt;br /&gt;
			{&lt;br /&gt;
				$crack = explode(&amp;quot;*%$&amp;quot;, $pretty[$x]);&lt;br /&gt;
				if($crack[0] == $players[$i]-&amp;gt;name)&lt;br /&gt;
					$players[$i]-&amp;gt;pname = trim($crack[1]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!isset($players[$i]-&amp;gt;pname))&lt;br /&gt;
			$players[$i]-&amp;gt;pname = $players[$i]-&amp;gt;name;&lt;br /&gt;
		if($i == 0)&lt;br /&gt;
		{&lt;br /&gt;
			$xPos = $split[2];&lt;br /&gt;
			$yPos = $split[3];&lt;br /&gt;
		}&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) $rank = filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
		$sufx = suffix($rank);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			$remind = &amp;quot;0x808080(Maybe because you&#039;re logged out?)&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			$remind = null;&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0xaaddaaYour best time for $current_inc is 0xffffff{$players[$i]-&amp;gt;best_time}0xaaddaa s ranking 0xffffff$rank{$sufx}0xaaddaa.&amp;quot;);&lt;br /&gt;
		if(empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0xaaddaaYou have never won 0xcccccc$current_inc 0xaaddaabefore. $remind&amp;quot;);&lt;br /&gt;
		pm($players[$i]-&amp;gt;name, &amp;quot;0x808080Top 3 times for $current_inc:&amp;quot;);&lt;br /&gt;
		filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 3, true);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			pm($players[$i]-&amp;gt;name, &amp;quot;0xffddaaYou should /login to protect your times!&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
		$i++;&lt;br /&gt;
		$num_racers = $i;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_ENTERED/&amp;quot;, $line))&lt;br /&gt;
	{   &lt;br /&gt;
		//PLAYER_ENTERED rx&amp;quot;dukevin 76.174.69.46 Rx«dukevin&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[1] . &amp;quot;*%$&amp;quot; . $split[3] . &amp;quot; &amp;quot; . $split[4] . &amp;quot; &amp;quot; . $split[5];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_RENAMED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[2] . &amp;quot;*%$&amp;quot; . $split[5] . &amp;quot; &amp;quot; . $split[6] . &amp;quot; &amp;quot; . $split[7];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_COMMENCING/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		foreach($reccomended_settings as $s)&lt;br /&gt;
			echo &amp;quot;$s \n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;target_survive_time &amp;quot; . ($countdown_secs_after_finish+1) .&amp;quot;\n&amp;quot;;&lt;br /&gt;
		unset($players);&lt;br /&gt;
		$finished = 0;&lt;br /&gt;
		$num_racers = 0;&lt;br /&gt;
		$a_player_finished = false;&lt;br /&gt;
		$i = 0;&lt;br /&gt;
		if(empty($num_plays)) $num_plays = 0;&lt;br /&gt;
		$num_plays++;&lt;br /&gt;
		if($num_plays &amp;gt;= $num_map_plays)&lt;br /&gt;
		{&lt;br /&gt;
			$pick = pickmap($includes, $rotate_mode);&lt;br /&gt;
			$num_plays = 0;&lt;br /&gt;
		}&lt;br /&gt;
		$current_inc = retrieve($pick);&lt;br /&gt;
		c(&amp;quot;Reading $current_inc.txt...&amp;quot;);&lt;br /&gt;
		if($display_mode == 1) echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
		if($display_mode == 2) c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		if($display_mode == 3) &lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
			c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$file = &amp;quot;$save_directory_location&amp;quot; . &amp;quot;$current_inc&amp;quot; . &amp;quot;.txt&amp;quot;;&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffff$current_inc.txt not found, creating it...&amp;quot;);&lt;br /&gt;
			fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if(mt_rand(0,7)==7) c(&amp;quot;0x808080You can type /stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt; to view high scores for maps.&amp;quot;);&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line) || preg_match(&amp;quot;/^ROUND_SCORE/&amp;quot;,$line))&lt;br /&gt;
	{&lt;br /&gt;
		if($finished == 0 || $a_player_finished == true)&lt;br /&gt;
			goto end;&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line))&lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;spawn_zone win $split[3] $split[4] 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
		}&lt;br /&gt;
		sleep(1);&lt;br /&gt;
		echo &amp;quot;center_message Winner: $split[6]\n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;collapse_zone\n&amp;quot;;&lt;br /&gt;
		$a_player_finished = true;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^INVALID_COMMAND/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		//INVALID_COMMAND /cast rx&amp;quot;dukevin 76.174.69.46 accesslevel argument 50&lt;br /&gt;
		if($split[1] == &amp;quot;/stats&amp;quot; || $split[1] == &amp;quot;/s&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			if($split[6] &amp;lt; 0) $split[6] = 0;&lt;br /&gt;
			if(empty($split[5]))&lt;br /&gt;
			{&lt;br /&gt;
				pm($split[2], &amp;quot;0xff7777Invalid usage, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			filetee($split[5], $split[2], $split[6]);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/version&amp;quot; || $split[1] == &amp;quot;/v&amp;quot; || $split[1] == &amp;quot;/ver&amp;quot; || $split[1] == &amp;quot;/vers&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			version($obj);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;0xff7777Invalid command, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_PLAYER_ENTER/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		//TARGETZONE_PLAYER_ENTER 2 zonename 100 100 dukevin 90.8824 103.506 1 0 37.6366&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$name = $split[5];&lt;br /&gt;
		$time = $split[10];&lt;br /&gt;
		$obj = getObject($name);&lt;br /&gt;
		if(!method_exists($obj,&#039;finished&#039;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffffNo object to operate on, perhaps you just loaded scripts?&amp;quot;);&lt;br /&gt;
			echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;kill $name\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if($obj-&amp;gt;finish_time &amp;gt; 0) //already hit the finish line&lt;br /&gt;
			goto end;&lt;br /&gt;
		$finished++;&lt;br /&gt;
		$obj-&amp;gt;finished($time, $finished);&lt;br /&gt;
		$num_racers--;&lt;br /&gt;
		if($zombie_win) zombieplz($split[5], $split[6], $split[7]);&lt;br /&gt;
		@clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish);&lt;br /&gt;
		if($num_racers &amp;lt;= 0)&lt;br /&gt;
			echo &amp;quot;target_survive_time &amp;quot; . 1 .&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^GAME_TIME/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		@clock(&amp;quot;tick&amp;quot;);&lt;br /&gt;
		if($max_time_limit &amp;lt;= 0)&lt;br /&gt;
			goto end;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			if($split[1] == $max_time_limit)&lt;br /&gt;
				clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^DEATH_FRAG|DEATH_SUICIDE|PLAYER_KILLED|DEATH_SHOT_FRAG|DEATH_DEATHZONE|DEATH_SHOT_SUICIDE|DEATH_TEAMKILL|DEATH_SHOT_TEAMKILL|DEATH_ZOMBIEZONE|DEATH_DEATHSHOT|DEATH_SELF_DESTRUCT/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(empty(getObject($split[1])-&amp;gt;place))&lt;br /&gt;
			$num_racers--;&lt;br /&gt;
		if(sizeof($players) &amp;lt;= 1) //if only 1 player, don&#039;t start the timer&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($countdown_if_last_player == false) //don&#039;t start the timer if user doesn&#039;t want it&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($num_racers &amp;lt;= 1)&lt;br /&gt;
		{&lt;br /&gt;
			if(@clock(&amp;quot;getState&amp;quot;) == &amp;quot;active&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				echo &amp;quot;spawn_zone win $xPos $yPos 1000000 100000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
				@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			if($num_racers != 0) clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish + $countdown_last_player_extra_time, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
end:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clock($action, $duration, $options)&lt;br /&gt;
{&lt;br /&gt;
	static $state, $time, $options;&lt;br /&gt;
	if($action == &amp;quot;start&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;active&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$state = &amp;quot;active&amp;quot;;&lt;br /&gt;
		$time = $duration;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;stop&amp;quot; || $state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
		$options = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;tick&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$time--;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
		if(empty($time) || $time &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			if($options = &amp;quot;kill&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				global $players;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
				{&lt;br /&gt;
					echo &amp;quot;kill $p-&amp;gt;name \n&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;getState&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		return $state;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function filetee($search, $requester, $amount = 3, $display_top = false, $onlyrank = false)&lt;br /&gt;
{&lt;br /&gt;
	global $file, $current_inc;&lt;br /&gt;
	$found = false;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
	{&lt;br /&gt;
		$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pieces[1] = trim($pieces[1]);&lt;br /&gt;
		if($pieces[1] == $search) &lt;br /&gt;
		{	&lt;br /&gt;
			$found = true;&lt;br /&gt;
			if($onlyrank) return $i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($display_top) $i = 0;&lt;br /&gt;
	if($amount %2 == 0) $amount += 1;&lt;br /&gt;
	$amount = floor($amount/2);&lt;br /&gt;
	if($i == 0 || $i == sizeof($lines)-1) //display an extra entry for 1st and last place&lt;br /&gt;
		$amount += 1;&lt;br /&gt;
	if($found == false &amp;amp;&amp;amp; !$display_top &amp;amp;&amp;amp; !$onlyrank) pm($requester, &amp;quot;0xff7777$search not found on the list of fastest times for $current_inc&amp;quot;);&lt;br /&gt;
	for($x = $i-$amount; $x &amp;lt;= $i+$amount; $x++)&lt;br /&gt;
	{&lt;br /&gt;
		$cut = explode(&amp;quot; &amp;quot;, $lines[$x]);&lt;br /&gt;
		$color = ($cut[1] == $search) ? &#039;0xffff88&#039; : &#039;0xcccccc&#039;;&lt;br /&gt;
		if(!empty($cut[0])) pm($requester, $color . ($x+1) . &amp;quot;) $cut[0] - $cut[1]&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function suffix($number)&lt;br /&gt;
{&lt;br /&gt;
	if($number == 1) $sufx = &amp;quot;st&amp;quot;;&lt;br /&gt;
	elseif($number == 2) $sufx = &amp;quot;nd&amp;quot;;&lt;br /&gt;
	elseif($number == 3) $sufx = &amp;quot;rd&amp;quot;;&lt;br /&gt;
	else $sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	return $sufx;&lt;br /&gt;
}&lt;br /&gt;
function retrieve($mapname)&lt;br /&gt;
{&lt;br /&gt;
	$type = explode(&amp;quot;.&amp;quot;, $mapname);&lt;br /&gt;
	if($type[sizeof($type)-1] == &amp;quot;xml&amp;quot;) $head = &amp;quot;MAP_FILE&amp;quot;;&lt;br /&gt;
	elseif($type[sizeof($type)-1] == &amp;quot;cfg&amp;quot;) $head = &amp;quot;INCLUDE&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$tail = $mapname;&lt;br /&gt;
	echo $head . &amp;quot; &amp;quot; . $tail . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
		$p-&amp;gt;finish_time = -1;&lt;br /&gt;
	&lt;br /&gt;
	$cut = explode(&amp;quot;/&amp;quot;, $tail);&lt;br /&gt;
	$split = explode(&amp;quot;.&amp;quot;, $cut[sizeof($cut)-1]);&lt;br /&gt;
	foreach($split as $element)&lt;br /&gt;
	{&lt;br /&gt;
		if($element == &amp;quot;aamap&amp;quot; || $element == &amp;quot;xml&amp;quot; || $element == &amp;quot;cfg&amp;quot;)&lt;br /&gt;
			unset($element);&lt;br /&gt;
		$current_inc .= $element;&lt;br /&gt;
	}&lt;br /&gt;
	$cut = explode(&amp;quot;-&amp;quot;, $current_inc);&lt;br /&gt;
	$current_inc = $cut[0];&lt;br /&gt;
	$current_inc = trim($current_inc);&lt;br /&gt;
	return empty($current_inc) ? &amp;quot;null&amp;quot; : $current_inc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zombieplz($name, $x, $y)&lt;br /&gt;
{&lt;br /&gt;
	echo &amp;quot;spawn_zone zombieOwner $name $name $x $y 1 0 0 0 false\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function c($string){&lt;br /&gt;
	echo &amp;quot;console_message $string \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function pm($name, $string){&lt;br /&gt;
	echo &amp;quot;player_message {$name} \&amp;quot;{$string}\&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function getObject($name)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;name == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
function pickmap($includes, $rotate_mode)&lt;br /&gt;
{&lt;br /&gt;
	static $i, $played;&lt;br /&gt;
	if($rotate_mode == 1)&lt;br /&gt;
		return $includes[mt_rand(0, sizeof($includes)-1)];&lt;br /&gt;
	if($rotate_mode == 2)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
	if($rotate_mode == 3)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		if($i == 0) shuffle($includes);&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function version($me)&lt;br /&gt;
{&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Script programming by 0xffffffdukevin&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Email at 0xffffffdukevinjduke@gmail.com0xffff00 for suggestions, comments&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Made for smart&#039;s server&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=38856</id>
		<title>Advanced Racing With race timer/Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Script&amp;diff=38856"/>
		<updated>2012-05-07T10:34:42Z</updated>

		<summary type="html">&lt;p&gt;Smart: Created page with &amp;quot;&amp;lt;pre&amp;gt; #!/usr/bin/php &amp;lt;?php /*  Race Script 		Includes highscores per map, finish timers, map/cfg rotator, and more 		Requires a TargetZone as a finish line, winzones will not ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*  Race Script&lt;br /&gt;
		Includes highscores per map, finish timers, map/cfg rotator, and more&lt;br /&gt;
		Requires a TargetZone as a finish line, winzones will not work&lt;br /&gt;
		If you are not using Rx Hosting, make sure your directory has write permissions&lt;br /&gt;
		Made by dukevin (dukevinjduke@gmail.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$save_directory_location = &amp;quot;/home/duke/aa/servers/smart/var/logs/&amp;quot;;   //The directory to save files. Must end with trailing slash&lt;br /&gt;
$countdown_secs_after_finish = 30;	//After someone finishes, how many seconds on the timer before the round ends?&lt;br /&gt;
$countdown_if_last_player = true; //If only 1 player remaining, start the timer?&lt;br /&gt;
$countdown_last_player_extra_time = 0; //If only 1 player remaining, give the last racer this many seconds of extra time to finish&lt;br /&gt;
$max_time_limit = -1; //start the timer after this many seconds, -1 to disable time limits&lt;br /&gt;
$points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1); //points awarded for 1st, 2nd, 3rd, 4th, 5th, etc...&lt;br /&gt;
$display_mode = 1; //If set to &amp;quot;1&amp;quot; display a center_message of the map name, 2 for console_message, 3 for both, 0 for no message&lt;br /&gt;
$display_prefix = &amp;quot;Current race: 0xffff00&amp;quot;; //When showing the map name, this is appended before it, if $display_mode is 0, this is disabled&lt;br /&gt;
&lt;br /&gt;
//Below, inbetween quotes, if you are including maps, put something like: &amp;quot;/path/to/map.aamap.xml&amp;quot;. If you are using cfgs, put &amp;quot;mycfg.cfg&amp;quot; &lt;br /&gt;
$includes = array(&amp;quot;8Ball.cfg&amp;quot;,&amp;quot;100Watts.cfg&amp;quot;,&amp;quot;Aflac.cfg&amp;quot;,&amp;quot;AnimusonConfusion.cfg&amp;quot;,&amp;quot;Aoi.cfg&amp;quot;,&amp;quot;Arsenal.cfg&amp;quot;,&amp;quot;AtlanticCharter.cfg&amp;quot;,&amp;quot;Cell.cfg&amp;quot;,&amp;quot;Cherrio.cfg&amp;quot;,&amp;quot;Compact.cfg&amp;quot;,&amp;quot;DevilsSandglass.cfg&amp;quot;,&amp;quot;Dizzy.cfg&amp;quot;,&amp;quot;FirePalace.cfg&amp;quot;,&amp;quot;AQuickExplosion.cfg&amp;quot;,&amp;quot;BenignRevolution.cfg&amp;quot;,&amp;quot;BloodyHell.cfg&amp;quot;,&amp;quot;Chihuahua.cfg&amp;quot;,&amp;quot;DeathOctagon.cfg&amp;quot;,&amp;quot;DeathTrap.cfg&amp;quot;,&amp;quot;Flex.cfg&amp;quot;,&amp;quot;FrizzleFraz.cfg&amp;quot;,&amp;quot;Glacier.cfg&amp;quot;,&amp;quot;Handgrip.cfg&amp;quot;,&amp;quot;Holiday.cfg&amp;quot;,&amp;quot;Hyperpod.cfg&amp;quot;,&amp;quot;Insane.cfg&amp;quot;,&amp;quot;ItsABug.cfg&amp;quot;,&amp;quot;JailBreak.cfg&amp;quot;,&amp;quot;Jelly.cfg&amp;quot;,&amp;quot;Killzone.cfg&amp;quot;,&amp;quot;KirbyDance.cfg&amp;quot;,&amp;quot;lol.cfg&amp;quot;,&amp;quot;Marathon.cfg&amp;quot;,&amp;quot;Mint.cfg&amp;quot;,&amp;quot;MissionImpossible.cfg&amp;quot;,&amp;quot;Moon.cfg&amp;quot;,&amp;quot;MovinOnUp.cfg&amp;quot;,&amp;quot;MrRoboto.cfg&amp;quot;,&amp;quot;Mutant.cfg&amp;quot;,&amp;quot;Nebraska.cfg&amp;quot;,&amp;quot;Nova.cfg&amp;quot;,&amp;quot;OctaGone2Death.cfg&amp;quot;,&amp;quot;PointOfNoReturn.cfg&amp;quot;,&amp;quot;PureRacingTorture.cfg&amp;quot;,&amp;quot;RatTunnels.cfg&amp;quot;,&amp;quot;Red.cfg&amp;quot;,&amp;quot;Resurrection.cfg&amp;quot;,&amp;quot;RoadLessTraveled.cfg&amp;quot;,&amp;quot;RoadOfDeath.cfg&amp;quot;,&amp;quot;Roundabout.cfg&amp;quot;,&amp;quot;Shield.cfg&amp;quot;,&amp;quot;SidebySide.cfg&amp;quot;,&amp;quot;SmallSpaces.cfg&amp;quot;,&amp;quot;Spiral.cfg&amp;quot;,&amp;quot;SpiralHam.cfg&amp;quot;,&amp;quot;SquareRoot.cfg&amp;quot;,&amp;quot;Stardome.cfg&amp;quot;,&amp;quot;Sun.cfg&amp;quot;,&amp;quot;Symmetry.cfg&amp;quot;,&amp;quot;TannersBigTronDaddy.cfg&amp;quot;,&amp;quot;TheMachine.cfg&amp;quot;,&amp;quot;TikiTime.cfg&amp;quot;,&amp;quot;TortureChamber.cfg&amp;quot;,&amp;quot;Trijecture.cfg&amp;quot;,&amp;quot;TurnAround.cfg&amp;quot;,&amp;quot;Unfair.cfg&amp;quot;,&amp;quot;Unfortunate.cfg&amp;quot;,&amp;quot;Verta.cfg&amp;quot;,&amp;quot;Wrapper.cfg&amp;quot;,&amp;quot;XploderPro.cfg&amp;quot;,&amp;quot;Zero.cfg&amp;quot;,&amp;quot;ZigZagZaney.cfg&amp;quot;,&amp;quot;Zipper.cfg&amp;quot;,&amp;quot;Zone3.cfg&amp;quot;);&lt;br /&gt;
$rotate_mode = 2; //Set to 1 for simple random, 2 to play each map in order, 3 to randomly pick a map that hasn&#039;t been picked yet.&lt;br /&gt;
$num_map_plays = 1; //play each map how many times before switching to next map&lt;br /&gt;
&lt;br /&gt;
$zombie_win = false;  //Does the winner get a zombie? (adjust zombie_zone_speed to fit your liking)&lt;br /&gt;
&lt;br /&gt;
/*=================================================================*/&lt;br /&gt;
&lt;br /&gt;
$reccomended_settings = array(&amp;quot;target_initial_score 0&amp;quot;, &amp;quot;sp_game_type 0&amp;quot;, &amp;quot;game_type 0&amp;quot;, &amp;quot;sp_finish_type 0&amp;quot;, &amp;quot;finish_type 0&amp;quot;, &amp;quot;sp_num_ais 0&amp;quot;, &amp;quot;num_ais 0&amp;quot;, &amp;quot;shot_seek_update_time 0.1&amp;quot;, &amp;quot;ladderlog_write_all 1|1&amp;quot;);  //these settings should be set for racing mode and is run once when the script is loaded&lt;br /&gt;
class Player&lt;br /&gt;
{&lt;br /&gt;
	var $name;&lt;br /&gt;
	var $pname;&lt;br /&gt;
	var $place;&lt;br /&gt;
	var $finish_time;&lt;br /&gt;
	var $best_time;&lt;br /&gt;
	var $num_plays;&lt;br /&gt;
	function __construct($name) &lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;name = $name;&lt;br /&gt;
		$this-&amp;gt;read();&lt;br /&gt;
		if(empty($this-&amp;gt;num_plays)) $this-&amp;gt;num_plays = 0;&lt;br /&gt;
	}&lt;br /&gt;
	function read()&lt;br /&gt;
	{&lt;br /&gt;
		global $file;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		foreach($lines as $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);  //time name num_plays        (if time is -1, never won it)&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;best_time = round($pieces[0],2);&lt;br /&gt;
				$this-&amp;gt;num_plays = $pieces[2];&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	function write()&lt;br /&gt;
	{&lt;br /&gt;
		global $file, $current_inc;&lt;br /&gt;
		$found = false;&lt;br /&gt;
		$lines = file($file);&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xff7777Warning: 0xffffffFile &#039;$current_inc.txt&#039; not found, file creation may have failed. Retrying...&amp;quot;);&lt;br /&gt;
			$fp = fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
		{&lt;br /&gt;
			$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			$pieces[1] = trim($pieces[1]);&lt;br /&gt;
			if($pieces[1] == $this-&amp;gt;name)&lt;br /&gt;
			{&lt;br /&gt;
				$lines[$i] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
				$found = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!$found)&lt;br /&gt;
		{&lt;br /&gt;
			$lines[] = &amp;quot;$this-&amp;gt;finish_time $this-&amp;gt;name $this-&amp;gt;num_plays \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		sort(&amp;amp;$lines, SORT_NUMERIC);&lt;br /&gt;
		file_put_contents($file, $lines);&lt;br /&gt;
		fclose($fp);&lt;br /&gt;
		//return pos&lt;br /&gt;
	}&lt;br /&gt;
	function finished($time, $place)&lt;br /&gt;
	{&lt;br /&gt;
		global $points, $players, $current_inc;&lt;br /&gt;
		$this-&amp;gt;num_plays++;&lt;br /&gt;
		$time = round($time,2);&lt;br /&gt;
		$this-&amp;gt;finish_time = $time;&lt;br /&gt;
		$this-&amp;gt;place = $place;&lt;br /&gt;
		$sufx = suffix($place);&lt;br /&gt;
		$score = $points[$place-1];&lt;br /&gt;
		if(empty($score)) $score = 0;&lt;br /&gt;
		if($place &amp;gt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
			{&lt;br /&gt;
				if($p-&amp;gt;place == 1)&lt;br /&gt;
				{&lt;br /&gt;
					$first = $p-&amp;gt;finish_time;&lt;br /&gt;
					$difference = &amp;quot; 0xffffff(&amp;quot; . round($this-&amp;gt;finish_time - $p-&amp;gt;finish_time,2) . &amp;quot; s behind 1st)&amp;quot;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
			$difference = &amp;quot;&amp;quot;;&lt;br /&gt;
		c(&amp;quot;0xffff00 &amp;gt; 0xffff99$this-&amp;gt;pname 0x55ccfffinished $place$sufx in 0xffff99$time 0x55ccffseconds.$difference 0x808080+{$score} pts&amp;quot;);&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;gt;= $this-&amp;gt;best_time &amp;amp;&amp;amp; !empty($this-&amp;gt;best_time)) //took longer than alltime best&lt;br /&gt;
		{&lt;br /&gt;
			pm($this-&amp;gt;name, &amp;quot;    0xaaaaffYour all-time best on 0xddddff{$current_inc}0xaaaaff is 0xffffff{$this-&amp;gt;best_time} 0xaaaaffs, you are 0xffffff&amp;quot;.($this-&amp;gt;finish_time - $this-&amp;gt;best_time).&amp;quot; 0xaaaaffs 0xff7777slower0xaaaaff.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		if($this-&amp;gt;finish_time &amp;lt; $this-&amp;gt;best_time || empty($this-&amp;gt;best_time))&lt;br /&gt;
		{&lt;br /&gt;
			if(!empty($this-&amp;gt;best_time)) $oldrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			$this-&amp;gt;write();&lt;br /&gt;
			$newrank = filetee($this-&amp;gt;name, $this-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
			if(empty($this-&amp;gt;best_time)) &lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaffThis is your first time finishing 0xddddff{$current_inc}0xaaaaff!&amp;quot;);&lt;br /&gt;
			else pm($this-&amp;gt;name, &amp;quot;  0x3388ff* 0x55ff88New personal record! You improved 0xffffff&amp;quot; . round($this-&amp;gt;best_time - $this-&amp;gt;finish_time,2) . &amp;quot;0x55ff88 s raising 0xffffff&amp;quot;. ($oldrank - $newrank) .&amp;quot; 0x55ff88ranks!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			if($newrank == 1) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffd700Congratulate 0xffffff$this-&amp;gt;pname 0xffd700for setting a new record on 0xffddaa$current_inc 0xffd700as the fastest time ever!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else if($newrank == 2) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;pname 0xc0c0c0just ranked 0xffffff2nd 0xc0c0c0as the fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*\n&amp;quot;);&lt;br /&gt;
			else if($newrank == 3) c(&amp;quot;0xff3333*0xffff33*0x33ff33*0x3366ff*0xffffff$this-&amp;gt;name 0xcd7f32just ranked 0xffcc003rd 0xcd7f32as the fastest time for $current_inc!0xff3333*0xffff33*0x33ff33*0x3366ff*&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				pm($this-&amp;gt;name, &amp;quot;    0xaaaaaaYou are now rank 0xffffff$newrank 0xaaaaaaon the list of fastest times for 0xcccccc{$current_inc}0xaaaaaa!&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;add_score_player $this-&amp;gt;name &amp;quot; . $score . &amp;quot;  \n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
$players = array();&lt;br /&gt;
$finished = 0;&lt;br /&gt;
&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
	$line = rtrim(fgets(STDIN, 1024));&lt;br /&gt;
	if(preg_match(&amp;quot;/^CYCLE_CREATED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;,$line);&lt;br /&gt;
		$name = $split[1];&lt;br /&gt;
		if(strstr($name,&amp;quot;\&amp;quot;&amp;quot;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0x000000 ! 0xffff00 $name is not allowed to use the characters 0xffffff« or \&amp;quot; 0xffff00 in their name.&amp;quot;);&lt;br /&gt;
			$clean = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;_&amp;quot;,$name);&lt;br /&gt;
			$wo = str_replace(&amp;quot;\&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$name);&lt;br /&gt;
			echo &amp;quot;rename $wo $clean \n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;rename $name $clean \n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		$players[$i] = new Player($split[1]);&lt;br /&gt;
		if(isset($pretty))&lt;br /&gt;
		{&lt;br /&gt;
			for($x = 0; $x &amp;lt; sizeof($pretty); $x++)&lt;br /&gt;
			{&lt;br /&gt;
				$crack = explode(&amp;quot;*%$&amp;quot;, $pretty[$x]);&lt;br /&gt;
				if($crack[0] == $players[$i]-&amp;gt;name)&lt;br /&gt;
					$players[$i]-&amp;gt;pname = trim($crack[1]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(!isset($players[$i]-&amp;gt;pname))&lt;br /&gt;
			$players[$i]-&amp;gt;pname = $players[$i]-&amp;gt;name;&lt;br /&gt;
		if($i == 0)&lt;br /&gt;
		{&lt;br /&gt;
			$xPos = $split[2];&lt;br /&gt;
			$yPos = $split[3];&lt;br /&gt;
		}&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) $rank = filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 1, false, true) + 1;&lt;br /&gt;
		$sufx = suffix($rank);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			$remind = &amp;quot;0x808080(Maybe because you&#039;re logged out?)&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			$remind = null;&lt;br /&gt;
		if(!empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0xaaddaaYour best time for $current_inc is 0xffffff{$players[$i]-&amp;gt;best_time}0xaaddaa s ranking 0xffffff$rank{$sufx}0xaaddaa.&amp;quot;);&lt;br /&gt;
		if(empty($players[$i]-&amp;gt;best_time)) pm($players[$i]-&amp;gt;name, &amp;quot;0xaaddaaYou have never won 0xcccccc$current_inc 0xaaddaabefore. $remind&amp;quot;);&lt;br /&gt;
		pm($players[$i]-&amp;gt;name, &amp;quot;0x808080Top 3 times for $current_inc:&amp;quot;);&lt;br /&gt;
		filetee($players[$i]-&amp;gt;name, $players[$i]-&amp;gt;name, 3, true);&lt;br /&gt;
		if(!(strstr($players[$i]-&amp;gt;name, &#039;@&#039;)))&lt;br /&gt;
			pm($players[$i]-&amp;gt;name, &amp;quot;0xffddaaYou should /login to protect your times!&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
		$i++;&lt;br /&gt;
		$num_racers = $i;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_ENTERED/&amp;quot;, $line))&lt;br /&gt;
	{   &lt;br /&gt;
		//PLAYER_ENTERED rx&amp;quot;dukevin 76.174.69.46 Rx«dukevin&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[1] . &amp;quot;*%$&amp;quot; . $split[3] . &amp;quot; &amp;quot; . $split[4] . &amp;quot; &amp;quot; . $split[5];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^PLAYER_RENAMED/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pretty[] = $split[2] . &amp;quot;*%$&amp;quot; . $split[5] . &amp;quot; &amp;quot; . $split[6] . &amp;quot; &amp;quot; . $split[7];&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^ROUND_COMMENCING/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		foreach($reccomended_settings as $s)&lt;br /&gt;
			echo &amp;quot;$s \n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;target_survive_time &amp;quot; . ($countdown_secs_after_finish+1) .&amp;quot;\n&amp;quot;;&lt;br /&gt;
		unset($players);&lt;br /&gt;
		$finished = 0;&lt;br /&gt;
		$num_racers = 0;&lt;br /&gt;
		$a_player_finished = false;&lt;br /&gt;
		$i = 0;&lt;br /&gt;
		if(empty($num_plays)) $num_plays = 0;&lt;br /&gt;
		$num_plays++;&lt;br /&gt;
		if($num_plays &amp;gt;= $num_map_plays)&lt;br /&gt;
		{&lt;br /&gt;
			$pick = pickmap($includes, $rotate_mode);&lt;br /&gt;
			$num_plays = 0;&lt;br /&gt;
		}&lt;br /&gt;
		$current_inc = retrieve($pick);&lt;br /&gt;
		c(&amp;quot;Reading $current_inc.txt...&amp;quot;);&lt;br /&gt;
		if($display_mode == 1) echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
		if($display_mode == 2) c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		if($display_mode == 3) &lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;center_message $display_prefix$current_inc\n&amp;quot;;&lt;br /&gt;
			c(&amp;quot;$display_prefix$current_inc&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		$file = &amp;quot;$save_directory_location&amp;quot; . &amp;quot;$current_inc&amp;quot; . &amp;quot;.txt&amp;quot;;&lt;br /&gt;
		if(!file_exists($file))&lt;br /&gt;
		{&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffff$current_inc.txt not found, creating it...&amp;quot;);&lt;br /&gt;
			fopen($file, &#039;w&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if(mt_rand(0,7)==7) c(&amp;quot;0x808080You can type /stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt; to view high scores for maps.&amp;quot;);&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line) || preg_match(&amp;quot;/^ROUND_SCORE/&amp;quot;,$line))&lt;br /&gt;
	{&lt;br /&gt;
		if($finished == 0 || $a_player_finished == true)&lt;br /&gt;
			goto end;&lt;br /&gt;
		@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(preg_match(&amp;quot;/^TARGETZONE_CONQUERED/&amp;quot;, $line))&lt;br /&gt;
		{&lt;br /&gt;
			echo &amp;quot;spawn_zone win $split[3] $split[4] 1000000 10000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
			foreach($players as $p)&lt;br /&gt;
				filetee($p-&amp;gt;name, $p-&amp;gt;name, 3);&lt;br /&gt;
		}&lt;br /&gt;
		sleep(1);&lt;br /&gt;
		echo &amp;quot;center_message Winner: $split[6]\n&amp;quot;;&lt;br /&gt;
		echo &amp;quot;collapse_zone\n&amp;quot;;&lt;br /&gt;
		$a_player_finished = true;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^INVALID_COMMAND/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		//INVALID_COMMAND /cast rx&amp;quot;dukevin 76.174.69.46 accesslevel argument 50&lt;br /&gt;
		if($split[1] == &amp;quot;/stats&amp;quot; || $split[1] == &amp;quot;/s&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			if($split[6] &amp;lt; 0) $split[6] = 0;&lt;br /&gt;
			if(empty($split[5]))&lt;br /&gt;
			{&lt;br /&gt;
				pm($split[2], &amp;quot;0xff7777Invalid usage, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			filetee($split[5], $split[2], $split[6]);&lt;br /&gt;
		}&lt;br /&gt;
		elseif($split[1] == &amp;quot;/version&amp;quot; || $split[1] == &amp;quot;/v&amp;quot; || $split[1] == &amp;quot;/ver&amp;quot; || $split[1] == &amp;quot;/vers&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = getObject($split[2]);&lt;br /&gt;
			version($obj);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			pm($split[2], &amp;quot;0xff7777Invalid command, try 0xffffff/stats &amp;lt;name&amp;gt; &amp;lt;amount&amp;gt;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^TARGETZONE_PLAYER_ENTER/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		//TARGETZONE_PLAYER_ENTER 2 zonename 100 100 dukevin 90.8824 103.506 1 0 37.6366&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$name = $split[5];&lt;br /&gt;
		$time = $split[10];&lt;br /&gt;
		$obj = getObject($name);&lt;br /&gt;
		if(!method_exists($obj,&#039;finished&#039;))&lt;br /&gt;
		{	&lt;br /&gt;
			c(&amp;quot;0xffff77Warning: 0xffffffNo object to operate on, perhaps you just loaded scripts?&amp;quot;);&lt;br /&gt;
			echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;kill $name\n&amp;quot;;&lt;br /&gt;
			echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			goto end;&lt;br /&gt;
		}&lt;br /&gt;
		if($obj-&amp;gt;finish_time &amp;gt; 0) //already hit the finish line&lt;br /&gt;
			goto end;&lt;br /&gt;
		$finished++;&lt;br /&gt;
		$obj-&amp;gt;finished($time, $finished);&lt;br /&gt;
		$num_racers--;&lt;br /&gt;
		if($zombie_win) zombieplz($split[5], $split[6], $split[7]);&lt;br /&gt;
		@clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish);&lt;br /&gt;
		if($num_racers &amp;lt;= 0)&lt;br /&gt;
			echo &amp;quot;target_survive_time &amp;quot; . 1 .&amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^GAME_TIME/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		@clock(&amp;quot;tick&amp;quot;);&lt;br /&gt;
		if($max_time_limit &amp;lt;= 0)&lt;br /&gt;
			goto end;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
			if($split[1] == $max_time_limit)&lt;br /&gt;
				clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(preg_match(&amp;quot;/^DEATH_FRAG|DEATH_SUICIDE|PLAYER_KILLED|DEATH_SHOT_FRAG|DEATH_DEATHZONE|DEATH_SHOT_SUICIDE|DEATH_TEAMKILL|DEATH_SHOT_TEAMKILL|DEATH_ZOMBIEZONE|DEATH_DEATHSHOT|DEATH_SELF_DESTRUCT/&amp;quot;, $line))&lt;br /&gt;
	{&lt;br /&gt;
		$split = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		if(empty(getObject($split[1])-&amp;gt;place))&lt;br /&gt;
			$num_racers--;&lt;br /&gt;
		if(sizeof($players) &amp;lt;= 1) //if only 1 player, don&#039;t start the timer&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($countdown_if_last_player == false) //don&#039;t start the timer if user doesn&#039;t want it&lt;br /&gt;
			goto end;&lt;br /&gt;
		if($num_racers &amp;lt;= 1)&lt;br /&gt;
		{&lt;br /&gt;
			if(@clock(&amp;quot;getState&amp;quot;) == &amp;quot;active&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				echo &amp;quot;spawn_zone win $xPos $yPos 1000000 100000 0 0 false 0 0 0\n&amp;quot;;&lt;br /&gt;
				@clock(&amp;quot;stop&amp;quot;);&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
			if($num_racers != 0) clock(&amp;quot;start&amp;quot;, $countdown_secs_after_finish + $countdown_last_player_extra_time, &amp;quot;kill&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
end:&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function clock($action, $duration, $options)&lt;br /&gt;
{&lt;br /&gt;
	static $state, $time, $options;&lt;br /&gt;
	if($action == &amp;quot;start&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;active&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$state = &amp;quot;active&amp;quot;;&lt;br /&gt;
		$time = $duration;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;stop&amp;quot; || $state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
		$options = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;tick&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		if($state == &amp;quot;stopped&amp;quot;)&lt;br /&gt;
			return;&lt;br /&gt;
		$time--;&lt;br /&gt;
		echo(&amp;quot;center_message 0xff7777$time               \n&amp;quot;);&lt;br /&gt;
		if(empty($time) || $time &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			if($options = &amp;quot;kill&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				global $players;&lt;br /&gt;
				echo &amp;quot;admin_kill_message 0\n&amp;quot;;&lt;br /&gt;
				foreach($players as $p)&lt;br /&gt;
				{&lt;br /&gt;
					echo &amp;quot;kill $p-&amp;gt;name \n&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				echo &amp;quot;admin_kill_message 1\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			$state = &amp;quot;stopped&amp;quot;;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($action == &amp;quot;getState&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		return $state;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function filetee($search, $requester, $amount = 3, $display_top = false, $onlyrank = false)&lt;br /&gt;
{&lt;br /&gt;
	global $file, $current_inc;&lt;br /&gt;
	$found = false;&lt;br /&gt;
	$lines = file($file);&lt;br /&gt;
	foreach($lines as $i =&amp;gt; $line)&lt;br /&gt;
	{&lt;br /&gt;
		$pieces = explode(&amp;quot; &amp;quot;, $line);&lt;br /&gt;
		$pieces[1] = trim($pieces[1]);&lt;br /&gt;
		if($pieces[1] == $search) &lt;br /&gt;
		{	&lt;br /&gt;
			$found = true;&lt;br /&gt;
			if($onlyrank) return $i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if($display_top) $i = 0;&lt;br /&gt;
	if($amount %2 == 0) $amount += 1;&lt;br /&gt;
	$amount = floor($amount/2);&lt;br /&gt;
	if($i == 0 || $i == sizeof($lines)-1) //display an extra entry for 1st and last place&lt;br /&gt;
		$amount += 1;&lt;br /&gt;
	if($found == false &amp;amp;&amp;amp; !$display_top &amp;amp;&amp;amp; !$onlyrank) pm($requester, &amp;quot;0xff7777$search not found on the list of fastest times for $current_inc&amp;quot;);&lt;br /&gt;
	for($x = $i-$amount; $x &amp;lt;= $i+$amount; $x++)&lt;br /&gt;
	{&lt;br /&gt;
		$cut = explode(&amp;quot; &amp;quot;, $lines[$x]);&lt;br /&gt;
		$color = ($cut[1] == $search) ? &#039;0xffff88&#039; : &#039;0xcccccc&#039;;&lt;br /&gt;
		if(!empty($cut[0])) pm($requester, $color . ($x+1) . &amp;quot;) $cut[0] - $cut[1]&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function suffix($number)&lt;br /&gt;
{&lt;br /&gt;
	if($number == 1) $sufx = &amp;quot;st&amp;quot;;&lt;br /&gt;
	elseif($number == 2) $sufx = &amp;quot;nd&amp;quot;;&lt;br /&gt;
	elseif($number == 3) $sufx = &amp;quot;rd&amp;quot;;&lt;br /&gt;
	else $sufx = &amp;quot;th&amp;quot;;&lt;br /&gt;
	return $sufx;&lt;br /&gt;
}&lt;br /&gt;
function retrieve($mapname)&lt;br /&gt;
{&lt;br /&gt;
	$type = explode(&amp;quot;.&amp;quot;, $mapname);&lt;br /&gt;
	if($type[sizeof($type)-1] == &amp;quot;xml&amp;quot;) $head = &amp;quot;MAP_FILE&amp;quot;;&lt;br /&gt;
	elseif($type[sizeof($type)-1] == &amp;quot;cfg&amp;quot;) $head = &amp;quot;INCLUDE&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	$tail = $mapname;&lt;br /&gt;
	echo $head . &amp;quot; &amp;quot; . $tail . &amp;quot;\n&amp;quot;;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
		$p-&amp;gt;finish_time = -1;&lt;br /&gt;
	&lt;br /&gt;
	$cut = explode(&amp;quot;/&amp;quot;, $tail);&lt;br /&gt;
	$split = explode(&amp;quot;.&amp;quot;, $cut[sizeof($cut)-1]);&lt;br /&gt;
	foreach($split as $element)&lt;br /&gt;
	{&lt;br /&gt;
		if($element == &amp;quot;aamap&amp;quot; || $element == &amp;quot;xml&amp;quot; || $element == &amp;quot;cfg&amp;quot;)&lt;br /&gt;
			unset($element);&lt;br /&gt;
		$current_inc .= $element;&lt;br /&gt;
	}&lt;br /&gt;
	$cut = explode(&amp;quot;-&amp;quot;, $current_inc);&lt;br /&gt;
	$current_inc = $cut[0];&lt;br /&gt;
	$current_inc = trim($current_inc);&lt;br /&gt;
	return empty($current_inc) ? &amp;quot;null&amp;quot; : $current_inc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zombieplz($name, $x, $y)&lt;br /&gt;
{&lt;br /&gt;
	echo &amp;quot;spawn_zone zombieOwner $name $name $x $y 1 0 0 0 false\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function c($string){&lt;br /&gt;
	echo &amp;quot;console_message $string \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function pm($name, $string){&lt;br /&gt;
	echo &amp;quot;player_message {$name} \&amp;quot;{$string}\&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function getObject($name)&lt;br /&gt;
{&lt;br /&gt;
	global $players;&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;name == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	foreach($players as $p)&lt;br /&gt;
	{&lt;br /&gt;
		if($p-&amp;gt;pname == $name)&lt;br /&gt;
		return $p;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
function pickmap($includes, $rotate_mode)&lt;br /&gt;
{&lt;br /&gt;
	static $i, $played;&lt;br /&gt;
	if($rotate_mode == 1)&lt;br /&gt;
		return $includes[mt_rand(0, sizeof($includes)-1)];&lt;br /&gt;
	if($rotate_mode == 2)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
	if($rotate_mode == 3)&lt;br /&gt;
	{&lt;br /&gt;
		if($i &amp;gt; sizeof($includes)-1 || empty($i)) $i = 0;&lt;br /&gt;
		if($i == 0) shuffle($includes);&lt;br /&gt;
		$x = $i;&lt;br /&gt;
		$i++;&lt;br /&gt;
		return $includes[$x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
function version($me)&lt;br /&gt;
{&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Script programming by 0xffffffdukevin&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Email at 0xffffffdukevinjduke@gmail.com0xffff00 for suggestions, comments&amp;quot;);&lt;br /&gt;
	pm($me-&amp;gt;name, &amp;quot;0xffff00Made for smart&#039;s server&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Settings&amp;diff=38855</id>
		<title>Advanced Racing With race timer/Settings</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer/Settings&amp;diff=38855"/>
		<updated>2012-05-07T10:33:49Z</updated>

		<summary type="html">&lt;p&gt;Smart: Created page with &amp;quot;&amp;lt;pre&amp;gt; #add server physics here INCLUDE MessageofDay.cfg TITLE_OF_DAY Advanced Racing MAX_IN_RATE 1000 MAX_OUT_RATE 1000   ############################################# #					 ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#add server physics here&lt;br /&gt;
INCLUDE MessageofDay.cfg&lt;br /&gt;
TITLE_OF_DAY Advanced Racing&lt;br /&gt;
MAX_IN_RATE 1000&lt;br /&gt;
MAX_OUT_RATE 1000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#############################################&lt;br /&gt;
#					    #&lt;br /&gt;
#		GAME SETTINGS		    #&lt;br /&gt;
#					    #&lt;br /&gt;
#############################################&lt;br /&gt;
ARENA_AXES 8&lt;br /&gt;
SP_SIZE_FACTOR 0&lt;br /&gt;
SIZE_FACTOR 0&lt;br /&gt;
&lt;br /&gt;
GAME_TYPE 0&lt;br /&gt;
SPAWN_WINGMEN_BACK 0&lt;br /&gt;
SPAWN_WINGMEN_SIDE 0&lt;br /&gt;
&lt;br /&gt;
CYCLE_WALL_TIME 999&lt;br /&gt;
CYCLE_FIRST_SPAWN_PROTECTION 1&lt;br /&gt;
CYCLE_BRAKE -16.0&lt;br /&gt;
AUTO_TEAM 1&lt;br /&gt;
AUTO_TEAM_SPEC_SPAM 0&lt;br /&gt;
CYCLE_INVULNERABLE_TIME 0&lt;br /&gt;
&lt;br /&gt;
SP_NUM_AIS 0&lt;br /&gt;
SP_MIN_PLAYERS 0&lt;br /&gt;
NUM_AIS 0&lt;br /&gt;
MIN_PLAYERS 1&lt;br /&gt;
&lt;br /&gt;
SP_TEAM_MAX_PLAYERS 1&lt;br /&gt;
SP_TEAM_MIN_PLAYERS 1&lt;br /&gt;
TEAM_MAX_PLAYERS 1&lt;br /&gt;
TEAM_MIN_PLAYERS 1&lt;br /&gt;
&lt;br /&gt;
SP_TEAMS_MAX 2&lt;br /&gt;
SP_TEAMS_MIN 1&lt;br /&gt;
#TEAMS_MAX 8&lt;br /&gt;
TEAMS_MIN 1&lt;br /&gt;
&lt;br /&gt;
SP_TEAM_MAX_IMBALANCE 1&lt;br /&gt;
TEAM_MAX_IMBALANCE 1&lt;br /&gt;
&lt;br /&gt;
SP_TEAM_BALANCE_ON_QUIT 0&lt;br /&gt;
SP_TEAM_BALANCE_WITH_AIS 0&lt;br /&gt;
TEAM_BALANCE_ON_QUIT 0&lt;br /&gt;
TEAM_BALANCE_WITH_AIS 0&lt;br /&gt;
&lt;br /&gt;
SP_WALLS_LENGTH 0.0003&lt;br /&gt;
WALLS_LENGTH 0.0003&lt;br /&gt;
&lt;br /&gt;
#############################################&lt;br /&gt;
#					    #&lt;br /&gt;
#		CYCLE SETTINGS		    #&lt;br /&gt;
#					    #&lt;br /&gt;
#############################################&lt;br /&gt;
&lt;br /&gt;
CYCLE_SPEED 0&lt;br /&gt;
CYCLE_SPEED_MAX 0&lt;br /&gt;
CYCLE_SPEED_MIN 0&lt;br /&gt;
CYCLE_SPEED_DECAY_BELOW 5.0&lt;br /&gt;
CYCLE_SPEED_DECAY_ABOVE .2&lt;br /&gt;
CYCLE_START_SPEED 30.0&lt;br /&gt;
CYCLE_BRAKE -25.0&lt;br /&gt;
&lt;br /&gt;
CYCLE_ACCEL 0&lt;br /&gt;
CYCLE_ACCEL_SELF 0&lt;br /&gt;
CYCLE_ACCEL_TEAM 0&lt;br /&gt;
CYCLE_ACCEL_ENEMY 0&lt;br /&gt;
CYCLE_ACCEL_RIM 0&lt;br /&gt;
CYCLE_ACCEL_SLINGSHOT 0&lt;br /&gt;
CYCLE_ACCEL_OFFSET 0&lt;br /&gt;
&lt;br /&gt;
CYCLE_WALL_NEAR 6.0&lt;br /&gt;
CYCLE_SOUND_SPEED 40.0&lt;br /&gt;
&lt;br /&gt;
# turning&lt;br /&gt;
CYCLE_DELAY  0.0009&lt;br /&gt;
CYCLE_DELAY_TIMEBASED 1.0&lt;br /&gt;
CYCLE_TURN_SPEED_FACTOR .95&lt;br /&gt;
&lt;br /&gt;
# rubber settings&lt;br /&gt;
CYCLE_RUBBER 90&lt;br /&gt;
CYCLE_PING_RUBBER 3.0&lt;br /&gt;
CYCLE_RUBBER_TIMEBASED 0.0&lt;br /&gt;
&lt;br /&gt;
CYCLE_RUBBER_SPEED 40.0&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE .001&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_RATIO .0001&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_RESERVOIR .005&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_UNPREPARED .005&lt;br /&gt;
CYCLE_RUBBER_MINDISTANCE_PREPARATION .2&lt;br /&gt;
&lt;br /&gt;
CYCLE_RUBBER_MINADJUST .01&lt;br /&gt;
&lt;br /&gt;
CYCLE_RUBBER_LEGACY 0&lt;br /&gt;
CYCLE_RUBBER_TIME 5.0&lt;br /&gt;
&lt;br /&gt;
CYCLE_RUBBER_DELAY 0.0&lt;br /&gt;
CYCLE_RUBBER_DELAY_BONUS .5&lt;br /&gt;
&lt;br /&gt;
# braking&lt;br /&gt;
CYCLE_BRAKE_REFILL 0.0&lt;br /&gt;
CYCLE_BRAKE_DEPLETE 0.0&lt;br /&gt;
&lt;br /&gt;
#############################################&lt;br /&gt;
#					    #&lt;br /&gt;
#	    	RULE&#039;S SETTINGS	    	    #&lt;br /&gt;
#					    #&lt;br /&gt;
#############################################&lt;br /&gt;
&lt;br /&gt;
SCORE_WIN 5&lt;br /&gt;
SCORE_SUICIDE -1&lt;br /&gt;
SCORE_KILL 0&lt;br /&gt;
SCORE_DIE -1&lt;br /&gt;
SCORE_DEATHZONE -1&lt;br /&gt;
SCORE_SURVIVE 0&lt;br /&gt;
&lt;br /&gt;
LIMIT_SCORE 1000&lt;br /&gt;
LIMIT_ROUNDS 73&lt;br /&gt;
LIMIT_TIME 1000&lt;br /&gt;
&lt;br /&gt;
ENEMY_TEAMMATE_PENALTY 2500.0&lt;br /&gt;
# ENEMY_SELF_PENALTY 3000.0&lt;br /&gt;
ENEMY_DEAD_PENALTY 0.0&lt;br /&gt;
ENEMY_CHATBOT_PENALTY 30.0&lt;br /&gt;
ENEMY_CURRENTTIME_INFLUENCE 0.0&lt;br /&gt;
ENEMY_SUICIDE_TIMEOUT 10000.0&lt;br /&gt;
&lt;br /&gt;
SP_SCORE_WIN 5&lt;br /&gt;
SP_LIMIT_SCORE 1000&lt;br /&gt;
SP_LIMIT_ROUNDS 73&lt;br /&gt;
SP_LIMIT_TIME 1000&lt;br /&gt;
&lt;br /&gt;
COLOR_STRINGS 1&lt;br /&gt;
FILTER_COLOR_STRINGS 0&lt;br /&gt;
FILTER_COLOR_NAMES 0&lt;br /&gt;
FILTER_COLOR_SERVER_NAMES 0&lt;br /&gt;
&lt;br /&gt;
SILENCE_DEFAULT 0&lt;br /&gt;
&lt;br /&gt;
# ladder constants&lt;br /&gt;
&lt;br /&gt;
GAME_TIMEOUT 10.0&lt;br /&gt;
&lt;br /&gt;
LAST_CHAT_BREAK_TIME -1.0&lt;br /&gt;
EXTRA_ROUND_TIME 0.0&lt;br /&gt;
PLAYER_CHAT_WAIT_MAX 0.0&lt;br /&gt;
PLAYER_CHAT_WAIT_FRACTION 0.0&lt;br /&gt;
PLAYER_CHAT_WAIT_SINGLE 0&lt;br /&gt;
PLAYER_CHAT_WAIT_TEAMLEADER 1&lt;br /&gt;
&lt;br /&gt;
CHATTER_REMOVE_TIME 0&lt;br /&gt;
IDLE_REMOVE_TIME 0&lt;br /&gt;
IDLE_KICK_TIME 0&lt;br /&gt;
&lt;br /&gt;
DOUBLEBIND_TIME -10.0&lt;br /&gt;
&lt;br /&gt;
# win zone settings&lt;br /&gt;
WIN_ZONE_DEATHS 1&lt;br /&gt;
WIN_ZONE_EXPANSION 100&lt;br /&gt;
WIN_ZONE_INITIAL_SIZE 1&lt;br /&gt;
WIN_ZONE_MIN_LAST_DEATH 10000&lt;br /&gt;
WIN_ZONE_MIN_ROUND_TIME 10000&lt;br /&gt;
WIN_ZONE_RANDOMNESS 0&lt;br /&gt;
&lt;br /&gt;
SPAWN_POINT_GROUP_SIZE 0&lt;br /&gt;
&lt;br /&gt;
#############################################&lt;br /&gt;
#					    #&lt;br /&gt;
#	 	 CAMERA SETTINGS	    #&lt;br /&gt;
#					    #&lt;br /&gt;
#############################################&lt;br /&gt;
    camera_server_custom_back 30&lt;br /&gt;
    camera_server_custom_pitch -0.7&lt;br /&gt;
    camera_server_custom_rise 20 &lt;br /&gt;
CAMERA_FORBID_CUSTOM 1&lt;br /&gt;
CAMERA_FORBID_FOLLOW 1&lt;br /&gt;
CAMERA_FORBID_FREE 1&lt;br /&gt;
CAMERA_FORBID_IN 1&lt;br /&gt;
CAMERA_FORBID_MER 1&lt;br /&gt;
CAMERA_FORBID_SERVER_CUSTOM 0&lt;br /&gt;
CAMERA_FORBID_SMART 1&lt;br /&gt;
CAMERA_GLANCE_BACK 12&lt;br /&gt;
CAMERA_GLANCE_BACK_FROMSPEED .06&lt;br /&gt;
CAMERA_GLANCE_PITCH -.09&lt;br /&gt;
CAMERA_GLANCE_RISE 5   &lt;br /&gt;
CAMERA_GLANCE_RISE_FROMSPEED .03&lt;br /&gt;
CAMERA_OVERRIDE_CUSTOM_GLANCE 1&lt;br /&gt;
CAMERA_OVERRIDE_CUSTOM_GLANCE_SERVER_CUSTOM 1&lt;br /&gt;
CAMERA_SERVER_CUSTOM_BACK_FROMSPEED .06&lt;br /&gt;
CAMERA_SERVER_CUSTOM_RISE_FROMSPEED .03&lt;br /&gt;
CAMERA_SERVER_GLANCE_BACK 30&lt;br /&gt;
CAMERA_SERVER_GLANCE_BACK_FROMSPEED .06&lt;br /&gt;
CAMERA_SERVER_GLANCE_PITCH -.7&lt;br /&gt;
CAMERA_SERVER_GLANCE_RISE 20&lt;br /&gt;
CAMERA_SERVER_GLANCE_RISE_FROMSPEED .03&lt;br /&gt;
INCLUDE server_info.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer&amp;diff=38854</id>
		<title>Advanced Racing With race timer</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer&amp;diff=38854"/>
		<updated>2012-05-07T10:29:43Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Server information ==&lt;br /&gt;
*  [[Server Settings]]&lt;br /&gt;
*  [[Server Script]]&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer&amp;diff=38853</id>
		<title>Advanced Racing With race timer</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Advanced_Racing_With_race_timer&amp;diff=38853"/>
		<updated>2012-05-07T10:28:08Z</updated>

		<summary type="html">&lt;p&gt;Smart: Created page with &amp;quot;Server Settings Server Script&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Server Settings]]&lt;br /&gt;
[[Server Script]]&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
	<entry>
		<id>http://wiki.armagetronad.org/index.php?title=Servers&amp;diff=38852</id>
		<title>Servers</title>
		<link rel="alternate" type="text/html" href="http://wiki.armagetronad.org/index.php?title=Servers&amp;diff=38852"/>
		<updated>2012-05-07T10:26:30Z</updated>

		<summary type="html">&lt;p&gt;Smart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PlayerTbl}}&amp;lt;br /&amp;gt;&lt;br /&gt;
This is a list of current servers, in alphabetical order.  To see a list of old servers that no longer exist but were interesting enough to write about, visit the page about [[Old Servers]].&lt;br /&gt;
&lt;br /&gt;
== [http://adventuresoftron.com Adventures of TRON] ==&lt;br /&gt;
These servers take a sightly different approach to recreating the excitement of the movie.&lt;br /&gt;
&lt;br /&gt;
*[[TRON Experience]] Emulates the lightcycle scene in Tron, but from the first person perspective only. Two teams of three players face off against each other (missing players are replaced with Ai). The Ai are surprisingly good, and single player mode is equally fun and challenging.&lt;br /&gt;
&lt;br /&gt;
*[[Advanced Racing]] Modeled after the scene where the main characters escape the game grid, players race against each other through several massive labyrinths. The maps are both large and complicated, so there is plenty of exploring to do in single player mode.&lt;br /&gt;
&lt;br /&gt;
*[[Original Arcade]] Based on the original, 1982 classic arcade game TRON, this server gives you a top down view and two speeds to choose from. There is a [http://wiki.armagetronad.net/index.php?title=Moviepacks_list#Original_Arcade matching moviepack], which comes with settings for off-line play. Great single player action!&lt;br /&gt;
&lt;br /&gt;
== [[Advanced Racing With race timer]] ==&lt;br /&gt;
&lt;br /&gt;
*  Advanced racing maps.&lt;br /&gt;
*  Race timer with high scores for each map.&lt;br /&gt;
*  80+ maps.&lt;br /&gt;
*  Maps ranging from very easy to insane.&lt;br /&gt;
*  Server paid for and put together by Smart.&lt;br /&gt;
*  Awesome race timer/map rotation script by Dukevin.&lt;br /&gt;
&lt;br /&gt;
== [http://aptron.at.tc Alpha Project Servers] ==&lt;br /&gt;
This is an amazing project full of abnormal modes. These modes contain settings and gameplay that were never played before in any other server yet. The type of modes currently online to play are:&lt;br /&gt;
&lt;br /&gt;
* [http://aptron.at.tc/wiki/index.php?title=SonicK_Fortress_World SonicK Fortress World]: Excellent mode with smooth high rubber and sped settings while keeping the default game-play of fortress intact.&lt;br /&gt;
&lt;br /&gt;
* [http://aptron.at.tc/wiki/index.php?title=Solar_Galaxy_Racing Solar Galaxy Racing]: An intense racing mode with high stakes and sharp turning with 16 axes. The maps themselves are a challenge while others are practically harmless.&lt;br /&gt;
&lt;br /&gt;
* [http://aptron.at.tc/wiki/index.php?title=Close_Combat_Shootout Close Combat Shootout] This mode is the most amazing and the wildest as your shoots bounce off walls five times before they disappear. There are plenty of covers to help you avoid the other player&#039;s shots or escape the intense shooting of the player(s).&lt;br /&gt;
&lt;br /&gt;
== Cheers! The Friendly Server ==&lt;br /&gt;
The name tells, all. Cheers hosted by Angel has been around since the golden years. The server is moderated by a helpful hand of players who just enjoy the game. Visit the community, at http://wwww.Armagetron.Co.Uk/&lt;br /&gt;
&lt;br /&gt;
== [http://crazy-tronners.com/portal.php Crazy Tronners Wild Servers] ==&lt;br /&gt;
&lt;br /&gt;
Nice fortress servers with completly different [http://crazy-tronners.com/ladders_new.php ladder system]. Over 90 various maps are rotating in 12 rounds at [http://crazy-tronners.com/servers.php?server=wildfortress Crazy Tronners Wild Fortress] (CTWF). [http://crazy-tronners.com/servers.php?server=catfight CTWCatfight] (1v1) and [http://crazy-tronners.com/servers.php?server=dogfight CTWDogfight] (2v2) are fortresses with custom maps (fake walls, speed hells, chico&#039;s rides, race, octagons and many many more) greate for challanges. All placed in Europe.&lt;br /&gt;
&lt;br /&gt;
== ~|DarkSyndicate|~ Arena ==&lt;br /&gt;
&lt;br /&gt;
High rubber Settings &lt;br /&gt;
&lt;br /&gt;
The right place to test your skills. Fast server with high rubber settings. The 100mbit connection did the rest to make the server that popular. Specifications:&lt;br /&gt;
&lt;br /&gt;
*server running armagetron 0.2.8.2&lt;br /&gt;
*standard arena&lt;br /&gt;
*walls last until you die&lt;br /&gt;
*explosions on a wall make gaps to get through&lt;br /&gt;
*no winzone activated&lt;br /&gt;
*server admins are ~|DS|~segv&lt;br /&gt;
&lt;br /&gt;
== [http://forums.dbdclan.co .dBd| Nano&#039;s Zombie DF] ==&lt;br /&gt;
&lt;br /&gt;
The physics were derived originally from Nightwalker&#039;s Loose DF settings, then modified by Nano, for a unique DF flavor.  If that wasn&#039;t exciting enough, there are zombies.  Which tend to get bigger after awhile.  And follow you around rather tenaciously, until either they eat you, you trick everyone else into getting between you and the zombie, or you win the normal boring way.  With their oddly manic rotation rate, these zombies are every bit &#039;Death by Distraction&#039;. &lt;br /&gt;
&lt;br /&gt;
== [http://forums.dbdclan.co .dBd|Server Network] ==&lt;br /&gt;
&lt;br /&gt;
.dBd| has several original servers spanning multiple gametypes: High Rubber, Dogfight, Fortress, Sumo; it also has several specialized servers: Flower Power, XzL.Clan The Server, Wonderland Fortress.&lt;br /&gt;
&lt;br /&gt;
== [http://deliciousdesserts.midnightgfx.net/ {Delicious Desserts} Custom Map] ==&lt;br /&gt;
&lt;br /&gt;
Delicious Desserts is a server for friendly and competitive players who like to have fun.&lt;br /&gt;
&lt;br /&gt;
*High rubber&lt;br /&gt;
*Fast speeds&lt;br /&gt;
*Red zone that appears from the 4 center pillars&lt;br /&gt;
*Custom map (Gave {DD} a unique touch that differed it from other servers)&lt;br /&gt;
[[Image:map1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Delicious Desserts ended because there were not enough donations to pay for the hosting provided by Luke-Jr. For more information on {DD} visit the website. [http://deliciousdesserts.co.nr www.DeliciousDesserts.co.nr]&lt;br /&gt;
&lt;br /&gt;
== [http://www.fallin-angels.org |FA|Fallin-Angels] ==&lt;br /&gt;
&lt;br /&gt;
* Black Ice: Low Rubber&lt;br /&gt;
* Black Tar: High Rubber, Walls slow you down&lt;br /&gt;
* Devil&#039;s Rings: Brake to shoot&lt;br /&gt;
* Fortress: Fortress style&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Flynn&#039;s Arcade - .:Avl:. Clan Server==&lt;br /&gt;
&lt;br /&gt;
Flynn&#039;s Arcade aims to be similar to the actual movie game grid, with emphasis on maneuvering skill, not just speed and rubber (although high speeds are quite possible). Settings include relatively low rubber, moderate speed and acceleration, infinite walls, and a turbo instead of brakes on one server, and good brakes and slow speed on the other server. Brake server is sometimes used for clan training. Servers are run by .:Avl:.C10ud:. (formerly ianthetechie). Homepage is http://flynnsarcade.net/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://forum.internaldrive.info/ internalDrive -=- iD Tech Camps] ==&lt;br /&gt;
&lt;br /&gt;
A server created by a student of internalDrive&#039;s iD Tech Camps program. iD Tech Camps is a computer camp that is held in many locations across the United States. iD Tech Camps&#039; official game is Armagetron Advanced, so it probably deserved a national server. This server is pretty crowded during the summer and may contain a few newbies. However, there is typically at least one experienced player on. Regardless, it is a very fun server with constantly active admins.&lt;br /&gt;
&lt;br /&gt;
This server is hosted by Master Chief with the Armagetron Advanced Superpatch, a mod of the 0.2.8 branch, on a retasked Sony Vaio. Efforts are being made to replace it with a faster server, but users have been experiencing few problems. Users generally have pings ranging from 50 to 150 on average.&lt;br /&gt;
&lt;br /&gt;
Administrators are Master Chief, SmOoThIcE, Wall-E, Puffyfluff, Snoopilicious, Slyshot, and Maes Hughes. Server stats, ladder info, and who is playing can be viewed at http://www.internaldrive.info. Forums are at http://forums.internaldrive.info. The official site of internalDrive is http://www.internaldrive.com. A racing server is also available that runs on at least 25 maps at the moment. Master Chief is working to improve the racing server&#039;s map selection for optimal playing.&lt;br /&gt;
&lt;br /&gt;
== [[Ion]] ==&lt;br /&gt;
&lt;br /&gt;
Ion is a test server hosted by zero. It allows players to test out new server settings and maps without having to use their own server. For more information, please contact [[User:zero]].&lt;br /&gt;
&lt;br /&gt;
== Laser Tag ==&lt;br /&gt;
There has been alot of buzz lately about this server. It resembles the concept of the FRO|FPS server, but is unique in it&#039;s own way. Players spawn on 2 sides of an arena and basically shoot to the death.The extremly high rubber combined with the fact that there is no tail makes it almost impossible to core dump, so shooting is basically the only way to kill. Laser Tag hosts monthly tournaments and is just an all around fun server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== | [http://forums.dbdclan.co Nano&#039;s Playground] | ==&lt;br /&gt;
&lt;br /&gt;
A very unique server with several different settings configs.  Currently this includes Classic Nano (default), Snake Hunt Mode (fighting style gameplay with very short tails), Brake Boost Chico, Trapdoor (very high wallshrink), Tail Madness (very high NEGATIVE wallshrink), Durka Durka Nano Land (a midget version of DDL), a DF mode, a mode called Fertilization (EXTREMELY tiny... like.... size_factor -13, hex axes, usually combined with a custom cam from overhead which looks straight down), and some other stuff thats not as interesting&lt;br /&gt;
&lt;br /&gt;
== [http://tron.nexusnine.org Nexus9] ==&lt;br /&gt;
&lt;br /&gt;
Two servers with no rubber, high speeds, very little deceleration, and no double binding.&lt;br /&gt;
&lt;br /&gt;
* [http://tron.nexusnine.org/servers.php#deathmatch Deathmatch]: a basic free-for-all&lt;br /&gt;
* [http://tron.nexusnine.org/servers.php#sumo Sumo]: our no rubber twist on traditional sumo gameplay&lt;br /&gt;
&lt;br /&gt;
== Neo-Nexus OldSkool ==&lt;br /&gt;
&lt;br /&gt;
A modified clone of what I consider to be the last classic [[#Nexus9|Nexus9]]. The point isn&#039;t to be better than Nexus, or even exactly like Nexus used to be; think of it more as a tribute than a challenge.&lt;br /&gt;
&lt;br /&gt;
* No rubber!&lt;br /&gt;
* 40 m/s start, 50 m/s maintained speed.&lt;br /&gt;
* Breaks = Boost (up to 100 m/s)&lt;br /&gt;
* Increased grind acceleration.&lt;br /&gt;
* Multiple binds disabled.&lt;br /&gt;
* Round win = 10, Kill = 2, Death = -1 points.&lt;br /&gt;
* Slow moving death zone at end.&lt;br /&gt;
&lt;br /&gt;
Server Hours:&lt;br /&gt;
&amp;lt;br&amp;gt;6pm-7am GMT (6am MWF)&lt;br /&gt;
&lt;br /&gt;
== Night Walkers Central ==&lt;br /&gt;
&lt;br /&gt;
These servers are hosted or paid by the members of the Night Walkers Clan. They include Dog Fight, CTF, CTFS, Fortress and Racing servers. Sometimes the CTFS server is down but the DF and Racing servers are always up. The racing server is always being added to but is experimental at this point. The Racing and Fortress servers also support armathentication.&lt;br /&gt;
&lt;br /&gt;
== | [http://nonerdsjustgeeks.com/ [NNJG] | ==&lt;br /&gt;
A server group and clan started by [NNJG]Ben. The [NNJG] Clan is currently down for a few months. This is meant to be a fun, but competitive clan and server group. [NNJG] Currently offers 4 Servers:&lt;br /&gt;
[NNJG] Wild Fortress - [NNJG] CTF - [NNJG] Racing - [NNJG] Sumo&lt;br /&gt;
For server stats and forums, visit [http://nonerdsjustgeeks.com/ NNJG&#039;s Website] and click on Armagetron Servers in the top navigation bar.&lt;br /&gt;
&lt;br /&gt;
== Norms Home ==&lt;br /&gt;
&lt;br /&gt;
A classic style server with friendly people. This server combines the best aspects of classic and fast play minus any bugs or much hated lag. To be among the best here you need skill and a range of strategies; however all are welcome whatever your ability.&lt;br /&gt;
For server stats, FAQ and links visit [http://www.normshome.de normshome.de]&lt;br /&gt;
&lt;br /&gt;
== [http://omegaclan.freeforums.org/index.php Omega Destruction High Rubber Servers] ==&lt;br /&gt;
&lt;br /&gt;
Servers hosted by Arduino and Charged. The rules for high rubber is simple; to coredump your opponent using any technique possible. Players range from noobs who do not know how to double bind, to pros that have been playing for years. Campers are not respected. Develop your unique strategies and compete with others with creativity. Omega Destruction Hr is currently hosted in Austin Tx, which has classic XzL 2006 settings, and the practice server is hosted in the Northern United States.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Race Server ==&lt;br /&gt;
&lt;br /&gt;
This is the first server of its kind, but the setup is simple: You all start at about the same position of a long narrow alley with many obstacles in it. Whoever arrives first at the other end and hits the winzone there gets declared the winner &amp;amp;mdash; if anyone makes it there, that is. Many different obstacles that are tricky to escape, small killzones, sticky rim walls, a passage where the alley gets even narrower or splits, killzone- only rounds, the ability to lay mines to get rid of your followers and the turbo make this server an experience you don&#039;t want to miss!&lt;br /&gt;
&lt;br /&gt;
== [[RaceToWinzone]] ==&lt;br /&gt;
&lt;br /&gt;
You drive on the server a genuine running &amp;amp;mdash; head at head &amp;amp;mdash; with a speed from 0 to &amp;gt; 700.  Obstacles will try you there to stop.  The level are labyrinth-well-behaved however without erring courses.  One must also never the way seeks to separate to simply only loose-race.  There are different types of level.  Times an obstacle run, times goes it through narrow tunnels, times must you try between the barks to drive.  Adrenalin impacts are guaranteed.&lt;br /&gt;
&lt;br /&gt;
== Race From Death Zone ==&lt;br /&gt;
&lt;br /&gt;
Similar to any race server, get to the end first, and hit the win zone. Just here, if you slow down, or make a wrong turn, you smash into the death zone, that is quickly expanding behind you.&lt;br /&gt;
With an arrange of different maps and brake to boost, it is a very fun server.&lt;br /&gt;
To see server stats and maps, visit [http://www.freewebs.com/racefromdeathzone Race From Death Zone Website]&lt;br /&gt;
This server is run by Aang.&lt;br /&gt;
&lt;br /&gt;
== Spacezone Servers ==&lt;br /&gt;
Most known server among the spacezone servers, is the High Speed server &amp;quot;Spacezone I&amp;quot; [High Speed]. A server where you must drive at High speed and try to catch you opponent. Spacezone II and III are slow speed servers with different settings..  The Spacezone formula 1 server is a server with custom maps, in here the target is to drive as fast as you can to the end of the grid into the &amp;quot;win zone&amp;quot;, the one who first enters the winzone , wins the race. &lt;br /&gt;
Visit us at http://spacezone24.de&lt;br /&gt;
&lt;br /&gt;
== [[Swampland]] ==&lt;br /&gt;
&lt;br /&gt;
This server offers shorter walls and moderately high wall acceleration.  It is also a standard gladiatorial-style arena. This server is run by Swampy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These servers are ran by Dr Joe Tron(Lobster Cage/Tub) and Gomes(Teamspeak Server)&lt;br /&gt;
&lt;br /&gt;
== Wild West Servers: ==&lt;br /&gt;
 &#039;&#039;Sumo, Team Sumo, Sumo Treasure Island, Fortress, Fortress Shootout, Wild Fortress&lt;br /&gt;
 Capture the Flag, Capture the Flag Shooting,CTF Wilderness, CTF Labryth, Multi-Mode, Cockpit&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
A set of low rubber servers to meet many style preferences. These servers are hosted in Texas on a Quad core Xeon server. For server stats, who&#039;s playing, and forums visit [http://www.lagtest.net lagtest.net] Wild West also offers hosting and hosts a number of other servers listed on the master list via WwHosting at [http://www.lagtest.net/wwhosting lagtest.net/wwhosting]&lt;/div&gt;</summary>
		<author><name>Smart</name></author>
	</entry>
</feed>