add_action(E)
*************


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

   1. Das Verhalten dieser efun wird durch AddCmd aus
      /std/thing/commands.c komfortabler widergespiegelt. Darauf
      sollte man zurueckgreifen.

   2. add_action() sollte immer innerhalb von init() benutzt werden

   3. das definierende Objekt muss im inventory des Spielers oder
      environment() des kommandogebenden Lebewesens sein

   4. im init() spaeter eingetragene Kommandos oder spaeter
      hinzukommende Objekte werden bei der Kommandoauswertung VOR den
      alten beruecksichtigt. (Daher bewegt sich das Xtool der Magier
      regelmaessing neu in das Inventory, um immer "erstes" Objekt zu
      sein.)


BEISPIELE
=========

   1. ein Kommando in einem Schirm

            void init() {
              ::init();
              add_action("action_oeffne", "oeffne");
            }

            int action_oeffne(string str) {
              if(stringp(str) && id(str)) // Argument da und bin ich gemeint?
              {
                write("Du oeffnest den Schirm.\n");
                say(break_string(this_player()->Name(WER)+" oeffnet einen Schirm.",
                      78));
                return 1;
              }
              notify_fail("Was willst Du oeffnen?\n");
              return 0;
            }

      2. Kommandoblockierer: frueher beliebt um Spieler lahmzulegen,
         da es _alle_ Kommandos triggert. Heute jedoch dafuer eher
         P_DISABLE_COMMANDS verwenden. *Achtung*: siehe Implikation
         von (4) oben.

            add_action("action_nothing", "",1 );
            ...
            int action_nothing(string str) {
              write("Dir sind die Haende gebunden.\n");
              return 1;
            }
