
RemoveCmd()
***********


RemoveCmd(L)
============


FUNKTION
========

   varargs int RemoveCmd(mixed cmd, int norule, mixed id)


DEFINIERT IN
============

   /std/thing/commands.c


ARGUMENTE
=========

   com
        String oder Array von Strings mit den zu entfernenden Kommandos.
   norule
        Kommandos mit Regeln werden nicht entfernt (ausser bei cmd==0)
   id
        eine ID, mit der man ein vorher mit dieser ID gespeichertes
        Kommando eindeutig lvschen kann


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

   Mit AddCmd() hinzugefuegte Kommandos koennen mit diesem Befehl wieder
   abgemeldet werden. Die entfernten Kommandos sind direkt nach dem
   RemoveCmd()-Aufruf nicht mehr ansprechbar.

   Wird ein Regelstring angegeben, so wird die identische AddCmd-
   Regel entfernt.


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

   Uebergibt man fuer com eine 0, so werden alle definierten Kommandos
   entfernt!


RUECKGABEWERT
=============

   Anzahl der entfernten Kommandos.


BEISPIELE
=========

   (1) AddCmd("test");
   (2) AddCmd("test|teste&mit&parameter");
   (3) AddCmd(({"test"}),1);
   (4) AddCmd("test",0,0,"XYZ");
   (5) AddCmd("test&mit&parameter",0,0,"XYZ");

   RemoveCmd(0);
   - entfernt alle Kommandos
   RemoveCmd("test",1);
   - entfernt (1) und (3)
   RemoveCmd("test");
   - entfernt (1), (3) und einen Teil von (2),
     es verbleibt "teste&mit&parameter"
   RemoveCmd("test|teste&mit&parameter"
   - entfernt (2)
   RemoveCmd("test",0,"XYZ");
   - entfernt (4) und (5)
   RemoveCmd("test",1,"XYZ");
   - entfernt (4), nicht (5)
   RemoveCmd(0,0,"XYZ");
   - entfernt (4) und (5)


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

                       AddCmd(L), AddCmd_bsp
   Sonstiges:          replace_personal(E), enable_commands(E), init(E)
   Alternativen:       AddAction(L), add_action(E)

24.Maerz 2004 Gloinson
