blob: cee9842c6b7e0d2dc6d56fd4f98e389ee4cc2237 [file] [log] [blame]
Zesstrabbc000b2020-01-23 21:34:06 +01001add_action(E)
2=============
3
4BEMERKUNGEN
5-----------
6
7 1. Das Verhalten dieser efun wird durch AddCmd aus /std/thing/commands.c
8 komfortabler widergespiegelt. Darauf sollte man zurueckgreifen.
9 2. add_action() sollte immer innerhalb von init() benutzt werden
10 3. das definierende Objekt muss im inventory des Spielers oder
11 environment() des kommandogebenden Lebewesens sein
12 4. im init() spaeter eingetragene Kommandos oder spaeter hinzukommende
13 Objekte werden bei der Kommandoauswertung VOR den alten beruecksichtigt.
14 (Daher bewegt sich das Xtool der Magier regelmaessing neu in das
Zesstra051ad6b2020-01-23 21:46:58 +010015 Inventory, um immer "erstes" Objekt zu sein.)
Zesstrabbc000b2020-01-23 21:34:06 +010016
17BEISPIELE
18---------
19
20 1. ein Kommando in einem Schirm
21
22 .. code-block:: pike
23
24 void init() {
25 ::init();
26 add_action("action_oeffne", "oeffne");
27 }
28
29 int action_oeffne(string str) {
30 if(stringp(str) && id(str)) // Argument da und bin ich gemeint?
31 {
32 write("Du oeffnest den Schirm.\n");
33 say(break_string(this_player()->Name(WER)+" oeffnet einen Schirm.",
34 78));
35 return 1;
36 }
37 notify_fail("Was willst Du oeffnen?\n");
38 return 0;
39 }
40
41 2. Kommandoblockierer:
42 frueher beliebt um Spieler lahmzulegen, da es _alle_ Kommandos
43 triggert. Heute jedoch dafuer eher P_DISABLE_COMMANDS verwenden.
44 *Achtung*: siehe Implikation von (4) oben.
45
46 .. code-block:: pike
47
48 add_action("action_nothing", "",1 );
49 ...
50 int action_nothing(string str) {
51 write("Dir sind die Haende gebunden.\n");
52 return 1;
53 }
54