AddInsertHook()
***************


OBSOLETE LFUN
=============

   Diese Efun existiert nicht mehr. Bitte stattdessen den Hook
   H_HOOK_INSERT benutzen. (s. /doc/std/hooks)


FUNKTION
========

   void AddInsertHook(object ob);


ARGUMENTE
=========

   ob
      Das Objekt, das informiert werden soll, wenn ein Objekt dem
      Spielerinventar hinzugefuegt wurde.


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

   Diese Funktion wurde im Spielerobjekt aufgerufen, um das Objekt ob
   als Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
   werden informiert, wenn ein Objekt ins Spielerinventar bewegt
   wurde. Technisch wird die Bewegung ueber NotifyInsert() im
   Spielerobjekt detektiert, und im Listener-Objekt wird die Funktion
   InsertNotify() gerufen, die als Parameter das neu ins
   Spielerinventar bewegte Objekt uebergeben bekommt.


RUeCKGABEWERT
=============

   keiner


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

   Das Listener-Objekt muss sich ebenfalls im Spielerinventar
   befinden, ansonsten wird der eingetragene Hook wieder geloescht.


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

   NotifyInsert(), AddInsertHook(), QueryInsertHooks()

Last modified: 18.10.2019 Zesstra
