blob: 09d6c0bc1aff464f80c57e3945c02308ca34fbf2 [file] [log] [blame]
command()
FUNKTION:
int command(string str)
int command(string str, object ob)
BESCHREIBUNG:
Fuehrt str wie ein Kommando welches direkt vom Nutzer abgegeben wurde
aus. Alle Effekte des Kommandos wirken sich auf this_object() oder,
falls angegeben, auf das Objekt <obj> aus.
Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg.
Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks.
Wenn command() auf ein anderes Objekt angewendet wird, koennen auf
diesem Wege keine "static" deklarierten Funktionen aufgerufen werden,
um etwas Schutz vor unerlaubten Aufrufen zu geben.
Kommandi werden gestapelt, das heisst, nach der Ausfuehrung von <str>
werden die alten Werte fuer this_player(), query_verb() etc. wieder
hergestellt (ein Kommando kann dazu fuehren, dass ein Kommando
ausgefuehrt wird).
BEMERKUNGEN:
Die meisten in Lebewesen definierten Kommandofunktionen sind vor
aeusserem Aufrufen durch "static" oAe geschuetzt. Zum Ausfuehren dieser
Kommandos muss command_me(L) eingesetzt werden, um diesen Schutz zu
umgehen.
BEISPIELE:
Siehe command_me(L) fuer einen Vergleich.
// #1 Ein NPC nimmt und zuendet eine herumliegende /std/lightsource an
object f = present("\nlichtquelle", environment());
if(f && command("nimm lichtquelle"))
if(command("zuende lichtquelle an"))
tell_room(environment(), Name(WER)+" freut sich.\n");
else
tell_room(environment(), Name(WER)+" schaut bedroeppelt.\n");
// #2 Ein NPC traegt seine Sachen
clone_object("/ruestung/sommerkleid")->move(this_object(), 2);
command("trage kleid")
// aequivalent und besser ist hier:
AddItem("/ruestung/sommerkleid", REFRESH_REMOVE|CLONE_WEAR);
SIEHE AUCH
command_stack(E), notify_fail(E), enable_commands(E), get_eval_cost(E)
command_me(L)
6 Sep 2012 Gloinson