blob: 80d7a0ed510b66801c4e55f21b82a7c58dcb57bc [file] [log] [blame]
PreventInsert()
===============
FUNKTION
--------
int PreventInsert(object ob);
DEFINIERT IN
------------
/std/container/restrictions.c
ARGUMENTE
---------
ob
Das Objekt, das in den Behaelter eingefuegt werden soll.
BESCHREIBUNG
------------
Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
aufnehmen moechte oder nicht.
Man beachte bitte, dass nach dieser Funktion *nicht* garantiert ist,
dass das Objekt wirklich bewegt wird, es handelt sich lediglich um die
Abfrage der Erlaubnis! Die Bewegung kann aus einer Vielzahl an Gruenden
noch abgebrochen werden.
Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
aufgerufen, aber das Ergebnis ignoriert, d.h. die Aufnahme kann in dem
Fall nicht verhindert werden.
RUeCKGABEWERT
-------------
0
wenn das Objekt aufgenommen werden kann;
> 0
ein Wert groesser als 0 zeigt an, dass das Objekt nicht aufgenommen
werden soll.
BEISPIELE
---------
Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
man wie folgt vorgehen:
.. code-block:: pike
public int PreventInsert(object ob)
{
// Wenn es Geld ist, erheben wir sofort Einspruch
if (ob->id("geld"))
return 1;
// Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
else
return ::PreventInsert(ob);
}
SIEHE AUCH
----------
:doc:`PreventLeave`, :doc:`NotifyInsert`, :doc:`NotifyLeave`,
:doc:`MayAddObject`, :doc:`MayAddWeight`, :doc:`PreventInsertLiving`,
:doc:`PreventLeaveLiving`, :doc:`NotifyMove`, :doc:`PreventMove`,
:doc:`move`, /std/container/restrictions.c
Last modified: 30.01.2020, Zesstra