Access levels are assigned both to a user and to an event and serve to limit a user's access to only certain events.
The default access level is 1 for users that are not listed in the Users list. All users can access level 1 events. The higher a user's access level is, the more events that user can access. You can change the default user level to allow unlisted users to access more commands.
In the Users section you can specify a list of users and their access levels using the format:
The first level is a general access level, which means that the user can access all levels equal to or less than 3. All the other levels are levels that an event must specifically have to allow a user to access it.
If you want to force the first access level to be a specific level instead of a general access level, you can prefix it with an equal sign.
Now this user has access specifically to level 3, 5, and 6 event and to no other events.
In general the format of an event is:
ctcp 1:HELP:*:/msg $nick No help is available for level 1 users
The above ctcp command can be accessed by all users because it is a level 1 command. So if a user with nickname goat sends you a /ctcp yournick HELP, your script will send them the above reply.
Only the highest level matching event is triggered for a user.
You can also used named levels which work the same way as a specific level but are easier to understand and read than a number.
on @friend:JOIN:#mIRC:/mode $chan +o $nick
This treats the word friend as a specific access level and matches the user with the event, and because the user is your friend, you give him ops.
You can limit access to an event by specifying a special prefix which determines how an event is processed or triggered by users.
The me prefix
You can limit an event to trigger only to your actions by using the me prefix. For example, the following event will only trigger when you join a channel:
on me:*:JOIN:#:/msg # Hello to one and all!
The + prefix
You can limit an event to users with a specific access level by using the + prefix.
ctcp +5:HELP:*:/msg $nick You have accessed a level +5 event
The above user cannot access this ctcp event even though he has an access level higher than 5 because the event is limited only to level 5 users.
The * prefix
You can allow any user to trigger an event regardless of their access level by using the * prefix.
on *:TEXT:help:#:/msg $nick you have accessed a * level event
The ! prefix
You can prevent an event from being triggered if it was initiated by you by using the ! prefix.
ctcp !2:HELP:*:/msg $nick You have accessed a level 2 event
You would be unable to access the above event regardless of your access level.
The @ prefix
You can limit events to being executed only when you have Ops on a channel by using the @ prefix.
on @2:JOIN:#mIRC:/mode $chan +o $nick
When the above user joins channel #mIRC and you have Ops on #mIRC, the associated /mode command will be executed, in this case giving the user Ops. If you do not have Ops, the event will not trigger.
The & prefix
You can prevent an event from being triggered if a previous script used /halt or /haltdef to halt the display of default text for an event by using the & prefix.
on &1:TEXT:*:?:/echo this event will not trigger if $halted is true
The $ prefix
Indicates that the matchtext section of a definition contains a regular expression.
on $*:TEXT:m/regular expression/switches:#:/echo message: $1-
The m and the switches are optional. The // are required. If switches are used they must be standard PCRE switches, otherwise the match will fail. You can use switch S to strip control codes from $1-.
The = suffix
You can prevent users with higher access levels from accessing all lower access level events by using the = suffix.
ctcp 2:HELP:*:/msg $nick You have accessed a level 2 event
The above user cannot access any of these events because the level 5 event prevents him from accessing all HELP events with access levels lower than 5.
The ! suffix
You can prevent commands for a certain event level from being processed by using the ! suffix.
ctcp 5:PING:*:echo PING!
The ! at the end of the line tells the remote to halt any further processing of level 5 commands.
You can create separate groups in scripts by using the # hash prefix.
[ list of events ]
You can use the /enable and /disable commands to enable or disable groups. A group that is disabled will be ignored when processing events. A disabled group looks like this:
[ list of events ]
You cannot have groups within groups.
Order of definitions
Many of the prefixes and controls are sensitive to numerical order of the definitions. The safest thing is to order your definitions starting with the lowest access levels first and increasing numerically down the list, this makes it easier to keep track of which events should trigger first.