blob: 77a3cc5d530cf5ff66cd34db81863c97f62a5087 [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
34 dadurch auch den Aufruf von sonst durch "static", "protected" oder
35 "private" vor externem Aufruf geschuetzten Kommando-Funktionen.
36
37 Kommandos mit oeffentlichen Kommandofunktionen (also damit alle mit
38 AddCmd definierten Kommandos) koennen auch durch command()(E)
39 von aussen ausgeloest werden.
40
41BEMERKUNGEN:
42 * beruecksichtigt Aliase, d.h. wenn man Aliase eines Spielers
43 ignorieren will, muss man ein \ (fuer ein im Eingabestring) vor
44 den Befehl stellen
45
46 * fuer objektinterne Kommandos funktioniert also auch
47 command()(E)
48
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