blob: 9263da60be2ce49e2296685e2db8a4af48961342 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001Para-Raeume
2
3 Grundsaetzlich wird ein Para-Raum dadurch gekennzeichnet, dass an den
4 Dateinamen ein ^n angehaengt wird, n gibt die Dimension an. Ein Raum in
5 Para 1 wuerde also raum^1.c heissen.
6
7 Man muss sich nicht selbst darum kuemmern, dass Spieler in den richtigen
8 Para-Raum bewegt werden, das passiert im move().
9
10 Damit man bei gleichen Raeumen, die sich nur durch beispielsweise die
11 Anwesenheit eines fiesen Monsters unterscheiden nicht alles doppelt
12 beschreiben muss, sollte man das bekannte Konzept der Vererbung
13 verwenden. Hierfuer gibt es zwei Ansaetze:
14
15LOESUNG 1:
16 Habe ich einen Raum, der in Para exakt so ist wie in Normal, wo nur eine
17 Sache hinzugefuegt wird, schreibe ich meinen Raum in normal so wie ich es
18 immer tun wuerde, erbe diesen im Para-Raum und setze mein fieses Monster
19 hinein.
20 Einziger Unterschied im Normal-Raum: Damit er immer initialisiert wird,
21 muss ich create_super() erstellen und darin create aufrufen. Sonst buggt
22 der Normalraum beim Betreten, falls der Pararaum zuerst betreten wurde,
23 weil der Normalraum dann zwar geladen aber selbst nicht initialisiert
24 wurde.
25
26 Beispiel:
27
28 raum.c:
29 inherit "/std/room";
30
31 protected void create() {
32 ::create();
33 ...
34 }
35
36 protected void create_super() {
37 create();
38 }
39
40 raum^1.c:
41 inherit "raum";
42
43 protected void create() {
44 ::create();
45 AddItem("fieses_monster",REFRESH_REMOVE);
46 }
47
48LOESUNG 2:
49 Habe ich einen Raum, wo auch in Normal Dinge existieren, die es nicht in
50 Para geben soll, kann ich einen Raum mit der Dimensionsnummer 0 erstellen.
51 Dieser wird niemals automatisch betreten, ausser ein Ausgang fuehrt
52 explizit dort hin.
53
54 Beispiel:
55
56 raum^0.c:
57 inherit "/std/room";
58
59 protected void create() {
60 ::create();
61 ...
62 }
63
64 raum.c:
65 inherit "raum^0";
66
67 protected void create() {
68 ::create();
69 AddItem("harmloses_monster",REFRESH_REMOVE);
70 }
71
72 raum^1.c:
73 inherit "raum^0";
74
75 protected void create() {
76 ::create();
77 AddItem("fieses_monster",REFRESH_REMOVE);
78 }
79
80
81SIEHE AUCH:
82 move(L), create_super(L), P_PARA(P)
83
84Letzte Aenderung: 18.01.2015, Bugfix