Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc/efun/add_actionSYNOPSIS
#include
void add_action(string|closure fun, string cmd);
void add_action(string|closure fun, string cmd, int flag);
void add_action(string|closure fun); /* veraltet */
BESCHREIBUNG
Setzt eine lokale Funktion fun, die aufgerufen wird, wenn der Spieler
das Kommandos AA_SHORT (d.h. 1) ist, koennen Argumente von
cmd ohne einen Leerschlag an cmd angehaengt sein. An die Funktion fun
werden alle Zeichen nach dem ersten Leerschlag als Argument
uebergeben.
Wenn AA_NOSPACE (d.h. 2) ist, koennen die Argumente wiederum
ohne Leerschlag ans Verb angehaengt sein. Im Unterschied zu AA_SHORT
werden alle Zeichen nach dem Verb als Argument an die Funktion
uebergeben. Die Zeichen, welche nicht durch einen Leerschlag vom
Verb getrennt sind, werden ZUSAETZLICH von query_verb() zurueck
gegeben.
Wenn AA_IMM_ARGS (3) ist, werden alle Zeichen nach dem Verb
als Argument uebergeben, nicht aber von query_verb() beruecksichtigt.
Wenn - eine negative Zahl ist, muss das vom Spieler eingegebene
Kommando nur mit den ersten Zeichen von cmd uebereinstimmen.
Als Name fuer die Funktion fun duerfen keine geschuetzten Namen wie
zum Beispiel create, init, reset, heart_beat etc. verwendet werden
(eine vollstaendige Liste findet man unter /doc/applied/).
BEISPIELE
add_action("geh_rein", "betrete");
Wenn der Spieler "betrete" eintippt, wird die Funktion geh_rein()
aufgerufen.
add_action("disfunc", "disconnect", AA_NOSPACE);
Die Funktion disfunc() wird aufgerufen, wenn der Spieler "disconnect"
oder eine Abkuerzung davon (zum Beispiel "di" oder "discon") eingibt.
Laengere Worte (zum Beispiel "disconnecting") werden NICHT erkannt.
Um rauszufinden, was der Spieler tatsaechlich eingegeben hat, muss
query_verb() aufgerufen werden.
add_action("fun", "cmd");
add_action("fun", "scmd", AA_SHORT);
add_action("fun", "ncmd", AA_NOSPACE);
add_action("fun", "icmd", AA_IMM_ARGS);
Die folgende Tabelle zeigt, was die oben aufgefuehrten Kommandos bzw.
fuer Werte an query_verb() und als Argumente an die Funktion
fun uebergeben:
|-------------------|--------------|----------------------------|
| Eingabe | query_verb() | Argument der Funktion fun |
|-------------------|--------------|----------------------------|
| "cmd" | "cmd" | 0 |
| "cmd bla fasel" | "cmd" | "bla fasel" |
|-------------------|--------------|----------------------------|
| "scmd" | "scmd" | 0 |
| "scmd bla" | "scmd" | "bla" |
| "scmdbla" | "scmdbla" | 0 |
| "scmd bla fasel" | "scmd" | "bla fasel" |
| "scmdbla fasel" | "scmdbla" | "fasel" |
|-------------------|--------------|----------------------------|
| "ncmd" | "ncmd" | 0 |
| "ncmd bla" | "ncmd" | " bla" |
| "ncmdbla" | "ncmdbla" | "bla" |
| "ncmd bla fasel" | "ncmd" | " bla fasel" |
| "ncmdbla fasel" | "ncmdbla" | "bla fasel" |
|-------------------|--------------|----------------------------|
| "icmd" | "icmd" | 0 |
| "icmd bla" | "icmd" | " bla" |
| "icmdbla" | "icmd" | "bla" |
| "icmd bla fasel" | "icmd" | " bla fasel" |
| "icmdbla fasel" | "icmd" | "bla fasel" |
|-------------------|--------------|----------------------------|
GESCHICHTE
Das Argument < 0 wird seit 3.2@127 unterstuetzt, aber erst ab
LDMud 3.2.8 richtig implementiert. LDMud 3.2.9 fuehrte das AA_IMM_ARGS
Flag ein. Ab LDMud 3.5 kann man Closures als Funktionen uebergeben.
SIEHE AUCH
query_verb(E), query_command(E), add_verb(E), add_xverb(E), init(A)
zurück zur Übersicht