on $*: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) }