Warsow-Race.net Maps — File Browser

Warsow-Race.netMapsv1.0 / Warsow-Race.netMapsv1.0 / wsw-maps / wsw-maps.mrc

wsw-maps.mrc — 30.08 KB — Download this file

;########################################
;### Warsow-Race.net Map v1.0 © by Flobse
;### MailTo: Scripter@Flobse.de
;### IRC: #Flobse @ Quakenet
;########################################
;###
;### To start type /racenet
;### You can also rename the racenet alias to use a other command to start it.
;### Remove the following semicolons if you want to start it by pressing F9 or if you want a entry in your mousemenu



; alias F9 { wsw.racenet }

; menu * {
;  Racenet Maps : wsw.racenet 
;}

alias racenet { wsw.racenet }




;### Do not change anything after that line!
;###########################################



;### Starting
on *:load: { 
  if (!$dcx(Version)) { .load -rs $qt($scriptdirdata\dcx_tools.mrc) }
  elseif ($gettok($dcx(Version),4,32) != 1.4.0) { .timer 1 0 noop $!input(This script is optimized for DCX 1.4.0 or higher. $crlf $+ Your Version is $qt($gettok($dcx(Version),4,32)) $crlf $crlf $+ You can unload your current version and load \ $+ $remove($scriptdirdata\dcx_tools.mrc,$mircdir) to change your DCX version.,wo,Warsow-Race.net Maps © by Flobse) }
  wsw.racenet 
}



;### Global Aliases
alias wsw.color {
  if ($1 == bg2) { return 6240581 }
  elseif ($1 == bg) { return 5387326 }
  elseif ($1 == txt) { return 12352115 }
  elseif ($1 == border) { return 32993 }
}

alias wsw.path { 
  var %d wsw.dia.main
  if ($dialog(%d)) { return $xdid(%d,1).mark $+ $iif($right($xdid(%d,1).mark,1) != \,\) $+ $1- }
  if ($readini($wsw.ini,settings,compare)) { return $v1 $+ $iif($right($v1,1) != \,\) $+ $1- }
  if ($exists($envar(appdata) $+ \Warsow\basewsw\)) { return $envar(appdata) $+ \Warsow\basewsw\ $+ $1- }
}

alias wsw.ini { return $qt($scriptdirdata\data.ini) }

alias wsw.encode { return $replace($regsubex($1-,/([^a-z0-9_\-\+\!\.]{1})/i,% $+ $base($asc(\1),10,16,2)),$chr(32),% $+ 20) }

alias wsw.decode { return $regsubex($1-,/\%([A-Z0-9]{2})/ig,$chr($base(\1,16,10))) }

alias envar {
  var %wsh = wsh $+ $ticks, %tmp = $$1
  .comopen %wsh wscript.shell
  if ($isid) {
    %tmp = $com(%wsh,expandenvironmentstrings,1,bstr*,% $+ $1%)
    %tmp = $com(%wsh).result
  }
  else {
    var %env = env $+ $ticks
    %tmp = $com(%wsh,environment,2,bstr*,process,dispatch* %env)
    %tmp = $iif($0 < 2,$com(%env,remove,1,bstr*,$1),$com(%env,item,4,bstr*,$1,bstr*,$2-))
  }
  :error
  if ($com(%wsh)) .comclose %wsh
  if ($com(%env)) .comclose %env
  if ($isid) && ($+(%,$1,%) !iswm %tmp) return %tmp
}



;### Maindialog
alias wsw.racenet {
  var %d wsw.dia.main
  if (!$readini($wsw.ini,settings,compare)) || (!$readini($wsw.ini,settings,download)) { wsw.dia.settings | return }
  if (!$dialog(%d)) { dialog -dm %d %d $+ _table }
  else { dialog -v %d }
}

dialog wsw.dia.main_table {
  title "Warsow-Race.net Maps © by Flobse"
  size $iif($readini($wsw.ini,settings,mainpos),$v1,-1 -1) 520 295
}

on *:dialog:wsw.dia.main:*:*: {
  if ($devent == init) {
    dcx Mark $dname wsw.dia.main_cb
    xdialog -b $dname +ty
    xdialog -w $dname +a 0 $scriptdirdata\warsow.ico
    xdialog -g $dname +b $wsw.color(bg2)

    xdialog -c $dname 11 image 0 0 520 65 | xdid -i $dname 11 +h $scriptdir\data\racenet.jpg | xdid -J $dname 11 +r hand

    xdialog -c $dname 1 text 15 70 200 20 | xdid -t $dname 1 New Maps (0 / 0)
    xdid -C $dname 1 +b $wsw.color(bg2) | xdid -C $dname 1 +t $wsw.color(txt) | xdid -f $dname 1 +abi default 12 arial
    xdialog -c $dname 13 text 270 75 55 15 right | xdid -t $dname 13 Ordering: | xdid -C $dname 13 +b $wsw.color(bg2) | xdid -C $dname 13 +t $wsw.color(txt) | xdid -f $dname 13 +ab default 9 arial
    xdialog -c $dname 14 text 330 75 55 15 right | xdid -t $dname 14 Location | xdid -C $dname 14 +b $wsw.color(bg2) | xdid -C $dname 14 +t $wsw.color(border) | xdid -f $dname 14 +ab default 9 arial | xdid -J $dname 14 +r hand
    xdialog -c $dname 15 text 390 75 35 15 right | xdid -t $dname 15 Maps | xdid -C $dname 15 +b $wsw.color(bg2) | xdid -C $dname 15 +t $wsw.color(border) | xdid -f $dname 15 +ab default 9 arial | xdid -J $dname 15 +r hand
    xdialog -c $dname 16 text 430 75 35 15 right | xdid -t $dname 16 Date | xdid -C $dname 16 +b $wsw.color(bg2) | xdid -C $dname 16 +t $wsw.color(border) | xdid -f $dname 16 +ab default 9 arial | xdid -J $dname 16 +r hand
    xdialog -c $dname 17 text 470 75 35 15 right | xdid -t $dname 17 Size | xdid -C $dname 17 +b $wsw.color(bg2) | xdid -C $dname 17 +t $wsw.color(border) | xdid -f $dname 17 +ab default 9 arial | xdid -J $dname 17 +r hand
    xdialog -c $dname 12 image 15 93 490 3 | xdid -i $dname 12 +h $scriptdir\data\border.jpg

    xdialog -c $dname 3 listview 15 100 490 160 report fullrow noheader 
    xdid -i $dname 3 +bk $wsw.color(bg) | xdid -f $dname 3 +ab default 9 arial
    xdid -t $dname 3 +l 0 46 Location $chr(9) +l 0 295 Map $chr(9) +l 0 85 Last modified $chr(9) +l 0 42 Size
    xdialog -c $dname 4 text 15 270 80 15 | xdid -t $dname 4 Download all | xdid -C $dname 4 +b $wsw.color(bg2) | xdid -C $dname 4 +t $wsw.color(border) | xdid -f $dname 4 +ab default 9 arial | xdid -J $dname 4 +r hand
    xdialog -c $dname 5 text 120 270 115 15 | xdid -t $dname 5 Download selected | xdid -C $dname 5 +b $wsw.color(bg2) | xdid -C $dname 5 +t $wsw.color(border) | xdid -f $dname 5 +ab default 9 arial | xdid -J $dname 5 +r hand
    xdialog -c $dname 7 text 260 270 95 15 | xdid -t $dname 7 Delete selected | xdid -C $dname 7 +b $wsw.color(bg2) | xdid -C $dname 7 +t $wsw.color(border) | xdid -f $dname 7 +ab default 9 arial | xdid -J $dname 7 +r hand
    xdialog -c $dname 8 text 380 270 55 15 | xdid -t $dname 8 Explorer | xdid -C $dname 8 +b $wsw.color(bg2) | xdid -C $dname 8 +t $wsw.color(border) | xdid -f $dname 8 +ab default 9 arial | xdid -J $dname 8 +r hand
    xdialog -c $dname 9 text 450 270 55 15 right | xdid -t $dname 9 Settings | xdid -C $dname 9 +b $wsw.color(bg2) | xdid -C $dname 9 +t $wsw.color(border) | xdid -f $dname 9 +ab default 9 arial | xdid -J $dname 9 +r hand
    xdialog -c $dname 18 image 15 265 490 3 | xdid -i $dname 18 +h $scriptdir\data\border.jpg
    xdid -M $dname 1 $readini($wsw.ini,settings,compare)
    xdid -M $dname 3 $readini($wsw.ini,settings,download)
    wsw.newmaps
  }
}

alias wsw.dia.main_cb {
  ;if ($2 != mouse) { echo $color(info) -s */ wsw.dia.main_cb: $1- }
  if ($2 == sclick) {
    if ($3 == 11) { .url http://www.warsow-race.net/ }
    elseif ($3 == 4) { wsw.download all }
    elseif ($3 == 5) { wsw.download sel }
    elseif ($3 == 7) { wsw.delmap }
    elseif ($3 == 8) { .run $wsw.path }
    elseif ($3 == 9) { wsw.dia.settings }
    elseif ($3 == 14) { wsw.sort 1 }
    elseif ($3 == 15) { wsw.sort 2 }
    elseif ($3 == 16) { wsw.sort 3 }
    elseif ($3 == 17) { wsw.sort 4 }
  }
  elseif ($2 == keydown) && ($3 == 3) && ($xdid($1,$3,1).sel) { 
    var %x 1, %c $calc($v1 +1)
    while (%x <= $xdid($1,$3).num) {
      if ($left($xdid($1,$3,%c,2).text,1) == $chr($4)) { 
        xdid -V $1 $3 %c | xdid -u $1 $3 | xdid -c $1 $3 %c | return
      }
      if (%c == $xdid($1,$3).num) { var %c 1 }
      inc %c
      inc %x
    }
  }
  elseif ($2 == dclick) {
    if ($3 == 3) && ($4 == 2) && ($exists($wsw.path($xdid($1,$3,$4,2).text $+ .pk3))) {
      if ($readini($wsw.ini,settings,exe)) { .run $v1 map $xdid($1,$3,$4,2).text }
    }
  }
  if ($2 == close) { writeini $wsw.ini settings mainpos $dialog($1).x $dialog($1).y }
}

alias wsw.sort {
  var %d wsw.dia.main, %col $1
  if ($dialog(%d)) {
    if ($1 == last) { var %col $iif($readini($wsw.ini,settings,sortcol),$v1,2) }
    var %sort $iif($readini($wsw.ini,settings,sorting) == a,+d,+a) $+ $iif(%col isnum 3-4,c)
    if ($1 == last) { var %sort $replacex(%sort,a,d,d,a) }
    xdid -z %d 3 %sort %col $iif(%col == 3,wsw.sort.date,$iif(%col == 4,wsw.sort.size))
    writeini $wsw.ini settings sorting $iif(a isin %sort,a,d)
    writeini $wsw.ini settings sortcol %col
  }
}

alias wsw.markhash {
  var %d wsw.dia.main
  if ($dialog(%d)) {
    if ($hget(wsw.temp)) { hfree $v1 }
    var %x 1, %i 1
    if ($1 == all) {
      while ($xdid(%d,3,%x,2).text != $null) {
        if ($xdid(%d,3,%x,1).text != hdd) { hadd -m wsw.temp %i $wsw.encode($xdid(%d,3,%x,2).text) $+ .pk3 | inc %i }
        inc %x
    } }
    elseif ($1 == sel) {
      while ($xdid(%d,3,$xdid(%d,3,%x,2).sel,2).text != $null) {
        hadd -m wsw.temp %x $wsw.encode($v1) $+ .pk3
        inc %x
} } } }

alias wsw.delmap {
  var %d wsw.dia.main
  if ($dialog(%d)) {
    wsw.markhash sel
    var %x 1, %i 0
    while ($hget(wsw.temp,%x) != $null) {
      var %f $wsw.path($wsw.decode($v1))
      if ($exists(%f)) { .remove %f | inc %i }
      inc %x
    }
    wsw.refreshlist 
  }
}

alias wsw.sort.date {
  var %ctime1 $ctime($replace($1,-,$chr(32))), %ctime2 $ctime($replace($2,-,$chr(32)))
  if (%ctime1 < %ctime2) { return -1 }
  if (%ctime1 > %ctime2) { return 1 }
  return 0
}

alias wsw.sort.size {
  var %s1 $right($1,1), %s2 $right($2,1)
  var %size1 $calc($left($1,-1) * $iif(%s1 == k,1024,$iif(%s1 == m,1048576,1)))
  var %size2 $calc($left($2,-1) * $iif(%s2 == k,1024,$iif(%s2 == m,1048576,1)))
  if (%size1 < %size2) { return -1 }
  if (%size1 > %size2) { return 1 }
  return 0
}

alias wsw.newmaps {
  var %d wsw.dia.main
  sockclose newmaps
  if ($dialog(%d)) { 
    xdid -r %d 3
    xdid -t %d 1 New Maps (Loading...)
    xdid -C %d 1 +b $wsw.color(bg2) | xdid -C %d 1 +t $wsw.color(txt)
    sockopen newmaps downloads.warsow-race.net 80 
  }
}

on *:sockopen:newmaps: {
  if ($sockerr) { return }
  sockwrite -n $sockname GET /warsow/data/racesow/ HTTP/1.1
  sockwrite -n $sockname Host: $sock($sockname).addr
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname
}

on *:sockread:newmaps: {
  var %t, %d wsw.dia.main | sockread %t
  tokenize 32 $sock($sockname).mark
  if ($regex(newmaps,%t,/<a href=".+?">(.+?).pk3</a>\s*([\S]+)\s*[\S]+\s*(.+?)\s*$/ig)) {
    tokenize 47 $remove($xdid(%d,1).text,New Maps,$chr(40),$chr(41))
    var %map $htmldecode($regml(newmaps,1))
    if (!$exists($wsw.path(%map $+ .pk3))) { xdid -a %d 3 0 0 +c 0 0 0 0 $wsw.color(txt) 0 Server $chr(9) +c 0 0 $wsw.color(border) 0 %map $chr(9) +c 0 0 $wsw.color(txt) 0 $regml(newmaps,2) $chr(9) +c 0 0 $wsw.color(txt) 0 $regml(newmaps,3) $+ $iif($right($regml(newmaps,3),1) !isincs KM,B) }
    else { xdid -a %d 3 0 0 +c 0 0 0 0 $wsw.color(txt) 0 Hdd $chr(9) +c 0 0 $wsw.color(border) 0 %map $chr(9) +c 0 0 $wsw.color(txt) 0 $regml(newmaps,2) $chr(9) +c 0 0 $wsw.color(txt) 0 $regml(newmaps,3) $+ $iif($right($regml(newmaps,3),1) !isincs KM,B) }
  }
  elseif (</html> isin %t) {
    .timer 1 0 wsw.refreshlist
    .timer 1 0 wsw.sort last
    sockclose $sockname
  }
}

alias -l htmldecode { 
  var %r $replacecs($1,&quot;,$chr(34),&apos;,$chr(39),&amp;,$chr(38),&lt;,$chr(60),&gt;,$chr(62),&nbsp;,$chr(160),&iexcl;,$chr(161),&curren;,$chr(164),&cent;,$chr(162),&pound;,$chr(163), $&
    &yen;,$chr(165),&brvbar;,$chr(166),&sect;,$chr(167),&uml;,$chr(168),&copy;,$chr(169),&ordf;,$chr(170),&laquo;,$chr(171),&not;,$chr(172),&shy;,$chr(173),&reg;,$chr(174), $&
    &trade;,$chr(8482),&macr;,$chr(175),&deg;,$chr(176),&plusmn;,$chr(177),&sup2;,$chr(178),&sup3;,$chr(179),&acute;,$chr(180),&micro;,$chr(181),&para;,$chr(182),&yuml;,$chr(255), $&
    &middot;,$chr(183),&cedil;,$chr(184),&sup1;,$chr(185),&ordm;,$chr(186),&raquo;,$chr(187),&frac14;,$chr(188),&frac12;,$chr(189),&frac34;,$chr(190),&iquest;,$chr(191), $&
    &times;,$chr(215),&divide;,$chr(247),&Agrave;,$chr(192),&Aacute;,$chr(193),by Flobse,by Flobse,&Acirc;,$chr(194),&Atilde;,$chr(195),&Auml;,$chr(196),&Aring;,$chr(197), $&
    &Ccedil;,$chr(199),&Egrave;,$chr(200),&Eacute;,$chr(201),&Ecirc;,$chr(202),&Euml;,$chr(203),&Igrave;,$chr(204),&Iacute;,$chr(205),&Icirc;,$chr(206),&Iuml;,$chr(207), $&
    &ETH;,$chr(208),&Ntilde;,$chr(209),&Ograve;,$chr(210),&Oacute;,$chr(211),&Ocirc;,$chr(212),&Otilde;,$chr(213),&Ouml;,$chr(214),&Oslash;,$chr(216),&Ugrave;,$chr(217), $&
    &Uacute;,$chr(218),&Ucirc;,$chr(219),&Uuml;,$chr(220),&Yacute;,$chr(221),&THORN;,$chr(222),&szlig;,$chr(223),&agrave;,$chr(224),&aacute;,$chr(225),&acirc;,$chr(226), $&
    &atilde;,$chr(227),&auml;,$chr(228),&aring;,$chr(229),&aelig;,$chr(230),&ccedil;,$chr(231),&egrave;,$chr(232),&eacute;,$chr(233),&ecirc;,$chr(234),&euml;,$chr(235), $&
    &igrave;,$chr(236),&iacute;,$chr(237),&icirc;,$chr(238),&iuml;,$chr(239),&eth;,$chr(240),&ntilde;,$chr(241),&ograve;,$chr(242),&oacute;,$chr(243),&ocirc;,$chr(244), $&
    &otilde;,$chr(245),&ouml;,$chr(246),&oslash;,$chr(248),&ugrave;,$chr(249),&uacute;,$chr(250),&ucirc;,$chr(251),&uuml;,$chr(252),&yacute;,$chr(253),&thorn;,$chr(254), $&
    &bull;,$chr(149),„,",“,",–,-,&AElig;,$chr(198),Ü,Ü,ß,ß,Ö,Ö,ä,ä,ö,ö,Ã…,Å,ü,ü)
  return $regsubex(%r,/&#(\d+);/g,$chr(\1))
}

alias wsw.refreshlist {
  var %d wsw.dia.main
  if ($dialog(%d)) {
    var %x 1, %L 0, %g 0
    while ($xdid(%d,3,%x,2).text != $null) {
      var %map $v1 $+ .pk3
      if ($exists($wsw.path $+ %map)) { xdid -v %d 3 %x 1 Hdd }
      else { 
        xdid -v %d 3 %x 1 Server 
        inc %L
      }      
      inc %g
      inc %x
    }
    xdid -t %d 1 New Maps ( $+ %L / %g $+ )
    xdid -C %d 1 +b $wsw.color(bg2) | xdid -C %d 1 +t $wsw.color(txt)
  }
}



;### Download
alias wsw.download {
  if ($dialog(wsw.dia.main)) {
    if (!$readini($wsw.ini,settings,download)) || (!$exists($readini($wsw.ini,settings,download))) { wsw.dia.settings | return }
    wsw.markhash $1
    wsw.dia.dl 
} }

alias wsw.dia.dl {
  if ($dialog(wsw.dia.dl)) { dialog -c wsw.dia.dl }
  if ($hget(wsw.temp,1)) { 
    dialog -dm wsw.dia.dl wsw.dia.dl_table 
    if ($dialog(wsw.dia.main)) { xdialog -h $v1 }
  }
}

dialog wsw.dia.dl_table {
  title "Warsow-Race.net Maps - Download © by Flobse"
  size $iif($readini($wsw.ini,settings,dlpos),$v1,-1 -1) 390 220
}

on *:dialog:wsw.dia.dl:*:*: {
  if ($devent == init) {
    dcx Mark $dname wsw.dia.dl_cb
    xdialog -b $dname +t
    xdialog -w $dname +a 0 $scriptdirdata\warsow.ico
    xdialog -g $dname +b $wsw.color(bg)

    xdialog -c $dname 1 image 0 0 390 60 | xdid -i $dname 1 +h $scriptdir\data\racenet.jpg | xdid -J $dname 1 +r hand
    xdialog -c $dname 2 panel 0 60 400 200 | xdid -C $dname 2 +b $wsw.color(bg)
    xdid -c $dname 2 3 text 30 20 120 20 | xdid -t $dname 3 Download Map:
    xdid -C $dname 3 +b $wsw.color(bg) | xdid -C $dname 3 +t $wsw.color(txt) | xdid -f $dname 3 +abi default 11 arial
    xdid -c $dname 2 8 text 160 20 230 20 | xdid -t $dname 8 0 / 0
    xdid -C $dname 8 +b $wsw.color(bg) | xdid -C $dname 8 +t $wsw.color(border) | xdid -f $dname 8 +abi default 9 arial
    xdid -c $dname 2 4 text 30 43 80 20 | xdid -t $dname 4 Mapname:
    xdid -C $dname 4 +b $wsw.color(bg) | xdid -C $dname 4 +t $wsw.color(txt) | xdid -f $dname 4 +abi default 11 arial
    xdid -c $dname 2 9 text 120 43 230 20 | xdid -t $dname 9 ?.pk3
    xdid -C $dname 9 +b $wsw.color(bg) | xdid -C $dname 9 +t $wsw.color(border) | xdid -f $dname 9 +abi default 9 arial
    xdid -c $dname 2 7 text 30 65 120 20 | xdid -t $dname 7 Elapsed time:
    xdid -C $dname 7 +b $wsw.color(bg) | xdid -C $dname 7 +t $wsw.color(txt) | xdid -f $dname 7 +abi default 11 arial
    xdid -c $dname 2 10 text 160 65 230 20 | xdid -t $dname 10 00:00:00
    xdid -M $dname 10 $ctime | .timerwsw.elapsedtime 0 1 wsw.dl.elapsed
    xdid -C $dname 10 +b $wsw.color(bg) | xdid -C $dname 10 +t $wsw.color(border) | xdid -f $dname 10 +abi default 9 arial
    xdid -c $dname 2 5 pbar 30 100 330 15 smooth notheme | xdid -r $dname 5 0 $hget(wsw.temp,0).item | xdid -v $dname 5 0 
    xdid -i $dname 5 % $+ d % $+ % | xdid -u $dname 5 1 | xdid -q $dname 5 $wsw.color(border) | xdid -f $dname 5 +ab default 9 arial
    xdid -k $dname 5 $wsw.color(txt) | xdid -c $dname 5 $wsw.color(bg) | xdid -x $dname 5 +s
    xdid -c $dname 2 11 pbar 30 90 330 7 smooth notheme | xdid -r $dname 11 0 100 | xdid -v $dname 11 0 | xdid -i $dname 11
    xdid -k $dname 11 $wsw.color(txt) | xdid -c $dname 11 $wsw.color(bg) | xdid -x $dname 11 +s
    xdid -c $dname 2 6 button 140 122 100 25 tabstop | xdid -t $dname 6 Cancel
    wsw.getmap 1
  }
}

alias wsw.dl.elapsed {
  var %d wsw.dia.dl
  if (!$dialog(%d)) { .timerwsw.elapsedtime off | return } 
  elseif ($xdid(%d,10).mark) { 
    xdid -t %d 10 $duration($calc($ctime - $v1),3) 
    xdid -C %d 10 +b $wsw.color(bg)
  }
}

alias wsw.dia.dl_cb {
  ;if ($2 != mouse) { echo $color(info) -s */ wsw.dia.dl_cb: $1- }
  if ($2 == sclick) && ($3 == 6) { 
    dialog -c $1 
    if ($dialog(wsw.dia.main)) { dialog -v $v1 }
    .timer 1 0 wsw.refreshlist
  }
  if ($2 == close) {
    if ($dialog(wsw.dia.main)) { .timer 1 0 xdialog -s $v1 }
    writeini $wsw.ini settings dlpos $dialog($1).x $dialog($1).y
  }
}

alias wsw.getmap {
  var %d wsw.dia.dl
  if (!$dialog(%d)) { 
    if ($hget(wsw.temp)) { hfree $v1 }
    return 
  }
  if (!$hget(wsw.temp,$1)) { 
    dialog -c %d 
    wsw.refreshlist
  }
  else {
    xdid -t %d 8 $1 / $hget(wsw.temp,0).item
    xdid -t %d 9 $wsw.decode($hget(wsw.temp,$1))
    xdid -v %d 11 0
    xdid -C %d 8 +b $wsw.color(bg)
    xdid -C %d 9 +b $wsw.color(bg)
    sockopen wsw.dlmap. $+ $1 downloads.warsow-race.net 80
    sockmark wsw.dlmap. $+ $1
  }
}

on *:sockopen:wsw.dlmap.*: {
  if ($sockerr) { echo -s dl error | return }
  sockwrite -n $sockname GET /warsow/data/racesow/ $+ $hget(wsw.temp,$gettok($sockname,3,46)) HTTP/1.1
  sockwrite -n $sockname Host: $sock($sockname).addr
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname
}

on *:sockread:wsw.dlmap.*: {
  var %t, %d wsw.dia.dl, %nr $gettok($sockname,3,46), %map $wsw.decode($hget(wsw.temp,%nr))
  if ($sockerr) || (!$dialog(wsw.dia.dl)) {
    if ($exists($xdid(wsw.dia.main,3).mark $+ %map)) && (%map) { .remove $qt($xdid(wsw.dia.main,3).mark $+ %map) }
    if ($sockerr) {
      hfree wsw.temp
      wsw.refreshlist
    }
    sockclose wsw.dlmap.* 
    return
  }
  if ($sock($sockname).mark != $null) { 
    sockread &file 
    bwrite $qt($xdid(wsw.dia.main,3).mark $+ %map) -1 &file
    xdid -v %d 11 $sock($sockname).rcvd
    if ($sock($sockname).rcvd > $gettok($xdid(%d,11).range,2,32)) {
      xdid -t wsw.dia.dl 5
      sockclose wsw.dlmap.* 
      wsw.getmap $calc(%nr +1)
  } }
  else {
    sockread -f %t
    if (Content-length: * iswm %t) { 
      var %size $gettok($v2,2,32)
      if (!%size) {
        write $qt($xdid(wsw.dia.main,3).mark $+ %map) 1
        write -d $qt($xdid(wsw.dia.main,3).mark $+ %map)
        xdid -t wsw.dia.dl 5
        sockclose wsw.dlmap.* 
        wsw.getmap $calc(%nr +1)
        return
      }
      xdid -r %d 11 0 %size
    }
    if (!%t) { sockmark $sockname headerSkip }
  }
  :error
  if ($error) && (%map) {
    .timerwsw.error 1 1 noop $!input(An error occured. Can't download map: $crlf $+ $qt(%map) $crlf $crlf $+ Try it again or contact Flobse in #Flobse @ Quakenet.,wo,Warsow-Race.net Maps © by Flobse)
    if ($exists($xdid(wsw.dia.main,3).mark $+ %map)) && (%map) { .remove $qt($xdid(wsw.dia.main,3).mark $+ %map) | .timerwsw.getmap 1 1 wsw.getmap %nr }
    reseterror
    sockclose wsw.dlmap.* 
    return
  }
}



;### Settings
alias wsw.dia.settings {
  var %d wsw.dia.settings
  if ($dialog(%d)) { dialog -v %d }
  else { 
    dialog -dm %d %d $+ _table 
    if ($dialog(wsw.dia.main)) { xdialog -h wsw.dia.main }
  }
}

dialog wsw.dia.settings_table {
  title "Warsow-Race.net Maps - Settings © by Flobse"
  size $iif($readini($wsw.ini,settings,settingspos),$v1,-1 -1) 520 295
}

on *:dialog:wsw.dia.settings:*:*: {
  if ($devent == init) {
    dcx Mark $dname wsw.dia.settings_cb
    xdialog -b $dname +ty
    xdialog -w $dname +a 0 $scriptdirdata\warsow.ico
    xdialog -g $dname +b $wsw.color(bg)

    xdialog -c $dname 1 image 0 0 520 65 | xdid -i $dname 1 +h $scriptdirdata\racenet.jpg | xdid -J $dname 1 +r hand

    xdialog -c $dname 2 panel 0 65 520 45 | xdid -J $dname 2 +r arrow
    xdid -C $dname 2 +b $wsw.color(bg)
    xdid -c $dname 2 5 image 15 35 490 3 | xdid -i $dname 5 + $scriptdirdata\border.jpg
    xdid -c $dname 2 4 text 15 15 100 20 | xdid -t $dname 4 Settings
    xdid -C $dname 4 +b $wsw.color(bg) | xdid -C $dname 4 +t $wsw.color(txt) | xdid -f $dname 4 +abi default 12 arial
    xdid -c $dname 2 6 text 365 18 50 15 right | xdid -t $dname 6 Settings
    xdid -C $dname 6 +b $wsw.color(bg) | xdid -C $dname 6 +t $wsw.color(border) | xdid -f $dname 6 +ab default 9 arial | xdid -J $dname 6 +r hand
    xdid -c $dname 2 82 text 420 18 35 15 right | xdid -t $dname 82 Help
    xdid -C $dname 82 +b $wsw.color(bg) | xdid -C $dname 82 +t $wsw.color(border) | xdid -f $dname 82 +ab default 9 arial | xdid -J $dname 82 +r hand
    xdid -c $dname 2 7 text 465 18 40 15 right | xdid -t $dname 7 About
    xdid -C $dname 7 +b $wsw.color(bg) | xdid -C $dname 7 +t $wsw.color(border) | xdid -f $dname 7 +ab default 9 arial | xdid -J $dname 7 +r hand


    xdialog -c $dname 3 panel 0 110 520 180 | xdid -J $dname 3 +r arrow
    xdid -C $dname 3 +b $wsw.color(bg)
    xdid -c $dname 3 8 text 15 5 490 20 | xdid -t $dname 8 Compare maps with folder:
    xdid -C $dname 8 +b $wsw.color(bg) | xdid -C $dname 8 +t $wsw.color(txt) | xdid -f $dname 8 +abi default 11 arial
    xdid -c $dname 3 9 edit 15 25 430 18 endellipsis nowrap | xdid -ra $dname 9 $wsw.path | xdid -x $dname 9 +b
    xdid -C $dname 9 +b $wsw.color(bg) | xdid -C $dname 9 +t $rgb(255,255,255) | xdid -f $dname 9 +ab default 9 arial
    xdid -c $dname 3 10 text 455 25 50 20 right | xdid -t $dname 10 Change
    xdid -C $dname 10 +b $wsw.color(bg) | xdid -C $dname 10 +t $wsw.color(border) | xdid -f $dname 10 +ab default 9 arial | xdid -J $dname 10 +r hand
    xdid -c $dname 3 11 image 15 45 490 2 | xdid -i $dname 11 + $scriptdirdata\border.jpg
    xdid -c $dname 3 12 text 15 60 490 20 | xdid -t $dname 12 Download maps in folder:
    xdid -C $dname 12 +b $wsw.color(bg) | xdid -C $dname 12 +t $wsw.color(txt) | xdid -f $dname 12 +abi default 11 arial
    xdid -c $dname 3 13 edit 15 80 430 18 | xdid -ra $dname 13 $iif($readini($wsw.ini,settings,download),$v1,$wsw.path) | xdid -x $dname 13 +b
    xdid -C $dname 13 +b $wsw.color(bg) | xdid -C $dname 13 +t $rgb(255,255,255) | xdid -f $dname 13 +ab default 9 arial
    xdid -c $dname 3 14 text 455 80 50 20 right | xdid -t $dname 14 Change
    xdid -C $dname 14 +b $wsw.color(bg) | xdid -C $dname 14 +t $wsw.color(border) | xdid -f $dname 14 +ab default 9 arial | xdid -J $dname 14 +r hand
    xdid -c $dname 3 16 image 15 100 490 2 | xdid -i $dname 16 + $scriptdirdata\border.jpg
    xdid -c $dname 3 70 text 15 115 490 20 | xdid -t $dname 70 Warsow Executable:
    xdid -C $dname 70 +b $wsw.color(bg) | xdid -C $dname 70 +t $wsw.color(txt) | xdid -f $dname 70 +abi default 11 arial
    xdid -c $dname 3 71 edit 15 135 430 18 | xdid -ra $dname 71 $iif($readini($wsw.ini,settings,exe),$v1) | xdid -x $dname 71 +b
    xdid -C $dname 71 +b $wsw.color(bg) | xdid -C $dname 71 +t $rgb(255,255,255) | xdid -f $dname 71 +ab default 9 arial
    xdid -c $dname 3 72 text 455 135 50 20 right | xdid -t $dname 72 Change
    xdid -C $dname 72 +b $wsw.color(bg) | xdid -C $dname 72 +t $wsw.color(border) | xdid -f $dname 72 +ab default 9 arial | xdid -J $dname 72 +r hand
    xdid -c $dname 3 73 image 15 155 490 3 | xdid -i $dname 73 + $scriptdirdata\border.jpg
    xdid -c $dname 3 90 text 465 160 40 20 right | xdid -t $dname 90 Close
    xdid -C $dname 90 +b $wsw.color(bg) | xdid -C $dname 90 +t $wsw.color(border) | xdid -f $dname 90 +ab default 9 arial | xdid -J $dname 90 +r hand

    xdialog -c $dname 17 panel 0 110 520 180 | xdid -J $dname 17 +r arrow
    xdid -C $dname 17 +b $wsw.color(bg)
    xdid -c $dname 17 18 text 15 5 400 20 | xdid -t $dname 18 Warsow-Race.net Maps v1.0 - Coded by Flobse
    xdid -C $dname 18 +b $wsw.color(bg) | xdid -C $dname 18 +t $wsw.color(txt) | xdid -f $dname 18 +abi default 12 arial
    xdid -c $dname 17 20 text 425 5 80 20 right | xdid -t $dname 20 July 2009
    xdid -C $dname 20 +b $wsw.color(bg) | xdid -C $dname 20 +t $wsw.color(txt) | xdid -f $dname 20 +ab default 9 arial
    xdid -c $dname 17 19 text 25 40 105 20 | xdid -t $dname 19 Warsow-Name:
    xdid -C $dname 19 +b $wsw.color(bg) | xdid -C $dname 19 +t $wsw.color(txt) | xdid -f $dname 19 +abi default 10 arial
    xdid -c $dname 17 21 text 140 40 120 20 | xdid -t $dname 21 Flobse
    xdid -C $dname 21 +b $wsw.color(bg) | xdid -C $dname 21 +t $rgb(255,255,255) | xdid -f $dname 21 +ab default 9 arial
    xdid -c $dname 17 22 text 25 60 40 20 | xdid -t $dname 22 UIN:
    xdid -C $dname 22 +b $wsw.color(bg) | xdid -C $dname 22 +t $wsw.color(txt) | xdid -f $dname 22 +abi default 10 arial
    xdid -c $dname 17 23 text 140 60 70 20 | xdid -t $dname 23 152759920
    xdid -C $dname 23 +b $wsw.color(bg) | xdid -C $dname 23 +t $wsw.color(border) | xdid -f $dname 23 +ab default 9 arial | xdid -J $dname 23 +r hand
    xdid -c $dname 17 24 text 25 80 50 20 | xdid -t $dname 24 E-Mail:
    xdid -C $dname 24 +b $wsw.color(bg) | xdid -C $dname 24 +t $wsw.color(txt) | xdid -f $dname 24 +abi default 10 arial
    xdid -c $dname 17 25 text 140 80 120 20 | xdid -t $dname 25 Scripter@Flobse.de
    xdid -C $dname 25 +b $wsw.color(bg) | xdid -C $dname 25 +t $wsw.color(border) | xdid -f $dname 25 +ab default 9 arial | xdid -J $dname 25 +r hand
    xdid -c $dname 17 26 text 25 100 50 20 | xdid -t $dname 26 IRC:
    xdid -C $dname 26 +b $wsw.color(bg) | xdid -C $dname 26 +t $wsw.color(txt) | xdid -f $dname 26 +abi default 10 arial
    xdid -c $dname 17 27 text 140 100 120 20 | xdid -t $dname 27 #Flobse @ Quakenet
    xdid -C $dname 27 +b $wsw.color(bg) | xdid -C $dname 27 +t $wsw.color(border) | xdid -f $dname 27 +ab default 9 arial | xdid -J $dname 27 +r hand
    xdid -c $dname 17 85 text 25 120 100 20 | xdid -t $dname 85 Location:
    xdid -C $dname 85 +b $wsw.color(bg) | xdid -C $dname 85 +t $wsw.color(txt) | xdid -f $dname 85 +abi default 10 arial
    xdid -c $dname 17 86 text 140 120 120 20 | xdid -t $dname 86 Germany
    xdid -C $dname 86 +b $wsw.color(bg) | xdid -C $dname 86 +t $wsw.color(txt) | xdid -f $dname 86 +ab default 9 arial
    xdid -c $dname 17 60 image 290 100 215 35 | xdid -i $dname 60 +h $scriptdirdata\warsow.jpg | xdid -J $dname 60 +r hand
    xdid -c $dname 17 28 image 15 155 490 3 | xdid -i $dname 28 + $scriptdirdata\border.jpg
    xdid -c $dname 17 91 text 465 160 40 20 right | xdid -t $dname 91 Close
    xdid -C $dname 91 +b $wsw.color(bg) | xdid -C $dname 91 +t $wsw.color(border) | xdid -f $dname 91 +ab default 9 arial | xdid -J $dname 91 +r hand

    xdialog -c $dname 100 panel 0 110 520 180 | xdid -J $dname 100 +r arrow
    xdid -C $dname 100 +b $wsw.color(bg)
    xdid -c $dname 100 104 richedit 15 0 490 150 multi readonly vsbar | xdid -t $dname 104 $scriptdirdata\readme-en.txt | xdid -x $dname 104 +b
    xdid -k $dname 104 $wsw.color(txt) | xdid -C $dname 104 +t $wsw.color(txt) | xdid -f $dname 104 +a default 9 arial
    xdid -c $dname 100 102 text 15 160 50 20 | xdid -t $dname 102 German
    xdid -C $dname 102 +b $wsw.color(bg) | xdid -C $dname 102 +t $wsw.color(border) | xdid -f $dname 102 +ab default 9 arial | xdid -J $dname 102 +r hand
    xdid -c $dname 100 103 text 70 160 50 20 | xdid -t $dname 103 English
    xdid -C $dname 103 +b $wsw.color(bg) | xdid -C $dname 103 +t $wsw.color(border) | xdid -f $dname 103 +ab default 9 arial | xdid -J $dname 103 +r hand
    xdid -c $dname 100 101 image 15 155 490 3 | xdid -i $dname 101 + $scriptdirdata\border.jpg
    xdid -c $dname 100 92 text 465 160 40 20 right | xdid -t $dname 92 Close
    xdid -C $dname 92 +b $wsw.color(bg) | xdid -C $dname 92 +t $wsw.color(border) | xdid -f $dname 92 +ab default 9 arial | xdid -J $dname 92 +r hand

    xdid -h $dname 17,100
  }
}

alias wsw.dia.settings_cb {
  ;if ($2 != mouse) { echo $color(info) -s */ wsw.dia.settings_cb: $1- }
  if ($2 == sclick) {
    if ($3 == 1) { .url http://www.warsow-race.net }
    if ($3 == 7) {
      xdid -h $1 3,100 +
      xdid -s $1 17 +
      xdid -t $1 4 About
      xdid -C $1 4 +b $wsw.color(bg)
    }
    if ($3 == 6) { 
      xdid -h $1 17,100 + 
      xdid -s $1 3 +
      xdid -t $1 4 Settings
      xdid -C $1 4 +b $wsw.color(bg)
    }
    elseif ($3 == 82) {
      xdid -h $1 3,17 +
      xdid -s $1 100 +
      xdid -t $1 4 Help
      xdid -C $1 4 +b $wsw.color(bg)
    }
    elseif ($3 == 10) {
      if ($dcx(BrowseDialog,newstyle title initfolder owner $dialog($1).hwnd edit $chr(9) $xdid($1,9).text $chr(9) Select your Basewsw folder: $crlf $+ Note: Mostly is the working Basewsw folder in $crlf $+ C:\...\Appdata\...)) { xdid -ra $1 9 $v1 }
    }
    elseif ($3 == 14) {
      if ($dcx(BrowseDialog,newstyle title initfolder owner $dialog($1).hwnd edit $chr(9) $xdid($1,13).text $chr(9) Select your Basewsw folder: $crlf $+ Note: Mostly is the working Basewsw folder in $crlf $+ C:\...\Appdata\...)) { xdid -ra $1 13 $v1 }
    }
    elseif ($3 == 23) { .url http://www.icq.com/people/cmd.php?uin=152759920&action=add }
    elseif ($3 == 25) { .run mailto:Scripter@Flobse.de?subject=Warsow-Race.net Maps }
    elseif ($3 == 27) {
      var %x 1
      while ($scon(%x)) {
        scon %x
        if ($network == Quakenet) && ($chan(0) < 20) { .join #Flobse | return }
        inc %x
      }
      scon -r
      server -m irc.quakenet.org -j #Flobse
    }
    elseif ($3 == 60) { .url http://www.warsow.net }
    elseif ($3 == 72) {
      if ($dcx(BrowseDialog,newstyle title initfolder files owner $dialog($1).hwnd edit $chr(9) $xdid($1,71).text $chr(9) Select your Warsow.exe:)) { xdid -ra $1 71 $v1 }
    }
    elseif ($3 isnum 90-92) { dialog -c $1 }
    elseif ($3 == 102) { xdid -t $1 104 $scriptdirdata\readme-de.txt }
    elseif ($3 == 103) { xdid -t $1 104 $scriptdirdata\readme-en.txt }
  }
  elseif ($2 == close) {
    if ($xdid($1,13).text) { writeini $wsw.ini settings download $v1 $+ $iif($right($v1,1) != \,\) }
    if ($xdid($1,9).text) { writeini $wsw.ini settings compare $v1 $+ $iif($right($v1,1) != \,\) }
    if ($xdid($1,71).text) { writeini $wsw.ini settings exe $v1 }
    if ($dialog(wsw.dia.main)) { 
      .timer 1 0 xdialog -s wsw.dia.main 
      xdid -M wsw.dia.main 1 $xdid($1,9).text
      wsw.refreshlist
    }
    else { .timer 1 0 wsw.racenet }
    writeini $wsw.ini settings settingspos $dialog($1).x $dialog($1).y
  }
}


;### Eof