on *:TEXT:*:#:{ if ($regex($1,/^[!@]compare/Si)) { if (!$StatsID(! $+ $2)) $iif($left($1,1) == @,msg $chan,notice $nick) $+($c1,[,$2 $c2,isn't a valid skill,$c1,]) else { inc %sc var %name = $+(compare.,%sc) hadd -m %name sendway $iif($left($1,1) == @,msg $chan,notice $nick) hadd -m %name skill $StatsID(! $+ $2) hadd -m %name user1 $3 hadd -m %name user2 $4 sockopen %name hiscore-web.runescape.com 80 } } } on *:SOCKOPEN:compare.*:{ sockwrite -nt $sockname GET /aff/runescape/compare.ws?user1= $+ $hr($hget($sockname,user1)) $+ &user2= $+ $hr($hget($sockname,user2)) $+ &submit=Compare HTTP/1.0 sockwrite -nt $sockname Host: $+(hiscore-web.runescape.com,$str($crlf,2)) } on *:SOCKREAD:compare.*:{ while ($sock($sockname).rq) { sockread &compare bwrite $sockname -1 -1 &compare } bread $sockname 0 $file($sockname).size &compare if ($bfind(&compare,1,)) { if (($bfind(&compare,1,does not feature in the hiscores)) && ($bfind(&compare,$calc($v1 + 50),does not feature in the hiscores))) { $hget($sockname,sendway) $+($c1,[,$c2,None of these players are in the $c1,RuneScape Highscores]) } else { hadd -m $sockname rp $bfind(&compare,$bfind(&compare,1,$regsubex($hget($sockname,skill),/(.)/g,$+($asc(\1),$chr(32)))),) hadd -m $sockname result $htmlfree($replace($bvar(&compare,$hget($sockname,rp),300).text,$chr(10),$chr(32))) hadd -m $sockname result2 $htmlfree($replace($bvar(&compare,$bfind(&compare,$bfind(&compare,$calc($hget($sockname,rp) + 10),$regsubex($right($hget($sockname,skill),-2),/(.)/g,$+($asc(\1),$chr(32)))),),300).text,$chr(10),$chr(32))) $hget($sockname,sendway) $iif(Not Ranked * iswm $hget($sockname,result),$+($c1,[,$c2,User,$c1 $flc($hget($sockname,user1)) $c2,is not ranked,$c1,]),$+($c1,[,$c2,$hget($sockname,skill) for,$c1 $flc($hget($sockname,user1)),] [,$c2,Level:,$c1 $gettok($hget($sockname,result),2,32) |,$c2 Rank:,$c1 $gettok($hget($sockname,result),1,32) |,$c2 Exp:,$c1 $gettok($hget($sockname,result),3,32),])) $hget($sockname,sendway) $iif(Not Ranked * iswm $hget($sockname,result2),$+($c1,[,$c2,User,$c1 $flc($hget($sockname,user2)) $c2,is not ranked,$c1,]),$+($c1,[,$c2,$hget($sockname,skill) for,$c1 $flc($hget($sockname,user2)),] [,$c2,Level:,$c1 $gettok($hget($sockname,result2),2,32) |,$c2 Rank:,$c1 $gettok($hget($sockname,result2),1,32) |,$c2 Exp:,$c1 $gettok($hget($sockname,result2),3,32),])) if ($remove($gettok($hget($sockname,result),3,32),$chr(44)) !isnum) hadd -m $sockname lose 1 elseif ($remove($gettok($hget($sockname,result2),3,32),$chr(44)) !isnum) hadd -m $sockname lose 2 else hadd -m $sockname lose $iif($remove($gettok($hget($sockname,result),3,32),$chr(44)) > $remove($gettok($hget($sockname,result2),3,32),$chr(44)),2,1) $hget($sockname,sendway) $+($c1,[,$c2,Winner:,$c1 $flc($hget($sockname,$iif($hget($sockname,lose) == 1,user2,user1))),] [,$c2,Levels:,$c1 $iif($calc($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result2,result)),2,32) - $gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result,result2)),2,32)),$v1,None) |,$c2 Ranks:,$c1 $iif($bytes($calc($remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result,result2)),1,32),$chr(44)) - $remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result2,result)),1,32),$chr(44))),b),$v1,None) |,$c2 Ranks:,$c1 $iif($bytes($calc($remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result2,result)),3,32),$chr(44)) - $remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result,result2)),3,32),$chr(44))),b),$v1,None),]) } .hdel -sw $sockname * ;.remove $sockname sockclose $sockname } } alias -l StatsID { if ($regex($1,/^[@!.](stats|overall?|total)$/Si)) return Overall elseif ($regex($1,/^[@!]co?mb(at)?%$/Si)) return Combatp elseif ($regex($1,/^[@!]co?mb(at)?$/Si)) return Combat elseif ($regex($1,/^[@!]at[tk](ack)?$/Si)) return Attack elseif ($regex($1,/^[@!]de[fv](en[cs]e)?$/Si)) return Defence elseif ($regex($1,/^[@!]str(eng(ht|th))?$/Si)) return Strength elseif ($regex($1,/^[@!]h(p|it(points?|s))$/Si)) return Hitpoints elseif ($regex($1,/^[@!]range?d?$/Si)) return Ranged elseif ($regex($1,/^[@!]pray(er)?$/Si)) return Prayer elseif ($regex($1,/^[@!]mag(ic|e)$/Si)) return Magic elseif ($regex($1,/^[@!]cook(e|ing)?$/Si)) return Cooking elseif ($regex($1,/^[@!]w(ood)?c(utting)?$/Si)) return Woodcutting elseif ($regex($1,/^[@!]flet(ch|hc)(ing|e)?$/Si)) return Fletching elseif ($regex($1,/^[@!]fish(ing|e)?$/Si)) return Fishing elseif ($regex($1,/^[@!]f(ire)m(ak(e|ing))?$/Si)) return Firemaking elseif ($regex($1,/^[@!]craft(ing|er?)?$/Si)) return Crafting elseif ($regex($1,/^[@!]smith(ing|er?)?$/Si)) return Smithing elseif ($regex($1,/^[@!]min(ing|er?)?$/Si)) return Mining elseif ($regex($1,/^[@!]herb(lor[ye])?$/Si)) return Herblore elseif ($regex($1,/^[@!]agi(lity)?$/Si)) return Agility elseif ($regex($1,/^[@!]th(ie|ei)[fv](ing|er)?$/Si)) return Thieving elseif ($regex($1,/^[@!]slay(ing|er?)$/Si)) return Slayer elseif ($regex($1,/^[@!]farm(ing|er?)$/Si)) return Farming elseif ($regex($1,/^[@!]r(une)?c(raft(ing|er?)?)?$/Si)) return Runecraft elseif ($regex($1,/^[@!]hunt(ing|er?)?$/Si)) return Hunter elseif ($regex($1,/^[@!]cons?(truct(ion)?)?$/Si)) return Construction } alias -l htmlfree return $regsubex($regsubex($1-,/<.*>|&[^#].*;/gU,),/&#(.*);/gU,$chr(\1)) alias -l flc return $regsubex($replace($1-,+,$chr(32),-,$chr(32),_,$chr(32)),/\b(.)/Sg,$upper(\1)) alias -l hr return $replace($1-,$chr(32),+,-,+,_,+) alias -l c1 return $chr(3) alias -l c2 return $+($chr(3),07)