rendered paste bodyon *:text:*:#yoinx: {
tokenize 32 $strip($1-)
if ($1 == !setrsn) {
writeini rsn.ini users $nick $left($2-,12)
notice $nick Set your rsn to $left($2-,12)
}
var %abilities = Overall Attack Defence Strength Hitpoints Ranged Prayer Magic Cooking Woodcutting Fletching Fishing Firemaking Crafting Smithing Mining Herblore Agility Thieving Slayer Farming Runecraft Hunter Construction
if ($regex($1,/(!|@)stats/i)) {
set $+(%,stats.,$nick,.abilities) %abilities
if ($2) {
sockopen $+(rsstats.,$nick) hiscore.runescape.com 80
sockmark $+(rsstats.,$nick) $left($2-,12)
}
elseif ($readini(rsn.ini,users,$nick)) {
sockopen $+(rsstats.,$nick) hiscore.runescape.com 80
sockmark $+(rsstats.,$nick) $v1
}
else {
notice $nick You do not have an rsn stored. So you must specify your rsn using !setrsn rsn
}
}
if ($regex($1,/(!|@)( $+ $replace(%abilities,$chr(32),$chr(124)) $+ )\b/i)) {
inc %stats
if ($sock($+(rsability.,$nick))) {
notice $nick Sorry, You have a search going.
halt
}
set $+(%,ability.,$nick,.ability) $regml(2)
if ($2) {
sockopen $+(rsability.,$nick) hiscore.runescape.com 80
sockmark $+(rsability.,$nick) $left($2-,12)
}
elseif ($readini(rsn.ini,users,$nick)) {
sockopen $+(rsability.,$nick) hiscore.runescape.com 80
sockmark $+(rsability.,$nick) $v1
}
else {
notice $nick You do not have an rsn stored. So you must specify your rsn using !setrsn rsn
}
}
}
on *:sockopen:rsstats.*: {
var %username = $sock($sockname).mark
sockwrite -n $sockname GET $+(/lang/en/aff/runescape/hiscorepersonal.ws?user1=,%username) HTTP/1.1
sockwrite -n $sockname Host: $+(hiscore.runescape.com,$crlf,$crlf)
}
on *:sockread:rsstats.*: {
var %tmp, %tmp2
sockread -f %tmp
var %tmp = $htmlfree(%tmp)
if ($istok($($+(%,$sockname,.abilities),2),%tmp,32)) {
sockread -f %tmp2 | sockread -f %tmp2 | sockread -f %tmp2
var %tmp2 = $htmlfree(%tmp2)
$iif($($+(%,$sockname),2),set $+(%,$sockname) $($+(%,$sockname),2) $+(%tmp,:,$chr(32)) %tmp2 $chr(124), set $+(%,$sockname) $+(%tmp,:,$chr(32)) %tmp2 $chr(124))
}
}
on *:sockclose:rsstats.*: {
echo -a $gettok($sockname,2,46) $left($($+(%,$sockname),2),-2)
notice $gettok($sockname,2,46) $left($($+(%,$sockname),2),-2)
unset -w $+(%,$sockname,*)
sockclose $sockname
}
on *:sockopen:rsability.*: {
var %username = $sock($sockname).mark
sockwrite -n $sockname GET $+(/lang/en/aff/runescape/hiscorepersonal.ws?user1=,%username) HTTP/1.1
sockwrite -n $sockname Host: $+(hiscore.runescape.com,$crlf,$crlf)
}
on *:sockread:rsability.*: {
var %tmp, %rs.text
sockread -f %tmp
var %tmp = $htmlfree(%tmp)
if (%tmp = $($+(%,$sockname,.ability),2)) {
var %x = 2
while (%x <= 4) {
sockread %rs.text
if (align="right" isin %rs.text) {
noop $regex($+($sockname,%x),%rs.text,/<td align="right">([^</td>]+)/i)
inc %x
}
}
set $+(%,$sockname) $+(%tmp,:) Rank: $regml($+($sockname,2),1) Level: $regml($+($sockname,3),1) Xp: $regml($+($sockname,4),1)
}
}
on *:sockclose:rsability.*: {
var %info = $($+(%,$sockname),2)
notice $gettok($sockname,2,46) %info Xp To Next Level = $bytes($calc($rs.xpnextlevel($calc($gettok(%info,5,32) + 1)) - $remove($gettok(%info,7,32),$chr(44))),b)
unset -w $+(%,$sockname,*)
sockclose $sockname
}
alias -l htmlfree {
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&,$chr(9))
return %x
}
alias rs.xpnextlevel {
var %a = 0, %x = 1
while (%x < $1) {
%a = $calc(%a + $floor($calc(%x + 300 * (2^(%x / 7)))))
inc %x
}
return $floor($calc(%a / 4))
}