### ### vim:ts=8 ai si sw=4 sta sm: ### $Id: aop,v 1.2 2001/03/07 12:08:21 sec Exp sec $ ### An simple Auto-Op with random delay. ### # requires: # ischanop(), nickonly() # warning: # This script uses SERIAL NUMBER #43 # Defines /op. alias aop.help { echo *** This is a simple Auto-Op: echo *** echo *** /aop [channel] nick[!user@host] echo *** channel defaults to current channel \($C\) echo *** user@host may contain wildcards echo *** if only nick is given, user must be online echo *** echo *** /noaop [channel] no# echo *** Removes aop number no# echo *** echo *** /listaop - List all aop's echo *** /saveaop - Save aop list to $aop.save echo *** /loadaop - Load aop list to $aop.save echo *** echo *** The filename is taken from \$aop.save echo *** echo *** The random delay is: rnd($aop.trnd)+\$aop.toff with aop.trnd=$aop.trnd, aop.toff=$aop.toff } eval if (!match(%+aop% $script_info)){ assign script_info $script_info+aop };set client_info Sec$script_info # Some defaults: if ([$aop.SAVE]==[]) {assign aop.SAVE aop.sav} if ([$aop.toff]==[]) {assign aop.toff 15} if ([$aop.trnd]==[]) {assign aop.trnd 15} on #-join 43 * { ^aop.check $1 $0!$USERHOST() } alias aop.check { # xecho -window debug AOP $N $ischanop($N $0) $0- if ((ischanop($N $0))) { if ( (rmatch($1 $aop[$encode($tolower($0))])) || (rmatch($1 $aop[all])) ){ @ aop.time = rand($aop.trnd) + aop.toff timer $aop.time /mgop $0 $nickonly($1) ^timer 2 echo *** $nickonly($1) has activated your auto-op on $0 in $aop.time sec's. } } } # Add an aop. Be clever with the syntax. alias aop { if (!(isopchan($0))){ if (rmatch($0 *!*@*)) { aop.add $C $0- }{ userhost $0 -cmd aop.add $C $0!$$3@$$4 } }{ if (rmatch($1 *!*@*)) { aop.add $0- }{ userhost $1 -cmd aop.add $0 $1!$$3@$$4 } } } alias aop.add { ^assign chan $encode($0) if (rmatch($1 *!*@*)) { ^assign ALREADY N @ maxnum = 0 foreach aop.chan.$chan num { if ([$aop.chan[$chan][$num]] == [$1]) {^assign ALREADY Y} if (num > maxnum) {@ maxnum = num} } if ([$ALREADY] == [N]) { @ maxnum = maxnum + 1 ^assign aop.chan[$chan][$maxnum] $1 echo *** Auto op #$maxnum for $1 on $0 added. }{ echo *** Auto op for $1 on $0 already exists. } ^assign -ALREADY ^assign -maxnum }{ echo *** /aop [channel] nick!user@host (wildcards allowed) } aop.genstr } # List all aops alias listaop { ^assign LISTED N foreach aop.chan name { ^assign LISTED Y echo *** AOPs for $decode($name): foreach aop.chan.$name num { echo *** $[-3]num $aop.chan[$name][$num] } } if ([$LISTED] == [N]) {/echo *** Your auto-op list is empty.} ^assign -LISTED } # Remove an aop by number. Be clever with parameters alias noaop { if (!(isopchan($0))){ aop.del $C $0- }{ aop.del $0- } } alias aop.del { ^assign chan $encode($0) echo *** Auto op #$1 for $aop.chan[$chan][$1] on $0 removed. ^assign -aop.chan.$chan.$1 ^assign -aop.$chan @ maxnum = 0 foreach aop.chan.$chan num { if (num > maxnum) {@ maxnum = num} } ^assign mvcounter $1 if (mvcounter != [${maxnum+1}]) { while (mvcounter < maxnum) { ^assign aop.chan[$chan][$mvcounter] $aop.chan[$chan][${mvcounter+1}] @ mvcounter = mvcounter + 1 } ^assign -aop.chan[$chan][$maxnum] } ^assign -mvcounter ^assign -maxnum aop.genstr } alias writeln { @ LINE = LINE + 1 ^msg %$0 $1- ^set input_prompt [Line: ${LINE}] Saving... Please wait... } alias saveaop { echo *** Writing current settings to ${aop.save}, please wait... ^set input_prompt [Line: 0] Saving... Please wait... @ LINE = 0 exec -name dele rm -f $aop.save wait %dele exec -name aopsave cat >$aop.save writeln aopsave \# Autoop version 1.3-Sec saved settings file writeln aopsave \# Saved: $stime($time()) writeln aopsave alias aop.set ^assign aop.chan[\$encode($0)][\$1] \$2- foreach aop.chan name { foreach aop.chan.$name num { writeln aopsave aop.set $decode($name) $num $aop.chan[$name][$num] } } writeln aopsave echo *** AOP settings restored from ${aop.save} [$stime($time())] ^set -input_prompt ^assign -LINE exec -CLOSE %aopsave echo *** Current settings saved in file ${aop.save} } alias loadaop { load $aop.save aop.genstr } alias aop.genstr { foreach aop.chan name { ^assign -aop.$name foreach aop.chan.$name num { if (rmatch($aop.chan[$name][$num] *!*@*)){ ^assign aop[$name] $aop[$name] $aop.chan[$name][$num] } } } } alias mgop if ([$ischanop($1 $0)]) {echo *** $1 is already op on $0} {op $0 $1} alias op { if (rmatch($0 #*) || rmatch($0 &*) || rmatch($0 !*) ) { mode $0 +ooo $1 $2 $3 if ([$4]) {/op $4-} }{ mode $C +ooo $0 $1 $2 if ([$3]) {/op $3-} } } #------------------------------------------------------------------------------# # The $isopchan, $nickonly functions are fairly common # and might already be defined. You may then safely omit them here. #------------------------------------------------------------------------------# alias isopchan { if (rmatch($0 #*) || rmatch($0 &*) || rmatch($0 !*) ) { ^assign function_return 1 }{ ^assign function_return 0 } } alias nickonly {^assign FUNCTION_RETURN $left($index(! $0) $0)} # Finally, load the saved AOP's ^assign aop.chan.CDGCGMGBGGGBHDGFGM.1 S?c!*sec@42.org loadaop