on *:TEXT:~lookup*:#: { if ($adrcheck($nick) == %kvn.address) { if ($2 == on) { enable #stats msg $chan Stat Scripts Enabled $logo } elseif ($2 == off) { disable #stats msg $chan Stat Scripts Disabled $logo } } } #stats on alias c1 { if $cchan($chan) { return $1- } else { return $+(5,$1-) } } alias c2 { if $cchan($chan) { return $+(,$1-,) } else { return $+(10,$1-) } } alias c3 { if $cchan($chan) { return $+(,$1-,) } else { return $+(10,$1-,) } } on *:text:*:*: { tokenize 32 $strip($1-) if ($left($1,1) !isin ~) halt if (%lookup.flood == $true) { if (%lookup.time == 1) { .notice $nick $botlogo has just been used. Please wait %lookup.time second. } else { .notice $nick $botlogo has just been used. Please wait %lookup.time seconds. } halt } if (($right($1,-1) == stats) || ($right($1,-2) == stats)) var %style = astats elseif ($regex($1,/co?mb(at)?/Si)) var %style = combat elseif ($setskill($remove($1,~))) var %style = istat, %skill = $setskill($1) elseif ($regex($1,/^~p?p(est|c)?/Si)) && ($1 != ~pcalc) && ($1 != ~pvk) var %style = pc elseif ($regex($1,/^~p?vk|voidknight/Si)) var %style = vk elseif $regex($1,/^~(set|def)(rsn|name)/Si) && ($2) { if ($2 == -n) && ($3) { writeini DefRSN.ini RSNs $nick $replace($2-,$chr(32),-) .notice $nick $botlogo $c1(Your default RSN for the nick) $c2($nick) $c1(has been set to) $c2($2-) } else { writeini DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),$chr(95)) .notice $nick $botlogo $c1(Your default RSN for the host) $c2($mask($fulladdress,3)) $c1(has been set to) $c2($2-) } halt } else halt inc %ID if (%style == vk) { if $setskill($2) { %vk.skill = $setskill($2) var %nick.len = $3- if ($3) { set $+(%,stats.rsn.,%ID) $replace($3-,$chr(32),$chr(95)) } elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) { set $+(%,stats.rsn.,%ID) $ifmatch } elseif ($readini(DefRSN.ini,RSNs,$nick)) { set $+(%,stats.rsn.,%ID) $ifmatch } else { set $+(%,stats.rsn.,%ID) $nick } } elseif $setskill($3) && ($left($2,-2) == -t) { %vk.skill = $setskill($3) %goal.level = $2 var %nick.len = $4- if ($4) { set $+(%,stats.rsn.,%ID) $replace($4-,$chr(32),$chr(95)) } elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) { set $+(%,stats.rsn.,%ID) $ifmatch } elseif ($readini(DefRSN.ini,RSNs,$nick)) { set $+(%,stats.rsn.,%ID) $ifmatch } else { set $+(%,stats.rsn.,%ID) $nick } } else { %display $botlogo $c1(You must specify a Skill. Syntax is:) $c2(~vk [-tlevel] <Skill> [RSN]) halt } goto skip } if (($left($2,-2) == -t) && ($1 != ~stats)) var %nick.len = $3 else var %nick.len = $2 :skip if ($len(%nick.len) > 12) { $($+(%,stats.display.,%ID),2) .notice $nick $botlogo $c1(The nick) $c3(%nick.len) $c1(is too long) cleanup %ID halt } elseif (%style == vk) { goto skip2 } elseif ($2) && ($left($2,-2) != -t) { set $+(%,stats.rsn.,%ID) $replace($2-,$chr(32),$chr(95)) } elseif ($3) && ($left($2,-2) == -t) { set $+(%,stats.rsn.,%ID) $replace($3-,$chr(32),$chr(95)) set %t $2 } elseif ($left($2,-2) == -t) || ($2 == -t100) { if ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,stats.rsn.,%ID) $ifmatch else set $+(%,stats.rsn.,%ID) $nick set %t $2 } elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,stats.rsn.,%ID) $ifmatch else set $+(%,stats.rsn.,%ID) $nick :skip2 set $+(%,stats.style.,%ID) %style set $+(%,stats.skill.,%ID) %skill set $+(%,stats.display.,%ID) $iif((($nick isop $chan) || ($adrcheck($nick) == %kvn.address)) && (($left($1,2) == ~p) && ($1 != ~pray) && ($1 != ~prayer) && ($1 != ~pest) && ($1 != ~pc)),msg $chan,.notice $nick) set %stats.chan $chan set %stats.nick $nick sockopen $+(stats.,%ID) hiscore.runescape.com 80 set -u2 %lookup.flood $true set -z %lookup.time 2 } on *:sockopen:stats.*: { var %id = $gettok($sockname,2,46) sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,stats.rsn.,%ID),2) HTTP/1.1 sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf } on *:sockread:stats.*: { sockread &Incoming bwrite $sockname -1 -1 &Incoming if ($bfind(&Incoming, 1, ).text) makehash $sockname elseif ($bfind(&Incoming, 1, does not feature in the hiscores.).text) && ($($+(%,stats.style.,%ID),2) != vk) { $($+(%,stats.display.,%ID),2) $botlogo $c1(The nick) $c3($($+(%,stats.rsn.,%ID),2)) $c1(does not appear in the hiscores) cleanup $gettok($sockname,2,46) } } alias -l makehash { var %file = $1 bread %file 1 $file(%file).size &stats var %currentstat, %x = 1 while (%x) { var %x = $bfind(&stats,$calc(%x + 1),