Autolimiter
Jump to navigation
Jump to search
This is a very simple yet effective autolimiter. It can be incorporated into a larger script easily, and is recommended to be in a script of its own unless you know how to merge it.
It is a prerequisite to set the limit amount for each channel (a positive integer) using variables in the format of %limit.#CHANNEL, or otherwise changing the format used in the script.
/*
This script simply sets a limit to N users + limit amount
whenever someone enters or leaves the channel. The comments
laid out here should describe what is happening within the
script. Made by Daveoh @ QuakeNet.
*/
/*
The following three events are triggered whenever someone
joins, parts or is kicked from a channel. These events
are all channel associated so we pass the autolimit alias
the channel we want to limit.
*/
on @*:JOIN:#:autolimit #
on @*:PART:#:autolimit #
on @*:KICK:#:autolimit #
/*
The on QUIT event is not channel associated, meaning we
must loop through all the common channels we are on with
whoever quit and pass these to the autolimit alias.
*/
on *:QUIT:{
var %i = 1
while ($comchan($nick,%i)) {
;$comchan returns the Nth common channel which you and the specified user is on.
autolimit $v1
;$v1 will refer to $comchan($nick,%i) each time the loop is ran.
inc %i
}
}
/*
Here we have the alias, this will perform several checks
and then use a timer to determine when the limit is set.
*/
alias -l autolimit {
;The -l switch means this alias can only be accessed from within this script.
if ($me isop $1) && (!$timer(autolimit. $+ $1)) && (%limit. [ $+ [ $1 ] ] ) {
;We check that we are op on the specified channel, that a timer isn't already active and that a limit variable is set.
.timerautolimit. $+ $1 1 10 mode $1 +l $!calc( $!nick( $1 ,0) + $v1 )
;The identifiers in this timer will only be evaluated when the timer is triggered, meaning the user count can change in between starting the timer and running it.
;This is achieved with $!, which leaves the identifier unevaluated, evaluating when the timer is ran.
}
}
| Contributed by Daveoh |