menu channel { Runescape Stats Kicker:/rsstatskicker } alias rsstats { dialog -ma rsstats rsstats } alias rsstatskicker { dialog -ma rsstatskicker rsstatskicker } dialog rsstatskicker { title "Runescape Stats Kicker" size -1 -1 195 161 option dbu tab "Channels/Requirements", 1, -3 -1 209 185 combo 2, 20 44 124 44, tab 1 size text "Settings: Channels and Requirements", 3, 21 26 122 8, tab 1 button "Add", 7, 22 99 37 12, tab 1 button "Remove", 8, 64 99 37 12, tab 1 button "Clear", 9, 108 99 37 12, tab 1 button "Clear Confirm", 10, 108 111 37 12, tab 1 tab "Nicks/Addresses", 11 combo 12, 20 52 80 50, tab 11 size text "Settings: Nicks/Address", 13, 21 26 79 8, tab 11 text "Nicks/Addresses below will not be kicked", 14, 21 34 79 8, tab 11 button "Add", 15, 109 52 37 12, tab 11 button "Remove", 16, 109 66 37 12, tab 11 button "Clear", 17, 109 80 37 12, tab 11 button "Clear Confirm", 18, 109 94 37 12, tab 11 tab "Cache", 19 text "Cache:", 21, 21 26 25 8, tab 19 text "A feature that saves if the nick meets the requirements for that channel. This will eliminate the need to retrieve the stats for the user every time they join.", 20, 21 34 119 29, tab 19 button "Clear Cache", 22, 21 67 37 12, tab 19 tab "Info/Settings", 4 text "Kick count:", 5, 37 28 28 8, tab 4 text "Users in #pestcontrol:", 23, 10 43 55 8, tab 4 text "Total voiced:", 24, 32 56 33 8, tab 4 edit "", 25, 71 27 50 10, disable tab 4 edit "", 26, 71 41 50 10, disable tab 4 edit "", 27, 71 54 50 10, disable tab 4 text "Highest amount of users:", 28, 5 77 62 8, tab 4 text "Lowest amount of users:", 29, 6 90 61 8, tab 4 edit "", 30, 71 75 50 10, disable tab 4 edit "", 31, 71 89 50 10, disable tab 4 button "Turn ON", 32, 142 25 37 12, tab 4 button "Turn OFF", 33, 142 38 37 12, tab 4 button "Ok", 6, 110 139 37 12, ok cancel } alias rsstatskicker.refresh { did -h rsstatskicker 10,18 did -r rsstatskicker 2,12,25-27,30,31 did -a rsstatskicker 25 %kicks did -a rsstatskicker 26 $nick(#pestcontrol,0) did -a rsstatskicker 27 %pcvoice did -a rsstatskicker 30 %pchigh did -a rsstatskicker 31 %pclow var %x = 1 while ($read(RSstatschan.txt,%x)) { did -a rsstatskicker 2 $read(RSstatschan.txt,%x) inc %x continue } var %x = 1 while ($read(RSstatsnick.txt,%x)) { did -a rsstatskicker 12 $read(RSstatsnick.txt,%x) inc %x continue } } on *:dialog:rsstatskicker:init:*: { rsstatskicker.refresh } on *:dialog:rsstatskicker:sclick:*: { if ($did == 32) { .enable #statskicker } if ($did == 33) { .disable #statskicker } if ($did == 7) { if (!$read(RSStatschan.txt,w,$did(2))) && ($chr(35) isin $did(2)) { write RSStatschan.txt $did(2) rsstatskicker.refresh } } if ($did == 8) { if ($read(RSStatschan.txt,w,$did(2))) { write -ds $+ $gettok($did(2),1,32) RSStatschan.txt rsstatskicker.refresh } } if ($did == 9) { did -v rsstatskicker 10 } if ($did == 10) { .remove rsstatschan.txt rsstatskicker.refresh } if ($did == 15) { if (!$read(RSStatsnick.txt,w,$iif($chr(64) isin $did(12),$gettok($mask(! $+ $did(12),2),1,32),$did(12)))) { write RSStatsnick.txt $iif($chr(64) isin $did(12),$mask(! $+ $did(12),2),$did(12)) rsstatskicker.refresh } } if ($did == 16) { if ($read(RSStatsnick.txt,w,$iif($chr(64) isin $did(12),$mask(! $+ $did(12),2),$did(12)))) { write -ds $+ $iif($chr(64) isin $did(12),$mask(! $+ $did(12),2),$did(12)) RSStatsnick.txt rsstatskicker.refresh } } if ($did == 17) { did -v rsstatskicker 18 } if ($did == 18) { .remove rsstatsnick.txt rsstatskicker.refresh } if ($did == 22) { .remove rsstatscache.txt } } alias rsstats.voice { var %chan = $iif($left($1,1) iswm $chr(35),$1,$chan) if ($me isop %chan) || ($me ishop %chan) { var %x = 1 var %y = $nick(%chan,0,r) while (%x <= %y) { if ($read(RSstatsCache.txt,w,$nick(%chan,%x,r))) { msg JY|BOT Requirements $nick(%chan,%x,r) | inc %cache | inc %x | continue } if ($read(RSStatsnick.txt,w,$nick(%chan,%x,r))) { inc %x | continue } if ($read(RSstatsnick.txt,w,$address(%nick($chan,%x,r),2))) { inc %x | continue } var %ID = 1 while ($sock(stats. $+ %ID)) { inc %ID } if ($len($nick(%chan,%x,r)) > 13) { inc %kicks ban -ku120 %chan $nick(%chan,%x,r) 5 Your nickname is too long 12¤4 %kicks $+ 1 inc %x continue } set %stats.chan. [ $+ [ %ID ] ] %chan set $+(%,stats.rsn.,%ID) $nick(%chan,%x,r) sockopen $+(stats.,%ID) hiscore.runescape.com 80 inc %x } } } alias rsstats.check { if ($me isop $chan) || ($me ishop $chan) { mode $chan -vvvvvvvvvvvv $1- var %x = 1 var %y = $numtok($1-,32) while (%x <= %y) { tokenize 32 $gettok($1-,%x,32) if ($read(RSStatsnick.txt,w,$1)) { inc %x | continue } if ($read(RSStatsCache.txt,w,$1)) { msg JY|BOT Requirements $1 | inc %cache | inc %x | continue } if ($len($1) > 13) { inc %kicks ban -ku120 $chan $1 5 Your nickname is too long 12¤4 %kicks $+ 1 inc %x continue } var %ID = 1 while ($sock(stats. $+ %ID)) { inc %ID } set %stats.chan. [ $+ [ %ID ] ] $chan set $+(%,stats.rsn.,%ID) $1 sockopen $+(stats.,%ID) hiscore.runescape.com 80 inc %x } } } alias rsstats.cache { if ($read(RSStatscache.txt,w,$1)) { Echo -a $1 has been to #Pestcontrol and was voiced. } else { Echo -a $1 has not been to #Pestcontrol. } } alias rsstats.except { if ($read(RSstatsnick.txt,w,$address($1,2))) { Echo -a $1 is on the except list. } elseif ($read(RSStatsnick.txt,w,$1)) { Echo -a $1 is on the except list. } else { Echo -a $1 is not on the except list. } } alias rsstats.time { echo -a 8(06 Time to retrieve stats was: 12[04 $+ $read(Statstime.txt) $+ 12] 8) } #statskicker off on *:join:#pestcontrol: { if ($me isop $chan) || ($me ishop $chan) { if ($read(RSStatsnick.txt,w,$nick)) { halt } if ($read(RSstatsnick.txt,w,$address($nick,2))) { halt } if ($read(RSStatsCache.txt,w,$nick)) { msg JY|BOT Requirements $nick | inc %cache | halt } if ($len($nick) > 13) { inc %kicks ban -ku120 $chan $nick 5 Your nickname is too long 12¤4 %kicks $+ 1 halt } var %ID = 1 while ($sock(stats. $+ %ID)) { inc %ID } set %stats.chan. [ $+ [ %ID ] ] $chan set $+(%,stats.rsn.,%ID) $nick set $+(%,stats.time.,%ID) $ctime sockopen $+(stats.,%ID) hiscore.runescape.com 80 if ($nick($chan,0) > %pchigh) { set %pchigh $nick($chan,0) } if ($nick($chan,0) < %pclow) { set %pclow $nick($chan,0) } } } #statskicker end 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) { inc %kicks ban -ku30 %stats.chan. [ $+ [ $gettok($sockname,2,46) ] ] %stats.rsn. [ $+ [ $gettok($sockname,2,46) ] ] 5 Please change your nick to your Runescape username. Use _ as spaces. Type /nick newnick to change nicknames 12¤4 %kicks $+ 1 sockclose $sockname 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),