on *:LOAD:{ if !$isdir(MapViewer) { mkdir MapViewer mkdir MapViewer\graphics mvgfx } echo -gaec other * N Map Viewer loaded! To begin, type /mapviewer and press enter, or select Map Viewer from the right click popup menu. } on *:SOCKOPEN:mv,*:{ if !$sockerr { sockwrite -nt $sockname GET $+(/30487/115/0/,$gettok($sockname,2,44)) sockwrite -nt $sockname Host: $sock($sockname).addr sockwrite -nt $sockname $crlf } else echo -gaec Other * Error: $sock($sockname).wsmsg } on *:SOCKREAD:mv,*:{ if !$sockerr { sockread &x if $bvar(&x,0) { bwrite $qt($+(MapViewer\graphics\,$gettok($sockname,-1,47))) -1 -1 &x } } else { .timer 1 0 noop $!input( Unable to download $gettok(abc/tiles.png,-1,47) $+ .$& Please try again later $!+ $!chr(44) or ask Meta for a copy. ,dow,Error) halt } } ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - menu status,nicklist,channel,query,menubar { - $iif($window(@MapViewer),$style(2)) $+ Map Viewer:mapviewer } ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - alias -l mvgfx { if $isid { var %file $+(MapViewer\graphics\,$1.png) ; ,-- Is this hacky? Should I be using if or $iif() instead? Meh... Doesn't matter, it works. Shut up. return $replacex($prop 0,w 0,$pic(%file).width,h 0,$pic(%file).height,$prop 0,$file(%file).longfn) } else { if !$isfile(MapViewer\graphics\tiles.png) { sockopen mv,f5283850/tiles.png z5.ifrm.com 80 } if !$isfile(MapViewer\graphics\objects.png) { sockopen mv,f5283849/objects.png z5.ifrm.com 80 } } } alias -l mvdir { clear -l @MapViewer hadd mapviewer dir $1- aline -l @MapViewer < $gettok($1-,-1,92) aline -l @MapViewer $str(-,20) noop $finddir($1-,*,0,1,aline -l @MapViewer > $gettok($1-,-1,92)) aline -l @MapViewer $str(-,20) writeini $qt(MapViewer\config.ini) config mapdir $1- noop $findfile($1-,*.txt,0,1,aline -l @MapViewer $chr(9) $+ $gettok($1-,-1,92)) drawrect -rf @MapViewer 13683402 1 24 24 744 552 drawrect -r @MapViewer 8943993 24 0 0 792 600 } alias -l mvrgx return /^(?:\$(?:(?:[^#]*)#){3})?([^|]+)\|([^|#]*)[#|]?/g ;([^#]*) alias mapviewer { if !$window(@MapViewer) { mvgfx window -Cdfl22p -t2 +fnt @MapViewer -1 -1 792 600 window -dfhp +dL @MapViewer_TILES -1 -1 816 24 window -dfhp +dL @MapViewer_OBJECTS -1 -1 988 26 drawfill -rs @MapViewer 13683402 $color($color(background)) 0 0 drawrect -r @MapViewer 8943993 24 0 0 792 600 drawpic -c @MapViewer_TILES 0 0 $qt($mvgfx(tiles)) drawpic -c @MapViewer_OBJECTS 0 0 $qt($mvgfx(objects)) hmake mapviewer 100 if $readini(MapViewer\config.ini,n,config,mapdir) { mvdir $v1 } else drawtext -nr @MapViewer 13117480 FixedSys -24 36 36 Right click to select map directory. } else window -a @MapViewer } menu @MapViewer { lbclick:{ if $regex($sline(@MapViewer,1),^\t(.+)$) { var %file $+($hget(mapviewer,dir),$regml(1)) renwin @MapViewer @MapViewer - %file if $file(%file).size > 0 { bread -t $qt(%file) 0 $file(%file).size &file hadd -bc mapviewer file &file drawrect -nrf @MapViewer 13683402 1 24 24 744 552 if !$hfind(mapviewer,$mvrgx,1,r).data { drawtext -nr @MapViewer 2631880 FixedSys -24 36 36 INVALID OR CORRUPT MAP DATA! } else { var %t 1 bset &tiles 1 $regsubex(t,$left($regml(1),713),/(.)/g,$calc($asc(\t) - 47) $chr(32)) if $regml(2) != $null { bset -t &objects 1 $v1 var %o 1, %x while $bvar(&objects,0) && $gettok($bvar(&objects,1-).text,1,33) != $null { var %object, %osize, %coord, %dir, %switch, %coord2, %osize2, %drone, %door, %ddir, %dpos, %launchpad var %q $v1, %object $base($gettok(%q,1,94),10,13), %props $gettok(%q,2,94), %x $gettok(%props,1,44), %y $gettok(%props,2,44) if %object == 2 { %launchpad = $regsubex($gettok(%props,3,44) $gettok(%props,4,44),/\d\.\d+/g,0.5) %osize = $calc(27 + $findtok(-1 0:-0.5 -0.5:0 -1:0.5 -0.5:1 0:0.5 0.5:0 1,%launchpad,58) * 16) 0 16 16 $iif($calc($gettok(%launchpad,1,32) * $gettok(%launchpad,2,32)),inc,dec) %x $calc($round($gettok(%launchpad,1,32),0) * 2) $iif($calc($gettok(%launchpad,1,32) * $gettok(%launchpad,2,32)),inc,dec) %y $calc($round($gettok(%launchpad,2,32),0) * 2) } elseif %object == 6 { %drone = $base($gettok(%props,5,44) $+ $gettok(%props,6,44),4,10) %osize = $calc(199 + %drone * 18) 0 18 18 if %drone < 5 && $gettok(%props,4,44) { drawcopy -nt @MapViewer_OBJECTS 13683402 415 0 18 18 @MapViewer $calc(%x - 9) $calc(%y - 15) } } elseif %object == 7 { %dir = $gettok(%props,3,44) %osize = $calc(433 + %dir * 24) 0 24 24 } elseif %object == 8 { %dir = $gettok(%props,3,44) %osize = $calc(529 + %dir * 19) 0 19 19 } elseif %object == 9 { %ddir = $calc($replace($gettok(%props,3,44) + $gettok(%props,8,44) + $gettok(%props,9,44),-1,2)) %door = $calc($gettok(%props,5,44)*24-1) $calc($gettok(%props,6,44)*24-1) if $gettok(%props,7,44) { %osize = 913 0 8 8 drawcopy -nt @MapViewer_OBJECTS 13683402 $calc(709 + 26 * %ddir) 0 26 26 @MapViewer %door } elseif $gettok(%props,4,44) { %osize = 921 0 6 6 %dpos = $calc(795 + 25 * %ddir) drawcopy -nt @MapViewer_OBJECTS 13683402 $calc(813 + 25 * %ddir) 0 25 25 @MapViewer %door } else drawcopy -nt @MapViewer_OBJECTS 13683402 $calc(605 + 26 * %ddir) 0 26 26 @MapViewer %door } elseif %object == B { %switch = $ceil($calc(%x - 6.5)) $ceil($calc(%y - 4.5))) %osize = 941 0 26 25 drawcopy -nt @MapViewer_OBJECTS 13683402 967 0 13 9 @MapViewer %switch } else %osize = $replacex(%object,0,0 0 7 7,1,7 0 20 20,3,155 0 14 13,4,169 0 12 13,5,181 0 18 20,A,927 0 14 13,C,980 0 8 9) if %dir == 1 { inc %y } if %dir == 0 { inc %x } if %osize != $null { %coord = $ceil($calc(%x - ($gettok(%osize,3,32) / 2))) $ceil($calc(%y - ($gettok(%osize,4,32) / 2))) } if %coord != $null { drawcopy -nt @MapViewer_OBJECTS 13683402 %osize @MapViewer $v1 ;if %launchpad { drawtext -rt @MapViewer 0 calibri -7 %coord $v1 } } ;inc %o if $deltok($bvar(&objects,1-).text,1,33) != $null { bset -ct &objects 1 $v1 } else bunset &objects } } while $bvar(&tiles,%t) != $null { drawcopy -nt @MapViewer_TILES 13683402 $calc(($v1 - 1) * 24) 0 24 24 $& @MapViewer $calc($ceil($calc(%t / 23)) * 24) $calc($iif($calc(%t % 23),$v1,23) * 24) 24 24 inc %t } } drawrect -nr @MapViewer 8943993 24 0 0 792 600 drawdot @MapViewer } } } dclick:{ if $regex($sline(@MapViewer,1),^\t(.+)$) { run notepad.exe $qt($+($hget(mapviewer,dir),$regml(1))) } elseif $regex($sline(@MapViewer,1),^([<>]) (.+)$) { var %dir $hget(MapViewer,dir) mvdir $replace($regml(1),<,$deltok(%dir,-1,92),>,$+(%dir,$regml(2))) $+ \ } } - Select Map Directory:{ if $sdir(*) { mvdir $v1 } } } on *:CLOSE:@MapViewer:{ if $hget(mapviewer) { hfree $v1 } close -@ @MAPVIEWER_* drawpic -c }