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