blob: 967a01bd474f756743a4fd93bc251e3693ef92d8 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2AddAction()
3***********
4
5
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 varargs void AddAction(mixed fun, mixed cmd, int flag, int lvl);
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 /std/player/command.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra077cbc62019-01-07 21:16:39 +010021 fun
22 zu rufende Methode im Spieler oder eine Closure
23
24 cmd
25 ausloesendes Kommandoverb
26
27 flag
28 unscharf ausfuehren
29
30 lvl
31 ab welchem (Magierlevel) funktioniert das Kommando
Zesstra953f9972017-02-18 15:37:36 +010032
33
34BESCHREIBUNG
35============
36
Zesstra077cbc62019-01-07 21:16:39 +010037 Vorweg: Da es keine (risikolose) Moeglichkeit gibt, ein so
38 definiertes Kommando auch wieder zu entfernen, wird von der
39 Verwendung eher abgeraten. Es sei denn, ihr wisst, dass euer
40 Kommando nicht wieder (ohne ende/reboot) entfernt werden soll.
Zesstra953f9972017-02-18 15:37:36 +010041
Zesstra077cbc62019-01-07 21:16:39 +010042 Dem Spieler wird ein neues Kommando definiert. Dieses kann eine
43 Methode in ihm sein, so wie bei allen Spielerkommandos ueblich,
44 kann aber auch eine Closure (Lfun-Closure oder Lambda) enthalten.
45
46 Mittels "flag" kann man die Kommandoerkennung unscharf halten, d.h.
47 wie bei AddCmd(L) und add_action(E) wird ein 'cmd' bei 'flag = 1'
48 auch schon von Praefix-Strings (hier ohne Leerzeichen) getriggert:
49 AddAction([...], "muh", 1, 0) wird zB auch von 'muhtens' oder
50 'muh4' ausgeloest.
Zesstra953f9972017-02-18 15:37:36 +010051
52 Mit "lvl" begrenzt man die Ausfuehrbarkeit. Spieler haben ein
53 Magierlevel von 0, Seher von 1.
54
55 Das Kommando wird in P_LOCALCMDS eingetragen. Diese Property wird
56 nicht gespeichert! Effektiv kann man mit AddAction() ein kommando-
57 gebendes Objekt im Spieler einsparen.
58
59
60BEMERKUNGEN
61===========
62
Zesstra077cbc62019-01-07 21:16:39 +010063 * es gibt _noch_ kein RemoveAction! Per Hand in P_LOCALCMDS
64 editieren kann zu ernsten Fehlern fuehren.
65
66 * echte Spielerkommandos kann man damit _nicht_ ueberschreiben,
Zesstra953f9972017-02-18 15:37:36 +010067 ein AddAction(...,"sag",1,0); funktioniert nicht
Zesstra077cbc62019-01-07 21:16:39 +010068
69 * ein generelles AddAction(...,"",1,0); geht nicht
Zesstra953f9972017-02-18 15:37:36 +010070
71
72BEISPIELE
73=========
74
75 ...
76 this_player()->AddAction(symbol_function("zeige_mysterium",
77 find_object(".../mystzeiger")),
78 "knorfula",0,0);
79 write(break_string("Wann immer du jetzt das Kommando \"knorfula\" "
80 "eingibst, werden dir Mysterien enthuellt!",78));
81 ...
Zesstra953f9972017-02-18 15:37:36 +010082 // im Objekt "knorfula" ...
83 int zeige_mysterium(string str) {
84 string myst;
85 myst=environment(TP)->QueryMysterium(str);
86 if(myst) {
87 write("Du hast ein Mysterium entdeckt!\n");
88 write(break_string(myst,78));
89 say(break_string(
90 TP->Name(WER)+" scheint nach kurzer Konzentration etwas "
91 "entdeckt zu haben!",78));
92 } else {
93 write(break_string(
94 "Leider entdeckst du trotz deiner magischen Faehigkeit "
95 "kein Mysterium in deiner Umgebung.",78));
96 say(break_string(
97 TP->Name(WER)+" konzentriert sich sichtbar, sieht dann "
98 "jedoch etwas enttaeuscht aus.",78));
MG Mud User88f12472016-06-24 23:31:02 +020099 }
Zesstra953f9972017-02-18 15:37:36 +0100100 return 1;
101 }
MG Mud User88f12472016-06-24 23:31:02 +0200102
Zesstra953f9972017-02-18 15:37:36 +0100103
104SIEHE AUCH
105==========
106
Zesstra077cbc62019-01-07 21:16:39 +0100107 Properties:
108 P_LOCALCMDS
109
110 Fehlermeldungen:
111 *../efun/notify_fail*, _notify_fail()
112
113 Argumentstring:
114 *../efun/query_verb*, _unparsed_args()
115
116 Sonstiges:
117 replace_personal(), *../efun/enable_commands*
118
119 Alternativen:
120 AddCmd(), *../efun/add_action*
MG Mud User88f12472016-06-24 23:31:02 +0200121
12224. Maerz 2004 Gloinson