/*
Player groups configuration file
---------------------------------
This file defines "player groups" and their privileges.
Each group has its id and name, lists of available commands and other
permissions, and a list of other groups it inherits from.
Group settings
--------------
<id>
Unique group number. The only required field.
<name>
Any string. If empty, defaults to "Group <id>". It is used in several @who
commands.
<level>
Equivalent of GM level, which was used in revisions before r15572. You can
set it to any number, but usually it's between 0 (default) and 99. Members of
groups with lower level can not perform some actions/commands (like @kick) on
members of groups with higher level. It is what script command getgmlevel()
returns. Group level can also be used to override trade restrictions
(db/item_trade.txt).
<commands>
A group of settings
<command name> : <bool>
or
<commandname> : [ <bool>, <bool> ]
First boolean value is for atcommand, second one for charcommand. If set to
true, group can use command. If only atcommand value is provided, false is
assumed for charcommand. If a command name is not included, false is assumed for
both atcommand and charcommand.
For a full list of available commands, see: doc/atcommands.txt.
Command names must not be aliases.
<log_commands>
Boolean value. If true then all commands used by the group will be logged to
atcommandlog. If setting is omitted in a group definition, false is assumed.
Requires 'log_commands' to be enabled in 'conf/logs.conf'.
<permissions>
A group of settings
<permission> : <bool>
If a permission is not included, false is assumed.
For a full list of available permissions, see: doc/permissions.txt
<inherit>
A list of group names that given group will inherit commands and permissions
from. Group names are case-sensitive.
Inheritance results
-------------------
Both multiple inheritance (Group 2 -> Group 1 and Group 3 -> Group 1) and
recursive inheritance (Group 3 -> Group 2 -> Group 1) are allowed.
Inheritance rules should not create cycles (eg Group 1 inherits from Group 2,
and Group inherits from Group 1 at the same time). Configuration with cycles is
considered faulty and can't be processed fully by server.
Command or permission is inherited ONLY if it's not already defined for the
group.
If group inherits from multiple groups, and the same command or permission is
defined for more than one of these groups, it's undefined which one will be
inherited.
Syntax
------
This config file uses libconfig syntax:
http://www.hyperrealm.com/libconfig/libconfig_manual.html#Configuration-Files
0: Player
1: Trusted Player
20/21: Support (Trusted Player + Common)
40/41: Developer (Support + DEV)
50/51: Event Coordinator (Support + EVTC)
60/61: Game Master (Support + GM)
80/81: Community Coordinator (Support + DEV + EVTC + GM)
99: Administrator (All Perms)
NYI commands:
hairstyle and haircolor (use @debug-look)
snow, sakura, clouds, clouds2, fog, fireworks, leaves, clearweather
changesex (faulty)
misceffect (I don't understand)
*/
groups: (
{
id: 0 /* group 0 is the default group for every new account */
name: "Player"
level: 0
inherit: ( /*empty list*/ )
commands: {
help: true
commands: true
duel: true
accept: true
reject: true
invite: true
leave: true
noask: true // Autoreject duels
email: true
request: true
time: true
jailtime: true
rates: true
breakguild: true
changegm: true
// Bugfix-level commands
hominfo: true
refresh: true
}
permissions: {
/* without this basic permissions regular players could not
trade or party */
can_trade: true
can_party: true
all_commands: true
}
},
// ===== Trusted Players and Bots
{
id: 1
name: "Trusted Player"
inherit: ( "Player" ) /* can do everything Players can and more */
level: 1
commands: {
// Information Commands
whogm: true
uptime: true
charcommands: true
exp: true
mobinfo: true
iteminfo: true
whodrops: true
homstats: true
whereis: true
tee: true
log: true
// Server Spam Limit commands
showexp: true
showzeny: true
showdelay: true
// Community Commands
channel: true
// Convenience Commands
autotrade: true
// KillSteal commands (???)
noks: true
}
log_commands: true
permissions: {
show_client_version: true
}
},
// ===== Support
{
id: 20
name: "Support"
inherit: ( "Trusted Player" )
level: 20
commands: {
// Information Commands
version: true
where: [true, true]
who: true
who2: true
who3: true
whomap: true
whomap2: true
whomap3: true
users: true
mobsearch: true
idsearch: true
showmobs: true
skillid: true
// Movement Commands
tonpc: true
jumpto: true
warp: true
jump: true
slide: true
memo: true
save: true
load: true
hugo: true
linus: true
// Community Commands
broadcast: true
localbroadcast: true
hidenpc: true
shownpc: true
stats: [true, true]
refresh: [true, true]
// Moderation Commands
kick: true
mute: true
unmute: true
// Convenience Commands
monsterignore: true
autoloot: true
alootid: true
autoloottype: true
storage: true
mail: true
effect: true
}
log_commands: true
permissions: {
send_gm: true
receive_requests: true
view_equipment: true
}
},
{
id: 21
name: "Support (Hidden)"
inherit: ( "Support" )
level: 20
commands: {
}
log_commands: true
permissions: {
send_gm: false
}
},
// ===== Developer
{
id: 40
name: "Developer"
inherit: ( "Support" )
level: 40
commands: {
npcmove: true
day: true
night: true
gat: true
skilltree: true
heal: true
alive: true
loadnpc: true
unloadnpc: true
reloadnpc: true
delitem: true
refine: true
speed: true
itemreset: true
reset: true
mapinfo: true
}
log_commands: true
permissions: {
}
},
{
id: 41
name: "Developer (Hidden)"
inherit: ( "Developer" )
level: 40
commands: {
}
log_commands: true
permissions: {
send_gm: false
}
},
// ===== Event Coordinator
{
id: 50
name: "Event Coordinator"
inherit: ( "Support" )
level: 50
commands: {
fakename: true
hide: true
// Community Commands
heal: [true, true]
alive: [true, true]
monster: [true, true]
monstersmall: [true, true]
monsterbig: [true, true]
summon: [true, true]
killmonster2: [true, true]
cleanarea: [true, true]
cleanmap: true
clone: [true, true]
slaveclone: [true, true]
evilclone: [true, true]
disguise: [true, true]
undisguise: [true, true]
pvpon: true
pvpoff: true
gvgon: true
gvgoff: true
npctalk: true
}
log_commands: true
permissions: {
}
},
{
id: 51
name: "Event Coordinator (Hidden)"
inherit: ( "Event Coordinator" )
level: 50
commands: {
}
log_commands: true
permissions: {
send_gm: false
}
},
// ===== Game Master
{
id: 60
name: "Game Master"
inherit: ( "Support" )
level: 60
commands: {
blvl: [true, true]
jlvl: [true, true]
str: [true, true]
agi: [true, true]
vit: [true, true]
int: [true, true]
dex: [true, true]
luk: [true, true]
allstats: true
hide: true
speed: [true, true]
guild: [true, true]
// Moderation Commands
jailfor: true
jail: true
unjail: true
ban: true
block: true
unban: true
delitem: [true, true]
mutearea: true
reset: [true, true]
itemreset: [true, true]
dropall: [true, true]
storeall: [true, true]
accinfo: true
storagelist: [true, true]
cartlist: [true, true]
itemlist: [true, true]
// Community Commands
heal: [true, true]
alive: [true, true]
slide: [true, true]
warp: [true, true]
killer: true
killable: true
pvpon: true
pvpoff: true
gvgon: true
gvgoff: true
cvcon: true
cvcoff: true
killmonster: [true, true]
killmonster2: [true, true]
recall: true
cleanmap: true
nuke: [true, true]
skillon: true
skilloff: true
raisemap: true
npctalk: true
}
log_commands: true
permissions: {
who_display_aid: true
view_hpmeter: true
join_chat: true
kick_chat: true
hide_session: true
hack_info: true
}
},
{
id: 61
name: "Game Master (Hidden)"
inherit: ( "Game Master" )
level: 60
commands: {
}
log_commands: true
permissions: {
send_gm: false
}
},
// ===== Community Coordinator (GM/DEV)
{
id: 80
name: "Community Coordinator"
inherit: ( "Support", "Developer", "Event Coordinator", "Game Master" )
level: 80
commands: {
addwarp: true
refine: [true, true]
repairall: [true, true]
allowks: true
item: [true, true]
item2: [true, true]
itembound: [true, true]
itembound2: [true, true]
zeny: [true, true]
// Community Commands
raise: true
partyrecall: true
guildrecall: true
doom: true
doommap: true
refreshall: true // Use with caution
effect: [true, true]
marry: [true, true] // Use with caution
divorce: true
// Change status and options
displaystatus: [true, true]
option: [true, true]
partyoption: [true, true]
// Moderation Commands
clearstorage: true
cleargstorage: true
recallall: true
breakguild: [true, true]
changeleader: [true, true]
}
log_commands: true
permissions: {
any_warp: true
}
},
{
id: 81
name: "Community Coordinator (Hidden)"
inherit: ( "Community Coordinator" )
level: 80
commands: {
}
log_commands: true
permissions: {
send_gm: false
}
},
// ===== Administrator
// (There isn't a hidden admin yet)
{
id: 99
name: "Administrator"
level: 99
inherit: ( "Community Coordinator" )
commands: {
/* not necessary due to all_commands: true */
}
log_commands: true
permissions: {
can_trade_bound: false
can_party: true
all_skill: false
all_equipment: true
skill_unconditional: false
use_check: true
use_changemaptype: true
all_commands: true
hchsys_admin: true
}
}
)