on *: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,/([^]+)/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)) }