Clear-Chanlev Script for QuakeNet: Difference between revisions
Jump to navigation
Jump to search
Script updated to work with Q9. Tested with version 1.00 |
m oops, added spacing |
||
| Line 1: | Line 1: | ||
; ClearChanlev script by doomie | ; ClearChanlev script by doomie | ||
; #help.script @ QuakeNet | ; #help.script @ QuakeNet | ||
; | ; | ||
; | ; | ||
; You can use this script by typing: | ; You can use this script by typing: | ||
; | ; | ||
; /clearchanlev [-c|-r] #channel | ; /clearchanlev [-c|-r] #channel | ||
; | ; | ||
; Note, that you must be authed and owner of #channel. | ; Note, that you must be authed and owner of #channel. | ||
; | ; | ||
; Flags: | ; Flags: | ||
; * -r ... Resets the script, i.e. cleans everything up. One usually doesn't need that flag, however, if something didn't work, | ; * -r ... Resets the script, i.e. cleans everything up. One usually doesn't need that flag, however, if something didn't work, | ||
; one can use it. | ; one can use it. | ||
; * -c ... If you use this flag, the script will remove you from the channel aswell. This means, that Q will leave the channel | ; * -c ... If you use this flag, the script will remove you from the channel aswell. This means, that Q will leave the channel | ||
; completly. Note that you can _NOT_ reverse it! | ; completly. Note that you can _NOT_ reverse it! | ||
; | ; | ||
; | ; | ||
; Example output: | ; Example output: | ||
; | ; | ||
; ClearChanlev: ----------------------------- | ; ClearChanlev: ----------------------------- | ||
; ClearChanlev: Now beginning to remove all chanlevs from channel #channel except yours! | ; ClearChanlev: Now beginning to remove all chanlevs from channel #channel except yours! | ||
; ClearChanlev: Receiving own auth now! | ; ClearChanlev: Receiving own auth now! | ||
; ClearChanlev: ...done. | ; ClearChanlev: ...done. | ||
; ClearChanlev: Saving chanlev now... | ; ClearChanlev: Saving chanlev now... | ||
; ClearChanlev: ...done. | ; ClearChanlev: ...done. | ||
; ClearChanlev: There are 2 lines to send. This will take approximatly 4 seconds. Removing... | ; ClearChanlev: There are 2 lines to send. This will take approximatly 4 seconds. Removing... | ||
; ClearChanlev: ...done. | ; ClearChanlev: ...done. | ||
; ClearChanlev: Cleaned up! | ; ClearChanlev: Cleaned up! | ||
; ClearChanlev: ----------------------------- | ; ClearChanlev: ----------------------------- | ||
; | ; | ||
; Returns the milliseconds between every message sent to Q | ; Returns the milliseconds between every message sent to Q | ||
; If you excess flood, you should increase this value to 4000 or even 5000. | ; If you excess flood, you should increase this value to 4000 or even 5000. | ||
alias -l ClearChanlev.Delay { return 3000 } | alias -l ClearChanlev.Delay { return 3000 } | ||
; $1 = #channel | ; $1 = #channel | ||
; | ; | ||
; flags: | ; flags: | ||
; -c --complete = deletes the complete chanlev, inclusive owner. This will | ; -c --complete = deletes the complete chanlev, inclusive owner. This will | ||
; result in Q parting. | ; result in Q parting. | ||
; -r --reset = resets the scripts in case something didn't work the last time. | ; -r --reset = resets the scripts in case something didn't work the last time. | ||
alias ClearChanlev { | alias ClearChanlev { | ||
echo -s ClearChanlev: ----------------------------- | |||
var %i = 1, %c, %ClearChanlev.Complete = 0, %r, %ClearChanlev.Force = 0, %ClearChanlev.Channel | |||
while (%i <= $0) { | |||
%c = $ [ $+ [ %i ] ] | |||
if (%c == -c) || (%c == --complete) { | |||
%ClearChanlev.Complete = 1 | |||
} | |||
elseif (%c == -r) || (%c == --reset) { | |||
%ClearChanlev.Force = 1 | |||
} | |||
elseif ($left(%c, 1) == $chr(35)) { | |||
%ClearChanlev.Channel = %c | |||
} | |||
inc %i | |||
} | |||
if (%ClearChanlev.Global) { | |||
if (%ClearChanlev.Force == 0) { | |||
echo -s ClearChanlev: ClearChanlev is currently running. If this is not the case, please use the -r flag (i.e. /clearchanlev -r #channel) | |||
echo -s ClearChanlev: ----------------------------- | |||
return | |||
} | |||
else { | |||
unset %ClearChanlev.Global | |||
echo -s ClearChanlev: ClearChanlev reseted. | |||
} | |||
} | |||
if (!%ClearChanlev.Channel) { | |||
echo -s ClearChanlev: No channel specified. | |||
return | |||
} | |||
%r = $rand(1,1000) | |||
set %ClearChanlev.Global %ClearChanlev.Channel %ClearChanlev.Complete %r | |||
echo -s ClearChanlev: Now beginning to remove all chanlevs from channel %ClearChanlev.Channel $iif(%ClearChanlev.Complete, inclusive, except) yours! | |||
echo -s ClearChanlev: Receiving own auth now! | |||
.timerClearChanlevCleanUp 1 60 ClearChanlev.CleanUp | |||
.who $me n%nat, $+ %r | |||
} | } | ||
raw 354:*: { | raw 354:*: { | ||
if ($2 == $gettok(%ClearChanlev.Global, 3, 32)) && ($3 == $me) { | |||
haltdef | |||
set %ClearChanlev.Global %ClearChanlev.Global $4 | |||
} | |||
} | } | ||
raw 315:*: { | raw 315:*: { | ||
if (%ClearChanlev.Global) && ($2 == $me) { | |||
haltdef | |||
if ($gettok(%ClearChanlev.Global, 4, 32) == 0) { | |||
echo -s ClearChanlev: You are NOT authed. | |||
ClearChanlev.CleanUp | |||
} | |||
else { | |||
echo -s ClearChanlev: ...done. | |||
set %ClearChanlev.Global %ClearChanlev.Global 0 | |||
.msg Q chanlev $gettok(%ClearChanlev.Global, 1, 32) | |||
} | |||
} | |||
} | } | ||
alias -l ClearChanlev.GotMessages { | alias -l ClearChanlev.GotMessages { | ||
if (!$exists(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt)) { | |||
echo -s ClearChanlev: File does not exist! | |||
ClearChanlev.CleanUp | |||
return | |||
} | |||
if ($lines(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) == 0) { | |||
echo -s ClearChanlev: No chanlev to remove! | |||
ClearChanlev.CleanUp | |||
return | |||
} | |||
if ($gettok(%ClearChanlev.Global, 5, 32) == 0) { | |||
echo -s ClearChanlev: You are NOT owner of this channel. Aborting! | |||
ClearChanlev.CleanUp | |||
return | |||
} | |||
echo -s ClearChanlev: There are $lines(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) lines to send. This will take $& | |||
approximatly $calc($lines(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) * $ClearChanlev.Delay / 1000) seconds. Removing... | |||
.play Q ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt $ClearChanlev.Delay | |||
} | } | ||
alias -l ClearChanlev.CleanUp { | alias -l ClearChanlev.CleanUp { | ||
.remove ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt | |||
unset %ClearChanlev.* | |||
.timerClearChanlevCleanUp off | |||
echo -s ClearChanlev: Cleaned up! | |||
echo -s ClearChanlev: ----------------------------- | |||
} | } | ||
; $1- = message from Q | ; $1- = message from Q | ||
alias -l ClearChanlev.Interpret { | alias -l ClearChanlev.Interpret { | ||
if (%ClearChanlev.Global) { | |||
if (Username*Flags*Last join*Last changed iswm $1-) { | |||
echo -s ClearChanlev: Saving chanlev now... | |||
set %ClearChanlev.Global %ClearChanlev.Global 1 | |||
} | |||
elseif (You do not have sufficient access on* iswm $1-) { | |||
echo -s ClearChanlev: You do not have sufficied access on the specified channel! | |||
ClearChanlev.CleanUp | |||
} | |||
elseif (End of list. == $1-) { | |||
echo -s ClearChanlev: ...done. | |||
set %ClearChanlev.Global $puttok(%ClearChanlev.Global, 0, 6, 32) | |||
if ($numtok(%ClearChanLev.Users,32)) { | |||
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt REMOVEUSER $gettok(%ClearChanlev.Global, 1, 32) %ClearChanLev.Users | |||
unset %ClearChanlev.Users | |||
} | |||
ClearChanlev.GotMessages | |||
} | |||
elseif (Channel * is unknown or suspended. iswm $1-) { | |||
echo -s ClearChanlev: Channel is not known or suspended. Aborting. | |||
ClearChanlev.CleanUp | |||
} | |||
elseif ($gettok(%ClearChanlev.Global, 6, 32) == 1) { | |||
if ($1 == $gettok(%ClearChanlev.Global, 4, 32)) { | |||
if (n !isin $2) { | |||
set %ClearChanlev.Global $puttok(%ClearChanlev.Global, 0, 5, 32) | |||
return | |||
} | |||
else { | |||
set %ClearChanlev.Global $puttok(%ClearChanlev.Global, 1, 5, 32) | |||
} | |||
if ($gettok(%ClearChanlev.Global, 2, 32) == 0) { | |||
return | |||
} | |||
else { | |||
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt CHANLEV $gettok(%ClearChanlev.Global, 1, 32) $chr(35) $+ $1 $replace($2,+,-) | |||
return | |||
} | |||
} | |||
else { | |||
if (n isin $2) { | |||
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt CHANLEV $gettok(%ClearChanlev.Global, 1, 32) $chr(35) $+ $1 $replace($2,+,-) | |||
} | |||
else { | |||
set %ClearChanlev.Users $addtok(%ClearChanLev.users,$chr(35) $+ $1,32) | |||
if ($numtok(%ClearChanlev.Users,32) == 18) { | |||
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt REMOVEUSER $gettok(%ClearChanlev.Global, 1, 32) %ClearChanlev.Users | |||
unset %ClearChanlev.Users | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | } | ||
on ^*:Notice:*:?: { | on ^*:Notice:*:?: { | ||
if ($nick == Q) && (%ClearChanlev.Global) { | |||
haltdef | |||
ClearChanlev.Interpret $1- | |||
} | |||
} | } | ||
on ^*:Text:*:?: { | on ^*:Text:*:?: { | ||
if ($nick == Q) && (%ClearChanlev.Global) { | |||
haltdef | |||
ClearChanlev.Interpret $1- | |||
} | |||
} | } | ||
on *:PLAYEND:{ | on *:PLAYEND:{ | ||
if ($nopath($filename) == ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) { | |||
echo -s ClearChanlev: ...done. | |||
ClearChanlev.Cleanup | |||
} | |||
} | |||
Revision as of 18:27, 3 April 2008
; ClearChanlev script by doomie
; #help.script @ QuakeNet
;
;
; You can use this script by typing:
;
; /clearchanlev [-c|-r] #channel
;
; Note, that you must be authed and owner of #channel.
;
; Flags:
; * -r ... Resets the script, i.e. cleans everything up. One usually doesn't need that flag, however, if something didn't work,
; one can use it.
; * -c ... If you use this flag, the script will remove you from the channel aswell. This means, that Q will leave the channel
; completly. Note that you can _NOT_ reverse it!
;
;
; Example output:
;
; ClearChanlev: -----------------------------
; ClearChanlev: Now beginning to remove all chanlevs from channel #channel except yours!
; ClearChanlev: Receiving own auth now!
; ClearChanlev: ...done.
; ClearChanlev: Saving chanlev now...
; ClearChanlev: ...done.
; ClearChanlev: There are 2 lines to send. This will take approximatly 4 seconds. Removing...
; ClearChanlev: ...done.
; ClearChanlev: Cleaned up!
; ClearChanlev: -----------------------------
;
; Returns the milliseconds between every message sent to Q
; If you excess flood, you should increase this value to 4000 or even 5000.
alias -l ClearChanlev.Delay { return 3000 }
; $1 = #channel
;
; flags:
; -c --complete = deletes the complete chanlev, inclusive owner. This will
; result in Q parting.
; -r --reset = resets the scripts in case something didn't work the last time.
alias ClearChanlev {
echo -s ClearChanlev: -----------------------------
var %i = 1, %c, %ClearChanlev.Complete = 0, %r, %ClearChanlev.Force = 0, %ClearChanlev.Channel
while (%i <= $0) {
%c = $ [ $+ [ %i ] ]
if (%c == -c) || (%c == --complete) {
%ClearChanlev.Complete = 1
}
elseif (%c == -r) || (%c == --reset) {
%ClearChanlev.Force = 1
}
elseif ($left(%c, 1) == $chr(35)) {
%ClearChanlev.Channel = %c
}
inc %i
}
if (%ClearChanlev.Global) {
if (%ClearChanlev.Force == 0) {
echo -s ClearChanlev: ClearChanlev is currently running. If this is not the case, please use the -r flag (i.e. /clearchanlev -r #channel)
echo -s ClearChanlev: -----------------------------
return
}
else {
unset %ClearChanlev.Global
echo -s ClearChanlev: ClearChanlev reseted.
}
}
if (!%ClearChanlev.Channel) {
echo -s ClearChanlev: No channel specified.
return
}
%r = $rand(1,1000)
set %ClearChanlev.Global %ClearChanlev.Channel %ClearChanlev.Complete %r
echo -s ClearChanlev: Now beginning to remove all chanlevs from channel %ClearChanlev.Channel $iif(%ClearChanlev.Complete, inclusive, except) yours!
echo -s ClearChanlev: Receiving own auth now!
.timerClearChanlevCleanUp 1 60 ClearChanlev.CleanUp
.who $me n%nat, $+ %r
}
raw 354:*: {
if ($2 == $gettok(%ClearChanlev.Global, 3, 32)) && ($3 == $me) {
haltdef
set %ClearChanlev.Global %ClearChanlev.Global $4
}
}
raw 315:*: {
if (%ClearChanlev.Global) && ($2 == $me) {
haltdef
if ($gettok(%ClearChanlev.Global, 4, 32) == 0) {
echo -s ClearChanlev: You are NOT authed.
ClearChanlev.CleanUp
}
else {
echo -s ClearChanlev: ...done.
set %ClearChanlev.Global %ClearChanlev.Global 0
.msg Q chanlev $gettok(%ClearChanlev.Global, 1, 32)
}
}
}
alias -l ClearChanlev.GotMessages {
if (!$exists(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt)) {
echo -s ClearChanlev: File does not exist!
ClearChanlev.CleanUp
return
}
if ($lines(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) == 0) {
echo -s ClearChanlev: No chanlev to remove!
ClearChanlev.CleanUp
return
}
if ($gettok(%ClearChanlev.Global, 5, 32) == 0) {
echo -s ClearChanlev: You are NOT owner of this channel. Aborting!
ClearChanlev.CleanUp
return
}
echo -s ClearChanlev: There are $lines(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) lines to send. This will take $&
approximatly $calc($lines(ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) * $ClearChanlev.Delay / 1000) seconds. Removing...
.play Q ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt $ClearChanlev.Delay
}
alias -l ClearChanlev.CleanUp {
.remove ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt
unset %ClearChanlev.*
.timerClearChanlevCleanUp off
echo -s ClearChanlev: Cleaned up!
echo -s ClearChanlev: -----------------------------
}
; $1- = message from Q
alias -l ClearChanlev.Interpret {
if (%ClearChanlev.Global) {
if (Username*Flags*Last join*Last changed iswm $1-) {
echo -s ClearChanlev: Saving chanlev now...
set %ClearChanlev.Global %ClearChanlev.Global 1
}
elseif (You do not have sufficient access on* iswm $1-) {
echo -s ClearChanlev: You do not have sufficied access on the specified channel!
ClearChanlev.CleanUp
}
elseif (End of list. == $1-) {
echo -s ClearChanlev: ...done.
set %ClearChanlev.Global $puttok(%ClearChanlev.Global, 0, 6, 32)
if ($numtok(%ClearChanLev.Users,32)) {
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt REMOVEUSER $gettok(%ClearChanlev.Global, 1, 32) %ClearChanLev.Users
unset %ClearChanlev.Users
}
ClearChanlev.GotMessages
}
elseif (Channel * is unknown or suspended. iswm $1-) {
echo -s ClearChanlev: Channel is not known or suspended. Aborting.
ClearChanlev.CleanUp
}
elseif ($gettok(%ClearChanlev.Global, 6, 32) == 1) {
if ($1 == $gettok(%ClearChanlev.Global, 4, 32)) {
if (n !isin $2) {
set %ClearChanlev.Global $puttok(%ClearChanlev.Global, 0, 5, 32)
return
}
else {
set %ClearChanlev.Global $puttok(%ClearChanlev.Global, 1, 5, 32)
}
if ($gettok(%ClearChanlev.Global, 2, 32) == 0) {
return
}
else {
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt CHANLEV $gettok(%ClearChanlev.Global, 1, 32) $chr(35) $+ $1 $replace($2,+,-)
return
}
}
else {
if (n isin $2) {
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt CHANLEV $gettok(%ClearChanlev.Global, 1, 32) $chr(35) $+ $1 $replace($2,+,-)
}
else {
set %ClearChanlev.Users $addtok(%ClearChanLev.users,$chr(35) $+ $1,32)
if ($numtok(%ClearChanlev.Users,32) == 18) {
write ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt REMOVEUSER $gettok(%ClearChanlev.Global, 1, 32) %ClearChanlev.Users
unset %ClearChanlev.Users
}
}
}
}
}
}
on ^*:Notice:*:?: {
if ($nick == Q) && (%ClearChanlev.Global) {
haltdef
ClearChanlev.Interpret $1-
}
}
on ^*:Text:*:?: {
if ($nick == Q) && (%ClearChanlev.Global) {
haltdef
ClearChanlev.Interpret $1-
}
}
on *:PLAYEND:{
if ($nopath($filename) == ClearChanlev $+ $gettok(%ClearChanlev.Global, 3, 32) $+ .txt) {
echo -s ClearChanlev: ...done.
ClearChanlev.Cleanup
}
}