FUNKTION:
int remove()
int remove(int silent)
IMPLEMENTIERT:
Diverse Stellen, wichtige Punkte sind
/std/thing/moving.c
/std/living/moving.c
/std/weapon.c
/std/armour.c
ARGUMENTE:
silent - Integer. Wenn 1 soll Objekt ohne Ausgaben zerstoert werden
BESCHREIBUNG:
Diese Funktion zerstoert das Objekt, in welchem sie aufgerufen wird.
Dem Objekt ist es vorher erlaubt, noch 'aufzuraeumen', weswegen diese
Funktion dem direkten Zerstoeren mit destruct(E) vorzuziehen ist.
Wenn das Argument silent wahr ist, sollte das Objekt keinerlei
Ausgaben an Spieler (Besitzer/Aktor) erzeugen. Ruestungen werden
also zB ohne Auszieh-Meldung entfernt.
Nach dem Zerstoeren eines Objektes sind alle Zeiger auf dieses
Objekt Null. Ebenso sind alle globalen Variablen des Objektes
schon entfernt. Das Objekt selbst (und seine Funktionen) sind aber
noch bis zum Ende des Cycles mit ihren lokalen Variablen
vorhanden.
RÜCKGABEWERT:
1 bei erfolgter Zertoerung, 0 wenn sich das Objekt weigert.
Das ist jedoch eher weniger zuverlaessig. Besser kann man es
ueberpruefen, indem man schaut ob ein Objektzeiger auf das Objekt
Null geworden ist.
ob->remove();
if (ob) write("Huch, nicht entfernt!\n");
BEMERKUNG:
Zur Zerstoerung benutzt das Objekt selbst i.d.R. destruct(E).
Bitte beachte wichtige Hinweise in der dazu gehoerigen Hilfeseite!
BEISPIEL:
object* obs;
obs = deep_inventory();
map_objects(obs, "remove", 1); // alles leise entfernen
map(obs-({0}), #'destruct); // Rest 'hart' entfernen
SIEHE AUCH:
destruct(E)
|