Quake 2 Server Info — File Browser
Quake2ServerInfov1.0 / Quake2ServerInfov1.0 / q2s / q2s.mrc
q2s.mrc — 14.57 KB — Download this file
menu menubar {
-
Quake 2 Server Info: { q2s }
-
}
alias checkserv {
var %cs $1
if ($numtok(%cs,46) != 4) { goto error } | else { goto next }
:error
var %g $input(Invalid IP $chr(40) $+ %cs $+ $chr(41),540,Error)
return error
:next
if ($numtok(%cs,58) != 2) { goto error }
var %cs1 $replace($1,:,$chr(32))
var %host $gettok($replace(%cs1,:,$chr(32)),1,32)
var %port $gettok($replace(%cs1,:,$chr(32)),2,32)
if ((%host) && (%port)) {
if ((!$regex(%host,\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b)) || (%port !isnum)) {
goto error
}
else { return $+(%host,:,%port) }
}
}
alias getserverinfo1 {
var %newserv $1-
;echo -a %newserv
if (!%newserv) { goto end1 }
if ($chr(92) isin %newserv) { goto server }
if ($chr(34) isin %newserv) { inc $setvar(q2info1.online,%q2info1.check) | goto end1 }
else { goto end1 }
:server
set $setvar(q2info1.hostname,%q2info1.check) $gettok(%newserv, $calc($findtok(%newserv, hostname, 1, 92) + 1), 92)
set $setvar(q2info1.mapname,%q2info1.check) $gettok(%newserv, $calc($findtok(%newserv, mapname, 1, 92) + 1), 92)
set $setvar(q2info1.maxclients,%q2info1.check) $gettok(%newserv, $calc($findtok(%newserv, maxclients, 1, 92) + 1), 92)
if (\game\ isin %newserv) { if ($gettok(%newserv, $calc($findtok(%newserv, game, 1, 92) + 1), 92) == baseq2) { set $setvar(q2info1.mod,%q2info1.check) No } | else { set $setvar(q2info1.mod,%q2info1.check) $gettok(%newserv, $calc($findtok(%newserv, game, 1, 92) + 1), 92) } } | else { set $setvar(q2info1.mod,%q2info1.check) No }
:end1
}
alias loadservers {
var %a = 1
while $read($serverlist,%a) {
var %b = $read($serverlist,%a)
if ($checkserv($gettok($gettok(%b,1,9),2,33)) == error) { ;echo -a deleting %a line | write -dl %a $serverlist }
else { did -a q2server.main 2 $gettok($gettok(%b,1,9),2,33) | inc %a }
}
}
alias refreshserver {
var %line $1
var %lines $calc($1 +1)
if (!$getvar(q2info1.online,%line)) { set $setvar(q2info1.online,%line) 0 }
if ($getvar(q2info1.mapname,%line) == Timeout) { did -o q2server.main 2 %lines $getvar(q2info1.host,%line) $chr(9) Time Out $chr(9) Time Out $chr(9) Time Out $chr(9) Time Out | goto end2 }
did -o q2server.main 2 %lines $getvar(q2info1.host,%line) $chr(9) $getvar(q2info1.hostname,%line) $chr(9) $getvar(q2info1.mapname,%line) $chr(9) $getvar(q2info1.online,%line) $+ / $+ $getvar(q2info1.maxclients,%line) $chr(9) $getvar(q2info1.mod,%line)
:end2
}
alias q2sini { if (!$isfile($+(",$scriptdir,q2s.ini,"))) { write $+(",$scriptdir,q2s.ini,") | return $+(",$scriptdir,q2s.ini,") } | else { return $+(",$scriptdir,q2s.ini,") } }
alias q2sreadini { return $readini($q2sini,$1,$2) }
alias q2swriteini { writeini -n $q2sini $1 $2 $3- }
alias setexe { if ($q2sreadini(Options,Exe) != $NULL) { var %q $input(Your old patch is: " $+ $q2sreadini(Options,Exe) $+ " $+ $crlf $+ Do you want to change it?,392,Found old path) | if (%q == $true) { goto next } | else { return } } | :next | var %exe $sfile(C:/q*.exe,Find your Quake II.exe) | if (%exe) { q2swriteini Options Exe %exe } }
alias mdx { return $+(",$scriptdir,mdx.dll,") }
alias views { return $scriptdirviews.mdx }
alias q2s { dialog $iif($dialog(q2server.main),-v,-m q2server.main) q2server.main }
alias serr { var %g $input(Select server from the list,540,Error) }
alias serverlist { if (!$isfile($+(",$scriptdir,servers.txt,"))) { write $+(",$scriptdir,servers.txt,") | return $+(",$scriptdir,servers.txt,") } | else { return $+(",$scriptdir,servers.txt,") } }
alias setvar { var %a = $1,%b = $2,%c = %a $+ %b | return % $+ %c }
alias getvar { var %a = $1,%b = $2,%c = % $+ %a $+ %b | return $eval(%c,2) }
alias refresh {
if ($1) { did -o q2server.main 2 $calc($1 +1) $gettok($gettok($read($serverlist,$1),1,9),2,33) $chr(9) ... $chr(9) ... $chr(9) ... $chr(9) ... | q2server.info3 $1 }
else {
unset %q2*
;clear
did -r q2server.main 2 | var %a = 1
while $read($serverlist,%a) {
var %b = $read($serverlist,%a)
did -a q2server.main 2 $gettok($gettok(%b,1,9),2,33) $gettok($gettok($read($serverlist,$1),1,9),2,33) $chr(9) ... $chr(9) ... $chr(9) ... $chr(9) ...
set $setvar(q2info1.host,%a) $gettok($gettok(%b,1,9),2,33)
inc %a
}
;echo -a $calc(%a -1) servers loaded
;echo -a Starting Timers
q2server.info1
}
}
alias q2server.info3 {
unset %q2*
set $setvar(q2info1.host,$1) $gettok($gettok($read($serverlist,$1),1,9),2,33)
;echo -a Timer $+ $1 1 $1 sockudp -k q2server.info $+ $1 $replace($gettok($read($serverlist,$1),2,33),:,$chr(32)) $chr(255) $+ $chr(255) $+ $chr(255) $+ $chr(255) $+ status
;echo -a $setvar(q2info1.hostname,$1) Timeout
set $setvar(q2info1.mapname,$1) Timeout
;.timer $+ $1 1 $1 sockudp -k q2server.info $+ $1 $replace($gettok($read($serverlist,$1),2,33),:,$chr(32)) $chr(255) $+ $chr(255) $+ $chr(255) $+ $chr(255) $+ status
;.timerq $+ $1 1 $calc($1 *2) refreshserver $1
sockudp -k q2server.info $+ $1 $replace($gettok($read($serverlist,$1),2,33),:,$chr(32)) $chr(255) $+ $chr(255) $+ $chr(255) $+ $chr(255) $+ status
.timerq $+ $1 1 3 refreshserver $1
}
alias q2server.info1 {
var %i 1
while (%i < $calc($lines($serverlist) +1)) {
set $setvar(q2info1.host,%i) $gettok($gettok($read($serverlist,%i),1,9),2,33)
;echo -a Timer $+ %i 1 %i sockudp -k q2server.info $+ %i $replace($gettok($read($serverlist,%i),2,33),:,$chr(32)) $chr(255) $+ $chr(255) $+ $chr(255) $+ $chr(255) $+ status
;echo -a $setvar(q2info1.hostname,%i) Timeout
set $setvar(q2info1.mapname,%i) Timeout
;.timer $+ %i 1 %i sockudp -k q2server.info $+ %i $replace($gettok($read($serverlist,%i),2,33),:,$chr(32)) $chr(255) $+ $chr(255) $+ $chr(255) $+ $chr(255) $+ status
;.timerq $+ %i 1 $calc(%i *2) refreshserver %i
sockudp -k q2server.info $+ %i $replace($gettok($read($serverlist,%i),2,33),:,$chr(32)) $chr(255) $+ $chr(255) $+ $chr(255) $+ $chr(255) $+ status
.timerq $+ %i 1 3 refreshserver %i
inc %i
}
}
dialog q2server.main {
title "Quake II Server Info: Main"
icon $scriptdirq2.ico, 0
size -1 -1 300 175
option dbu
box "Servers:", 1, 5 5 290 125
list 2, 10 15 280 110, size
box "Commands:", 3, 5 135 290 25
button "Add", 4, 10 145 30 10
button "Del", 5, 60 145 30 10
button "Refresh", 6, 110 145 30 10
button "Info", 7, 160 145 30 10
button "Set EXE", 8, 210 145 30 10
button "Join", 9, 260 145 30 10
text "special thanks to zzattack, sacrilege and dX", 10, 98 164 110 8
}
on *:dialog:q2server.main:*:*:{
if ($devent == init) {
dll $mdx SetMircVersion $version
dll $mdx MarkDialog $dname
dll $mdx SetControlMDX $dname 2 listview rowselect showsel single report grid > $views
did -i $dname 2 1 headerdims 130 222 74 65 65
did -i $dname 2 1 headertext IP $chr(9) Hostname $chr(9) Mapname $chr(9) Players $chr(9) Mod
unset %q2*
loadservers
}
if ($devent == sclick) {
if ($did == 4) {
var %s $input(Ex. 123.456.789.012:12345,437,Enter IP:PORT)
if (!%s) { halt }
if ($chr(58) isin %s) {
if ($checkserv(%s) == error) { goto end3 }
write $serverlist s! $+ %s
did -a $dname 2 1 %s
:end3
}
else {
var %s %s $+ :27910
if ($checkserv(%s) == error) { goto end4 }
write $serverlist s! $+ %s
did -a $dname 2 1 %s
:end4
}
}
if ($did == 5) {
if ($did(q2server.main,2).seltext) { set %sline $calc($did(q2server.main,2).sel -1) }
if (%sline) {
did -d $dname 2 $did(q2server.main,2).sel
write -dl %sline $serverlist
;echo -a Deleting %sline Server
unset %sline
}
else { serr }
}
if ($did == 6) {
if ($did(q2server.main,2).seltext) {
set %sline $calc($did(q2server.main,2).sel -1)
refresh %sline
unset %sline
}
else { refresh }
}
if ($did == 7) {
if ($did(q2server.main,2).seltext) { set %sline $calc($did(q2server.main,2).sel -1) } | else { unset %sline }
if (!%sline) { serr } | else { q2server.info $gettok($read($serverlist,%sline),2,33) | unset %sline }
}
if ($did == 8) { setexe }
if ($did == 9) {
if ($did(q2server.main,2).seltext) {
var %s $calc($did(q2server.main,2).sel -1)
var %s1 = $gettok($gettok($read($serverlist,%s),1,9),2,33)
if ($q2sreadini(Options,Exe) != $NULL) { var %q2start $input( $+ $q2sreadini(Options,Exe) +connect %s1 $+ ,392,Executing Quake II...) | if (%q2start == $true) { run -p $q2sreadini(Options,Exe) +connect %s1 } }
else { var %s $input(No exe path found $+ $crlf $+ Press Set EXE first,540,Error) }
}
else { serr }
}
}
if ($devent == close) { }
}
on *:udpread:q2server.info*: {
set %q2info1.check $remove($gettok($sockname,2,46),info)
var %udpread = $setvar(q2s,%q2info1.check)
sockread %udpread
$getserverinfo1(%udpread)
;echo -a Sockname: %q2info1.check Info: %udpread
}
dialog q2server.info {
title "Quake 2 Server: Detailed Info"
icon $scriptdirq2.ico, 0
size -1 -1 305 220
option dbu
box "DMFlags:", 37, 161 112 140 104
check "No Health", 1, 171 126 34 8, disable
check "No Items", 2, 171 136 33 8, disable
check "Weapon Stay", 3, 171 146 43 8, disable
check "No Falling DMG", 4, 171 156 47 8, disable
check "Instant Items", 5, 171 166 43 8, disable
check "Same Level", 6, 171 176 50 8, disable
check "Skin Teams", 7, 171 186 50 8, disable
check "Model Teams", 8, 171 196 50 8, disable
check "No Friendly Fire", 9, 241 126 50 8, disable
check "Spawn Farthest", 10, 241 136 50 8, disable
check "Force Respawn", 11, 241 146 50 8, disable
check "No Armor", 12, 241 156 50 8, disable
check "Allow Exit", 13, 241 166 50 8, disable
check "Infinite Ammo", 14, 241 176 50 8, disable
check "Quad Drop", 15, 241 186 50 8, disable
check "Fixed FOV", 16, 241 196 50 8, disable
box "Server Info:", 43, 4 2 150 105
text "IP:PORT:", 44, 7 12 24 8
text "Password:", 45, 7 32 26 8
text "Maxclients:", 46, 7 42 29 8
text "Timelimit:", 47, 7 52 25 8
text "Fraglimit:", 48, 7 62 24 8
text "Hostname:", 49, 7 22 28 8
text "Website:", 50, 7 72 22 8
text "Using MOD:", 51, 7 82 29 8
text "", 52, 37 12 110 8
text "", 53, 37 22 110 8
text "", 17, 37 32 110 8
text "", 18, 37 42 110 8
text "", 19, 37 52 110 8
text "", 20, 37 62 110 8
text "", 21, 37 72 110 8
text "", 22, 37 82 110 8
box "Players Info:", 23, 4 112 150 105
list 24, 9 122 140 90, size
box "Map Info:", 29, 162 2 140 105
text "Mapname:", 30, 167 17 26 8
text "", 31, 195 17 60 8
icon 32, 167 32 128 64
text "Q2Admin:", 25, 7 92 25 8
text "", 26, 37 92 50 8
}
on *:dialog:q2server.info:*:*:{
if ($devent == init) {
dll $mdx SetMircVersion $version
dll $mdx MarkDialog $dname
;dll $mdx SetControlMDX $dname 24 ListView headerdrag report rowselect showsel nosortheader single > $views
dll $mdx SetControlMDX $dname 24 listview rowselect showsel single report grid > $views
did -i $dname 24 1 headerdims 150 54 54
did -i $dname 24 1 headertext Name $chr(9) Frags $chr(9) Ping
}
if ($devent == close) {
unset %q2s %q2smaxclients %players %host
}
}
alias dmf {
var %a 1
while (%a <= 16) {
if ($isbit($1,%a)) did -c q2server.info %a | else did -u q2server.info %a
inc %a
}
}
alias q2server.info {
if ($1 isalpha) { halt }
if ($1) {
if (!$dialog(q2server.info)) { dialog $iif($dialog(q2server.info),-v,-m q2server.info) q2server.info }
set %host $1
set %players 0
unset %q2smaxclients
did -r q2server.info 24
bset &packet 1 255 255 255 255 $asc(s) $asc(t) $asc(a) $asc(t) $asc(u) $asc(s) 0
if ($chr(58) isin %host) { goto check } | else { set %host %host $+ :27910 }
:check
sockudp -k q2server.read $replace(%host,$chr(58),$chr(32)) &packet
}
}
on *:udpread:q2server.read: {
sockread %q2s
$getserverinfo2(%q2s)
}
alias getserverinfo2 {
var %serverinfo $1-
if (print isin %serverinfo) { goto server }
else {
:server
if ($chr(34) isin %serverinfo) {
did -a q2server.info 24 $remtok($gettok(%serverinfo,3,32),1,1,34) $chr(9) $gettok(%serverinfo,1,32) $chr(9) $remtok($gettok(%serverinfo,2,32),1,1,34)
inc %players
goto players
}
if ($gettok(%serverinfo, $calc($findtok(%serverinfo, needpass, 1, 92) + 1), 92) == 1) { did -a q2server.info 17 Yes } | else { did -a q2server.info 17 No }
did -ra q2server.info 37 DMFlags: $gettok(%serverinfo, $calc($findtok(%serverinfo, dmflags, 1, 92) + 1), 92)
dmf $gettok(%serverinfo, $calc($findtok(%serverinfo, dmflags, 1, 92) + 1), 92)
did -a q2server.info 52 %host
did -a q2server.info 53 $gettok(%serverinfo, $calc($findtok(%serverinfo, hostname, 1, 92) + 1), 92)
did -a q2server.info 31 $gettok(%serverinfo, $calc($findtok(%serverinfo, mapname, 1, 92) + 1), 92)
did -a q2server.info 19 $gettok(%serverinfo, $calc($findtok(%serverinfo, timelimit, 1, 92) + 1), 92)
did -a q2server.info 18 $gettok(%serverinfo, $calc($findtok(%serverinfo, maxclients, 1, 92) + 1), 92)
set %q2smaxclients $gettok(%serverinfo, $calc($findtok(%serverinfo, maxclients, 1, 92) + 1), 92)
did -a q2server.info 20 $gettok(%serverinfo, $calc($findtok(%serverinfo, fraglimit, 1, 92) + 1), 92)
if ($findfile($scriptdir,* $+ $gettok(%serverinfo, $calc($findtok(%serverinfo, mapname, 1, 92) + 1), 92) $+ .jpg*,0) == 0) { did -g q2server.info 32 $chr(34) $+ $scriptdirlevelshots\unknownmap.jpg $+ $chr(34) } | else { did -g q2server.info 32 $chr(34) $+ $scriptdirlevelshots $+ \ $+ $gettok(%serverinfo, $calc($findtok(%serverinfo, mapname, 1, 92) + 1), 92) $+ .jpg $+ $chr(34) }
if (\game\ isin %serverinfo) { if ($gettok(%serverinfo, $calc($findtok(%serverinfo, game, 1, 92) + 1), 92) == baseq2) { did -ra q2server.info 22 No } | else { did -ra q2server.info 22 $gettok(%serverinfo, $calc($findtok(%serverinfo, game, 1, 92) + 1), 92) $chr(171) $+ $gettok(%serverinfo, $calc($findtok(%serverinfo, gamename, 1, 92) + 1), 92) $+ $chr(187) } } | else { did -ra q2server.info 22 No }
if (\website\ isin %serverinfo) { did -a q2server.info 21 $gettok(%serverinfo, $calc($findtok(%serverinfo, website, 1, 92) + 1), 92) } | else { did -ra q2server.info 21 N/A }
if (\Q2Admin\ isin %serverinfo) { did -a q2server.info 26 $gettok(%serverinfo, $calc($findtok(%serverinfo, Q2Admin, 1, 92) + 1), 92) } | else { did -ra q2server.info 26 N/A }
:players
}
did -ra q2server.info 23 Players Info: ( $+ %players $+ / $+ %q2smaxclients Online)
}