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