blob: e2bc7120c550dbab41c4ab58b83bd7a72363a810 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2move()
3******
4
MG Mud User88f12472016-06-24 23:31:02 +02005move()
6
Zesstra953f9972017-02-18 15:37:36 +01007FUNKTION:
8 Fuer unbelebte Gegenstaende (/std/thing):
9 varargs int move(object|string dest, int method);
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011 Fuer Lebewesen (/std/living, /std/npc, usw.):
12 varargs int move(object|string dest, int method, string dir,
13 string textout, string textin);
MG Mud User88f12472016-06-24 23:31:02 +020014
MG Mud User88f12472016-06-24 23:31:02 +020015
Zesstra953f9972017-02-18 15:37:36 +010016DEFINIERT IN
17============
MG Mud User88f12472016-06-24 23:31:02 +020018
Zesstra953f9972017-02-18 15:37:36 +010019 /std/thing/moving.c
20 /std/living/moving.c
MG Mud User88f12472016-06-24 23:31:02 +020021
MG Mud User88f12472016-06-24 23:31:02 +020022
Zesstra953f9972017-02-18 15:37:36 +010023ARGUMENTE
24=========
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstra953f9972017-02-18 15:37:36 +010026 dest
27 Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).
MG Mud User88f12472016-06-24 23:31:02 +020028
Zesstra953f9972017-02-18 15:37:36 +010029 method
30 Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
31 koennen auch mehrere zusammenge-ODER-t werden).
MG Mud User88f12472016-06-24 23:31:02 +020032
Zesstra953f9972017-02-18 15:37:36 +010033 dir
34 Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
35 eingeschlagene Laufrichtung (zB. "nach Norden").
MG Mud User88f12472016-06-24 23:31:02 +020036
Zesstra953f9972017-02-18 15:37:36 +010037 textout
38 Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
39 Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
40 noch an textout angehaengt. Der Name des Lebewesens wird der
41 Meldung in jedem Fall vorangestellt.
MG Mud User88f12472016-06-24 23:31:02 +020042
Zesstra953f9972017-02-18 15:37:36 +010043 textin
44 Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
45 betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
46 wird noch der Name des Spielers vorangestellt.
MG Mud User88f12472016-06-24 23:31:02 +020047
MG Mud User88f12472016-06-24 23:31:02 +020048
Zesstra953f9972017-02-18 15:37:36 +010049BESCHREIBUNG
50============
MG Mud User88f12472016-06-24 23:31:02 +020051
Zesstra953f9972017-02-18 15:37:36 +010052 Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
53 Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
54 Bewegungsmethode method zu waehlen.
MG Mud User88f12472016-06-24 23:31:02 +020055
Zesstra953f9972017-02-18 15:37:36 +010056 In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
57 definiert:
58 M_NOCHECK
59 Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
60 in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
61 Fall sein koennte).
MG Mud User88f12472016-06-24 23:31:02 +020062
Zesstra953f9972017-02-18 15:37:36 +010063 M_GO
64 Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
65 Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
66 benutzen, wenn man Spieler ueber einen SpecialExit in einen
67 benachbarten Raum bewegt.
MG Mud User88f12472016-06-24 23:31:02 +020068
Zesstra953f9972017-02-18 15:37:36 +010069 M_TPORT
70 Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
71 Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
72 mittels M_TPORT verlaesst oder betritt.
MG Mud User88f12472016-06-24 23:31:02 +020073
Zesstra953f9972017-02-18 15:37:36 +010074 M_NO_SHOW
75 Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
76 Zielraumes nicht ausgegeben.
MG Mud User88f12472016-06-24 23:31:02 +020077
Zesstra953f9972017-02-18 15:37:36 +010078 M_NO_ATTACK
79 Beim Bewegen von Lebewesen bekommen diese keinen
80 Begruessungsschlag, wenn ein Feind im Zielraum steht.
MG Mud User88f12472016-06-24 23:31:02 +020081
Zesstra953f9972017-02-18 15:37:36 +010082 M_SILENT
83 Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
84 Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
MG Mud User88f12472016-06-24 23:31:02 +020085
Zesstra953f9972017-02-18 15:37:36 +010086 M_GET
87 Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
88 Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
89 bewegt.
MG Mud User88f12472016-06-24 23:31:02 +020090
Zesstra953f9972017-02-18 15:37:36 +010091 M_PUT
92 Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
93 bewegt.
MG Mud User88f12472016-06-24 23:31:02 +020094
Zesstra953f9972017-02-18 15:37:36 +010095 M_GIVE
96 Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
97 weitergereicht.
MG Mud User88f12472016-06-24 23:31:02 +020098
Zesstra953f9972017-02-18 15:37:36 +010099 M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
100 Es wird die gesamte Menge bewegt, nicht nur ein Teil.
MG Mud User88f12472016-06-24 23:31:02 +0200101
Zesstra953f9972017-02-18 15:37:36 +0100102 Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
103 reicht es, als method M_NOCHECK zu uebergeben.
MG Mud User88f12472016-06-24 23:31:02 +0200104
Zesstra953f9972017-02-18 15:37:36 +0100105 Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
106 beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
107 M_SILENT enthalten, so geschieht dies ohne Meldungen.
MG Mud User88f12472016-06-24 23:31:02 +0200108
Zesstra953f9972017-02-18 15:37:36 +0100109 Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
110 Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
111 laesst sich nur bei Lebewesen anwenden.
MG Mud User88f12472016-06-24 23:31:02 +0200112
MG Mud User88f12472016-06-24 23:31:02 +0200113
Zesstra953f9972017-02-18 15:37:36 +0100114ANMERKUNG
115=========
MG Mud User88f12472016-06-24 23:31:02 +0200116
Zesstra953f9972017-02-18 15:37:36 +0100117 Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
118 greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
119 aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
120 anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
121 ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
122 genau macht. ;-)
MG Mud User88f12472016-06-24 23:31:02 +0200123
MG Mud User88f12472016-06-24 23:31:02 +0200124
MG Mud User88f12472016-06-24 23:31:02 +0200125
Zesstra953f9972017-02-18 15:37:36 +0100126 Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
127 von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
128 landet.
MG Mud User88f12472016-06-24 23:31:02 +0200129
Zesstra953f9972017-02-18 15:37:36 +0100130 Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
131 auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
132 innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
133 allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
MG Mud User88f12472016-06-24 23:31:02 +0200134
Zesstra953f9972017-02-18 15:37:36 +0100135 Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
136 oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
137 erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
MG Mud User88f12472016-06-24 23:31:02 +0200138
MG Mud User88f12472016-06-24 23:31:02 +0200139
Zesstra953f9972017-02-18 15:37:36 +0100140RUeCKGABEWERT
141=============
MG Mud User88f12472016-06-24 23:31:02 +0200142
Zesstra953f9972017-02-18 15:37:36 +0100143 Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
144 definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
145 Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
146 Zukunft wird == MOVE_OK empfohlen.)
MG Mud User88f12472016-06-24 23:31:02 +0200147
MG Mud User88f12472016-06-24 23:31:02 +0200148
MG Mud User88f12472016-06-24 23:31:02 +0200149
Zesstra953f9972017-02-18 15:37:36 +0100150 MOVE_OK
151 Die Bewegung wurde erfolgreich abgeschlossen.
MG Mud User88f12472016-06-24 23:31:02 +0200152
Zesstra953f9972017-02-18 15:37:36 +0100153 ME_PLAYER
154 Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
155 mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
156 angegeben werden.
MG Mud User88f12472016-06-24 23:31:02 +0200157
Zesstra953f9972017-02-18 15:37:36 +0100158 ME_TOO_HEAVY
159 Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
160 aufnehmen.
MG Mud User88f12472016-06-24 23:31:02 +0200161
Zesstra953f9972017-02-18 15:37:36 +0100162 ME_CANT_TPORT_IN
163 Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
164 M_TPORT ohne M_NOCHECK).
MG Mud User88f12472016-06-24 23:31:02 +0200165
Zesstra953f9972017-02-18 15:37:36 +0100166 ME_CANT_TPORT_OUT
167 Der Raum, in dem sich das Lebewesen befindet, verbietet das
168 Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
MG Mud User88f12472016-06-24 23:31:02 +0200169
Zesstra953f9972017-02-18 15:37:36 +0100170 ME_CANT_BE_DROPPED
171 Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
172 gesetzt ist).
MG Mud User88f12472016-06-24 23:31:02 +0200173
Zesstra953f9972017-02-18 15:37:36 +0100174 ME_CANT_BE_TAKEN
175 Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
176 ist).
MG Mud User88f12472016-06-24 23:31:02 +0200177
Zesstra953f9972017-02-18 15:37:36 +0100178 ME_CANT_BE_INSERTED
179 Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
180
181 ME_CANT_LEAVE_ENV
182 Der Container verhindert ein verlassen des Objektes
183
184 ME_TOO_HEAVY_FOR_ENV
185 Ein Objekt kann einen Behaelter nicht verlassen, da es dem
186 Lebewesen sonst zu schwer wuerde.
187
188 TOO_MANY_OBJECTS
189 Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
190
191 ME_NOT_ALLOWED
192 Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
193 Testspielern und Magiern betreten werden. Bei Spielern oder
194 Gildentesties gibt es diese Fehlermeldung.
195 ME_WAS_DESTRUCTED
196 Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
197 zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
198 beendet werden konnte. (Bsp: sensitive Objekte)
199
200 ME_DONT_WANT_TO_BE_MOVED
201 Das Objekt moechte nicht bewegt werden.
202
203
204BEISPIELE
205=========
206
207 o Ein Objekt "gibt sich" dem Spieler:
208
209 move(this_player(), M_GET);
210
211 o Ein Lebewesen wird in die Abenteurergilde teleportiert:
212
213 lv->move("/gilden/abenteurer", M_TPORT);
214
215 o Ein Spieler "wird in die Gilde gegangen":
216
217 this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
218
219 Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
220 Meldung:
221 "<name> geht in die Gilde."
222
223 o Ein Spieler schwimmt durchs Meer:
224
225 this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
226 "schwimmt herein");
227
228 Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
229 Spieler in seinem Zielraum sehen "<name> schwimmt herein."
230
231
232SIEHE AUCH
233==========
234
Arathorn074665c2019-08-30 21:53:00 +0200235 Seherkommandos
236 setmin, setmmin, setmout, setmmout, review
237 Verwandt:
238 move_object(), remove(), PreventInsert(), PreventLeave(),
239 PreventInsertLiving(), PreventLeaveLiving(), PreventMove(),
240 NotifyInsert(), NotifyLeave(), NotifyMove(), NotifyRemove(),
241 init(), exit()
242 Properties:
243 P_MSGIN, P_MSGOUT, P_MMSGIN, P_MMSGOUT, P_NO_PLAYERS, P_PARA,
244 P_NO_TPORT
245 Objekte:
246 /std/thing/moving.c, /std/living/moving.c
Zesstra953f9972017-02-18 15:37:36 +0100247
Arathorn074665c2019-08-30 21:53:00 +02002482019-Aug-20, Arathorn