rendered paste bodyon $*:TEXT:/^[!@.]/Si:#clan-disruption: {
if ($remove($1,!,@,.) == stats) {
if ($2 == -rank) { set %stats.style rank }
elseif ($2 == -exp) { set %stats.style exp }
elseif ($2 == -level) { set %stats.style level }
else { set %stats.style level }
}
elseif ($statstrue($remove($1,!,@,.))) && ($remove($1,!,@,.) !isnum) { set %stats.style $+(skill.,$v1) }
elseif ($regex($remove($1,!,@,.),/^co?mb(at)?/i)) { set %stats.style combat }
else { halt }
set %stats.display $iif($left($1,1) == @,msg $chan,notice $nick)
set %stats.user $iif($left($2,1) != -,$replace($2-,$chr(32),_),$replace($3-,$chr(32),_))
set %stats.n 0
sockopen stats hiscore.runescape.com 80
}
on *:SOCKOPEN:stats: {
sockwrite -n $sockname GET $+(/hiscorepersonal.ws?user1=,%stats.user) HTTP/1.1
sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf
}
on *:SOCKREAD:stats: {
var %i | sockread %i
if ($statstrue(%i)) { set %stats.skill %i | set %stats.n 1 }
elseif (*does not feature in the hiscores.* iswm %i) {
%stats.display $c1(The username ") $+ $c2(%stats.user) $+ $c1(" does not appear in the Runescape Hiscores.)
unset %stats.* | sockclose stats
}
elseif (%stats.n isnum 3-5) {
set $+(%,stats.,%stats.skill,.,$statstype(%stats.n)) $gettok($gettok(%i,2,62),1,60)
if (%stats.n == 5) { set %stats.n 0 }
}
elseif (*</table>* iswm %i) {
if ($left(%stats.style,5) == skill) {
if ($($+(%,stats.,$gettok(%stats.style,2,46),.exp),2)) {
var %rank = $($+(%,stats.,$gettok(%stats.style,2,46),.rank),2)
var %exp = $($+(%,stats.,$gettok(%stats.style,2,46),.exp),2)
var %level = $($+(%,stats.,$gettok(%stats.style,2,46),.level),2)
%stats.display $c1($statstrue($gettok(%stats.style,2,46)) stats for) $+($c2,%stats.user,$c1,:)
%stats.display $c1(Level:) $c2(%level) $c1(Rank:) $c2(%rank) $c1(Exp:) $c2(%exp) $&
$c1(Exp until $calc(%level + 1) $+ :) $c2($bytes($calc($statsxp($calc(%level + 1)) - $remove(%exp,$chr(44))),b))
}
else {
%stats.display $c1(The username ") $+ $c2(%stats.user) $+ $c1(" does not appear in the Runescape Hiscores for) $+($c2,$gettok(%stats.style,2,46),$c1,.)
}
unset %stats.* | sockclose stats
}
elseif (%stats.style == combat) {
var %a = $iif(%stats.Attack.level,$v1,-)
var %d = $iif(%stats.Defence.level,$v1,-)
var %s = $iif(%stats.Strength.level,$v1,-)
var %h = $iif(%stats.Hitpoints.level,$v1,-)
var %r = $iif(%stats.Ranged.level,$v1,-)
var %p = $iif(%stats.Prayer.level,$v1,-)
var %m = $iif(%stats.Magic.level,$v1,-)
{
var %base = $calc((%d *100)+(%h *100)+($iif($isodd(%p),(%p -1)*50,%p *50)))
}
}
else {
var %x = 1
while (%x <= 23) {
var %statline = %statline $iif($($+(%,stats.,$statstrue(%x),.level),2),$c1($statstrue(%x) $+ :) $c2($($+(%,stats.,$statstrue(%x),.,%stats.style),2)),$null)
inc %x
}
%stats.display $c1(Stats for) $c2(%stats.user) $+($c1,$chr(40),Overall: $iif(%stats.Overall.level,$c2($($+(%,stats.Overall.,%stats.style),2)),$c2(N/A)),$c1,$chr(41),:)
%stats.display %statline | unset %stats.* | sockclose stats
}
}
if (%stats.n isnum 1-5) { inc %stats.n }
}
alias c1 { return $+($chr(3),5,$1-) }
alias c2 { return $+($chr(3),07,$1-) }
alias statstype {
if ($1 == 3) { return rank }
elseif ($1 == 4) { return level }
else { return exp }
}
alias statstrue {
if ($regex($1,/^0|overall|total/i)) { return Overall }
elseif ($regex($1,/^1|at(k|tack)/i)) { return Attack }
elseif ($regex($1,/^2|def(en[sc]e)?/i)) { return Defence }
elseif ($regex($1,/^3|str(ength)?/i)) { return Strength }
elseif ($regex($1,/^4|hp|hit(point)?s/i)) { return Hitpoints }
elseif ($regex($1,/^5|range[rd]?/i)) { return Ranged }
elseif ($regex($1,/^6|pray(er|ing?)?/i)) { return Prayer }
elseif ($regex($1,/^7|mag(e|ick?)?/i)) { return Magic }
elseif ($regex($1,/^8|cook(ing?)?/i)) { return Cooking }
elseif ($regex($1,/^9|wc|woodcut(ting?)?/i)) { return Woodcutting }
elseif ($regex($1,/^10|fletch(ing?)?/i)) { return Fletching }
elseif ($regex($1,/^11|f(i|ee)sh(ing?)?/i)) { return Fishing }
elseif ($regex($1,/^12|fm|firemake?(ing?)?/i)) { return Firemaking }
elseif ($regex($1,/^13|craft(ing?)?/i)) { return Crafting }
elseif ($regex($1,/^14|smith(ing?)?/i)) { return Smithing }
elseif ($regex($1,/^15|mine?(ing?)?/i)) { return Mining }
elseif ($regex($1,/^16|herb(lore?|al(ism)?)?/i)) { return Herblore }
elseif ($regex($1,/^17|agil(ity)?/i)) { return Agility }
elseif ($regex($1,/^18|th(ie|ei)[fv](ing?)?/i)) { return Thieving }
elseif ($regex($1,/^19|slay(er|ing?)?/i)) { return Slayer }
elseif ($regex($1,/^20|farm(er|ing?)?/i)) { return Farming }
elseif ($regex($1,/^21|(rc|runecraft)(ing?)?/i)) { return Runecraft }
elseif ($regex($1,/^22|hunt(er|ing?)?/i)) { return Hunter }
elseif ($regex($1,/^23|cons(truct(io?ng?)?)?/i)) { return Construction }
else return $null
}
alias statsxp {
var %x = 1, %level = $calc($1 - 1), %xp = 0
while (%x <= %level) {
var %TempXp = $calc($floor($calc(%x + 300 * 2 ^ (%x / 7))) / 4)
inc %xp %TempXp
inc %x
}
return $int(%xp)
}
alias isodd { if (. isin $calc($1 /2)) { return true } | else { return false } }