From WikiChip
mirc/access levels
< mirc
Revision as of 16:39, 14 September 2014 by Meta (talk | contribs) (& prefix)

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.

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!
}