| 1 | <?php
 | 
|---|
| 2 |     include("config.php");
 | 
|---|
| 3 |     session_start(); // sessions to generate only one map / person / 20s
 | 
|---|
| 4 |     if (isset($_SESSION['time']) && time()-$_SESSION['time'] < 20) {
 | 
|---|
| 5 |         header("Location: maperror.png");
 | 
|---|
| 6 |         exit(0);
 | 
|---|
| 7 |     }
 | 
|---|
| 8 |     $_SESSION['time']=time();
 | 
|---|
| 9 |     $map = imageCreate(500,500);
 | 
|---|
| 10 | 
 | 
|---|
| 11 |     $user = substr($_GET['player'],0,30);
 | 
|---|
| 12 | 
 | 
|---|
| 13 |     $stringx=$stringy=-1;
 | 
|---|
| 14 | 
 | 
|---|
| 15 |     $file = file($irpg_db);
 | 
|---|
| 16 |     unset($file[0]);
 | 
|---|
| 17 | 
 | 
|---|
| 18 |     foreach ($file as $line) {
 | 
|---|
| 19 |         list($username,,,,,,,,,,$x,$y) = explode("\t",trim($line));
 | 
|---|
| 20 |         if ($username == $user) {
 | 
|---|
| 21 |             $stringx = $x;
 | 
|---|
| 22 |             $stringy = $y;
 | 
|---|
| 23 |             break;
 | 
|---|
| 24 |         }
 | 
|---|
| 25 |     }
 | 
|---|
| 26 |     if ($stringx == $stringy && $stringx == -1) {
 | 
|---|
| 27 |         imageString($map,5,200,245,"NO SUCH USER",imagecolorallocate($map,255,0,0));
 | 
|---|
| 28 |     }
 | 
|---|
| 29 |     else {
 | 
|---|
| 30 |         $width = imageFontWidth(5);
 | 
|---|
| 31 |         $height = imageFontHeight(5);
 | 
|---|
| 32 |         if ($x+((strlen($user)+1)*$width) > 500) {
 | 
|---|
| 33 |             $stringx = $x - ((strlen($user)+1)*$width)-12;
 | 
|---|
| 34 |         }
 | 
|---|
| 35 |         if ($y+$height > 500) {
 | 
|---|
| 36 |             $stringy = $y - ($height/2)-2;
 | 
|---|
| 37 |         }
 | 
|---|
| 38 |         $magenta = imageColorAllocate($map,255,0,255);
 | 
|---|
| 39 |         imageColorTransparent($map,$magenta);
 | 
|---|
| 40 |         $brown = imagecolorallocate($map, 102, 51, 0);
 | 
|---|
| 41 |         $parchment = imagecolorallocate($map, 255, 255, 204);
 | 
|---|
| 42 | 
 | 
|---|
| 43 |         // Avoid drawing a brown dot on a brown area
 | 
|---|
| 44 |         $rgb = imageColorAt($map, $x, $y);
 | 
|---|
| 45 |         if ($rgb > 0) { // $rgb is 0 on our parchment-colored areas
 | 
|---|
| 46 |             $temp = $brown;
 | 
|---|
| 47 |             $brown = $parchment;
 | 
|---|
| 48 |             $parchment = $temp;
 | 
|---|
| 49 |         }
 | 
|---|
| 50 |         // YOU ARE HERE
 | 
|---|
| 51 |         imageFilledEllipse($map, $x, $y, 6, 6, $brown);
 | 
|---|
| 52 |         // background for text
 | 
|---|
| 53 |         imageFilledRectangle($map,$stringx+6,$stringy-($height/2),$stringx+6+$width*(strlen($user)+1),$stringy+($height/2),$brown);
 | 
|---|
| 54 |         // text itself
 | 
|---|
| 55 |         imageString($map,5,$stringx+7+($width/2),$stringy-($height/2)-1,$user,$parchment);
 | 
|---|
| 56 |     }
 | 
|---|
| 57 |     header("Content-type: image/png");
 | 
|---|
| 58 |     imagePNG($map);
 | 
|---|
| 59 |     imageDestroy($map);
 | 
|---|
| 60 | ?>
 | 
|---|