[script] n0=; QPinger version 1.1, updated December 23rd, 2001 n1=; Written by IMbeZOL and She1k n2=; --new features n3=; will now accept a colon between ip and port number as well as a space n4=; now displays colors in server names n5=; will now accept dns names, ie gameserver.powersurfr.com n6= n7=alias quakecolor { n8= %playername = $replace(%playername, ^1 , 4 ) n9= %playername = $replace(%playername, ^2 , 9 ) n10= %playername = $replace(%playername, ^3 , 8 ) n11= %playername = $replace(%playername, ^4 , 12 ) n12= %playername = $replace(%playername, ^5 , 11 ) n13= %playername = $replace(%playername, ^6 , 13 ) n14= %playername = $replace(%playername, ^7 , 0 ) n15= %playername = $replace(%playername, ^8 , 14 ) n16= %playername = $replace(%playername, ^^0 , 14 ) n17= %playername = $replace(%playername, ^0 , 14 ) n18=} n19= n20=alias cqping { n21= /msg $chan !qping $1- n22= /qping $1- n23=} n24= n25=on *:DNS:{ n26= if (%qpingdns == yes) { n27= set %ip $iaddress n28= startping n29= set %qpingdns no n30= } n31= else echo $active 12[ 10Resolved11 $nick $+ 10's address to11 $iaddress 12] n32=} n33= n34=alias checkdns { n35= if (%qpingdns == yes) msg $active 12[ 10Could not resolve %dns 12] n36=} n37= n38=alias startping { n39= %ticks = $ticks n40= sockudp -k ping %ip %port ˙˙˙˙getstatus n41=} n42= n43=alias qping { n44= unset %tmp n45= if ( $right($1-,1) == p ) set %showplayers $true n46= else set %showplayers $false n47= set %qpingchan $chan n48= if ( $1 == vids ) { n49= set %ip 206.75.217.202 n50= set %port 27960 n51= } n52= else { n53= if ($1 == $null) { echo -a syntax... /qping : [p] } n54= ; **** this part lets you use : or a space between ip and port n55= else { n56= %ip = $1 n57= if ($chr(58) isin %ip) { n58= %port = $gettok(%ip,2,58) n59= %ip = $gettok(%ip,1,58) n60= } n61= ; *** check if port was not specified n62= else if ($2 == p) %port = 27960 n63= else %port = $iif($2,$2,27960) n64= n65= ; **** this part checks if it is a dns name n66= set %dns %ip n67= %dns = $replace(%dns, $chr(46), ) n68= n69= if (%dns isnum) { n70= startping n71= } n72= else { n73= %dns = %ip n74= set %qpingdns yes n75= dns %dns n76= timer 1 3 checkdns n77= } n78= } n79= } n80=} n81= n82=on *:udpread:ping:{ n83= var %tmp, %players n84= var %players 0 n85= :x n86= sockread %tmp n87= if (%tmp = ˙˙˙˙statusResponse) { %ping = $calc($ticks - %ticks) } n88= elseif ($findtok(%tmp,sv_hostname,92)) { n89= %ping = $calc($ticks - %ticks) n90= %map = $gettok(%tmp,$calc($findtok(%tmp,mapname,92) + 1),92) n91= %hostname = $gettok(%tmp,$calc($findtok(%tmp,sv_hostname,92) + 1),92) n92= %playername = %hostname n93= quakecolor n94= %hostname = %playername n95= %maxplayers = $gettok(%tmp,$calc($findtok(%tmp,sv_maxclients,92) + 1),92) n96= %gametype = $gettok(%tmp,$calc($findtok(%tmp,gamename,92) + 1),92) n97= msg %qpingchan 0,1[10 %ping $+ ms - %ip $+ : $+ %port - %hostname 10- %map - %gametype 0] n98= } n99= elseif (%tmp != $null) { n100= inc %players n101= if %showplayers == $true { n102= set %playerpos $calc($len(%tmp) - $pos(%tmp, " , 1)) n103= set %playername $right(%tmp, [ %playerpos ]) n104= set %playerpos $calc(%playerpos -1) n105= set %playername $left(%playername, [ %playerpos ]) n106= quakecolor n107= if (%players < 10 ) set %spacer 0,1 $chr(32) 0,1 n108= else set %spacer 0,1 n109= msg %qpingchan %spacer %players - $+ %playername $+ 0-0,1 $gettok(%tmp,2,32) ms ping - $gettok(%tmp,1,32) frags n110= } n111= } n112= if ($sockbr) goto x n113= if %cqping == $false msg %qpingchan 0,1[ 10Players: %players $+ / $+ %maxplayers 0] n114= set %cqping $false n115=} n116= n117=on 1:TEXT:!qping*:#:{ n118= set %cqping $true n119= qping $2 $3 n120= set %cqping $false n121=}