Code: Select all
#!/usr/bin/php
<?='<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'?>
<!DOCTYPE Resource SYSTEM "map-0.2.8_beta3.dtd">
<Resource type="aamap" name="Racing maze" version="0.2" author="wrtlprnft" category="OktaTRON">
<Map version="0.2.8">
<Settings>
<Setting name="TEAMS_MIN" value="2" />
<Setting name="TEAMS_MAX" value="9" />
<Setting name="SP_TEAMS_MIN" value="2" />
<Setting name="SP_TEAMS_MAX" value="10" />
</Settings>
<World>
<Field>
<Axes number="8" />
<?php
define('HEIGHT', 2500);
define('WIDTH', 100);
define('SPAWNPOINTS', 18);
define('NUMOBJECTS', 300);
define('MAXTRIES', 80);
$OBJECTS = array(
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 3, 'POINTS' => array(array('X' => -10, 'Y' => 0), array('X' => 10, 'Y' => 0))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => 0, 'Y' => -10), array('X' => 0, 'Y' => 10), array('X' => -10, 'Y' => 10), array('X' => 10, 'Y' => 10))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => -10, 'Y' => -5), array('X' => -8, 'Y' => 5), array('X' => 8, 'Y' => 5), array('X' => 10, 'Y' => -5))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => -10, 'Y' => -5), array('X' => -5, 'Y' => 5), array('X' => 0, 'Y' => -5), array('X' => 5, 'Y' => 5), array('X' => 10, 'Y' => -5))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => -2, 'Y' => -4), array('X' => 2, 'Y' => -4), array('X' => -4, 'Y' => -2), array('X' => 4, 'Y' => -2), array('X' => -6, 'Y' => 0), array('X' => 6, 'Y' => 0), array('X' => -8, 'Y' => 2), array('X' => -8, 'Y' => 2), array('X' => -10, 'Y' => 4), array('X' => 10, 'Y' => 4))),
array('TYPE' => 0, 'MINDISTANCE' => 10, 'RIMDISTANCE' => 5, 'POINTS' => array(array('X' => -5, 'Y' => -4), array('X' => -4, 'Y' => -5), array('X' => 4, 'Y' => -5), array('X' => 5, 'Y' => -4), array('X' => 5, 'Y' => -1), array('X' => 4, 'Y' => 0), array('X' => -4, 'Y' => 0), array('X' => -5, 'Y' => 1), array('X' => -5, 'Y' => 4), array('X' => -4, 'Y' => 5), array('X' => 4, 'Y' => 5), array('X' => 5, 'Y' => 4))),
array('TXPE' => 0, 'MINDISTANYE' => 10, 'RIMDISTANYE' => 5, 'POINTS' => array(array('Y' => -5, 'X' => -4), array('Y' => -4, 'X' => -5), array('Y' => 4, 'X' => -5), array('Y' => 5, 'X' => -4), array('Y' => 5, 'X' => -1), array('Y' => 4, 'X' => 0), array('Y' => -4, 'X' => 0), array('Y' => -5, 'X' => 1), array('Y' => -5, 'X' => 4), array('Y' => -4, 'X' => 5), array('Y' => 4, 'X' => 5), array('Y' => 5, 'X' => 4))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => -8, 'Y' => -5), array('X' => -10, 'Y' => 5), array('X' => 10, 'Y' => 5), array('X' => 8, 'Y' => -5))),
array('TYPE' => 0, 'MINDISTANCE' => 23, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => 0, 'Y' => -20), array('X' => 0, 'Y' => 20), array('X' => -10, 'Y' => 10), array('X' => 10, 'Y' => 10))),
array('TYPE' => 0, 'MINDISTANCE' => 20, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => 10, 'Y' => 20), array('X' => 0, 'Y' => 0), array('X' => 10, 'Y' => 0), array('X' => 0, 'Y' => 20), array('X' => 10, 'Y' => 20))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 3, 'POINTS' => array(array('X' => 0, 'Y' => 10), array('X' => 0, 'Y' => -10))),
array('TYPE' => 0, 'HEIGHT' => -1, 'SIDE' => 'r', 'MINDISTANCE' => 4, 'POINTS' => array(array('X' => -2, 'Y' => 2), array('X' => 0, 'Y' => 0))),
array('TYPE' => 0, 'HEIGHT' => -1, 'SIDE' => 'r', 'MINDISTANCE' => 4, 'POINTS' => array(array('X' => -2, 'Y' => -2), array('X' => 0, 'Y' => 0))),
array('TYPE' => 0, 'HEIGHT' => -1, 'SIDE' => 'l', 'MINDISTANCE' => 4, 'POINTS' => array(array('X' => 3, 'Y' => 3), array('X' => 0, 'Y' => 0))),
array('TYPE' => 0, 'HEIGHT' => -1, 'SIDE' => 'l', 'MINDISTANCE' => 4, 'POINTS' => array(array('X' => 3, 'Y' => -3), array('X' => 0, 'Y' => 0))),
array('TYPE' => 0, 'HEIGHT' => -1, 'RIMDISTANCE' => '2', 'MINDISTANCE' => 4, 'POINTS' => array(array('X' => 2, 'Y' => 0), array('X' => 0, 'Y' => 2), array('X' => -2, 'Y' => 0), array('X' => 0, 'Y' => -2), array('X' => 2, 'Y' => 0))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 6, 'POINTS' => array(array('X' => -10, 'Y' => -10), array('X' => 10, 'Y' => 10))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 6, 'POINTS' => array(array('X' => 10, 'Y' => -10), array('X' => -10, 'Y' => 10))),
array('TYPE' => 0, 'MINDISTANCE' => 15, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => -10, 'Y' => 0), array('X' => 0, 'Y' => -10), array('X' => 10, 'Y' => 0))),
array('TYPE' => 0, 'MINDISTANCE' => 20, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => -10, 'Y' => -5), array('X' => 0, 'Y' => 5), array('X' => 10, 'Y' => -5))),
array('TYPE' => 0, 'MINDISTANCE' => 20, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => 10, 'Y' => 5), array('X' => 0, 'Y' => -5), array('X' => -10, 'Y' => 5))),
array('TYPE' => 0, 'MINDISTANCE' => 20, 'RIMDISTANCE' => 10, 'POINTS' => array(array('X' => 10, 'Y' => -10), array('X' => 0, 'Y' => 10), array('X' => -10, 'Y' => -10))),
array('TYPE' => 1, 'MINDISTANCE' => 20, 'RIMDISTANCE' => 1, 'r' => 7),
array('TYPE' => 1, 'MINDISTANCE' => 20, 'RIMDISTANCE' => 1, 'r' => 5),
array('TYPE' => 1, 'MINDISTANCE' => 20, 'RIMDISTANCE' => 1, 'r' => 10),
array('TYPE' => 1, 'MINDISTANCE' => 40, 'RIMDISTANCE' => 1, 'r' => 20)
//array('MINDISTANCE' => 8, 'RIMDISTANCE' => 3, 'POINTS' => array(array('X' => 5, 'Y' => 5), array('X' => 0, 'Y' => 5), array('X' => 0, 'Y' => 0), array('X' => 5, 'Y' => 0)), array('X' => 5, 'Y' => 5))
);
$usedobjs = array();
for($i=0; $i<NUMOBJECTS; $i++)
{
$nextid = rand(0, count($OBJECTS) -1);
$nextobj = $OBJECTS[$nextid];
for($t=0; $t<MAXTRIES; $t++)
{
$newy=rand(100, HEIGHT);
if($newy < HEIGHT/2-300 || $newy > HEIGHT/2+100)
{
if($nextobj['SIDE'] == 'r')
$newx = WIDTH;
elseif($nextobj['SIDE'] == 'l')
$newx = 0;
else
$newx=rand($nextobj['RIMDISTANCE'] -1, WIDTH - $nextobj['RIMDISTANCE']+2);
}
else
{
if($nextobj['SIDE'] == 'r') continue;
else if($nextobj['SIDE'] == 'l') continue;
else
if ($newx < HEIGHT/2-125)
$newx=rand($nextobj['RIMDISTANCE'] -26, WIDTH - $nextobj['RIMDISTANCE']+28);
else
$newx=rand($nextobj['RIMDISTANCE'] +24, WIDTH - $nextobj['RIMDISTANCE']-22);
}
$dist = $nextobj['MINDISTANCE'];
$found=false;
foreach($usedobjs as $obj)
{
$olddist = $OBJECTS[$obj['id']]['MINDISTANCE'];
$totaldist = $olddist + $dist;
$xdiff = $newx - $obj['x'];
$ydiff = $newy - $obj['y'];
if(sqrt($xdiff*$xdiff + $ydiff*$ydiff) < $totaldist)
{
$found=true;
break;
}
}
if(!$found)
{
$usedobjs[] = array('x' => $newx, 'y' => $newy, 'id' => $nextid);
break;
}
}
if($t==MAXTRIES) break;
}
?>
<Spawn x="50" y="-50" angle="90" />
<Spawn x="40" y="-50" angle="90" />
<Spawn x="60" y="-50" angle="90" />
<Spawn x="30" y="-50" angle="90" />
<Spawn x="70" y="-50" angle="90" />
<Spawn x="20" y="-50" angle="90" />
<Spawn x="80" y="-50" angle="90" />
<Spawn x="10" y="-50" angle="90" />
<Spawn x="90" y="-50" angle="90" />
<Zone effect="win">
<ShapeCircle radius="100" growth="0">
<Point x="<?=WIDTH/2?>" y="<?=HEIGHT+100?>" />
</ShapeCircle>
</Zone>
<Zone effect="death">
<ShapeCircle radius="1" growth="95">
<Point x="<?=WIDTH/2?>" y="-199" />
</ShapeCircle>
</Zone>
<Wall height="1">
<Point x="10" y="-120" />
<Point x="10" y="-60" />
<Point x="15" y="-60" />
<Point x="20" y="-65" />
<Point x="20" y="-80" />
<Point x="15" y="-85" />
<Point x="10" y="-85" />
<Point x="20" y="-120" />
</Wall>
<Wall height="1">
<Point x="25" y="-120" />
<Point x="40" y="-60" />
<Point x="55" y="-120" />
<Point x="47.5" y="-90" />
<Point x="32.5" y="-90" />
</Wall>
<Wall height="1">
<Point x="75" y="-65" />
<Point x="70" y="-60" />
<Point x="65" y="-60" />
<Point x="60" y="-65" />
<Point x="60" y="-115" />
<Point x="65" y="-120" />
<Point x="70" y="-120" />
<Point x="75" y="-115" />
</Wall>
<Wall height="1">
<Point x="95" y="-60" />
<Point x="80" y="-60" />
<Point x="80" y="-90" />
<Point x="90" y="-90" />
<Point x="80" y="-90" />
<Point x="80" y="-120" />
<Point x="95" y="-120" />
</Wall>
<Wall>
<Point x="<?=WIDTH/2?>" y="<?=HEIGHT/2 -125?>" />
<Point x="<?=WIDTH/2+5?>" y="<?=HEIGHT/2 -130?>" />
<Point x="<?=WIDTH/2+5?>" y="<?=HEIGHT/2 -270?>" />
<Point x="<?=WIDTH/2?>" y="<?=HEIGHT/2 -275?>" />
<Point x="<?=WIDTH/2-5?>" y="<?=HEIGHT/2 -270?>" />
<Point x="<?=WIDTH/2-5?>" y="<?=HEIGHT/2 -130?>" />
<Point x="<?=WIDTH/2?>" y="<?=HEIGHT/2 -125?>" />
</Wall>
<Wall>
<Point x="0" y="-200" />
<Point x="<?=WIDTH?>" y="-200" />
<Point x="<?=WIDTH?>" y="<?=HEIGHT/2 - 300?>" />
<Point x="<?=WIDTH+25?>" y="<?=HEIGHT/2 - 275?>" />
<Point x="<?=WIDTH+25?>" y="<?=HEIGHT/2 - 125?>" />
<Point x="<?=WIDTH-25?>" y="<?=HEIGHT/2 - 75?>" />
<Point x="<?=WIDTH-25?>" y="<?=HEIGHT/2 + 75?>" />
<Point x="<?=WIDTH?>" y="<?=HEIGHT/2 + 100?>" />
<Point x="<?=WIDTH?>" y="<?=HEIGHT*20?>" />
<Point x="0" y="<?=HEIGHT*20?>" />
<Point x="0" y="<?=HEIGHT/2 + 100?>" />
<Point x="25" y="<?=HEIGHT/2 + 75?>" />
<Point x="25" y="<?=HEIGHT/2 - 75?>" />
<Point x="-25" y="<?=HEIGHT/2 - 125?>" />
<Point x="-25" y="<?=HEIGHT/2 - 275?>" />
<Point x="0" y="<?=HEIGHT/2 - 300?>" />
<Point x="0" y="-200" />
</Wall>
<?php
foreach($usedobjs as $obj)
{
switch($OBJECTS[$obj['id']]['TYPE'])
{
case 0:
$height = $OBJECTS[$obj['id']]['HEIGHT'];
if (!$height)
$height = 2;
if($height >= 0)
$str = ' height="' . $height . '"';
else
$str = '';
print('<Wall' . $str . '>');
foreach($OBJECTS[$obj['id']]['POINTS'] as $point)
print('<Point x="' . ($obj['x'] + $point['X']) . '" y="' . ($obj['y'] + $point['Y']) . '" />');
print('</Wall>' . "\n");
break;
case 1:
print('<Zone effect="death"><ShapeCircle radius="' . $OBJECTS[$obj['id']]['r'] . '" growth="0"><Point x="' . $obj['x'] . '" y="' . $obj['y'] . '" /></ShapeCircle></Zone>
');
}
}
?>
</Field>
</World>
</Map>
</Resource>