rendered paste bodyalias c1 { return $+(4,$1-) }
alias c2 { return $+(3,$1-) }
on *:text:*:#: {
tokenize 32 $strip($1-)
if ($left($1,1) !isin @!.) halt
elseif ($regex($1,/(pest|pc)/Si)) var %style = pest
else halt
inc %ID
if ($len($2-) > 12) {
$($+(%,stats.display.,%ID),2) $c1(The nick) $c2($2-) $c1(is too long)
cleanup %ID
halt
}
elseif ($2) set $+(%,stats.rsn.,%ID) $replace($2-,$chr(32),-)
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,stats.rsn.,%ID) $ifmatch
else set $+(%,stats.rsn.,%ID) $nick
set $+(%,stats.style.,%ID) %style
set $+(%,stats.skill.,%ID) %skill
set $+(%,stats.display.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
sockopen $+(stats.,%ID) hiscore.runescape.com 80
}
on *:sockopen:stats.*: {
var %id = $gettok($sockname,2,46)
sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,stats.rsn.,%ID),2) HTTP/1.1
sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf
}
on *:sockread:stats.*: {
sockread &Incoming
bwrite $sockname -1 -1 &Incoming
if ($bfind(&Incoming, 1, </html>).text) makehash $sockname
elseif ($bfind(&Incoming, 1, does not feature in the hiscores.).text) {
$($+(%,stats.display.,%ID),2) $c1(The nick) $c2($($+(%,stats.rsn.,%ID),2)) $c1(Does not appear in the hiscores)
cleanup $gettok($sockname,2,46)
}
}
alias -l makehash {
var %file = $1
bread %file 1 $file(%file).size &stats
var %currentstat, %x = 1
while (%x) {
var %x = $bfind(&stats,$calc(%x + 1),<a href="overall.ws?table=)
var %currentstat = $striptags($bvar(&stats,%x,200).text)
tokenize 10 %currentstat
hadd -m %file $1 $2 $3 $4 $xp2next($3,$4)
}
process %file
}
alias process {
var %table = $1, %id = $gettok($1,2,46), %x = 0, $&
%display = $($+(%,stats.display.,%ID),2), $&
%rsn = $($+(%,stats.rsn.,%ID),2), $&
%skill = $($+(%,stats.skill.,%ID),2), $&
%style = $($+(%,stats.style.,%ID),2)
if (%style == pest) {
var %a = $iif($gettok($hget(%table,attack),2,32),$v1,-), $&
%s = $iif($gettok($hget(%table,strength),2,32),$v1,-), $&
%d = $iif($gettok($hget(%table,defence),2,32),$v1,-), $&
%h = $iif($gettok($hget(%table,hitpoints),2,32),$v1,-), $&
%r = $iif($gettok($hget(%table,ranged),2,32),$v1,-), $&
%m = $iif($gettok($hget(%table,magic),2,32),$v1,-), $&
%p = $iif($gettok($hget(%table,prayer),2,32),$v1,-)
var %apc = $ceil($calc(%a * %a / 6 - 1)), $&
%spc = $ceil($calc(%s * %s / 6 - 1)), %hpc = $ceil($calc(%h * %h / 6 - 1)), $&
%dpc = $ceil($calc(%d * %d / 6 - 1)), %mpc = $ceil($calc(%m * %m / 6 - 1)), $&
%rpc = $ceil($calc(%r * %r / 6 - 1)), %ppc = $ceil($calc(%p * %p / 12 - 1)), $&
var %attack = $iif($gettok($hget(%table,attack),3,32),$v1,-), %defence = $iif($gettok($hget(%table,defence),3,32),$v1,-) $&
%strength = $iif($gettok($hget(%table,strength),3,32),$v1,-), %magic = $iif($gettok($hget(%table,Magic),3,32),$v1,-) $&
%range = $iif($gettok($hget(%table,range),3,32),$v1,-), %prayer = $iif($gettok($hget(%table,prayer),3,32),$v1,-) $&
%HP = $iif($gettok($hget(%table,hitpoints),3,32),$v1,-)
var %attack = $remove(%attack,$chr(44)), %strength = $remove(%strength,$chr(44)), $&
%range = $remove(%range,$chr(44)), %defence = $remove(%defence,$chr(44)), $&
%magic = $remove(%magic,$chr(44)), %prayer = $remove(%prayer,$chr(44)), $&
%HP = $remove(%HP,$chr(44))
var %pestatt = $ceil($calc(%apc / ($xp($calc(%attack + 1)) - %attack)))
tokenize 32 $hget(%table,%skill)
%display $c2(Pest Control) $c1(points required for) $c2(%rsn) $+ $c1(:)
%display $c1(Attack:) $c2(%pestatt) $c1($chr(40)) $+ $c2(%apc) $c1(xp/point) $+ $c1($chr(41)) $c1(Defence:) $c2(%pestdef) $c1($chr(40)) $+ $c2(%dpc) $c1(xp/point) $+ $c1($chr(41)) $&
$c1(Strenth:) $c2(%peststr) $c1($chr(40)) $+ $c2(%spc) $c1(xp/point) $+ $c1($chr(41)) $c1(Hitpoints:) $c2(%pesthp) $c1($chr(40)) $+ $c2(%hpc) $c1(xp/point) $+ $c1($chr(41)) $&
$c1(Range:) $c2(%pestr) $c1($chr(40)) $+ $c2(%rpc) $c1(xp/point) $+ $c1($chr(41)) $c1(Magic:) $c2(%pestmag) $c1($chr(40)) $+ $c2(%mpc) $c1(xp/point) $+ $c1($chr(41)) $&
$c1(Prayer:) $c2(%pestpray) $c1($chr(40)) $+ $c2(%ppc) $c1(xp/point) $+ $c1($chr(41))
}
cleanup %id
}
alias -l cleanup {
unset $+(%,stats.*.,$1)
sockclose $+(Stats.,$1)
.remove $+(Stats.,$1)
}
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 xp2Next {
var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1))
return $calc(%nextxp - %xp)
}