on *:text:*:#: {
if ($me !isop #) || (!$op_chan(#)) halt
if ($nick isop $chan && $op_(ko) == 0) || ($nick isvoice $chan && $op_(kv) == 0) halt
if ($op_(c)) {
var %a = 1
while $gettok($op_(cusses),%a,44) {
if ($v1 isin $1-) {
$op_(c.kt) $+ $iif(ban isin $op_(c.kt),$op_(c.bt),) # $nick $op_(c.kmsg)
halt
}
inc %a
}
}
if ($op_(f)) {
hinc -u $+ $op_(f.secs) op f. $+ $nick
if ($op_($+(f.,$nick)) >= $op_(f.lines)) {
$op_(f.kt) $+ $iif(ban isin $op_(f.kt),$op_(f.bt),) # $nick $op_(f.kmsg)
halt
}
}
if ($op_(r)) {
if ($op_(r.ll. $+ $nick) == $1-) hinc -u $+ $op_(r.secs) op r.l. $+ $nick
else hadd op r.ll. $+ $nick $1-
if ($op_($+(r.l.,$nick)) >= $calc($op_(r.lines) - 1)) {
$op_(r.kt) $+ $iif(ban isin $op_(r.kt),$op_(r.bt),) # $nick $op_(r.kmsg)
halt
}
}
}
on ^*:join:$($op_(chans)): {
if ($me !isop $chan) echo # $+ $color(join) $+ * $nick has joined #
if ($op_(bl)) {
var %a = 1
while $gettok($op_(bl.ids),%a,44) {
var %t = $hfind(op,bl.#*,$v1,w), %c = $gettok(%t,2,46)
if ($chan == %c && $gettok(%t,3-,46) iswm $address($nick,5)) {
mode # +b $gettok(%t,3-,46)
kick # $nick 4You have been BLACKLISTED from #
halt
}
inc %a
}
}
if ($op_(va) == 1) mode # +v $nick
if ($op_(kc) == 1) .timer 1 1 op_clones $nick #
if ($op_(tn) == 1) {
hinc op $+(j.,$wildsite,.,$chan,.num)
if ($op_($+(j.,$wildsite,.,$chan,.last))) echo # $+ $color(join) $+ * $nick has joined # - Joined $op_($+(j.,$wildsite,.,$chan,.num)) times - Last as $op_($+(j.,$wildsite,.,$chan)) $duration($calc($ctime - $op_($+(j.,$wildsite,.,$chan,.last)))) ago
else echo # * $nick has joined # - First join
hadd op $+(j.,$wildsite,.,$chan) $nick
hadd op $+(j.,$wildsite,.,$chan,.last) $ctime
var %a = 1,%n
while $op_($+(j.,$wildsite,.nicknum.,%a)) {
if ($v1 == $nick) %n = 1
inc %a
}
if (!%n) hadd op $+(j.,$wildsite,.nicknum.,%a) $nick
haltdef
}
}
on *:nick: {
var %a = 1
while $comchan($newnick,%a) {
if ($me isop $v1) && ($op_chan($v2)) set -u2 %t 1
inc %a
}
if (%t != 1) halt
if ($op_(bl)) {
%a = 1
echo -a 1
while $gettok($op_(bl.ids),%a,44) {
var %t = $hfind(op,bl.*@*,$v1,w), %c = $gettok(%t,2,46)
if ($newnick ison %c && $me isop %c && $gettok(%t,3-,46) iswm $address($newnick,5)) {
ban -u600 %c $gettok(%t,3-,46)
kick %c $newnick 4You have been BLACKLISTED from %c
halt
}
inc %a
}
}
if ($op_(tn) == 1) {
var %a = 1,%n
while $op_($+(j.,$wildsite,.nicknum.,%a)) {
if ($v1 == $newnick) %n = 1
inc %a
}
if (!%n) hadd op $+(j.,$wildsite,.nicknum.,%a) $newnick
}
}
alias op_nicks {
if ($op_(tn) != 1) halt
var %a = 1,%s
while $op_($+(j.,$address($1,2),.nicknum.,%a)) {
%s = %s $v1
inc %a
}
echo -a - Op - 12 $1 has had the nicks:4 %s
}
alias op_clones {
if ($1 isop $2 && $op_(ko) == 0) || ($1 isvoice $2 && $op_(kv) == 0) halt
var %a = 1
while $nick($2,%a) {
if ($v1 != $1 && $address($v1,2) == $address($1,2)) {
ban -ku5 $2 $1 You are the clone of $nick($2,%a)
ban -ku5 $2 $nick($2,%a) You are the clone of $1
halt
}
inc %a
}
}
alias op_chan return $istok($op_(chans),$1,44)
alias op_ return $hget(op,$1)
menu nicklist {
$iif($op_(tn) == 1 && $op_chan(#),Previous Nicks,): op_nicks $$1
}
menu channel {
$iif($me isop #,Operator Control,) $+ : dialog -m op_dlg op_dlg
}
on *:start: {
hmake op 1000
if (!$isfile(op.hsh)) {
echo -a 4op.hsh file not found! Restoring defaults!
op_restore
}
else hload op op.hsh
.timer 0 600 hsave op op.hsh
}
dialog op_dlg {
title "Operator Control"
size -1 -1 125 200
option dbu
tab "Options", 3, 0 0 125 183
tab "Flood/Repeat", 20
tab "Cuss/Blacklist", 21
button "Ok", 1, 15 187 37 10, ok
button "Help", 2, 70 186 38 10
list 5, 58 30 60 40, tab 3 vsbar
button "Add a Channel", 7, 5 32 45 10, tab 3
button "Delete a Channel", 8, 5 47 45 10, tab 3
check "Kick/Ban Operators", 9, 5 80 65 8, tab 3
check "Kick/Ban Voiced users", 10, 5 90 65 8, tab 3
box "Protected Channels", 6, 2 20 120 50, tab 3
box "General", 11, 2 70 120 61, tab 3
check "Voice all users", 12, 5 100 65 8, tab 3
text "Flood Control:", 13, 5 140 40 8, tab 3
text "Repeat Control:", 14, 5 150 50 8, tab 3
text "Cuss Control:", 15, 5 160 50 8, tab 3
text $op_s(c), 16, 89 160 30 8, tab 3 right
text $op_s(r), 17, 89 150 30 8, tab 3 right
text $op_s(bl), 18, 89 170 30 7, tab 3 right
box "Status", 19, 2 132 120 48, tab 3
box "Flood Control", 22, 2 20 121 70, tab 20
check "Enable Flood Control", 23, 5 30 65 8, tab 20
text $op_ktt(f.kt),24, 5 43 22 7, tab 20 right
text "a user after typing", 25, 28 43 46 8, tab 20
edit $op_(f.lines), 26, 74 42 13 9, tab 20 center
text " lines in", 27, 88 43 23 8, tab 20
edit $op_(f.secs), 28, 15 50 13 9, tab 20 center
text "seconds", 29, 30 51 20 8, tab 20
text "Type:", 30, 5 64 15 8, tab 20
combo 31, 22 64 37 9, tab 20 drop
text "Ban time:", 32, 61 64 23 8, tab 20
edit $op_(f.bt), 33, 84 64 15 9, tab 20
text "seconds", 34, 100 64 21 8, tab 20
text "Kick Message:", 35, 5 77 34 8, tab 20
edit $op_(f.kmsg), 36, 40 76 80 10, tab 20
box "Repeat Control", 37, 2 100 121 70, tab 20
check "Enable Repeat Control", 38, 5 110 65 8, tab 20
text $op_ktt(r.kt),39, 5 123 22 7, tab 20 result right
text "a user after repeating", 40, 28 123 54 8, tab 20 result
edit $op_(r.lines), 41, 82 123 13 9, tab 20 result center
text " lines in", 42, 96 123 23 8, tab 20 result
edit $op_(r.secs), 43, 15 131 13 9, tab 20 result center
text "seconds", 44, 29 133 20 8, tab 20 result
text "Ban time:", 45, 61 144 23 8, tab 20 result
text "Type:", 46, 5 144 15 8, tab 20 result
combo 47, 21 144 37 9, tab 20 result drop
text "seconds", 48, 99 144 21 8, tab 20 result
text "Kick Message:", 49, 5 157 34 8, tab 20 result
edit $op_(r.kmsg), 50, 39 156 80 10, tab 20 result
edit $op_(r.bt), 51, 84 143 15 9, tab 20 result
text "Blacklist:", 52, 5 170 50 7, tab 3
text $op_s(f), 53, 89 140 30 8, tab 3 right
check "Kick Clones", 54, 5 110 65 8, tab 3
check "Track previous nicknames", 55, 5 120 70 8, tab 3
box "Cuss Control", 56, 2 20 120 77, tab 21
check "Enable Cuss Control", 57, 5 30 59 8, tab 21
list 58, 66 27 52 42, tab 21 vsbar
button "Show Words", 59, 15 40 40 8, tab 21
button "Delete Word", 60, 15 50 40 8, tab 21
button "Add Word", 61, 15 60 40 8, tab 21
box "Blacklist Control", 62, 2 100 120 80, tab 21
check "Enable Blacklist", 63, 4 110 50 8, tab 21
list 64, 4 128 114 42, tab 21 vsbar hsbar
text "Channel:", 65, 5 120 23 8, tab 21
text "Address:", 66, 85 120 23 8, tab 21
button "Add user", 67, 6 170 40 8, tab 21
button "Delete user", 68, 76 170 40 8, tab 21
text "Type:", 75, 5 73 15 8, tab 21
combo 69, 19 72 37 8, drop tab 21
text "Ban time:", 70, 58 73 23 8, tab 21
edit $op_(c.bt), 71, 82 73 15 9, tab 21
text "seconds", 72, 98 73 21 8, tab 21
text "Kick Message:", 73, 5 85 34 8, tab 21
edit $op_(c.kmsg), 74, 37 84 81 10, tab 21
}
alias op_rp did -o op_dlg $1 1 $2-
alias op_p_chans {
did -r op_dlg 5
var %a = 1
while $gettok($op_(chans),%a,44) {
did -a op_dlg 5 $v1
inc %a
}
}
alias op_p_cusses {
did -r op_dlg 58
if (!$op_(sc)) {
did -a op_dlg 58 Cusses hidden
did -b op_dlg 60
op_rp 59 Show Cusses
}
else {
did -e op_dlg 60
op_rp 59 Hide Cusses
var %a = 1
while $gettok($op_(cusses),%a,44) {
did -a op_dlg 58 $v1
inc %a
}
}
}
alias op_p_bl {
did -r op_dlg 64
%a = 1
while $gettok($op_(bl.ids),%a,44) {
var %t = $hfind(op,bl.*@*,$v1,w), %c = $gettok(%t,2,46), %ad = $gettok(%t,3-,46)
did -a op_dlg 64 %c $str(-,$calc(42 - $len(%c) - $len(%ad))) %ad
inc %a
}
did -z op_dlg 64
}
alias op_s return $iif($op_($1),Enabled,Disabled)
alias op_ktt return $replace($op_($1),ban -ku,Kick+Ban,ban -u,Ban)
alias op_t {
var %a = $1,%t
while (%a <= $2) {
%t = $addtok(%t,%a,44)
inc %a
}
return %t
}
on *:dialog:op_dlg:init:0: {
if (!$hget(op)) {
hmake op 1000
if ($isfile(op.hsh)) hload op op.hsh
else op_restore
dialog -x op_dlg op_dlg
.timer 1 1 dialog -m op_dlg op_dlg
halt
}
op_p_chans
op_p_bl
op_p_cusses
if ($op_(f.kt) == ban -ku) {
did -ac op_dlg 31 Kick+Ban
did -a op_dlg 31 Kick
did -a op_dlg 31 Ban Only
}
elseif ($op_(f.kt) == ban -u) {
did -a op_dlg 31 Kick+Ban
did -a op_dlg 31 Kick
did -ac op_dlg 31 Ban Only
did -h op_dlg 35,36
}
else {
did -a op_dlg 31 Kick+Ban
did -ac op_dlg 31 Kick
did -a op_dlg 31 Ban Only
did -h op_dlg 32,33,34
}
if (!$op_(f)) did -b op_dlg $op_t(24,36)
else did -c op_dlg 23
if ($op_(r.kt) == ban -ku) {
did -ac op_dlg 47 Kick+Ban
did -a op_dlg 47 Kick
did -a op_dlg 47 Ban Only
}
elseif ($op_(r.kt) == ban -u) {
did -a op_dlg 47 Kick+Ban
did -a op_dlg 47 Kick
did -ac op_dlg 47 Ban Only
did -h op_dlg 49,50
}
else {
did -a op_dlg 47 Kick+Ban
did -ac op_dlg 47 Kick
did -a op_dlg 47 Ban Only
did -h op_dlg 51,45,48
}
if (!$op_(r)) did -b op_dlg $op_t(39,51)
else did -c op_dlg 38
if ($op_(c.kt) == ban -ku) {
did -ac op_dlg 69 Kick+Ban
did -a op_dlg 69 Kick
did -a op_dlg 69 Ban Only
}
elseif ($op_(c.kt) == ban -u) {
did -a op_dlg 69 Kick+Ban
did -a op_dlg 69 Kick
did -ac op_dlg 69 Ban Only
did -h op_dlg 73,74
}
else {
did -a op_dlg 69 Kick+Ban
did -ac op_dlg 69 Kick
did -a op_dlg 69 Ban Only
did -h op_dlg 70,71,72
}
if (!$op_(c)) did -b op_dlg 58,59,60,61, $+ $op_t(69,75)
else did -c op_dlg 57
if (!$op_(bl)) did -b op_dlg $op_t(64,68)
else did -c op_dlg 63
if ($op_(ko) == 1) did -c op_dlg 9
if ($op_(kv) == 1) did -c op_dlg 10
if ($op_(va) == 1) did -c op_dlg 12
if ($op_(kc) == 1) did -c op_dlg 54
if ($op_(tn) == 1) did -c op_dlg 55
}
on *:dialog:op_dlg:sclick:2: run notepad $mircdir $+ op_readme.txt
on *:dialog:op_dlg:sclick:7: {
if ($op_chan($?="What channel would you like to add?")) {
echo -a - OP - 4Error: channel " $+ $! $+ " has already been added
halt
}
hadd op chans $addtok($op_(chans),$!,44)
echo -a - OP - 3Channel " $+ $! $+ " added to op control list
op_p_chans
}
on *:dialog:op_dlg:sclick:8: {
if (!$did(5).seltext) {
echo -a - OP - 4Error: Select a channel from the box to delete
halt
}
if (!$?!="Are you sure you want to delete $did(5).seltext $+ ?") halt
hadd op chans $remtok($op_(chans),$did(5).seltext,1,44)
echo -a - OP - 3Channel " $+ $did(5).seltext $+ " deleted from op control list
op_p_chans
}
on *:dialog:op_dlg:sclick:23: {
if ($op_(f)) {
did -b op_dlg $op_t(24,36)
hdel op f
}
else { did -e op_dlg $op_t(24,36)
hadd op f $true }
op_rp 53 $op_s(f)
}
on *:dialog:op_dlg:sclick:38: {
if ($op_(r)) {
did -b op_dlg $op_t(39,51)
hdel op r
}
else { did -e op_dlg $op_t(39,51)
hadd op r $true }
op_rp 17 $op_s(r)
}
on *:dialog:op_dlg:sclick:31: {
hadd op f.kt $replace($did(31),Ban Only,ban -u,Kick+Ban,ban -ku)
op_rp 24 $gettok($did(31),1,32)
if (ban !isin $did(31)) did -h op_dlg 32,33,34
else did -v op_dlg 32,33,34
if (kick !isin $did(31)) did -h op_dlg 35,36
else did -v op_dlg 35,36
}
on *:dialog:op_dlg:sclick:47: {
hadd op r.kt $replace($did(47),Ban Only,ban -u,Kick+Ban,ban -ku)
op_rp 39 $gettok($did(47),1,32)
if (ban !isin $did(47)) did -h op_dlg 51,45,48
else did -v op_dlg 51,45,48
if (kick !isin $did(47)) did -h op_dlg 49,50
else did -v op_dlg 49,50
}
on *:dialog:op_dlg:edit:26: {
if ($did(26) isnum) hadd op f.lines $did(26)
else op_rp 26 $op_(f.lines)
}
on *:dialog:op_dlg:edit:28: {
if ($did(28) isnum) hadd op f.secs $did(28)
else op_rp 28 $op_(f.secs)
}
on *:dialog:op_dlg:edit:33: {
if ($did(33) isnum) hadd op f.bt $did(33)
else op_rp 33 $op_(f.bt)
}
on *:dialog:op_dlg:edit:41: {
if ($did(41) isnum) hadd op r.lines $did(41)
else op_rp 41 $op_(r.lines)
}
on *:dialog:op_dlg:edit:43: {
if ($did(43) isnum) hadd op r.secs $did(43)
else op_rp 43 $op_(r.secs)
}
on *:dialog:op_dlg:edit:51: {
if ($did(51) isnum) hadd op r.bt $did(51)
else op_rp 51 $op_(r.bt)
}
on *:dialog:op_dlg:edit:71: {
if ($did(71) isnum) hadd op c.bt $did(71)
else op_rp 71 $op_(c.bt)
}
on *:dialog:op_dlg:sclick:69: {
hadd op c.kt $replace($did(69),Ban Only,ban -u,Kick+Ban,ban -ku)
if (ban !isin $did(69)) did -h op_dlg 70,71,72
else did -v op_dlg 70,71,72
if (kick !isin $did(69)) did -h op_dlg 73,74
else did -v op_dlg 73,74
}
on *:dialog:op_dlg:sclick:57: {
if ($op_(c)) {
did -b op_dlg 58,59,60,61, $+ $op_t(69,75)
hdel op c
}
else { did -e op_dlg 58,59,60,61, $+ $op_t(69,75)
hadd op c $true }
op_rp 16 $op_s(c)
}
on *:dialog:op_dlg:sclick:63: {
if ($op_(bl)) {
did -b op_dlg $op_t(64,68)
hdel op bl
}
else { did -e op_dlg $op_t(64,68)
hadd op bl $true }
op_rp 18 $op_s(bl)
}
on *:dialog:op_dlg:edit:74: hadd op c.kmsg $did(74)
on *:dialog:op_dlg:edit:50: hadd op r.kmsg $did(50)
on *:dialog:op_dlg:edit:36: hadd op f.kmsg $did(36)
on *:dialog:op_dlg:sclick:9: hadd op ko $did(9).state
on *:dialog:op_dlg:sclick:10: hadd op kv $did(10).state
on *:dialog:op_dlg:sclick:12: hadd op va $did(12).state
on *:dialog:op_dlg:sclick:54: hadd op kc $did(54).state
on *:dialog:op_dlg:sclick:55: hadd op tn $did(55).state
on *:dialog:op_dlg:sclick:59: {
if (show isin $did(59)) hadd op sc $true
else hdel op sc
op_p_cusses
}
on *:dialog:op_dlg:sclick:61: {
if (!$?="What cuss word do you want to add?" || $istok($op_(cusses),$!,44)) { echo -a - Op - 4Error: Word already added | halt }
hadd op cusses $addtok($op_(cusses),$!,44)
op_p_cusses
echo -a - Op - 3Added cuss word!
}
on *:dialog:op_dlg:sclick:60: {
if (!$?="What cuss word do you want to add?" || !$istok($op_(cusses),$!,44)) { echo -a - Op - 4Error: Word not added | halt }
hadd op cusses $remtok($op_(cusses),$!,1,44)
op_p_cusses
echo -a - Op - 3Deleted cuss word!
}
on *:dialog:op_dlg:sclick:67: dialog -m op_ab op_ab
on *:dialog:op_dlg:sclick:68: {
if (!$did(64).seltext) {
echo -a - Op - 4Error: To delete a user, select the channel/blacklist and click "Delete user"
halt
}
var %t = $hfind(op,bl.#*,$gettok($op_(bl.ids),$did(64).sel,44),w)
if (!$?!="Are you sure you want to delete the blacklist of $gettok(%t,3-,46) on channel $gettok(%t,2,46) $+ ? ") halt
hdel op %t
hadd op bl.ids $remtok($op_(bl.ids),$gettok($op_(bl.ids),$did(64).sel,44),1,44)
echo -a - Op - 3Address $gettok(%t,3-,46) on channel $gettok(%t,2,46) deleted!
op_p_bl
}
dialog op_ab {
title "Add to Blacklist"
size -1 -1 170 37
option dbu
text "Blacklist by:", 1, 2 2 30 9
combo 2, 31 1 50 9, drop
text "Address:", 3, 2 15 24 8
edit "", 4, 27 14 139 9
text "Channel:", 6, 93 2 23 8
combo 7, 117 1 50 9, drop
button "Add", 5, 45 25 30 10
button "Cancel",8, 95 25 30 10, cancel
}
on *:dialog:op_ab:init:0: {
var %a = 1
while $gettok($op_(chans),%a,44) {
did -a op_ab 7 $v1
inc %a
}
did -ac op_ab 2 Address
did -a op_ab 2 Nickname
did -b op_ab 5
}
on *:dialog:op_ab:sclick:2: did -o op_ab 3 1 $did(2) $+ :
on *:dialog:op_ab:sclick:7: did -e op_ab 5
on *:dialog:op_ab:sclick:5: {
if (!$did(4)) {
echo -a - Op - 4Error: Please enter the $did(2) to blacklist
halt
}
if ($op_($+(bl.,$did(7),.,$iif($did(2) == Nickname,$did(4) $+ !*@*,$did(4))))) {
echo -a - Op - 4Error: That $did(2) has already been added!
halt
}
if ($did(2) == Address && (*?!*?*@?* !iswm $did(4) || $count($did(4),!) > 1 || $count($did(4),@) > 1 || ** isin $did(4))) {
echo -a - Op -4 Error, Invalid address. Use the format: *!*@* eg: bearruler!*@*.40E7B703.A8CC573C.IP
halt
}
hinc op bl.id
hadd op bl.ids $addtok($op_(bl.ids),$op_(bl.id),44)
hadd op $+(bl.,$did(7),.,$iif($did(2) == Nickname,$did(4) $+ !*@*,$did(4))) $op_(bl.id)
echo -a - Op - 3 $+ $did(2) " $+ $did(4) $+ " added to blacklist!
dialog -x op_ab
op_p_bl
}
alias op_restore {
hadd op kv 1
hadd op kc 1
hadd op tn 1
hadd op f.kt ban -ku
hadd op f.lines 5
hadd op f.secs 3
hadd op f.bt 30
hadd op f.kmsg Dont Flood! 30 second ban!
hadd op r.kt kick
hadd op r.lines 3
hadd op r.secs 7
hadd op r.kmsg Repeating! 3 lines in 5 seconds
hsave op op.hsh
echo -a - Op -3 Restored Op defaults!
}
alias cpm {
if ($me !isop $chan) { echo -a you need +q to perform some of these modes +a +o to perform the rest of the modes | .return }
var %all = $nick(#,0),%kick = 0
:start
if (%kick > %all) { .return }
inc %kick | if ($nick(#,%kick) == $me) { goto start }
mode # $1 $nick(#,%kick) | goto start
}
menu channel {
[mass]
.[mass+h]:$cpm(+h)
.[mass-h]:$cpm(-h)
}