blob: d571d8c5e668120e0afbddd9890bbf207851696c [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
Zesstrad59c3892019-11-28 20:53:39 +01002 object first_inventory()
3 object first_inventory(string ob)
4 object first_inventory(object ob)
MG Mud User88f12472016-06-24 23:31:02 +02005
6BESCHREIBUNG
7 Liefert das erste Objekt im Inventory von <obj>, wobei <obj> entweder
8 ein Objekt oder der Name eines Objekts ist. Wenn <obj> nicht angegeben
9 wird, wird standardmaessig this_object() verwendet.
10
11BEISPIELE
12 Diese Efun verwendet man am haeufigsten im folgenden Kontext:
13
14 for(obj=first_inventory(container);obj;obj=next_inventory(obj))
15 {
16 <irgendwelcher Code>
17 }
18
Zesstrad59c3892019-11-28 20:53:39 +010019 Wer solche Aufrufe haeufig verwendet, findet es moeglicherweise
20 sinnvoll, ein Praeprozessor-Makro zu verwenden:
21
22 #define FORALL(x, y) for(x=first_inventory(y);x;
23 x=next_inventory(x))
24
25 Damit vereinfacht sich das obige Beispiel zu:
26
27 FORALL(obj, container)
28 {
29 <irgendwelcher Code>
30 }
31
MG Mud User88f12472016-06-24 23:31:02 +020032 ACHTUNG: Wenn das Objekt <obj> innerhalb von <irgendwelcher Code>
33 bewegt wird, liefert next_inventory() ein Objekt aus dem neuen
34 Inventory von <obj>. Auch sollte next_inventory() nicht fuer
35 zerstoerte Objekte <obj> aufgerufen werden. Fuer den Fall, dass
36 <obj> bewegt und/oder zerstoert wird, ist folgende Loesung
37 vorzuziehen:
38
39 for(obj=first_inventory(container);obj;)
40 {
41 next=next_inventory(obj);
42 <irgendwelcher Code mit Moves oder Removes>
43 obj=next;
44 }
45
46SIEHE AUCH
47 next_inventory(E), all_inventory(E), environment(E), deep_inventory(E)