All pastes #551068 Raw Edit

Untitled

public text v1 · immutable
·published 2007-06-08 17:14 UTC
rendered paste body
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 ((<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
      }
    }
  }
}