Template:mIRC Guide Access levels in mIRC are a mechanism by which events can be restricted to certain user levels or named groups. Almost all events have a level parameter that specifies the event's access level.
Contents
User list
The list of users and their access is stored in the "users" tab of the script editor. Only a single address is stored per line and must follow the following syntax:
<levels>:<address> <additional info>
Access levels are comma-delimited values that define the levels of the user. Although usually, the levels are numeric, you can use a name instead like "botAdmin" or "friends".
The <info> parameter is an optional parameter that can be used to store some additional information about the user or other useful miscellaneous data.
10,20:some!one@example.com friend:dan!z@some.isp.net high school friend
Adding/Removing users
There are two commands that can be used to add a user to the access list, /auser and /guser. They follow this syntax:
/auser [-a] <levels> <name|address> [info] /guser [-a] <levels> <name> [addressType] [info]
Both /auser and /guser do the same thing, they add a specific user to the user list with the access levels specified (Comma delimited). The -a switch can be used to simply add additional access levels to an existing user, otherwise all the old levels gets replaced with the new ones. The fundamental difference between /auser and /guser is that /guser can be used to look up the address of a user while /auser requires you to provide it beforehand.
;Add joe (address mask type 2), access level 'friend' /guser friend joe 2 neighbor
The /ruser command can be used to remove a user completely from the access list or simply remove one of his levels.
/ruser [levels] <name|address> [type]
For example:
/ruser madman 2 /ruser 2,10 foobar
The user info parameter can be changed at any time using the /iuser command:
/iuser <name|address> [info]
Usage
The <level> parameter of an event is used to indicate which level/group can activate that event. For example:
on 10:text:.hello:#:{ msg $chan Hello $nick $+ ! }
Notice the access level defined is 10. In this case any user in your access list level 10 or above will trigger this event.
Event prefixes
mIRC offers a lot of prefixes to slightly alter how the event activates.
me prefix
The 'me' prefix can be used to get an event to trigger only if you triggered it (if ($nick == $me)
Note: the me prefix is a bit special, it requires a new semi colon before others prefixes.
For example:
on me:*:join:#support:{ msg $chan Hello $chan $+ , I need help! }
! prefix
The exclamation mark prefix can be used to prevent an event from being activated by you (if ($nick != $me)).
For example:
on !1:join:#support:{ msg $chan Hello $nick $+ , do you need help? }
The event above will never get activated by you joining #support, only other people.
@ prefix
The @ symbol can be used as a prefix to indicate that the event can only be activated if you are an operator in the channel. You can think of it as "if ($me isop $chan) {"
For example:
on @10:text:.op:#myChan:{ mode $chan +o-v $nick $nick }
The code above will only work if you are an operator in #myChan at the time the user typed ".o".
& prefix
The & prefix can be used to prevent the event from being executed if the previous event called the /haltdef or /halt commands.
For example, given the following two on TEXT events placed in separate files...
script1.mrc
on *:TEXT:!test:?:haltdef
script2.mrc
on &*:TEXT:*:?:echo -ga I triggered because $!halted == $halted $+ !
The second event will trigger upon recieving any msg sent via query except !test, because the first event calls the haltdef command upon receiving !test.
* prefix
This prefix can be used to allow any user to activate the event regardless of their access level.
For Example:
on *:text:.calc *:#:{ notice $nick $2- = $calc($replace($2-, pi, $pi)) }
+ prefix
By default, the numeric prefix means that level and any level higher can trigger that event. Using the + prefix, you can limit the event to be exactly the level specified.
For example:
on +5:text:.h:#myChan:{ mode $chan +h $nick }
The code above will only work for users with access level of exactly 5. Any user with higher access level will not activate that event.
Named access levels
Sometimes it's beneficial to give an access group a name instead of a numeric value. A good example is bot admins, friends, or even channel members. You can define such groups using the normal /guser and /auser commands:
/guser BotAdmin Mike123 2 /guser BotAdmin Joe73 2 /guser BotAdmin Dave12 2
With that you can use the named group level in events, for example:
on BotAdmin:text:!example:#:{ msg $chan Hello Bot Admin! }