blob: 9e60d55f22388b983402c3298b98a916ea3e862f [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002remove_multiple()
Zesstra953f9972017-02-18 15:37:36 +01003*****************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 public varargs int remove_multiple(int limit, mixed fun);
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/container/items.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
20
21 limit: Anzahl gleicher Objekte, die verbleiben sollen.
22 fun: Funktionsname (string) oder Closure.
23
24
25BESCHREIBUNG
26============
27
28 Wird diese Funktion aufgerufen, werden alle gleichen Objekte
29 (standardmaessig definiert als gleicher Ladename, gleiche
30 Kurzbeschreibung und gleiche Langbeschreibung), deren Anzahl <limit>
31 ueberschreitet, entfernt.
32
33
34
35 Ausnahmen: Lebewesen und per AddItem() hinzugefuegte Objekte.
36
37 Mit dem Argument <fun> lassen sich die Kriterien fuer die "Gleichheit"
38 aendern.
39 Ist <fun> ein Funktionsname, wird diese Funktion an allen in Frage
40 kommenenden Objekten im Container gerufen.
41 Ist <fun> eine Closure, werden sie fuer jedes in Frage kommende Objekt
42 einmal gerufen und ihr das Objekt uebergeben.
43 Als 'gleich' werden alle Objekte betrachtet, fuer die <fun> den gleichen
44 Wert zurueckliefert.
45 Objekte, fuer die <fun> 0 zurueckliefert, werden ignoriert.
46
47
48BEMERKUNGEN
49===========
50
51 1) Raeume rufen remove_multiple(3) standardmaessig im reset(), jedoch
52 nur, wenn kein Spieler anwesend ist und mehr als 10 Objekte im Raum
53 sind.
54 2) remove_multipe(0) entfernt alle entfernbaren Objekte (s. Ausnahmen).
55
56
57BEISPIELE
58=========
59
60 Ein Container enthaelt 5 Fackeln. Im reset() ruft man nun
61 remove_multiple(3) auf. Anschliessend sind noch 3 Fackeln uebrig.
62
63
64
65 Alle verbleibenden Objekte im Container sollen unterschiedliche Namen
66 haben:
67 remove_multiple(1, "name");
68
69 Ein Container soll nur ein Objekt behalten, welches groesser als 70 cm
70 ist:
71 int groessen_filter(object ob) {
72 if (ob->QueryProp(P_SIZE > 70)) return 1;
73 return 0; // damit das Objekt ignoriert wird.
74 // Alternativ koennte man statt 0 auch object_name(ob) zurueckliefern,
75 // dann sind diese Objekte alle unterschiedlich.
76 }
77 ...
78 remove_multiple(1, #'groessen_filter);
79
80
81SIEHE AUCH
82==========
83
84 reset()
MG Mud User88f12472016-06-24 23:31:02 +020085
8631.01.2009, Zesstra