on *:text:*rank*:#: { set %lcnick $nick tokenize 32 $remove($strip($1-),$chr(44)) if ($left($1,1) !isin @!.) halt if ($right($1,-1) == rank) { if ($left($1,1) == @) /checkpubd $chan $nick inc %ID if ($2) && ($3) { if ($getskill($3)) { if ($2 isnum 1-1000000) { set $+(%,rsrank.display.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick) set $+(%,rsrank.nick.,%ID) $nick set $+(%,rsrank.skill.,%ID) $getskill($3) set $+(%,rsrank.rank.,%ID) $2 sockopen $+(rsrank.,%ID) hiscore.runescape.com 80 } else notice $nick $c2($2) $c1(is not a valid rank number!) } else notice $nick $c2($3) $c1(is not a skill!) } else halt } } on *:sockopen:rsrank.*: { var %id = $gettok($sockname,2,46) sockwrite -n $sockname GET /lang/en/aff/runescape/overall.ws?rank= $+ $($+(%,rsrank.rank.,%ID),2) $+ &table= $+ $gettable($($+(%,rsrank.skill.,%ID),2)) HTTP/1.1 sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf } on *:sockread:rsrank.*: { sockread &Incoming bwrite $sockname -1 -1 &Incoming makehashrsrank $sockname } alias makehashrsrank { var %file = $1 bread %file 1 $file(%file).size &stats tokenize 10 &stats hadd -m %file $1 processrsrank %file } alias processrsrank { var %id = $gettok($1,2,46) var %display = $($+(%,rsrank.display.,%ID),2) var %skill = $($+(%,rsrank.skill.,%ID),2) var %rsrank = $rsrankstriptags($read($1,w,*AA0022*)) var %rsusername = $rsrankstriptags($read($1,w,*AA0022*,$calc($readn + 1))) var %rslevel = $rsrankstriptags($read($1,w,*AA0022*,$calc($readn + 1))) var %rsexp = $rsrankstriptags($read($1,w,*AA0022*,$calc($readn + 1))) var %rsuntil = $calc($xp($calc(%rslevel +1)) - $remove(%rsexp,$chr(44))) if (%rsrank != $null) { %display $c1(Rank) $c2(%rsrank) $c1(in) $c2(%skill) $c1(is:) $c2(%rsusername) %display $c1(Level:) $c2(%rslevel) $c1(EXP:) $c2(%rsexp) $c1(EXP until $calc(%rslevel +1) $+ :) $c2($bytes(%rsuntil,b)) } else { notice $($+(%,rsrank.nick.,%ID),2) $c1(No user was found for rank) $c2($bytes($($+(%,rsrank.rank.,%ID),2),b)) $c1($lower($($+(%,rsrank.skill.,%ID),2)) on the hiscores) } rsrankcleanup %ID } alias rsrankcleanup { unset $+(%,rsrank.*.,$1) sockclose $+(rsrank.,$1) .remove $+(rsrank.,$1) } alias rsrankstriptags { var %x,%y = $regsub($1-,/(<[^>]+>)/g,$null,%x) | return $replace(%x,",", ,$null) }