blob: 22e249115dd730b588d7ab7454b7e18ec046572e [file] [log] [blame]
Arathorn3ec3af02021-01-20 00:17:51 +01001Initialisierung der Ebenen
2--------------------------
3
4 Standardmaessig wird die Ebenenliste im Morgengrauen ueber die Datei
5 /p/daemon/channeld.init erzeugt. Diese wird vom channeld eingelesen und
6 aus den Angaben die Ebenenkonfiguration vorgenommen.
7
8 Im Homemud wird stattdessen die Datei /p/daemon/channeld.init.testmud
9 verwendet, die viele Standardebenen nicht enthaelt, weil in einem
10 "nackten" Homemud die meisten Ebenenbesitzer nicht existieren und daher
11 das Laden des channeld zu Fehlern fuehren wuerde.
12
13 Die Zugriffsrechte fuer die Ebenen werden von einem sogenannten
14 Supervisor (SV) verwaltet und durchgesetzt. Der channeld fragt den fuer
15 eine Ebene zustaendigen Supervisor, ob die angeforderte Aktion erlaubt
16 ist. Im Fall des channeld uebernitmm das Objekt /p/daemon/channel-sv
17 diese Aufgabe.
18
19 Jeder Supervisor liest die Rechte-Konfiguration aus der Init-Datei ein.
20 Standardmaessig ist dies die globale Datei, man kann aber auch eigene
21 festlegen.
22
23
24Struktur des Init-Files
25-----------------------
26
27 Das Init-File hat folgenden Aufbau:
28
29 <name>:<recv>:<send>:<accessflags>:<channelflags>:<desc>:<supervisor>
30
31 z.B.
32
33 abgilde: 0: 0: 0: 0:Fuer Abenteurer:/gilden/abenteurer
34 Tod: 0:-1: 0: 1:Wer stirbt wann?:/room/death/death_room
35
36 Fuer SVs sind nur die Felder <name>, <recv>, <send> und <accessflags>
37 relevant. Das vordefinierte ch_check_access() entscheidet wie folgt
38 anhand der Angaben:
39
40 Verlassen (C_LEAVE) ist so gut wie immer erlaubt, siehe man channels. Die
41 anderen Aktionen sind in zwei Gruppen eingeteilt:
42
43 1) RECV. Die Aktionen dieser Gruppe sind Suchen (C_FIND), Auflisten
44 (C_LIST) und Betreten (C_JOIN).
45 2) SEND. Die Aktion dieser Gruppe ist zur Zeit nur Senden (C_SEND).
46
47 Aktionen werden zugelassen, wenn Spieler-/Magierlevel mindestens die fuer
48 die jeweilige Aktionsgruppe RECV oder SEND festgelegte Stufe ist.
49
50 Enthaelt <accessflags> das Flag CH_ACCESS_WIZARD, handelt es sich um eine
51 Magierebene, und die Magierstufe des Spielers muss mindestens die
52 Mindeststufe der Ebene sein. Ansonsten wird gegen den Spielerlevel
53 geprueft.
54 Enthaelt <accessflags> das Flag CH_ACCESS_NOGUEST, darf die Ebene nicht
55 von Gaesten benutzt werden (weder Empfangen noch Senden).
56
57 Wenn RECV_LVL oder SEND_LVL auf -1 gesetzt ist, sind die Aktionen der
58 jeweiligen Gruppen komplett geblockt.
59
60
61Hinweise:
62---------
63
64 Im Initfile sollten nur Blueprints als SVs verwendet werden -
65 aber im Allgemeinen koennen SVs auch Clones sein!
66
67 Das Initfile fuer Homemuds heisst /p/daemon/channeld.init.testmud. In
68 dieser Datei sind nicht alle Standardebenen vorkonfiguriert, die es im
69 echten Morgengrauen gibt.
70
71
72Siehe auch:
73-----------
74
75 Konzepte: channels
76 Beispiele: /doc/beispiele/ebenen/supervisor.c
77 /doc/beispiele/ebenen/supervisor-thing.c
78 /doc/beispiele/ebenen/supervisor.txt
79 lfun: ch_read_init_file()
80 ch_set_sv_name()
81