alias getxp { var %e, %x = 1, %y = $1 while (%x < %y) { inc %e $floor($calc(%x + 300*2^(%x / 7))) inc %x } return $floor($calc(%e /4)) } alias c1 return $chr(3) alias c2 return $+($chr(3),07) alias hr return $replace($1-,$chr(32),_,-,_) alias flc return $regsubex($1-,/\b(.)/Sg,$upper(\1)) alias 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,/^[@!]c(ons?|s)(ruction)$?/Si)) return Construction } alias htmlfree return $regsubex($1-,/<.*>|&.*;/gU,) on *:TEXT:*:#:{ if ($StatsID($1)) { inc %sc var %info = $+($iif($regex($2-,/#([0-9]+)/S),$regml(1),00),$,$iif($gettok($1-,2,64),$v1,00)) var %info = $+($iif($regex($remove($2-,$gettok(%info,1,36),$gettok(%info,2,36)),/\b([a-z0-9 ]+)\b/Si),$regml(1),$nick),$,%info) sockopen $+(Stats.,%sc) hiscore.runescape.com 80 sockmark $+(Stats.,%sc) $+($iif($regex($1,/^@/S),msg $chan,notice $nick),$,%info,$,$StatsID($1)) } } on *:SOCKOPEN:Stats.*:{ sockwrite -nt $sockname GET /hiscorepersonal.ws?user1= $+ $hr($gettok($sock($sockname).mark,2,36)) HTTP/1.0 sockwrite -nt $sockname Host: $+(hiscore.runescape.com,$str($crlf,2)) } on *:SOCKREAD:Stats.*:{ if ($sockerr) halt var %stats,%n,%r,%l,%xp,%s sockread %stats while ($sockbr) { var %stats sockread %stats if (($gettok($sock($sockname).mark,5,36) iswm %stats) && ($v1 !== overall)) { sockread %n | sockread %r | sockread %l | sockread %xp | var %g = $iif($gettok($sock($sockname).mark,3,36),$v1,$calc($htmlfree(%l) + 1)) if ($htmlfree(%r)) $gettok($sock($sockname).mark,1,36) $+($c1,[,$c2,%stats for,$c1 $flc($gettok($sock($sockname).mark,2,36)),] [,$c2,Level:,$c1 $htmlfree(%l) |,$c2 Rank:,$c1 $htmlfree(%r) |,$c2 Exp:,$c1 $htmlfree(%xp) $iif($htmlfree(%l) != 99,$+(|,$c2 Exp till %g,:,$c1 $bytes($calc($getxp(%g) - $remove($htmlfree(%xp),$chr(44))),b))),]) else $gettok($sock($sockname).mark,1,36) $+($c1,[,$gettok($sock($sockname).mark,2,36),$c2 does not appear in the hiscores for $c1,$gettok($sock($sockname).mark,5,36),]) sockclose $sockname } if ((* iswm %stats) && ($regex($gettok($sock($sockname).mark,5,36),/^(Overall|Combatp?)/))) { sockread %s | sockread %n | sockread %r | sockread %l | sockread %xp if ($htmlfree(%l)) set $+(%,all,$sockname) $($+(%,all,$sockname),2) $+($c2,%s,:,$c1 $htmlfree(%l)) if ((%s == overall) && ($htmlfree(%r))) { set $+(%,r,$sockname) $htmlfree(%r) | set $+(%,xp,$sockname) $htmlfree(%xp) } if ($regex(%s,/^(att|str|def|hit|mag|ran|pra)/i)) set $+(%,cs,$sockname) $($+(%,cs,$sockname),2) $iif($htmlfree(%l),$v1,1) if (%s == Construction) { $gettok($sock($sockname).mark,1,36) $+($c1,[,$c2,Stats for,$c1 $flc($gettok($sock($sockname).mark,2,36)),] [,$c2,$iif($regex($($+(%,all,$sockname),2),/^Overall/Si),$+(Total:,$c1 $gettok($($+(%,all,$sockname),2),2,32) |,$c2 Rank:,$c1 $($+(%,r,$sockname),2) |,$c2 Exp:,$c1 $($+(%,xp,$sockname),2)),$+(Total,$c1,: Not ranked)) $c1,|,$c2 Combat:,$c1 $cmb($($+(%,cs,$sockname),2)),]) $gettok($sock($sockname).mark,1,36) $+($c1,[,$iif($regex($($+(%,all,$sockname),2),/^Overall/Si),$gettok($($+(%,all,$sockname),2),3-,32),$($+(%,all,$sockname),2)),$c1,]) unset $+(%,all,$sockname) sockclose $sockname } } } }