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