alias c1 return $+($chr(3),04,$1) alias c2 return $+($chr(3),10,$1) alias c3 return $+($chr(3),07,$1) on $*:TEXT:/^[@!](stats|cmb|[^ ]+) (.+)/Si:#:{ var %nick1 = $regml(2), %skill = $skill($regml(1)), %nick2 = $replace(%nick1,$chr(32),$chr(160)), %nick = $replace(%nick1,$chr(32),+,_,+,-,+) if (%skill) var %style = sk else var %style = $iif($remove($1,@,!) == stats,st,$iif($remove($1,@,!) == cmb,cb)) if (!%style) halt var %t = $+(stats,.,$nick,.,$ticks) if ($nick($chan,$nick,o)) var %d = $iif($left($1,1) == @,msg $chan,.notice $nick) else %d = $iif($left($1,1) == !,.notice $nick) if (!%d) { notice $nick 10Only 4Ops 10can use4 $1 $+ 10.. unset %d halt } hadd -m %t disp %d hadd -m %t nick2 %nick2 hadd -m %t style %style hadd -m %t skill %skill hadd -m %t cskill Overall hadd -m %t nick $regsubex(%nick,/^(\W+)/Si,$null) sockopen %t hiscore.runescape.com 80 unset %d } on *:JOIN:#pest-time:{ var %t = $+(stats,.,$nick,.,$ticks) hadd -m %t cskill Overall hadd -m %t disp msg $chan hadd -m %t style oj hadd -m %t nick $replace($nick,_,+,-,+) hadd -m %t nick2 $nick sockopen %t 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 } on *:sockread:stats.*: { var %r | sockread %r if (** iswm %r) { sockread -f %omg $hget($sockname,disp) $c2($iif($hget($sockname,nick2),$v1,$hget($sockname,nick))) $c1(does not feature in the highscores.) hfree $sockname sockclose $sockname unset %omg halt } if (* iswm %r) { if ( iswm %r) { hdel $sockname cskill | hadd $sockname cskill $regsubex(%r,/((?:.+)src="(?:http://www.runescape.com/img/hiscores/skill_icon_(.*)1\.gif|http://www.runescape.com/img/hiscores/(.*))"(?:.+))/Si,\2) } else { var %line = $hget($sockname,$hget($sockname,cskill)) $regsubex(%r,/^(([0-9,]+))$/Si,\2) hdel $sockname $hget($sockname,cskill) hadd $sockname $hget($sockname,cskill) %line } } } on *:SOCKCLOSE:stats.*:{ if ($hget($sockname,style) == st) { var %a = 0 while (%a < 23) var %a = %a + 1, %skill = $skill(%a), %line = %line $iif($hget($sockname,%skill),$c1(%skill $+ :) $c2($gettok($v1,2,32))) $hget($sockname,disp) $c1(Stats for:) $c2($hget($sockname,nick2)) $iif($gettok($hget($sockname,overall),2,32),$c1(Overall:) $c2($v1)) $hget($sockname,disp) %line hfree $sockname } if ($hget($sockname,style) == cb) { var %a = $iif($gettok($hget($sockname,attack),2,32),$v1,N/A), $& %s = $iif($gettok($hget($sockname,strength),2,32),$v1,N/A), $& %d = $iif($gettok($hget($sockname,defence),2,32),$v1,N/A), $& %p = $iif($gettok($hget($sockname,prayer),2,32),$v1,N/A), $& %r = $iif($gettok($hget($sockname,ranged),2,32),$v1,N/A), $& %m = $iif($gettok($hget($sockname,magic),2,32),$v1,N/A), $& %h = $iif($gettok($hget($sockname,hitpoints),2,32),$v1,N/A), $& %c = $floor($extcmbcalc(%a,%s,%d,%h,%p,%r,%m)) $hget($sockname,disp) $c1(Combat stats for:) $c2($hget($sockname,nick2)) $c1(Combat:) $c2(%c) $hget($sockname,disp) $c1(Atk:) $c2(%a) $c1(Str:) $c2(%s) $c1(Def:) $c2(%d) $c1(HP:) $c2(%h) $hget($sockname,disp) $c1(Prayer:) $c2(%p) $c1(Magic:) $c2(%m) $c1(Range:) $c2(%r) hfree $sockname } if ($hget($sockname,style) == sk) { if ($hget($sockname,$hget($sockname,skill))) { tokenize 32 $v1 $hget($sockname,disp) $c1($hget($sockname,skill) stats for:) $c2($hget($sockname,nick2)) $hget($sockname,disp) $c1(Rank:) $c2($1) $c1(Level:) $c2($2) $c1(Exp:) $c2($3) $hget($sockname,disp) $c1(Exp until $calc($2 + 1) $+ :) $c2($bytes($calc($xp2next($2) - $remove($3,$chr(44))),b)) } else $hget($sockname,disp) $c2($hget($sockname,nick)) $c1(does not feature in the highscores for) $c2($hget($sockname,skill)) hfree $sockname } if ($hget($sockname,style) == oj) { var %a = $iif($gettok($hget($sockname,attack),2,32),$v1,N/A), $& %s = $iif($gettok($hget($sockname,strength),2,32),$v1,N/A), $& %d = $iif($gettok($hget($sockname,defence),2,32),$v1,N/A), $& %p = $iif($gettok($hget($sockname,prayer),2,32),$v1,N/A), $& %r = $iif($gettok($hget($sockname,ranged),2,32),$v1,N/A), $& %m = $iif($gettok($hget($sockname,magic),2,32),$v1,N/A), $& %h = $iif($gettok($hget($sockname,hitpoints),2,32),$v1,N/A), $& %c = $floor($extcmbcalc(%a,%s,%d,%h,%p,%r,%m)) $hget($sockname,disp) $c3(|) $c1(RSN:) $c2($hget($sockname,nick2)) $c3(|) $c1(Combat:) $c2(%c) $c3(|) $c1(Str:) $c2(%s) $c3(ยค) $c1(Range:) $c2(%r) $c3(|) hfree $sockname } } alias extcmbcalc { var %line = $replace($1 $2 $3 $4 $5 $6 $7,NA,1,N/A,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 } }