blob: fd0bfb79003360db0927fb224036451cb31754ac [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001AddAction()
2***********
3
4
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 varargs void AddAction(mixed fun, mixed cmd, int flag, int lvl);
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 /std/player/command.c
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017ARGUMENTE
18=========
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra077cbc62019-01-07 21:16:39 +010020 fun
21 zu rufende Methode im Spieler oder eine Closure
22
23 cmd
24 ausloesendes Kommandoverb
25
26 flag
27 unscharf ausfuehren
28
29 lvl
30 ab welchem (Magierlevel) funktioniert das Kommando
Zesstra953f9972017-02-18 15:37:36 +010031
32
33BESCHREIBUNG
34============
35
Zesstra077cbc62019-01-07 21:16:39 +010036 Vorweg: Da es keine (risikolose) Moeglichkeit gibt, ein so
37 definiertes Kommando auch wieder zu entfernen, wird von der
38 Verwendung eher abgeraten. Es sei denn, ihr wisst, dass euer
39 Kommando nicht wieder (ohne ende/reboot) entfernt werden soll.
Zesstra953f9972017-02-18 15:37:36 +010040
Zesstra077cbc62019-01-07 21:16:39 +010041 Dem Spieler wird ein neues Kommando definiert. Dieses kann eine
42 Methode in ihm sein, so wie bei allen Spielerkommandos ueblich,
43 kann aber auch eine Closure (Lfun-Closure oder Lambda) enthalten.
44
45 Mittels "flag" kann man die Kommandoerkennung unscharf halten, d.h.
46 wie bei AddCmd(L) und add_action(E) wird ein 'cmd' bei 'flag = 1'
47 auch schon von Praefix-Strings (hier ohne Leerzeichen) getriggert:
48 AddAction([...], "muh", 1, 0) wird zB auch von 'muhtens' oder
49 'muh4' ausgeloest.
Zesstra953f9972017-02-18 15:37:36 +010050
51 Mit "lvl" begrenzt man die Ausfuehrbarkeit. Spieler haben ein
52 Magierlevel von 0, Seher von 1.
53
54 Das Kommando wird in P_LOCALCMDS eingetragen. Diese Property wird
55 nicht gespeichert! Effektiv kann man mit AddAction() ein kommando-
56 gebendes Objekt im Spieler einsparen.
57
58
59BEMERKUNGEN
60===========
61
Zesstra077cbc62019-01-07 21:16:39 +010062 * es gibt _noch_ kein RemoveAction! Per Hand in P_LOCALCMDS
63 editieren kann zu ernsten Fehlern fuehren.
64
Zesstrae959e722025-07-09 22:11:16 +020065 * echte Spielerkommandos kann man damit _nicht_ ueberschreiben, ein
66 AddAction(...,"sag",1,0); funktioniert nicht
Zesstra077cbc62019-01-07 21:16:39 +010067
68 * ein generelles AddAction(...,"",1,0); geht nicht
Zesstra953f9972017-02-18 15:37:36 +010069
70
71BEISPIELE
72=========
73
74 ...
75 this_player()->AddAction(symbol_function("zeige_mysterium",
76 find_object(".../mystzeiger")),
77 "knorfula",0,0);
78 write(break_string("Wann immer du jetzt das Kommando \"knorfula\" "
79 "eingibst, werden dir Mysterien enthuellt!",78));
80 ...
Zesstra953f9972017-02-18 15:37:36 +010081 // im Objekt "knorfula" ...
82 int zeige_mysterium(string str) {
83 string myst;
84 myst=environment(TP)->QueryMysterium(str);
85 if(myst) {
86 write("Du hast ein Mysterium entdeckt!\n");
87 write(break_string(myst,78));
88 say(break_string(
89 TP->Name(WER)+" scheint nach kurzer Konzentration etwas "
90 "entdeckt zu haben!",78));
91 } else {
92 write(break_string(
93 "Leider entdeckst du trotz deiner magischen Faehigkeit "
94 "kein Mysterium in deiner Umgebung.",78));
95 say(break_string(
96 TP->Name(WER)+" konzentriert sich sichtbar, sieht dann "
97 "jedoch etwas enttaeuscht aus.",78));
MG Mud User88f12472016-06-24 23:31:02 +020098 }
Zesstra953f9972017-02-18 15:37:36 +010099 return 1;
100 }
MG Mud User88f12472016-06-24 23:31:02 +0200101
Zesstra953f9972017-02-18 15:37:36 +0100102
103SIEHE AUCH
104==========
105
Zesstra077cbc62019-01-07 21:16:39 +0100106 Properties:
107 P_LOCALCMDS
108
109 Fehlermeldungen:
110 *../efun/notify_fail*, _notify_fail()
111
112 Argumentstring:
113 *../efun/query_verb*, _unparsed_args()
114
115 Sonstiges:
116 replace_personal(), *../efun/enable_commands*
117
118 Alternativen:
119 AddCmd(), *../efun/add_action*
MG Mud User88f12472016-06-24 23:31:02 +0200120
12124. Maerz 2004 Gloinson