blob: e1774c670b0c9239612f6762549eebd0488a95e2 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001STANDARDOBJEKT FUER RAEUME:
2
3BENUTZUNG:
4 inherit "std/room";
5
6 #include <properties.h>
7 #include <rooms.h> // Fuer AddItem() und NewDoor()
8
9BESCHREIBUNG:
10 Ein Raum ist ein Objekt, dass von Spielern oder anderen Lebewesen
11 betreten werden kann. Er hat Lang- und Kurzbeschrreibungen von
12 innen und aussen (zum Beispiel Schiffe oder aehnliche Raeume in
13 Raeumen), die sich der Spieler je nach seinen Beduerftnissen
14 anzeigen lassen kann (kurz/lang-Modus).
15
16 Properties:
17
18 P_INT_SHORT
19 Kurzbeschreibung innerhalb des Raumes
20 P_INT_LONG
21 Langbeschreibung innerhalb des Raumes
22 P_SHORT
23 Kurzbeschriebung von aussen (nur noetig, wenn man den Raum
24 auch wirklich von aussen sehen kann)
25 P_LONG
26 Langbeschreibung von aussen (siehe P_SHORT)
27 Um Situationsbezogene Beschreibungen zu bekommen, kann man
28 int_short(), int_long(), short(), long() ueberschreiben, oder
29 den process_string Mechanismus verwenden (siehe entsprechende
30 Dokumentation)
31
32 P_LIGHT
33 Lichtlevel des Raums (0 dunkel, 1 hell)
34 P_INDOORS
35 1 Wenn der Raum nicht im Freien ist
36 P_TRANSPARENT
37 Ist ungleich 0, wenn man in den Raum von aussen reinschauen
38 kann, oder von innen nach aussen
39 P_NO_TPORT
40 Zum verhindern von Teleportversuchen in oder aus dem Raum
41 (siehe auch /doc/properties.h)
42 P_NOMAGIC
43 Im Raum kann nicht gezaubert werden.
44
45 Funktionen:
46 AddExit(string|string* kmnd, string zielraum)
47 <kmnd> kann ein String sein oder eine Liste von Strings
48 mit den Kommandos mit denen der Spieler in <zielraum>
49 landen soll.
50 RemoveExit(string|string* kmnd)
51 <kmnd> ist ein String oder eine Liste von Strings, deren
52 Ausgaenge entfernt werden sollen. Dabei muss man etwas vor-
53 sichtig sein, da ein Spieler, der zum Zeitpunkt des Aufrufs
54 im Raum ist, die Aktion fuer sich noch definiert hat.
55 Also: Nur benutzen, wenn man weiss, was man tut!
56 AddSpecialExit(string|string* kmnd, string funktion)
57 <funktion> wird aufgerufen, wenn der Spieler das Kommando
58 <kmnd> tippt (oder eins der Kommandos, wenn <kmnd> eine
59 Liste ist). Nuetzlich zum Beispiel um einen Spieler nur
60 durchzulassen, wenn ein Waechter nicht da ist.
61 RemoveSpecialExit(string|string* kmnd)
62 siehe RemoveExit()
63 NewDoor()
64 siehe /doc/std/door
65
66 Um Raeume interessanter zu machen, kann man ihnen Details, die
67 vom Spieler angeschaut werden koennen, einbauen:
68
69 AddDetail(string|string* keys, string descr)
70 Eine Beschreibung von Details, die vom Spieler angeschaut
71 werden koennen wird dem Raum gegeben. <keys> kann ein
72 String sein oder eine Liste von Strings. <descr> ist
73 die Beschreibung, die der Spieler erhaelt.
74 RemoveDetail(string|string* keys)
75 Entfernt ein Detail aus einem Raum. <keys> kann ein String
76 sein oder eine Liste von Strings.
77 AddSpecialDetail(string|string* keys, string function)
78 Im Prinzip wie AddDetail(), nur wird als zweites Argument
79 kein fester String angegeben, sonder eine Funktion, die
80 einen String zurueckgeben muss. Damit kann man variable
81 Details programmieren.
82 RemoveSpecialDetail(string|string* keys)
83 siehe RemoveDetail()
84 AddReadDetail(string|string* keys, string desc)
85 <desc> wird ausgegeben, wenn ein Spieler den <key> liest.
86 <keys> kann wieder ein String oder eine Liste von Strings
87 sein.
88 RemoveReadDetail(string|string* keys)
89 siehe RemoveDetail()
90 AddRoomMessage(string* msg, int prob, string|string *func)
91 Alle <prob> Sekunden wird aus einer Liste von Meldungen
92 (<msg>) zufaellig eine ausgesucht, die dann im Raum er-
93 scheint. Wenn das Argument <func> angegeben ist, wird
94 eine Funktion diesen Namens aufgerufen, der der Index
95 der ausgegebenen Meldung als Argument uebergeben wird.
96 func darf auch einen Array von Funktionen enthalten. Es wird
97 dann zufaellig eine ausgewaehlt.
98
99 AddCmd(string|string* cmd, string func, int flag)
100 Im Raum wird beim Kommando <cmd> (oder einem der Kommandos)
101 die Funktion <func> aufgerufen. <func> muss 1 zurueck-
102 geben, wenn die Funktion die Kombination aus Kommando
103 und Argumenten akzeptiert, ansonsten 0. Alles was ein
104 Spieler hinter <cmd> noch angibt, wird der Funktion als
105 Argument uebergeben. Wenn <flag> gesetzt ist, wird jedes
106 Kommando, das mit <cmd> beginnt akzeptiert.
107 RemoveCmd(string|string* cmd)
108 Entfernt ein Kommando aus dem Raum.
109 ACHTUNG: Bei Spielern, die zum Zeitpunkt des Funktions-
110 aufrufs noch im Raum sind, ist das Kommando noch definiert.
111 Also: Nur benutzen, wenn man genau weiss, was man tut.
112
113 AddItem(string filename, int refresh)
114 Ein Objekt mit Pfad <filename> wird erzeugt und in den
115 Raum bewegt, dabei gibt es vier verschiedene Modi, die
116 ueber das Argument <refresh> angegeben werden:
117 REFRESH_NONE: Das Objekt wird nur beim allerersten mal
118 erzeugt, und dann nie wieder (erst beim reboot)
119 REFRESH_DESTRUCT: Ein neues Objekt wird erst erzeugt,
120 wenn das alte zerstoert ist. So kann man sicher
121 gehen, dass nur ein Exemplar im Spiel ist.
122 REFRESH_REMOVE: Beim reset wird ein neues Objekt erzeugt,
123 wenn sich das alte nicht mehr im Raum befindet.
124 REFRESH_ALWAYS: Bei jedem reset wird ein neues Objekt
125 erzeugt. VORSICHT: Kann zu riesigen Mengen von
126 Objekten fuehren, wenn ein Raum lange nicht be-
127 sucht wird.
128 Die Konstanten REFRESH_* sind in <rooms.h> definiert.
129
130 Auf die Properties P_EXITS, P_SPECIAL_EXITS, P_DETAILS,
131 P_SPECIAL_DETAILS, P_READ_DETAILS, P_COMMANDS und P_ITEMS
132 sollte NICHT direkt zugegriffen werden.