on *:Text:*:#: { ;;Colors, Color1 is your main color, Color2 is your secondary color. set %Color1 02 set %Color2 07 ;; Do not edit anything below UNLESS you know what your doing. if ($left($1,1) !isin !@) halt var %output = $iif($left($1,1) == @,msg $chan,notice $nick), $& %s1 = $iif($readini(RSNs.ini,$address($nick,2),S1),$v1,%Color1), $& %s2 = $iif($readini(RSNs.ini,$address($nick,2),S2),$v1,%Color2) tokenize 32 $right($1-,-1) if ($regex($1,/^s(my|set)(Co?l(ou?)?r)$/Si)) { if ($2 !isnum 0-15) halt if ($3 !isnum 0-15) halt writeini RSNs.ini $address($nick,2) S1 $iif($len($2) < 2,0) $+ $2 writeini RSNs.ini $address($nick,2) S2 $iif($len($3) < 2,0) $+ $3 notice $nick $+($chr(3),$2) $+ your stats colors have been changed to $2 and $+($chr(3),$iif($len($3) < 2,0),$3) $+ $3 $+ . halt } if ($1 == rsn) { if (!$readini(RSNs.ini,$address($2,2),RSN)) { notice $nick $s1(%s1,I have found no match for) $s1(%s1,$qt($s2(%s2,$2-))) halt } notice $nick $s2(%s2,$2-,'s) $s1(%s1,rsn is) $s2(%s2,$readini(RSNs.ini,$address($2,2),RSN)) } if (!$skills($1)) halt if ($skills($1) == Defname) { if ($len($2-) > 12) { notice $nick $s1(%s1,The RSN) $s2(%s2,$2-) $s1(%s1,is too long.) halt } writeini RSNs.ini $address($nick,2) RSN $2- notice $nick $s1(%s1,Your RSN has been successfully added.) halt } else { noop $regex($2-,/(#|[-\+][tg])(\d\d)/Si) if ($regml(0) == 2) var %target = $regml(2) var %rsn = $remove($2-,$+($regml(1),$regml(2))) if (!$remove(%rsn,$chr(32))) { if ($readini(RSNs.ini,$address($nick,2),RSN)) var %rsn = $v1 else var %rsn = $nick } if ($len(%rsn) > 12) { notice $nick $s1(%s1,Your rsn is too long.) halt } var %hash = $+(stats.,$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9)) hadd -m %hash skill $skills($1) hadd -m %hash User %rsn hadd -m %hash Target $iif(%target,$v1,0) hadd -m %hash Display %output hadd -m %hash s1 %s1 hadd -m %hash s2 %s2 sockopen %hash hiscore.runescape.com 80 } } on *:SOCKOPEN:stats.*: { var %user = $hget($sockname,User) hadd -m $sockname User $replace(%user,$chr(32),_) sockwrite -n $sockname GET /index_lite.ws?player= $+ $hget($sockname,User) HTTP/1.1 sockwrite -n $sockname Host: hiscore.runescape.com sockwrite -n $sockname $crlf } on *:SOCKREAD:stats.*: { var %hash = $sockname,%read,%ID = $gettok($sockname,2,46),%s1 = $hget(%hash,s1),%s2 = $hget(%hash,s2) sockread %read if (*Sorry, the page you were looking for was not found.* iswm %read) { $hget(%hash,display) $s1(%s1,The user) $s2(%s2,$hget(%hash,user)) $s1(%s1,doesn't appear in the hiscores.) sockclose $sockname if ($hget(%hash)) .hfree %hash } if ($hget(%hash,Read) == $true) { tokenize 44 %read if ($2 != 1) { if ($skills($hget(%hash,Inc))) hadd -m %hash $skills($hget(%hash,Inc)) $1 $2 $3 } hinc -m %hash Inc 1 } if (*Content-length:* iswm %read) { hadd -m %hash Read $true hadd -m %hash Inc -1 } } on *:sockclose:stats.*:playstats $sockname alias -l Playstats { var %hash = $1,%skill = $hget($1,skill),%user = $replace($hget($1,user),_,$chr(32)),%target = $hget($1,target),%display = $hget($1,display), $& %s1 = $hget($1,s1),%s2 = $hget($1,s2) if (%skill == stats) { var %x = 1,%statline while (%x <= 15) { tokenize 32 $hget(%hash,$skills(%x)) if ($2 > -1) var %statline = %statline $s1(%s1,$skills(%x)) $s2(%s2,$2) inc %x } while ($skills(%x)) { tokenize 32 $hget(%hash,$skills(%x)) if ($2 > -1) var %statline2 = %statline2 $s1(%s1,$skills(%x)) $s2(%s2,$2) inc %x } if (!%statline && !%statline2) { %display $s1(%s1,The user) $s2(%s2,%user) $s1(%s1,doesn't appear in the hiscores.) goto done } tokenize 32 $hget(%hash,Overall) %display $s1(%s1,Stats for) $s2(%s2,%user) $iif($2,$s1(%s1,Total level) $s2(%s2,$v1)) if (%statline) %display %statline if (%statline2) %display %statline2 goto done } if (%skill == Combat) { var %a = $token($hget(%hash,attack),2,32), $& %s = $token($hget(%hash,strength),2,32), $& %d = $token($hget(%hash,defence),2,32), $& %h = $token($hget(%hash,hitpoints),2,32), $& %r = $token($hget(%hash,ranged),2,32), $& %m = $token($hget(%hash,magic),2,32), $& %p = $token($hget(%hash,prayer),2,32) var %a = $iif(%a != -1,%a),%s = $iif(%s != -1,%s), $& %d = $iif(%d != -1,%d),%h = $iif(%h != -1,%h), $& %h = $iif(%h != -1,%h),%r = $iif(%r != -1,%r), $& %m = $iif(%m != -1,%m),%p = $iif(%p != -1,%p) var %a.mult = .32707, %s.mult = .324, %d.mult = .25, %h.mult = .25, %p.mult = .124, %r.mult = .487, %m.mult = .487 var %meleecombat = $calc(%a * %a.mult + %s * %s.mult + %d * %d.mult + %h * %h.mult + %p * %p.mult), $& %RangedCombat = $calc(%r * %r.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult), $& %MagicCombat = $calc(%m * %m.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult) if ($prop == all) { return %MagicCombat %RangedCombat %MeleeCombat | halt } if (%MagicCombat > %RangedCombat) && (%MagicCombat > %MeleeCombat) var %cmbstyle = Magic, %Combat = %MagicCombat elseif (%RangedCombat > %MeleeCombat) var %cmbstyle = Ranged, %Combat = %RangedCombat else var %cmbstyle = Melee, %combat = %MeleeCombat var %cmb = $calc($ceil(%combat) - %combat)) %display $s2(%s2,%user) $s1(%s1,is) $s2(%s2,$round(%combat,2)) $s2(%s2,%cmbstyle) $s1(%s1,based) %display $s1(%s1,Att:) $s2(%s2,%a) $s1(%s1,Str:) $s2(%s2,%s) $s1(%s1,Def:) $s2(%s2,%d) $s1(%s1,Hits:) $s2(%s2,%h) $& $s1(%s1,Range:) $s2(%s2,%r) $s1(%s1,Pray:) $s2(%s2,%p) $s1(%s1,Mage:) $s2(%s2,%m) %display $s1(%s1,Levels for) $s2(%s2,$int($calc(%combat +1))) $+ $s1(%s1,:) $& $s1(%s1,Attack) $s2(%s2,$ceil($calc((%cmb)/( 1 / 3 )))) $& $s1(%s1,Strength) $s2(%s2,$ceil($calc((%cmb) / ( 1 / 3 )))) $& $s1(%s1,Defence) $s2(%s2,$ceil($calc((%cmb) / ( 1 / 4 )))) $& $s1(%s1,HitPoints) $s2(%s2,$ceil($calc((%cmb) / ( 1 / 4 )))) $& $s1(%s1,Prayer) $s2(%s2,$ceil($calc((%cmb) / ( 1 / 8 )))) goto done } if (!%skill) goto done if ($hget(%hash,%skill) == -1) { %display $s1(%s1,The user) $s2(%s2,%user) $s1(%s1,does not feature in the) $s2(%s2,%skill) $s1(%s1,hiscores) if ($hget(%hash)) .hfree %hash halt } else { tokenize 32 $hget(%hash,%skill) if (%target < $2) var %target = $calc($2 + 1) var %xp = $iif($2 >= 99,$calc(200000000 - $3),$calc($exp(%target) - $3)) %display $s1(%s1,Skill:) $s2(%s2,%skill) $s1(%s1,User:) $s2(%s2,%user) %display $s1(%s1,Rank:) $s2(%s2,$bytes($1,b)) $s1(%s1,Level:) $s2(%s2,$bytes($2,b)) $s1(%s1,Exp:) $s2(%s2,$bytes($3,b)) $& $iif(%skill != overall,$s1(%s1,Exp to lvl) $s2(%s2,%target) $+ $s1(%s1,:) $s2(%s2,$bytes(%xp,b))) var %x = 1,%b = 0 while ($ini(Skills.ini,%skill,%x)) { var %item = $ini(Skills.ini,%skill,%x) var %exp = $ceil($calc(%xp / $readini(Skills.ini,%skill,%item))) var %string = %string $s1(%s1,%item) $s2(%s2,$bytes(%exp,b)) inc %b if (%b >= 15) { %display %string %b = 0 unset %string } inc %x } if (%string) %display %string } :done if ($hget(%hash)) hfree %hash } alias add { if (!$skills($1)) halt var %skill = $skills($1) var %x = 1 while ($token($2-,%x,44)) { var %section = $token($2-,%x,44) var %exp = $token(%section,$token(%section,0,32),32) var %item = $token(%section,$+(1-,$calc($token(%section,0,32) -1)),32) writeini -n Skills.ini %skill $replace(%item,$chr(32),-) %exp inc %x } } alias rems { if (!$skills($1)) halt var %skill = $skills($1) remini Skills.ini %skill $replace($2-,$chr(32),-) } alias list { if (!$skills($1)) halt var %x = 1 while ($ini(Skills.ini,$skills($1),%x)) { echo -a $ini(Skills.ini,$skills($1),%x) -- $readini(Skills.ini,$skills($1),$ini(Skills.ini,$skills($1),%x)) inc %x } } alias skills { if ($1 == 0) || ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall elseif ($1 == 1) || ($regex($1,/^at(t|t?k|tack)$/Si)) return Attack elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?$/Si)) return Defence elseif ($1 == 3) || ($regex($1,/^str(eng[th][th])?$/Si)) return Strength elseif ($1 == 4) || ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints elseif ($1 == 5) || ($regex($1,/^range?(r|d|ing)?$/Si)) return Ranged elseif ($1 == 6) || ($regex($1,/^Pray(er)?$/Si)) return Prayer elseif ($1 == 7) || ($regex($1,/^mag(e|ic)$/Si)) return Magic elseif ($1 == 8) || ($regex($1,/^cook(ing)?$/Si)) return Cooking elseif ($1 == 9) || ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting elseif ($1 == 10) || ($regex($1,/^fletch(ing)?$/Si)) return Fletching elseif ($1 == 11) || ($regex($1,/^fish(ing)?$/Si)) return Fishing elseif ($1 == 12) || ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking elseif ($1 == 13) || ($regex($1,/^craft(ing)?$/Si)) return Crafting elseif ($1 == 14) || ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing elseif ($1 == 15) || ($regex($1,/^mine?(ing)?$/Si)) return Mining elseif ($1 == 16) || ($regex($1,/^herb(law|lore)?$/Si)) return Herblore elseif ($1 == 17) || ($regex($1,/^agil?(ity)?$/Si)) return Agility elseif ($1 == 18) || ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving elseif ($1 == 19) || ($regex($1,/^slay(er|ing)?$/Si)) return Slayer elseif ($1 == 20) || ($regex($1,/^farm(er|ing)?$/Si)) return Farming elseif ($1 == 21) || ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft elseif ($1 == 23) || ($regex($1,/^poh|cons?(truct)?(ion|ing)?|carp(entry)?$/si)) return Construction elseif ($1 == 22) || ($regex($1,/^hunt(er|ing)?$/Si)) return Hunter elseif ($regex($1,/^stats?$/Si)) return stats elseif ($regex($1,/^(set|def)(rsn|name)$/Si)) return Defname elseif ($regex($1,/^co?mba?t?$/Si)) return Combat } alias nohtml return $regsubex($1-,/<[^>]+>|&[^;]+;/g,) alias exp { var %x = 1, %level = $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 s1 { if ($1 isnum 0-15) && ($2) return $+(,$iif($len($1) < 2,0) $+ $1,$2-,) elseif (!$1) return $+($( $+ %color1,2),$2-,) else return $+($( $+ %color1,2),$1-,) } alias s2 { if ($1 isnum 0-15) && ($2) return $+(,$iif($len($1) < 2,0) $+ $1,$2-,) elseif (!$1) && ($2) return $+($( $+ %color2,2),$2-,) else return $+($( $+ %color2,2),$1-,) } alias rsnfind { var %x = 1,%s,%t while ($ini(RSNs.ini,%x)) { %s = $v1 if ($1 iswm $readini(RSNs.ini,%s,rsn)) %t = %t $+ , $v2 inc %x } return $iif($mid(%t,2),$v1,$remove($1,$chr(42))) }