blob: 53593f82d82922caa1fe5e8607eefc52e3ad787f [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.
Arathorn78eab1b2019-11-26 19:24:18 +010085 (Magier mit 'mschau an' sehen die Bewegungen dennoch, es wird
86 eine Standardmeldung ausgegeben.)
MG Mud User88f12472016-06-24 23:31:02 +020087
Zesstra953f9972017-02-18 15:37:36 +010088 M_GET
89 Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
90 Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
91 bewegt.
MG Mud User88f12472016-06-24 23:31:02 +020092
Zesstra953f9972017-02-18 15:37:36 +010093 M_PUT
94 Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
95 bewegt.
MG Mud User88f12472016-06-24 23:31:02 +020096
Zesstra953f9972017-02-18 15:37:36 +010097 M_GIVE
98 Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
99 weitergereicht.
MG Mud User88f12472016-06-24 23:31:02 +0200100
Zesstra953f9972017-02-18 15:37:36 +0100101 M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
102 Es wird die gesamte Menge bewegt, nicht nur ein Teil.
MG Mud User88f12472016-06-24 23:31:02 +0200103
Zesstra953f9972017-02-18 15:37:36 +0100104 Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
105 reicht es, als method M_NOCHECK zu uebergeben.
MG Mud User88f12472016-06-24 23:31:02 +0200106
Zesstra953f9972017-02-18 15:37:36 +0100107 Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
108 beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
109 M_SILENT enthalten, so geschieht dies ohne Meldungen.
MG Mud User88f12472016-06-24 23:31:02 +0200110
Zesstra953f9972017-02-18 15:37:36 +0100111 Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
112 Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
113 laesst sich nur bei Lebewesen anwenden.
MG Mud User88f12472016-06-24 23:31:02 +0200114
MG Mud User88f12472016-06-24 23:31:02 +0200115
Zesstra953f9972017-02-18 15:37:36 +0100116ANMERKUNG
117=========
MG Mud User88f12472016-06-24 23:31:02 +0200118
Zesstra953f9972017-02-18 15:37:36 +0100119 Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
120 greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
121 aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
122 anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
123 ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
124 genau macht. ;-)
MG Mud User88f12472016-06-24 23:31:02 +0200125
MG Mud User88f12472016-06-24 23:31:02 +0200126
MG Mud User88f12472016-06-24 23:31:02 +0200127
Zesstra953f9972017-02-18 15:37:36 +0100128 Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
129 von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
130 landet.
MG Mud User88f12472016-06-24 23:31:02 +0200131
Zesstra953f9972017-02-18 15:37:36 +0100132 Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
133 auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
134 innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
135 allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
MG Mud User88f12472016-06-24 23:31:02 +0200136
Zesstra953f9972017-02-18 15:37:36 +0100137 Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
138 oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
139 erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
MG Mud User88f12472016-06-24 23:31:02 +0200140
MG Mud User88f12472016-06-24 23:31:02 +0200141
Zesstra953f9972017-02-18 15:37:36 +0100142RUeCKGABEWERT
143=============
MG Mud User88f12472016-06-24 23:31:02 +0200144
Zesstra953f9972017-02-18 15:37:36 +0100145 Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
146 definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
147 Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
148 Zukunft wird == MOVE_OK empfohlen.)
MG Mud User88f12472016-06-24 23:31:02 +0200149
MG Mud User88f12472016-06-24 23:31:02 +0200150
MG Mud User88f12472016-06-24 23:31:02 +0200151
Zesstra953f9972017-02-18 15:37:36 +0100152 MOVE_OK
153 Die Bewegung wurde erfolgreich abgeschlossen.
MG Mud User88f12472016-06-24 23:31:02 +0200154
Zesstra953f9972017-02-18 15:37:36 +0100155 ME_PLAYER
156 Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
157 mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
158 angegeben werden.
MG Mud User88f12472016-06-24 23:31:02 +0200159
Zesstra953f9972017-02-18 15:37:36 +0100160 ME_TOO_HEAVY
161 Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
162 aufnehmen.
MG Mud User88f12472016-06-24 23:31:02 +0200163
Zesstra953f9972017-02-18 15:37:36 +0100164 ME_CANT_TPORT_IN
165 Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
166 M_TPORT ohne M_NOCHECK).
MG Mud User88f12472016-06-24 23:31:02 +0200167
Zesstra953f9972017-02-18 15:37:36 +0100168 ME_CANT_TPORT_OUT
169 Der Raum, in dem sich das Lebewesen befindet, verbietet das
170 Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
MG Mud User88f12472016-06-24 23:31:02 +0200171
Zesstra953f9972017-02-18 15:37:36 +0100172 ME_CANT_BE_DROPPED
173 Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
174 gesetzt ist).
MG Mud User88f12472016-06-24 23:31:02 +0200175
Zesstra953f9972017-02-18 15:37:36 +0100176 ME_CANT_BE_TAKEN
177 Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
178 ist).
MG Mud User88f12472016-06-24 23:31:02 +0200179
Zesstra953f9972017-02-18 15:37:36 +0100180 ME_CANT_BE_INSERTED
181 Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
182
183 ME_CANT_LEAVE_ENV
184 Der Container verhindert ein verlassen des Objektes
185
186 ME_TOO_HEAVY_FOR_ENV
187 Ein Objekt kann einen Behaelter nicht verlassen, da es dem
188 Lebewesen sonst zu schwer wuerde.
189
190 TOO_MANY_OBJECTS
191 Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
192
193 ME_NOT_ALLOWED
194 Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
195 Testspielern und Magiern betreten werden. Bei Spielern oder
196 Gildentesties gibt es diese Fehlermeldung.
197 ME_WAS_DESTRUCTED
198 Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
199 zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
200 beendet werden konnte. (Bsp: sensitive Objekte)
201
202 ME_DONT_WANT_TO_BE_MOVED
203 Das Objekt moechte nicht bewegt werden.
204
205
206BEISPIELE
207=========
208
209 o Ein Objekt "gibt sich" dem Spieler:
210
211 move(this_player(), M_GET);
212
213 o Ein Lebewesen wird in die Abenteurergilde teleportiert:
214
215 lv->move("/gilden/abenteurer", M_TPORT);
216
217 o Ein Spieler "wird in die Gilde gegangen":
218
219 this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
220
221 Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
222 Meldung:
223 "<name> geht in die Gilde."
224
225 o Ein Spieler schwimmt durchs Meer:
226
227 this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
228 "schwimmt herein");
229
230 Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
231 Spieler in seinem Zielraum sehen "<name> schwimmt herein."
232
233
234SIEHE AUCH
235==========
236
Arathorn074665c2019-08-30 21:53:00 +0200237 Seherkommandos
238 setmin, setmmin, setmout, setmmout, review
239 Verwandt:
240 move_object(), remove(), PreventInsert(), PreventLeave(),
241 PreventInsertLiving(), PreventLeaveLiving(), PreventMove(),
242 NotifyInsert(), NotifyLeave(), NotifyMove(), NotifyRemove(),
243 init(), exit()
244 Properties:
245 P_MSGIN, P_MSGOUT, P_MMSGIN, P_MMSGOUT, P_NO_PLAYERS, P_PARA,
246 P_NO_TPORT
247 Objekte:
248 /std/thing/moving.c, /std/living/moving.c
Zesstra953f9972017-02-18 15:37:36 +0100249
Arathorn074665c2019-08-30 21:53:00 +02002502019-Aug-20, Arathorn