FilterArmours()¶
FUNKTION¶
public object *FilterArmours(closure filterfun, varargs mixed* extra)
DEFINIERT IN¶
/std/living/clothing.c
ARGUMENTE¶
closure filterfun
Die Closure, die entscheiden soll, ob eine Ruestung im Ergebnisarray
enthalten sein soll.
mixed extra
Beliebig viele Extra-Argumente, die <filterfun> uebergeben werden.
BESCHREIBUNG¶
Diese Funktion ruft <filterfunc> fuer jede getragene Ruestung des
Lebewesen mit der jeweiligen Ruestung als Argument auf und liefert ein
Array mit allen Ruestungen zurueck, fuer die <filterfun> einen Wert != 0
zurueckliefert.
Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
uebergeben und duerfen keine Referenzen sein.
Diese Variante ist zu bevorzugen, wenn man Ruestungen nach bestimmten
Kriterien durchsuchen will und QueryArmourByType() nicht ausreichend sein
sollte.
RUeCKGABEWERT¶
Ein Array von Objekten mit allen passenden Ruestungen.
BEISPIELE¶
1) Ich moechte gerne alle Ruestungen haben, die beschaedigt sind:
private int _is_damaged(object ruestung) {
return ruestung->QueryProp(P_DAMAGE);
}
...
object *damaged_armours = PL->FilterArmours(#'_is_damaged);
2) Ich moechte alle Ruestungen, die groesser als 50cm sind.
private int _armour_is_bigger(object ruestung, int size) {
return ruestung->QueryProp(P_SIZE) > size;
}
...
object *big_armours = PL->FilterArmours(#'_amour_is_bigger, 50);
3) alle Ruestungen mit einer speziellen ID.
private int _has_id(object ruestung, string idstr) {
return ruestung->id(idstr);
}
object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung");
4) alle Ruestungen mit einer speziellen ID, die groesser als 50cm sind.
private int _has_id(object ruestung, string idstr, int size) {
return ruestung->id(idstr) && ruestung->QueryProp(P_SIZE) > size;
}
object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung", 50);
5) ueberhaupt alle getragene Ruestung
object *rue = PL->FilterArmours(#'objectp)
SIEHE AUCH¶
Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
UnwearClothing()
P_CLOTHING, P_ARMOURS
FilterClothing(), QueryArmourByType()
ZULETZT GEAeNDERT¶
14.03.2009, Zesstra