blob: 29c83c1f732d6b7b5b114f6b071062df349f2374 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2AddAction()
3***********
4
5
MG Mud User88f12472016-06-24 23:31:02 +02006AddAction(L)
Zesstra953f9972017-02-18 15:37:36 +01007============
MG Mud User88f12472016-06-24 23:31:02 +02008
MG Mud User88f12472016-06-24 23:31:02 +02009
Zesstra953f9972017-02-18 15:37:36 +010010FUNKTION
11========
MG Mud User88f12472016-06-24 23:31:02 +020012
Zesstra953f9972017-02-18 15:37:36 +010013 varargs void AddAction(mixed fun, mixed cmd, int flag, int lvl);
MG Mud User88f12472016-06-24 23:31:02 +020014
MG Mud User88f12472016-06-24 23:31:02 +020015
Zesstra953f9972017-02-18 15:37:36 +010016DEFINIERT IN
17============
MG Mud User88f12472016-06-24 23:31:02 +020018
Zesstra953f9972017-02-18 15:37:36 +010019 /std/player/command.c
MG Mud User88f12472016-06-24 23:31:02 +020020
MG Mud User88f12472016-06-24 23:31:02 +020021
Zesstra953f9972017-02-18 15:37:36 +010022ARGUMENTE
23=========
MG Mud User88f12472016-06-24 23:31:02 +020024
Zesstra953f9972017-02-18 15:37:36 +010025 fun zu rufende Methode im Spieler oder eine Closure
26 cmd ausloesendes Kommandoverb
27 flag unscharf ausfuehren
28 lvl ab welchem (Magierlevel) funktioniert das Kommando
29
30
31BESCHREIBUNG
32============
33
34 Dem Spieler wird ein neues Kommando definiert. Dieses kann eine Methode
35 in ihm sein, so wie bei allen Spielerkommandos ueblich, kann aber auch
36 eine Closure (Lfun-Closure oder Lambda) enthalten.
37
38 Mittels "flag" kann man die Kommandoerkennung unscharf halten, d.h. wie
39 bei AddCmd(L) und add_action(E) wird ein 'cmd' bei 'flag = 1' auch
40 schon von Praefix-Strings (hier ohne Leerzeichen) getriggert:
41 AddAction([...], "muh", 1, 0) wird zB auch von 'muhtens' oder 'muh4'
42 ausgeloest.
43
44 Mit "lvl" begrenzt man die Ausfuehrbarkeit. Spieler haben ein
45 Magierlevel von 0, Seher von 1.
46
47 Das Kommando wird in P_LOCALCMDS eingetragen. Diese Property wird
48 nicht gespeichert! Effektiv kann man mit AddAction() ein kommando-
49 gebendes Objekt im Spieler einsparen.
50
51
52BEMERKUNGEN
53===========
54
55 - es gibt _noch_ kein RemoveAction! Per Hand in P_LOCALCMDS editieren
56 kann zu ernsten Fehlern fuehren.
57 - echte Spielerkommandos kann man damit _nicht_ ueberschreiben,
58 ein AddAction(...,"sag",1,0); funktioniert nicht
59 - ein generelles AddAction(...,"",1,0); geht nicht
60
61
62BEISPIELE
63=========
64
65 ...
66 this_player()->AddAction(symbol_function("zeige_mysterium",
67 find_object(".../mystzeiger")),
68 "knorfula",0,0);
69 write(break_string("Wann immer du jetzt das Kommando \"knorfula\" "
70 "eingibst, werden dir Mysterien enthuellt!",78));
71 ...
72
73 // im Objekt "knorfula" ...
74 int zeige_mysterium(string str) {
75 string myst;
76 myst=environment(TP)->QueryMysterium(str);
77 if(myst) {
78 write("Du hast ein Mysterium entdeckt!\n");
79 write(break_string(myst,78));
80 say(break_string(
81 TP->Name(WER)+" scheint nach kurzer Konzentration etwas "
82 "entdeckt zu haben!",78));
83 } else {
84 write(break_string(
85 "Leider entdeckst du trotz deiner magischen Faehigkeit "
86 "kein Mysterium in deiner Umgebung.",78));
87 say(break_string(
88 TP->Name(WER)+" konzentriert sich sichtbar, sieht dann "
89 "jedoch etwas enttaeuscht aus.",78));
MG Mud User88f12472016-06-24 23:31:02 +020090 }
Zesstra953f9972017-02-18 15:37:36 +010091 return 1;
92 }
MG Mud User88f12472016-06-24 23:31:02 +020093
Zesstra953f9972017-02-18 15:37:36 +010094
95SIEHE AUCH
96==========
97
98 P_LOCALCMDS
99 Fehlermeldungen: notify_fail(E), _notify_fail(E)
100 Argumentstring: query_verb(E), _unparsed_args(L)
101 Sonstiges: replace_personal(E), enable_commands(E)
102 Alternativen: AddCmd(L), add_action(E)
MG Mud User88f12472016-06-24 23:31:02 +0200103
10424. Maerz 2004 Gloinson