Steam Server Query
Posted by HellRaz0r
Friday, September 08, 2006
Description: CS/HL/CZ Server Query Script
;/queryserv <ip:port>
alias queryserv {
var %serv $gettok($1,1,58), %port = $gettok($1,2,58)
sockudp -k queryserv %serv %port ÿÿÿÿTSource Engine Query
sockmark queryserv %serv %port
set %beginticks $ticks
}
on *:udpread:queryserv:{
var %ping = $calc($ticks - %beginticks)
sockread &data
breplace &data 0 254 32 160 | var %data $bvar(&data,1,$bvar(&data,0)).text
if %data {
var %hostname = $gettok(%data,2,254), %map = $gettok(%data,3,254), %gamedir = $gettok(%data,4,254)
var %mod = $gettok(%data,5,254)
if (!%pos) var %pos = 1
var %posn = $pos(%data,$gettok(%data,5,254),%pos), %gamechars = $len($gettok(%data,5,254))
var %chrclc = $calc(%posn + %gamechars), %bots = $iif($asc($right(%data,1)) == 254,0,$ifmatch)
var %tmpplayers = $mid(%data,%chrclc,3), %players = $iif($asc($mid(%tmpplayers,2,1)) == 254,0,$ifmatch)
var %maxplayers = $asc($right(%tmpplayers,1))
if (%maxplayers == 160) var %maxplayers = 32
var %string = $gettok(%data,6,254)
var %players2 = $iif($asc($mid(%players,2,1)) == 254,0,$ifmatch)
var %pwpos = $calc(%chrclc + $pos(%string,5,1) + 1)
var %password = $iif($right($mid(%data,%pwpos,6),1) == $chr(254),no,yes)
var %protocol = $asc($mid(%string,$iif(%players2 == 0,2,3),1))
if (!%protocol) var %protocol = 0
var %servertype = $iif($mid(%string,$iif(%players == 0,3,4),1) == d,Dedicated,Listen)
var %serveros = $iif($mid(%string,$iif(%players == 0,4,5),1) == l,Linux,Windows)
var %secure = $iif($mid($calc($len(%data) - 1),1) == $chr(254),no,yes)
echo -a Ip: $replace($sock($sockname).mark,$chr(32),:) ( $+ %ping $+ ms)
echo -a Hostname: %hostname
echo -a Map: %map
echo -a Gamedir: %gamedir
echo -a Mod: %mod
echo -a Players: %players
echo -a Bots: %bots
echo -a MaxPlayers: %maxplayers
echo -a Protocol Number: %protocol
echo -a Server Type: %servertype
echo -a Server OS: %serveros
echo -a Password Protected: %password
echo -a Vac Protected: %secure
unset %beginticks | sockclose $sockname
}
}