enable_commands()
*****************


SYNOPSIS
========

   void enable_commands();


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

   Erlaubt dem Objekt, Kommandos zu verwenden, die normalerweise Usern
   zugaenglich sind. Der Aufruf markiert das Objekt als "living". Dies
   wird fuer Spieler und alle von /std/npc abgeleiteten Objekte
   bereits von der Mudlib erledigt und sollte nicht nochmals gemacht
   werden.

   Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
   Compat-Modus) aufgerufen werden, weil der Kommandogeber auf dieses
   Objekt gesetzt wird.


BEISPIEL
========

   void create()
   {
       enable_commands();
       ...
   }

   Dies markiert das Objekt als "living".


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

   command(E), living(E), disable_commands(E), native(C), hooks(C)
   set_living_name(E)
