Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//props/P_DISABLE_COMMANDS

P_DISABLE_COMMANDS
******************


NAME
====

   P_DISABLE_COMMANDS             "p_lib_disablecommands"


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

   /sys/player/command.h


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

   Mit dieser Prop kann man verhindern, dass Kommandos eines Spielers
   verarbeitet werden. Dies ist z.B. in Sequenzen nuetzlich, wo der Spieler
   rein passiv konsumieren soll.
   In diese Property muss ein Array mit 2 oder 3 Elementen geschrieben
   werden:
      1) Endzeitpunkt in Sekunden seit 1.1.1970 (int)
      2) Meldung (String oder Closure)
      3) (optional) Array von trotzdem erlaubten Verben (string*)
        (nur ausgewertet, wenn die Meldung ein String ist)



   Ist die Meldung ein String, wird dieser einfach bei jedem Kommando so wie
   er ist an den Spieler ausgegeben und das Kommando abgebrochen.
   Ist die Meldung eine Closure wird diese bei jedem Kommando aufgerufen und
   das Kommando abgebrochen, wenn sie einen Rueckgabewert != 0 zurueckgibt.
   In diesem Fall ist die gerufene Funktion dafuer verantwortlich, geeignete
   Meldungen an den Spieler auszugeben!
   Der Funktion wird der vom Spieler eingebene Befehl (string) als erstes
   Argument uebergeben. Zu diesem Zeitpunkt wurde alle Aliase schon
   ausgewertet. Die Funktion kann den Kommandogeber via this_player()
   ermitteln.
   Fuer weitere Informationen steht auch command_stack() zur Verfuegung,
   allerdings ist dort die Alias-Ersetzung nicht beruecksichtigt.

   Die Ausnahmeliste wird nur fuer simple Strings als Meldung ausgewertet,
   wird eine Closure verwendet, kann diese besser selber die Ausnahmen
   bestimmen.



   Fragt man diese Prop ab, erhaelt man ein Array mit 4 Elementen: setzendes
   Objekt (object), Ablaufzeit (int), Meldung (String oder Closure) und
   Liste von Ausnahmen (string*).


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

   1. Die Prop wird fuer Magier mit eingeschaltetem P_WANTS_TO_LEARN
      ignoriert.
   2. Wenn das Objekt zerstoert wird, was die Prop gesetzt hat, wird der
      Eintrag unwirksam.
   3. Wenn diese Prop gesetzt und nicht abgelaufen ist, kann nur das gleiche
      Objekt sie mit neuen Daten ueberschreiben. Alle anderen Objekte koennen
      die Prop nur loeschen. Dies soll verhindern, dass Magier unabsichtlich
      einfach anderer Leute Eintraege ueberschreiben. Dementsprechend: Lasst
      die Finger davon, wenn die schon gesetzt ist. ;-)
   4. Diese Prop darf _ausschliesslich_ mit SetProp() und QueryProp() benutzt
      werden, Set() und Query() funktionieren _nicht_.
   5. Es gibt einige Verben, die NIE blockiert werden. Zur Zeit sind dies
      "mrufe", "mschau", "bug", "idee", "typo" und "detail".
   6. Bitte nicht missbrauchen, speziell nicht dazu, die Kommandos von
      Spieler zu ueberwachen/mitzuschreiben. Das Setzen dieser Prop wird
      geloggt.


BEISPIEL
========

   In einem Raum startet eine Sequenz, in der der Spieler nichts machen soll:

   if (!pl->QueryProp(P_DISABLE_COMMANDS))
      pl->SetProp(P_DISABLE_COMMANDS,
            ({ time() + 120, "Du bist tief in Deinem Traum gefangen!\n" }) );
   else // ... Fehlerbehandlung, falls Prop schon gesetzt ...



   Soll die Prop aus irgendeinem Grund (vorzeitig) geloescht werden:
   pl->SetProp(P_DISABLE_COMMANDS, 0);


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


command(), query_command(), command_stack(), modify_command(), this_player()

01.12.2012, Zesstra


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.