blob: bf29137cf7b533270b6fc69e0243c1146568f577 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001move()
2======
3
4move()
5
6FUNKTION:
7 Fuer unbelebte Gegenstaende (/std/thing):
8 varargs int move(object|string dest, int method);
9
10 Fuer Lebewesen (/std/living, /std/npc, usw.):
11 varargs int move(object|string dest, int method, string dir,
12 string textout, string textin);
13
14DEFINIERT IN
15------------
16::
17
18 /std/thing/moving.c
19 /std/living/moving.c
20
21ARGUMENTE
22---------
23::
24
25 dest
26 Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).
27
28 method
29 Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
30 koennen auch mehrere zusammenge-ODER-t werden).
31
32 dir
33 Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
34 eingeschlagene Laufrichtung (zB. "nach Norden").
35
36 textout
37 Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
38 Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
39 noch an textout angehaengt. Der Name des Lebewesens wird der
40 Meldung in jedem Fall vorangestellt.
41
42 textin
43 Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
44 betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
45 wird noch der Name des Spielers vorangestellt.
46
47BESCHREIBUNG
48------------
49::
50
51 Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
52 Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
53 Bewegungsmethode method zu waehlen.
54
55 In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
56 definiert:
57 M_NOCHECK
58 Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
59 in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
60 Fall sein koennte).
61
62 M_GO
63 Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
64 Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
65 benutzen, wenn man Spieler ueber einen SpecialExit in einen
66 benachbarten Raum bewegt.
67
68 M_TPORT
69 Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
70 Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
71 mittels M_TPORT verlaesst oder betritt.
72
73 M_NO_SHOW
74 Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
75 Zielraumes nicht ausgegeben.
76
77 M_NO_ATTACK
78 Beim Bewegen von Lebewesen bekommen diese keinen
79 Begruessungsschlag, wenn ein Feind im Zielraum steht.
80
81 M_SILENT
82 Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
83 Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
Arathorn78eab1b2019-11-26 19:24:18 +010084 (Magier mit 'mschau an' sehen die Bewegungen dennoch, es wird
85 eine Standardmeldung ausgegeben.)
Zesstra18626972017-01-31 10:38:27 +010086
87 M_GET
88 Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
89 Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
90 bewegt.
91
92 M_PUT
93 Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
94 bewegt.
95
96 M_GIVE
97 Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
98 weitergereicht.
99
100 M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
101 Es wird die gesamte Menge bewegt, nicht nur ein Teil.
102
103 Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
104 reicht es, als method M_NOCHECK zu uebergeben.
105
106 Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
107 beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
108 M_SILENT enthalten, so geschieht dies ohne Meldungen.
109
110 Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
111 Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
112 laesst sich nur bei Lebewesen anwenden.
113
114ANMERKUNG
115---------
116::
117
118 Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
119 greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
120 aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
121 anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
122 ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
123 genau macht. ;-)
124
125
126
127 Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
128 von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
129 landet.
130
131 Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
132 auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
133 innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
134 allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
135
136 Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
137 oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
138 erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
139
140RUeCKGABEWERT
141-------------
142::
143
144 Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
145 definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
146 Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
147 Zukunft wird == MOVE_OK empfohlen.)
148
149
150
151 MOVE_OK
152 Die Bewegung wurde erfolgreich abgeschlossen.
153
154 ME_PLAYER
155 Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
156 mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
157 angegeben werden.
158
159 ME_TOO_HEAVY
160 Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
161 aufnehmen.
162
163 ME_CANT_TPORT_IN
164 Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
165 M_TPORT ohne M_NOCHECK).
166
167 ME_CANT_TPORT_OUT
168 Der Raum, in dem sich das Lebewesen befindet, verbietet das
169 Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
170
171 ME_CANT_BE_DROPPED
172 Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
173 gesetzt ist).
174
175 ME_CANT_BE_TAKEN
176 Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
177 ist).
178
179 ME_CANT_BE_INSERTED
180 Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
181
182 ME_CANT_LEAVE_ENV
183 Der Container verhindert ein verlassen des Objektes
184
185 ME_TOO_HEAVY_FOR_ENV
186 Ein Objekt kann einen Behaelter nicht verlassen, da es dem
187 Lebewesen sonst zu schwer wuerde.
188
189 TOO_MANY_OBJECTS
190 Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
191
192 ME_NOT_ALLOWED
193 Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
194 Testspielern und Magiern betreten werden. Bei Spielern oder
195 Gildentesties gibt es diese Fehlermeldung.
196 ME_WAS_DESTRUCTED
197 Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
198 zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
199 beendet werden konnte. (Bsp: sensitive Objekte)
200
201 ME_DONT_WANT_TO_BE_MOVED
202 Das Objekt moechte nicht bewegt werden.
203
204BEISPIELE
205---------
206::
207
208 o Ein Objekt "gibt sich" dem Spieler:
209
210 move(this_player(), M_GET);
211
212 o Ein Lebewesen wird in die Abenteurergilde teleportiert:
213
214 lv->move("/gilden/abenteurer", M_TPORT);
215
216 o Ein Spieler "wird in die Gilde gegangen":
217
218 this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
219
220 Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
221 Meldung:
222 "<name> geht in die Gilde."
223
224 o Ein Spieler schwimmt durchs Meer:
225
226 this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
227 "schwimmt herein");
228
229 Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
230 Spieler in seinem Zielraum sehen "<name> schwimmt herein."
231
232SIEHE AUCH
233----------
234::
235
Arathorn074665c2019-08-30 21:53:00 +0200236 Seherkommandos
237 setmin, setmmin, setmout, setmmout, review
238 Verwandt:
239 move_object(), remove(), PreventInsert(), PreventLeave(),
240 PreventInsertLiving(), PreventLeaveLiving(), PreventMove(),
241 NotifyInsert(), NotifyLeave(), NotifyMove(), NotifyRemove(),
242 init(), exit()
243 Properties:
244 P_MSGIN, P_MSGOUT, P_MMSGIN, P_MMSGOUT, P_NO_PLAYERS, P_PARA,
245 P_NO_TPORT
246 Objekte:
247 /std/thing/moving.c, /std/living/moving.c
248
2492019-Aug-20, Arathorn
Zesstra18626972017-01-31 10:38:27 +0100250