blob: e66910ab74eab2e3de45aec1b94e04fec4dd8ccf [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002P_DISABLE_COMMANDS
Zesstra953f9972017-02-18 15:37:36 +01003******************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006NAME
7====
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 P_DISABLE_COMMANDS "p_lib_disablecommands"
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /sys/player/command.h
16
17
18BESCHREIBUNG
19============
20
21 Mit dieser Prop kann man verhindern, dass Kommandos eines Spielers
22 verarbeitet werden. Dies ist z.B. in Sequenzen nuetzlich, wo der Spieler
23 rein passiv konsumieren soll.
24 In diese Property muss ein Array mit 2 oder 3 Elementen geschrieben
25 werden:
26 1) Endzeitpunkt in Sekunden seit 1.1.1970 (int)
27 2) Meldung (String oder Closure)
28 3) (optional) Array von trotzdem erlaubten Verben (string*)
29 (nur ausgewertet, wenn die Meldung ein String ist)
30
31
32
33 Ist die Meldung ein String, wird dieser einfach bei jedem Kommando so wie
34 er ist an den Spieler ausgegeben und das Kommando abgebrochen.
35 Ist die Meldung eine Closure wird diese bei jedem Kommando aufgerufen und
36 das Kommando abgebrochen, wenn sie einen Rueckgabewert != 0 zurueckgibt.
37 In diesem Fall ist die gerufene Funktion dafuer verantwortlich, geeignete
38 Meldungen an den Spieler auszugeben!
39 Der Funktion wird der vom Spieler eingebene Befehl (string) als erstes
40 Argument uebergeben. Zu diesem Zeitpunkt wurde alle Aliase schon
41 ausgewertet. Die Funktion kann den Kommandogeber via this_player()
42 ermitteln.
43 Fuer weitere Informationen steht auch command_stack() zur Verfuegung,
44 allerdings ist dort die Alias-Ersetzung nicht beruecksichtigt.
45
46 Die Ausnahmeliste wird nur fuer simple Strings als Meldung ausgewertet,
47 wird eine Closure verwendet, kann diese besser selber die Ausnahmen
48 bestimmen.
49
50
51
52 Fragt man diese Prop ab, erhaelt man ein Array mit 4 Elementen: setzendes
53 Objekt (object), Ablaufzeit (int), Meldung (String oder Closure) und
54 Liste von Ausnahmen (string*).
55
56
57BEMERKUNGEN
58===========
59
60 1. Die Prop wird fuer Magier mit eingeschaltetem P_WANTS_TO_LEARN
61 ignoriert.
62 2. Wenn das Objekt zerstoert wird, was die Prop gesetzt hat, wird der
63 Eintrag unwirksam.
64 3. Wenn diese Prop gesetzt und nicht abgelaufen ist, kann nur das gleiche
65 Objekt sie mit neuen Daten ueberschreiben. Alle anderen Objekte koennen
66 die Prop nur loeschen. Dies soll verhindern, dass Magier unabsichtlich
67 einfach anderer Leute Eintraege ueberschreiben. Dementsprechend: Lasst
68 die Finger davon, wenn die schon gesetzt ist. ;-)
69 4. Diese Prop darf _ausschliesslich_ mit SetProp() und QueryProp() benutzt
70 werden, Set() und Query() funktionieren _nicht_.
71 5. Es gibt einige Verben, die NIE blockiert werden. Zur Zeit sind dies
72 "mrufe", "mschau", "bug", "idee", "typo" und "detail".
73 6. Bitte nicht missbrauchen, speziell nicht dazu, die Kommandos von
74 Spieler zu ueberwachen/mitzuschreiben. Das Setzen dieser Prop wird
75 geloggt.
76
77
78BEISPIEL
79========
80
MG Mud User88f12472016-06-24 23:31:02 +020081 In einem Raum startet eine Sequenz, in der der Spieler nichts machen soll:
82
83 if (!pl->QueryProp(P_DISABLE_COMMANDS))
84 pl->SetProp(P_DISABLE_COMMANDS,
85 ({ time() + 120, "Du bist tief in Deinem Traum gefangen!\n" }) );
86 else // ... Fehlerbehandlung, falls Prop schon gesetzt ...
Zesstra953f9972017-02-18 15:37:36 +010087
88
89
MG Mud User88f12472016-06-24 23:31:02 +020090 Soll die Prop aus irgendeinem Grund (vorzeitig) geloescht werden:
91 pl->SetProp(P_DISABLE_COMMANDS, 0);
92
Zesstra953f9972017-02-18 15:37:36 +010093
94SIEHE AUCH
95==========
96
97 command(), query_command(), command_stack(), modify_command(),
98 this_player()
MG Mud User88f12472016-06-24 23:31:02 +020099
10001.12.2012, Zesstra