summaryrefslogtreecommitdiff
path: root/conf/groups.conf
blob: 4e57b899092c271d294b939afa1bc7e7ba88a8b5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
/*
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
	}
},
// ===== 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
	}
}
)