MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | command() |
| 2 | FUNKTION: |
| 3 | int command(string str) |
| 4 | int command(string str, object ob) |
| 5 | |
| 6 | BESCHREIBUNG: |
| 7 | Fuehrt str wie ein Kommando welches direkt vom Nutzer abgegeben wurde |
| 8 | aus. Alle Effekte des Kommandos wirken sich auf this_object() oder, |
| 9 | falls angegeben, auf das Objekt <obj> aus. |
| 10 | |
| 11 | Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg. |
| 12 | Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks. |
| 13 | |
| 14 | Wenn command() auf ein anderes Objekt angewendet wird, koennen auf |
| 15 | diesem Wege keine "static" deklarierten Funktionen aufgerufen werden, |
| 16 | um etwas Schutz vor unerlaubten Aufrufen zu geben. |
| 17 | |
| 18 | Kommandi werden gestapelt, das heisst, nach der Ausfuehrung von <str> |
| 19 | werden die alten Werte fuer this_player(), query_verb() etc. wieder |
| 20 | hergestellt (ein Kommando kann dazu fuehren, dass ein Kommando |
| 21 | ausgefuehrt wird). |
| 22 | |
| 23 | BEMERKUNGEN: |
| 24 | Die meisten in Lebewesen definierten Kommandofunktionen sind vor |
| 25 | aeusserem Aufrufen durch "static" oAe geschuetzt. Zum Ausfuehren dieser |
| 26 | Kommandos muss command_me(L) eingesetzt werden, um diesen Schutz zu |
| 27 | umgehen. |
| 28 | |
| 29 | BEISPIELE: |
| 30 | Siehe command_me(L) fuer einen Vergleich. |
| 31 | |
| 32 | // #1 Ein NPC nimmt und zuendet eine herumliegende /std/lightsource an |
| 33 | object f = present("\nlichtquelle", environment()); |
| 34 | if(f && command("nimm lichtquelle")) |
| 35 | if(command("zuende lichtquelle an")) |
| 36 | tell_room(environment(), Name(WER)+" freut sich.\n"); |
| 37 | else |
| 38 | tell_room(environment(), Name(WER)+" schaut bedroeppelt.\n"); |
| 39 | |
| 40 | // #2 Ein NPC traegt seine Sachen |
| 41 | clone_object("/ruestung/sommerkleid")->move(this_object(), 2); |
| 42 | command("trage kleid") |
| 43 | // aequivalent und besser ist hier: |
| 44 | AddItem("/ruestung/sommerkleid", REFRESH_REMOVE|CLONE_WEAR); |
| 45 | |
| 46 | SIEHE AUCH |
| 47 | command_stack(E), notify_fail(E), enable_commands(E), get_eval_cost(E) |
| 48 | command_me(L) |
| 49 | |
| 50 | 6 Sep 2012 Gloinson |