Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//lfun/remove_multiple

remove_multiple()
*****************


FUNKTION
========

   public varargs int remove_multiple(int limit, mixed fun);


DEFINIERT IN
============

   /std/container/items.c


ARGUMENTE
=========

   limit: Anzahl gleicher Objekte, die verbleiben sollen.
   fun:   Funktionsname (string) oder Closure.


BESCHREIBUNG
============

   Wird diese Funktion aufgerufen, werden alle gleichen Objekte
   (standardmaessig definiert als gleicher Ladename, gleiche
    Kurzbeschreibung und gleiche Langbeschreibung), deren Anzahl 
   ueberschreitet, entfernt.



   Ausnahmen: Lebewesen und per AddItem() hinzugefuegte Objekte.

   Mit dem Argument  lassen sich die Kriterien fuer die "Gleichheit"
   aendern.
   Ist  ein Funktionsname, wird diese Funktion an allen in Frage
   kommenenden Objekten im Container gerufen.
   Ist  eine Closure, werden sie fuer jedes in Frage kommende Objekt
   einmal gerufen und ihr das Objekt uebergeben.
   Als 'gleich' werden alle Objekte betrachtet, fuer die  den gleichen
   Wert zurueckliefert.
   Objekte, fuer die  0 zurueckliefert, werden ignoriert.


BEMERKUNGEN
===========

   1) Raeume rufen remove_multiple(3) standardmaessig im reset(), jedoch
      nur, wenn kein Spieler anwesend ist und mehr als 10 Objekte im Raum
      sind.
   2) remove_multipe(0) entfernt alle entfernbaren Objekte (s. Ausnahmen).


BEISPIELE
=========

   Ein Container enthaelt 5 Fackeln. Im reset() ruft man nun
   remove_multiple(3) auf. Anschliessend sind noch 3 Fackeln uebrig.



   Alle verbleibenden Objekte im Container sollen unterschiedliche Namen
   haben:
   remove_multiple(1, "name");

   Ein Container soll nur ein Objekt behalten, welches groesser als 70 cm
   ist:
   int groessen_filter(object ob) {
     if (ob->QueryProp(P_SIZE > 70)) return 1;
     return 0; // damit das Objekt ignoriert wird.
     // Alternativ koennte man statt 0 auch object_name(ob) zurueckliefern,
     // dann sind diese Objekte alle unterschiedlich.
   }
   ...
   remove_multiple(1, #'groessen_filter);


SIEHE AUCH
==========


reset()

31.01.2009, Zesstra


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.