blob: 00100f43c3ce9f281ce84fc92723b46fc1325574 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002command_me()
Zesstra953f9972017-02-18 15:37:36 +01003************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 int command_me(string str)
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012ARGUMENTE
13=========
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 string str - auszufuehrendes Kommando
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018DEFINIERT IN
19============
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 /std/npc.c, /std/player/command.c
MG Mud User88f12472016-06-24 23:31:02 +020022
MG Mud User88f12472016-06-24 23:31:02 +020023
Zesstra953f9972017-02-18 15:37:36 +010024BESCHREIBUNG
25============
26
27 Fuehrt 'str' wie ein Kommando aus, welches direkt vom Living
28 abgegeben wurde.
29
30 Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg.
31 Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks.
32
33 command_me() leitet den Befehl an command()(E) weiter und erlaubt
Zesstrabfc33452019-03-16 13:22:52 +010034 dadurch auch den Aufruf von sonst durch "static" vor externem Aufruf
35 geschuetzten Kommando-Funktionen.
Zesstra953f9972017-02-18 15:37:36 +010036
37 Kommandos mit oeffentlichen Kommandofunktionen (also damit alle mit
38 AddCmd definierten Kommandos) koennen auch durch command()(E)
39 von aussen ausgeloest werden.
40
Zesstra953f9972017-02-18 15:37:36 +010041
Zesstra70ea4242019-06-27 20:51:52 +020042BEMERKUNGEN
43===========
44
45 - beruecksichtigt Aliase, d.h. wenn man Aliase eines Spielers
46 ignorieren will, muss man ein \\ (fuer ein \ im Eingabestring)
47 vor den Befehl stellen
48 - fuer objektinterne Kommandos funktioniert also auch command()(E)
Zesstra953f9972017-02-18 15:37:36 +010049
50
51BEISPIEL
52========
53
54 (Code des Testraum ist in /doc/beispiele/testobjekte/command_me_testraum)
55 // #1: Testraum, zwinge Spieler bei "schleiche heran" zum Furzen
56 // command_me() ist hier noetig, da das Furzen eine geschuetzte
57 // Kommandofunktion hat
58 inherit "/std/room";
59
60 void create() {
61 ::create();
62 AddCmd("schleiche&heran|herum", "action_schleichen");
63 }
64
65
66
67 void init() {
68 ::init();
69 add_action("action_kriechen", "kriech", 1);
70 }
71
72 static int action_schleichen(string str) {
73 string tmp = this_player()->QueryProp(P_RACE);
74 // ...
75 if(tmp[<1]=='e') tmp=tmp[0..<2];
76 write(break_string("Du versuchst leise zu schleichen, dabei passiert "
77 "dir aber ein allzu "+
78 (tmp=="Mensch"?"menschliches":lower_case(tmp)+"isches")+
79 " Missgeschick. Verflucht!", 78));
80 this_player()->command_me("\\furze");
81 return 1;
82 }
83
84
85
86 static int action_kriechen(string str) {
87 write(break_string("Deine Knie tun zu sehr weh dafuer.", 78));
88 tell_room(this_object(), break_string(this_player()->Name(WER)+
89 " knackt mit den Knien.", 78));
90 return 1;
91 }
92
93
94
95 // #2 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
96 // Beide Kommandos gelingen, da Kommando mit AddCmd definiert.
97 find_player("naddl")->command_me("schleiche herum")
98 command("schleiche herum", find_player("naddl"));
99
100 // #3 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
101 find_player("naddl")->command_me("krieche")
102 // Folgendes Kommando schlaegt fehl, da Kommandofunktion static ist.
103 command("krieche", find_player("naddl"));
104
105
106SIEHE AUCH
107==========
108
109 enable_commands(E), command(E)
MG Mud User88f12472016-06-24 23:31:02 +0200110
11106 Sep 2012 Gloinson