rendered paste bodyon $*:TEXT:/^[!@.]pc .*/Si:#:{
if ($chan == #RSPC) halt
var %x 1
while ($sock($+(pc.,%x))) inc %x
if (!$cmbskill($2)) {
.notice $nick $pc1(Please specify a combat skill.)
halt
}
if (#* iswm $3) && ($right($3,-1) isnum) {
set $+(%,pc.goal.,%x) $right($3,-1)
tokenize 32 $1-2 $iif($4-,$4-)
}
set $+(%,pc.target.,%x) $iif(@* iswm $1,.msg $chan,.notice $nick)
set $+(%,pc.skill.,%x) $cmbskill($2)
set $+(%,pc.user.,%x) $iif($3,$replace($3-,$chr(32),_),$iif($readini(DefRSN.ini,RSNs,$mask($fulladdress,3)),$ifmatch,$iif($readini(DefRSN.ini,RSNs,$nick),$ifmatch,$nick)))
sockopen $+(pc.,%x) o-ss.net 80
}
on *:SOCKOPEN:pc.*:{
sockwrite -nt $sockname GET /parsers/stats.php?user= $+ $($+(%,pc.user.,$gettok($sockname,2,46)),2) HTTP/1.1
sockwrite -nt $sockname Host: o-ss.net $+ $crlf $+ $crlf
}
on *:SOCKREAD:pc.*:{
var %x = $gettok($sockname,2,46), %target = $($+(%,pc.target.,%x),2), %skill = $($+(%,pc.skill.,%x),2), %user = $($+(%,pc.user.,%x),2), %goal = $($+(%,pc.goal.,%x),2)
if ($sockerr) {
%target $pc1(*** Socket error:) $pc2($sock($sockname).wsmsg)
halt
}
else {
var %read
sockread %read
tokenize 32 %read
if (*feature* iswm $1-) {
%target $pc2(%user) $pc1(does not appear in the hiscores.)
halt
}
elseif ($1 == %skill) {
if ($2 == Not) {
%target $pc2(%user) $pc1(does not appear in the hiscores for) $pc2(%skill) $+ $pc1(.)
halt
}
else {
%target $pc2(Single) $pc1(points required by) $pc2(%user) $pc1(for) $pc2($iif(%goal,%goal,$calc($3 + 1)) %skill) $+ $pc1(:) $pc2($bytes($ceil($calc(($experience($iif(%goal,%goal,$calc($3 + 1))) - $remove($4,$chr(44))) / (($3 ^ 2) / $iif(%skill == Prayer,12,6)))),b))
halt
}
}
}
}
on *:SOCKCLOSE:pc.*:{
unset $+(%,pc.*.,$gettok($sockname,2,46))
}
alias -l pc1 { return $+(14,$1-,) }
alias -l pc2 { return $+(07,$1-,) }
alias -l cmbskill {
if ($regex($1,/^at(t|k|tack)$/Si)) return Attack
elseif ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
elseif ($regex($1,/^str(ength)?$/Si)) return Strength
elseif ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints
elseif ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged
elseif ($regex($1,/^Pray(er)?$$/Si)) return Prayer
elseif ($regex($1,/^mag(e|ic)$$/Si)) return Magic
}
alias experience {
var %outputnum = 0, %points = 0, %lvl = 1
while (%lvl < $$1) {
var %points = $int($calc(%points + %lvl + 300 * 2 ^ (%lvl / 7.0))), %outputnum = $int($calc(%points / 4))
inc %lvl 1
}
return $int(%outputnum)
}