/* 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 -------------- Unique group number. The only required field. Any string. If empty, defaults to "Group ". It is used in several @who commands. 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). A group of settings : or : [ , ] 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. 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'. A group of settings : If a permission is not included, false is assumed. For a full list of available permissions, see: doc/permissions.txt 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 // KillSteal commands (???) noks: true } log_commands: true permissions: { /* without this basic permissions regular players could not trade or party */ can_trade: true can_party: 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 } 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 invisible: 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 invisible: 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 } } )