alias c1 { return $+(,$1-) } alias c2 { return $+(,$1-) } on *:text:*:#: { if ($left($1,1) !isin @!.) || (!$setskill($remove($1,@,!,.))) halt inc %ID set $+(%,stats.display.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick) if ($len($2-) > 12) { $($+(%,stats.display.,%ID),2) $c1(The nick) $c2($2-) $c1(is too long) | cleanup %ID } elseif (!$2) { $+(%,stats.display.,%ID),2) $c1(No nick specified) | cleanup %ID } else { set $+(%,stats.rsn.,%ID) $replace($2-,$chr(32),-,+,-) set $+(%,stats.skill.,%ID) $setskill($remove($1,@,!,.)) sockopen $+(stats.,%ID) spaldox.com 80 } } on *:sockopen:stats.*: { var %id = $gettok($sockname,2,46) sockwrite -n $sockname GET /statbots/BotStats.php?user= $+ $($+(%,stats.rsn.,%ID),2) HTTP/1.0 sockwrite -n $sockname Host: spaldox.com $+ $crlf $+ $crlf } on *:sockread:stats.*: { var -s %ID = $gettok($sockname,2,46), $& %stats.rsn = $($+(%,stats.rsn.,%ID),2), $& %stats.skill = $($+(%,stats.skill.,%ID),2), $& %stats.display = $($+(%,stats.display.,%ID),2) if ($sockerr > 0) { $($+(%,stats.display.,%ID),2) $c1(Socket error - try again later) | cleanup %ID } var %t sockread %t tokenize 32 %t if ($replace($1,$chr(32),+) == $+(%stats.rsn,:)) { if (NIH == $gettok($1-,2,58) ) { %stats.display $c1(The nick) $c2(%stats.rsn) $c1(does not appear in the hi-scores) cleanup %ID } elseif ($2 == %stats.skill) { %stats.display $c2(%stats.skill) $c1(stats for) $c2(%stats.rsn) $+ $c1(:) %stats.display $c1(Rank:) $c2($3) $c1(Level:) $c2($bytes($4,b)) $c1(Exp:) $c2($5) cleanup %ID } } } alias cleanup { unset $+(%,stats.*.,$1) sockclose $+(Stats.,$1) } alias setskill { if ($regex($1,/(st|(skill)?total|overall)^/Si)) return Overall elseif ($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 elseif ($regex($1,/cook(ing)?/Si)) return Cooking elseif ($regex($1,/wc|wood(cut(ting)?)?/Si)) return Woodcutting elseif ($regex($1,/fletch(ing)?/Si)) return Fletching elseif ($regex($1,/fish(ing)?/Si)) return Fishing elseif ($regex($1,/(fire|fm)(make?(ing)?|ing)?/Si)) return Firemaking elseif ($regex($1,/craft(ing)?/Si)) return Crafting elseif ($regex($1,/(smith|smelt)(ing)?/Si)) return Smithing elseif ($regex($1,/min(e|e?ing)?/Si)) return Mining elseif ($regex($1,/herb(law|lore)?/Si)) return Herblore elseif ($regex($1,/agil(ity)?/Si)) return Agility elseif ($regex($1,/(th(ei|ie)[fv](e|ing)?)/Si)) return Thieving elseif ($regex($1,/slay(er|ing)?/Si)) return Slayer elseif ($regex($1,/farm(er|ing)?/Si)) return Farming elseif ($regex($1,/(rc|runecraft)(er|ing)?/Si)) return Runecraft }