rendered paste bodyalias 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 ((<td align="left">* 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
}
}
}
}