rendered paste bodyalias -l c1 { return $+($chr(3),06,$1-) }
alias -l c2 { return $+($chr(3),04,$1-) }
alias -l c3 { return $+($chr(3),07,$1-) }
on *:TEXT:*:*: {
if ($left($strip($1),1) !isin @!.) || ($regex($strip($1),/(=|[^<]*>|<[^>]*>|<[^>]|[0-9]|$chr(95))/Si)) { halt }
if ($right($1,-1) == defname) && ($2-) && ($len($2-) <= 12) {
writeini DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),-)
notice $nick $c1(your nickname for the adress) $c2($mask($fulladdress,3)) $c1(has been set to) $c2($2-)
halt
}
if ($right($strip($1),-1) == stats) {
inc %ID 1
set $+(%,rs.style.,%ID) stats
if ($len($2-) > 12) { $iif($left($1,1) == @,msg $chan,notice $nick) $c1(The nickname) $c2($2-) $c1(is too long) | halt }
elseif ($2-) set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95))
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
else set $+(%,rs.rsn.,%ID) $nick
set $+(%,rs.return.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
elseif ($regex($strip($1),/co?mb(at)?/Si)) {
inc %ID 1
set $+(%,rs.style.,%ID) combat
if ($len($2-) > 12) { $iif($left($1,1) == @,msg $chan,notice $nick) $c1(The nickname) $c2($2-) $c1(is too long) | halt }
elseif ($2-) set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95))
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
else set $+(%,rs.rsn.,%ID) $nick
set $+(%,rs.return.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
elseif ($right($strip($1),-1) == pest) {
inc %ID 1
if (!$4) && ($len($3-) > 12) || ($3 isnum) && ($len($4-) > 12) { $iif($left($1,1) == @,msg $chan,notice $nick) $c1(The nickname) $c2($3-) $c1(is too long) | halt }
elseif ($pcskill($strip($2))) && ($3 !isnum) { set $+(%,rs.rsn.,%ID) $replace($3-,$chr(32),$chr(95)) }
elseif ($4-) && ($3 isnum 1-99) { set $+(%,rs.rsn.,%ID) $replace($4-,$chr(32),$chr(95)) }
elseif (!$pcskill($strip($2))) && ($len($2-) <= 12) { set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95)) }
if ($($+(%,rs.rsn.,%ID),2) == $null) {
if ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
else set $+(%,rs.rsn.,%ID) $nick
}
if ($pcskill($strip($2))) set $+(%,rs.skill.,%ID) $pcskill($strip($2))
if ($3 isnum 1-99) set $+(%,rs.level.,%ID) $3
set $+(%,rs.style.,%ID) pest
set $+(%,rs.return.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
elseif ($setskill($remove($strip($1),@,!,.))) {
inc %ID 1
if ($len($3-) > 12) || (!$3) && ($len($2-) > 12) { $iif($left($1,1) == @,msg $chan,notice $nick) $c1(The nickname) $c2($3-) $c1(is too long) | halt }
elseif ($2 isnum) {
set $+(%,rs.level.,%ID) $2
if ($3) set $+(%,rs.rsn.,%ID) $replace($3-,$chr(32),$chr(95))
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
else set $+(%,rs.rsn.,%ID) $nick
}
else {
if ($2) set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95))
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
else set $+(%,rs.rsn.,%ID) $nick
}
set $+(%,rs.style.,%ID) single
set $+(%,rs.skill.,%ID) $setskill($remove($strip($1),@,!,.))
set $+(%,rs.return.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
else halt
}
on *:SOCKOPEN:rsh.*:{
var %ID = $gettok($sockname,2,46)
sockwrite -nt $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,rs.rsn.,%ID),2) HTTP/1.0
sockwrite -nt $sockname Host: hiscore.runescape.com $+ $str($crlf,2)
}
on *:SOCKREAD:rsh.*:{
var %ID = $gettok($sockname,2,46)
if ($sockerr) { echo -a Error. | halt }
var %ID = $gettok($sockname,2,46), $&
%style = $($+(%,rs.style.,%ID),2), $&
%target = $($+(%,rs.rsn.,%ID),2), $&
%display = $($+(%,rs.return.,%ID),2), $&
%skill = $($+(%,rs.skill.,%ID),2), $&
%level = $($+(%,rs.level.,%ID),2)
sockread &source
bwrite $sockname -1 -1 &source
if ($bfind(&source,1,does not feature in the hiscores).text) { %display $c1(The nickname:) $c2(%target) $c1(did not feature in runescape highscores for any skill!) | sockclose $sockname | halt }
bread $sockname 1 $file($sockname).size $+(&,$sockname)
var %stat, %x = 1
while (%x) {
var %x = $bfind($+(&,$sockname),$calc(%x + 1),<a href="overall.ws?table=).text, %stat = $htmlfree($bvar($+(&,$sockname),%x,200).text)
tokenize 10 %stat
/hadd -m $sockname $1 $2 $3 $4 $xp2next($3,$4)
}
if ($hget($sockname,construction)) {
if (%style == stats) {
var %y = 0
while (%y <= 23) {
tokenize 32 $hget($sockname,$setskill(%y))
if ($2) var %file = %file $c1($setskill(%y)) $c2($2)
inc %y
}
%display $c1(Stats for) $c2(%target) $+ $c1(:)
%display %file
%display %logo
hfree -s $sockname
sockclose $sockname
unset $+(%,rs.*)
}
if (%style == pest) {
if (!%skill) {
var %y = 1
while (%y <= 7) {
tokenize 32 $hget($sockname,$pcskill(%y))
var %file = %file $iif($strip($2) == 99,$c1($pcskill(%y)) $c1($chr(40)) $+ $c2($2) $+ $c1($chr(41)),$c1($pcskill(%y)) $c1($chr(40)) $+ $c2($2) $c3(-) $c2($calc($2 + 1)) $+ $c1($chr(41)) $c2($bytes($ceil($calc(($calc(($xp($calc($2 + 1))) - ($remove($3,$chr(44))))) / ($ceil($calc($calc($2 + 1) * $calc($2 + 1) / $iif(%skill == prayer,12,6)))))),b))) $c3($iif(%y == 7,$null,$chr(124)))
inc %y
}
%display $c1(Single Pestcontrol points needed for) $c2(%target) $c1(to level:)
%display %file
%display %logo
hfree -s $sockname
sockclose $sockname
unset $+(%,rs.*)
return $sockname
}
if (!$hget($sockname,%skill)) { %display $c2(%target) $c1(did not feature in higscores for) $c2(%skill) | sockclose $sockname | halt }
if (!%level) {
tokenize 32 $hget($sockname,%skill)
%display $c2(%target) $c1(need) $c2($bytes($ceil($calc(($calc(($xp($calc($2 + 1))) - ($remove($3,$chr(44))))) / ($ceil($calc($calc($2 + 1) * $calc($2 + 1) / $iif(%skill == prayer,12,6)))))),b)) $c1(pestcontrol points for level) $c2($calc($2 + 1)) $c1(%skill)
%display %logo
hfree -s $sockname
sockclose $sockname
unset $+(%,rs.*)
}
else {
tokenize 32 $hget($sockname,%skill)
%display $c2(%target) $c1(need) $c2($bytes($ceil($calc(($calc(($xp(%level)) - ($remove($3,$chr(44))))) / ($ceil($calc(%level * %level / $iif(%skill == prayer,12,6)))))),b)) $c1(pestcontrol points for level) $c2(%level) $c1(%skill)
%display %logo
hfree -s $sockname
sockclose $sockname
unset $+(%,rs.*)
}
}
if (%style == single) {
if (!$hget($sockname,%skill)) { %display $c2(%target) $c1(did not feature in higscores for) $c2(%skill) | sockclose $sockname | halt }
tokenize 32 $hget($sockname,%skill)
if (!%level) var %level = $calc($2 + 1)
var %x = 1
while ($ini(statcalc.ini,%skill,%x)) {
set $+(%,rs.item.,%x) $c1($replace($v1,$chr(95),$chr(32))) $+ s: $c2(( $+ $comma($floor($calc($calc($remove($readini(statcalc.ini,level,%level),$chr(44)) - $remove($3,$chr(44))) / $calc($readini(StatCalc.ini,%skill,$v1) + 1))))) $+ ) $+ )
inc %x
}
if (%level isnum 1-99) && (%skill != overall) { var %xp2next $c1(Exp for) $c2($strip(%level)) $c1(%skill $+ :) $c2($comma($calc($remove($readini(statcalc.ini,level,$strip(%level)),$chr(44)) - $remove($3,$chr(44))))) }
elseif ($2 != 99) && (%skill != overall) { var %xp2next $c1(Exp for) $c2($calc($2 + 1)) $c1(%skill $+ :) $c2($comma($4)) }
%display $c2(%skill) $c1(Stats for) $c2(%target)
%display $c1(Level:) $c2($2) $c1(Rank:) $c2($1) $c1(Exp:) $c2($3) %xp2next
if ($2 != 99) && (%skill != overall) { %display $c1(Items for) $c2($iif(%level isnum 1-99,%level,$calc($2 + 1))) $c1(%skill) - $($+(%,rs.item.,1),2) $($+(%,rs.item.,2),2) $($+(%,rs.item.,3),2) $($+(%,rs.item.,4),2) $($+(%,rs.item.,5),2) }
%display %logo
hfree -s $sockname
sockclose $sockname
unset $+(%,rs.*)
}
if (%style == combat) {
var %att = $gettok($hget($sockname,attack),2,32), %def = $gettok($hget($sockname,defence),2,32), $&
%str = $gettok($hget($sockname,strength),2,32), %hp = $gettok($hget($sockname,hitpoints),2,32), $&
%rng = $gettok($hget($sockname,ranged),2,32), %pray = $gettok($hget($sockname,prayer),2,32), $&
%magic = $gettok($hget($sockname,magic),2,32)
var %combat = $cmb(%att,%def,%str,%hp,%rng,%pray,%magic)
var %temp = $abs($calc($int($calc($gettok(%combat,1,32) +1)) - $gettok(%combat,1,32))), $&
%a.lvl = $ceil($calc(%temp / .32707)), %s.lvl = $ceil($calc(%temp / .324)), $&
%d.lvl = $ceil($calc(%temp / .25)), $&
%m.lvl = $ceil($calc(%temp / .487)), $&
%r.lvl = $ceil($calc(%temp / .487)), $&
%p.lvl = $ceil($calc(%temp / .124))
if ($gettok(%combat,2,32) == Magic Based) var %lvl.base = Magic: %m.lvl
elseif ($gettok(%combat,2,32) == Ranged Based) var %lvl.base = Ranged: %r.lvl
else var %lvl.base = $c1(Att:) $c2(%a.lvl) $c1(Str:) $c2(%s.lvl)
%display $c2(%target) $c1(is level) $c2(%combat)
%display $c1(Att:) $c2(%att) $c1(Def:) $c2(%def) $c1(Str:) $c2(%str) $c1(hp:) $c2(%Hp) $c1(Range:) $c2(%rng) $c1(Pray:) $c2(%pray) $c1(Magic:) $c2(%magic)
if ($floor(%combat) != 126) %display $c1(Levels for) $c2($floor($calc($gettok(%combat,1,32) +1))) $+ $c1(:) %lvl.base $c1(def/hp:) $c2(%d.lvl) $c1(Prayer:) $c2(%p.lvl)
else %display $c2(%target) $c1(has reached the maximum combat level in) $c2(Runescape!)
%display %logo
hfree -s $sockname
sockclose $sockname
unset $+(%,rs.*)
}
}
}
alias -l cmb {
var %a = $calc($2 * 100), %b = $calc($4 * 100), %c = $calc($6 * 50)
var %base = $calc($calc(%a + %b + %c) / 400), %d = $calc($1 * 130), %e = $calc($3 * 130)
if ($and($5,1) == 0) var %f = $calc($calc($calc($5 - 1) + $calc($5 * 2)) * 65)
elseif ($and($5,1) == 1) var %f = $calc($5 * 195)
if ($and($7,1) == 0) var %g = $calc($calc($calc($7 - 1) + $calc($7 * 2)) * 65)
elseif ($and($7,1) == 1) var %g = $calc($7 * 195)
var %mcombat = $calc($calc(%d + %e) / 400), %rcombat = $calc(%f / 400), %macombat = $calc(%g / 400)
if (%mcombat > %rcombat) && (%mcombat > %macombat) { return $calc(%mcombat + %base) Melee Based }
elseif (%rcombat > %mcombat) && (%rcombat > %macombat) { return $calc(%rcombat + %base) Ranged Based }
elseif (%macombat > %mcombat) && (%macombat > %rcombat) { return $calc(%macombat + %base) Magic Based }
}
Alias -l comma { Var %a, %b = $regsub($ticks,$$1,/\G([+-]?\d+?)(?=(?:\d{3})++(?=\.\d++$|$))/g,\1 $+ $chr(44),%a) | Return %a }
alias -l xp2Next { var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1)) | return $calc(%nextxp - %xp) }
alias -l 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 -l setskill {
if ($1 == 0) || ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall
elseif ($1 == 1) || ($regex($1,/^at(t|k|tack)$/Si)) return Attack
elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
elseif ($1 == 3) || ($regex($1,/^str(ength)?$/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 == 22) || ($regex($1,/^(hunt)(er|ing)?$/si)) return Hunter
elseif ($1 == 23) || ($regex($1,/^(con)(struc?tion)?$/si)) return Construction
}
alias -l pcskill {
if ($1 == 0) || ($regex($1,/^over(all)?/Si)) return Overall
elseif ($1 == 1) || ($regex($1,/^at(t|k|tack)?/Si)) return Attack
elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?/Si)) return Defence
elseif ($1 == 3) || ($regex($1,/^hp|hit(s|points?)?/Si)) return Hitpoints
elseif ($1 == 4) || ($regex($1,/^range(r|d|ing)?/Si)) return Ranged
elseif ($1 == 5) || ($regex($1,/^Pray(er)?/Si)) return Prayer
elseif ($1 == 6) || ($regex($1,/^mag(e|ic)?/Si)) return Magic
elseif ($1 == 7) || ($regex($1,/^str(ength)?/Si)) return Strength
}