rendered paste bodyalias c1 return $+($chr(3),03,$1)
alias c2 return $+($chr(3),04,$1)
alias defrsn return $readini(defrsn.ini,rsn,$1)
on $*:TEXT:/^[@!](stats|cmb|[^ ]+)(\s.*)?/Si:#:{
var %nick = $replace($regml(2),$chr(32),+), %skill = $skill($regml(1)), %nick = $regsubex(%nick,/^(\W+)/Si,$null)
if (%skill) var %style = sk
else var %style = $iif($remove($1,@,!) == stats,st,$iif($remove($1,@,!) == cmb,cb))
if ($regex($1,/^[!@](?:set|def)(?:rsn(?:ame)?|name)$/Si)) {
if (%nick) {
writeini -n defrsn.ini rsn $address($nick,2) %nick
notice $nick $c1(DefRSN set to:) $c2(%nick) $c1(For the hostmast:) $c2($address($nick,2))
}
else {
if ($defrsn($address($nick,2))) {
notice $nick $c1(You have removed your DefRSN:) $c2($v1)
remini defrsn.ini rsn $address($nick,2)
}
else notice $nick $c1(You havn't a DefRSN. To set one type !defrsn <rsn>)
}
}
else {
if (!%style) halt
hadd -m $+(stats,.,$nick) disp $iif($left($1,1) == @,msg $chan,notice $nick)
hadd -m $+(stats,.,$nick) style %style
hadd -m $+(stats,.,$nick) skill %skill
hadd -m $+(stats,.,$nick) cskill Overall
hadd -m $+(stats,.,$nick) nick $iif($2,$regsubex(%nick,/^(\W+)/Si,$null),$iif($defrsn($address($nick,2)),$v1,$nick))
sockopen $+(stats,.,$nick) hiscore.runescape.com 80
}
}
on *:sockopen:stats.*: {
; sockwrite -nt $sockname GET /hiscorepersonal.ws?user1= $+ $hget($sockname,nick) HTTP/1.1
; sockwrite -nt $sockname Host: hiscore.runescape.com $crlf $+ $crlf
var %a = sockwrite -nt $sockname
%a GET /index_lite.ws?player= $+ $hget($sockname,nick) HTTP/1.1
%a Host: hiscore.runescape.com $+ $crlf $+ $crlf
}
on *:sockread:stats.*: {
var %r | sockread %r
tokenize 44 %r
if (<html><head><title>404* iswm %r) $hget($sockname,disp) $c1(User doesn't exist)
if ($0 == 3) {
var %skill = $skill($hget($sockname,pointer)), %rank = $1, %lvl = $2, %exp = $3, %c = hadd -m $sockname, %op = $iif($remove($1-,$chr(32)) == -1-1-1,NA,%rank %lvl %exp)
if (%op != NA) {
%c %skill %op
%c $hget($sockname,pointer) %op
}
hinc $sockname pointer 1
}
if ($hget($sockname,pointer) == 24) processIt $sockname
}
alias processIt {
var %sn = $1
if ($hget(%sn,style) == st) {
var %a = 0
while (%a < 23) var %a = %a + 1, %skill = $skill(%a), %line = %line $iif($hget(%sn,%skill),$c1(%skill $+ :) $c2($gettok($v1,2,32)))
$hget(%sn,disp) $c1(Stats for:) $c2($replace($hget(%sn,nick),+,$chr(160))) $iif($gettok($hget(%sn,overall),2,32),$c1(Overall:) $c2($v1))
$hget(%sn,disp) %line
hfree %sn
}
if ($hget(%sn,style) == cb) {
var %a = $iif($gettok($hget(%sn,attack),2,32),$v1,NA), $&
%s = $iif($gettok($hget(%sn,strength),2,32),$v1,NA), $&
%d = $iif($gettok($hget(%sn,defence),2,32),$v1,NA), $&
%p = $iif($gettok($hget(%sn,prayer),2,32),$v1,NA), $&
%r = $iif($gettok($hget(%sn,ranged),2,32),$v1,NA), $&
%m = $iif($gettok($hget(%sn,magic),2,32),$v1,NA), $&
%h = $iif($gettok($hget(%sn,hitpoints),2,32),$v1,NA), $&
%c = $floor($extcmbcalc(%a,%s,%d,%h,%p,%r,%m))
$hget(%sn,disp) $c1(Combat Stats For:) $c2($replace($hget(%sn,nick),+,$chr(160))) $c1(Combat:) $c2(%c)
$hget(%sn,disp) $c1(Attack:) $c2(%a) $c1(Strength:) $c2(%s) $c1(Defence:) $c2(%d) $c1(HitPoints:) $c2(%h) $c1(Pray:) $c2(%p) $c1(Ranged:) $c2(%r) $c1(Magic:) $c2(%m)
hfree %sn
}
if ($hget(%sn,style) == sk) {
if ($hget(%sn,$hget(%sn,skill))) {
tokenize 32 $v1
$hget(%sn,disp) $c2($hget(%sn,skill)) $c1(stats for:) $c2($replace($hget(%sn,nick),+,$chr(160)))
$hget(%sn,disp) $c1(Rank:) $c2($1) $c1(Level:) $c2($2) $c1(Exp:) $c2($3) $iif($hget(%sn,skill) != Overall,$c1(Exp until $calc($2 + 1) $+ :) $c2($bytes($calc($xp2next($2) - $remove($3,$chr(44))),b)))
}
else $hget(%sn,disp) $c2($hget(%sn,nick)) $c1(does not feature in the high scores for) $c2($hget(%sn,skill))
hfree %sn
}
}
alias extcmbcalc {
var %line = $replace($1 $2 $3 $4 $5 $6 $7,NA,1)
tokenize 32 %line
if (($calc($1 + $2) > $6) && ($calc($1 + $2) > $7)) var %type = melee
if (($calc($1 + $2) < $6) || ($calc($1 + $2) < $7)) {
if ($7 > $calc($1 + $2)) if ($7 > $6) var %type = magic
if ($6 > $calc($1 + $2)) if ($6 > $7) var %type = range
}
if (%type == range) return $calc((0.487 * $6) + (0.249 * $3) + (0.25 * $4) + (0.124 * $5))
if (%type == magic) return $calc((0.487 * $7) + (0.249 * $3) + (0.25 * $4) + (0.124 * $5))
if (%type == melee) return $calc((0.32707 * $1) + (0.249 * $3) + (0.324 * $2) + (0.25 * $4) + (0.124 * $5))
}
alias -l skill {
if (($1 == 0) || ($regex($1,/^Over(?:all)?$/Si))) return Overall
if (($1 == 1) || ($regex($1,/^Att?(?:a)?c?k?$/Si))) return Attack
if (($1 == 2) || ($regex($1,/^Def(?:en[sc]e)$/Si))) return Defence
if (($1 == 3) || ($regex($1,/^Str(?:ength)?$/Si))) return Strength
if (($1 == 4) || ($regex($1,/^H(?:its?|p(?:oints)?)$/Si))) return Hitpoints
if (($1 == 5) || ($regex($1,/^Ranged?$/Si))) return Ranged
if (($1 == 6) || ($regex($1,/^Pray(?:er)?$/Si))) return Prayer
if (($1 == 7) || ($regex($1,/^Mag(?:e|ic)$/Si))) return Magic
if (($1 == 8) || ($regex($1,/^Cook(?:ing?)?$/Si))) return Cooking
if (($1 == 9) || ($regex($1,/^W(?:ood)?c(?:ut)?(?:ing?)?$/Si))) return Woodcutting
if (($1 == 10) || ($regex($1,/^Fletch(?:ing)?$/Si))) return Fletching
if (($1 == 11) || ($regex($1,/^Fish(?:ing)?$/Si))) return Fishing
if (($1 == 12) || ($regex($1,/^F(?:(?:ire)?m(?:ak(?:e|ing))?)$/Si))) return Firemaking
if (($1 == 13) || ($regex($1,/^Craft(?:ing?)?$/Si))) return Crafting
if (($1 == 14) || ($regex($1,/^Smith(?:ing?)?$/Si))) return Smithing
if (($1 == 15) || ($regex($1,/^Min(?:e|ing?)$/Si))) return Mining
if (($1 == 16) || ($regex($1,/^Herb(?:y|i?(?:lor)?e)?$/Si))) return Herblore
if (($1 == 17) || ($1 == Agility)) return Agility
if (($1 == 18) || ($regex($1,/^Thie[fv](?:e|ing)?$/Si))) return Thieving
if (($1 == 19) || ($regex($1,/^Slay(?:er)?$/Si))) return Slayer
if (($1 == 20) || ($regex($1,/^Farm(?:ing)?$/Si))) return Farming
if (($1 == 21) || ($regex($1,/^R(?:une)?C(?:raft(?:ing)?)?$/Si))) return Runecraft
if (($1 == 22) || ($regex($1,/^Hunt(?:er|ing)?$/Si))) return Hunter
if (($1 == 23) || ($regex($1,/^Con(?:struct(?:ion)?)?$/Si))) return Construction
}
alias xp {
var %x = 1, %level = $calc($1 - 1), %xp = 0
while (%x <= %level) {
var %TempXp = $calc((%x + 300 * 2^(%x / 7)) /4)
inc %xp %TempXp
inc %x
}
return $int(%xp)
}
alias xp2Next {
var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1))
return $calc(%nextxp - %xp)
}
alias ndp {
if (*.* iswm $1) { return $calc($gettok($1,1,46) + 1) }
else { return $1 }
}