FUNKTION:
varargs void AddInfo( string regeln, string|closure info
[, string|closure indent ]);
varargs void AddInfo( string regeln, mixed *actions [,string indent ]);
(Veraltet, nicht mehr benutzbar:)
varargs void AddInfo( mixed *key, string info [,string indent ]);
varargs void AddInfo( mixed *key, mixed *actions [,string indent ]);
ARGUMENTE:
regeln: string mit den noetigen Schluesselwoertern und deren Synonymen
(fuer komplexere Syntaxen, vorallem bei Quests)
info: Antwortstring (darf auch eine Closure sein)
actions: Ein Array mit Kommandos als Reaktion
indent: String, der zusaetzlich zum Namen noch vor den Namen
angefuegt werden soll (darf auch eine Closure sein)
key: Schluesselwort oder Array aus Schluesselwoertern nach denen
gefragt werden kann
FUNKTION:
Man hat die Moeglichkeit, NPCs mit Antworten auf bestimmte Fragen
auszustatten. Dabei entspricht 'regeln' einem oder mehreren Ausdruek-
ken, die im Fragestring enthalten sein koennen. 'info' ist die Antwort,
die gegeben wird. Falls man noch einen String angeben will, 'wie'
das Lebewesen antworten soll, steht dieser in 'indent'.
Man kann die Schluesselwoerter auch zu einem speziell formatierten
Regel-string 'regeln' zusammenfassen oder bei Nettis statt dem
Antwortstring auch ein Array 'actions' aus Kommandos angeben.
Zusammensetzung von 'regeln':
Es wird ein String angegeben, der die im Fragestring des Spieler
zu enthaltende Teile beschreibt. Der einfachste Fall ist einfach
nur ein Wort, welches dann als Teil des Fragestrings vorhanden
sein muss. Es sind jedoch auch komplexere Syntaxen moeglich,
die analog zu den Regeln von AddCmd() funktionieren. Z.B.:
"wo&wohnt|lebt|haust&annie|maedchen|kind"
Nur wenn aus JEDER der durch & getrennten Synonymgruppen
ein Wort im Fragestring enthalten ist, wird der Antwortstring
ausgegeben.
frage NPC "Wo wohnt Annie?"
waere in diesem Beispiel ebenso moeglich wie
frage NPC "Wo haust das kleine Maedchen?" oder
frage NPC "Wo zum Teufel lebt das kleine Kind?" etc.
Leerzeichen in den Regeln koennen _nicht_ ausgewertet werden und
sind nicht erlaubt!
Man sollte nur bedenken, ob es in jedem Falle angebracht ist,
zu viele Schluesselwoerter zu verketten. Dadurch wird das
Herausfinden der Antwort in manchen Faellen eher erschwert als
erleichtert.
Zeilenumbrueche im Antwortstring werden automatisch eingefuegt.
Wird kein passendes Schluesselwort oder Regelstring gefunden wird
eine Defaultantwort gegeben.
Mit "\ndefault" als Schluessel kann man eine eigene Defaultantwort
festlegen und mit "\ndrunk" eine spezielle Antwort, wenn der Spieler
betrunken fragt.
ACTIONS:
Bei Nettis ("std/netti") kann statt einem einfachen Antwort-
string auch ein Array uebergeben werden, welches die Reaktionen
des NPCs enthalten kann und Moeglichkeiten zur Simulation einer
Reaktionszeit, zufaelliges Auswaehlen einer Reaktion und
bedingtes Abbrechen der Kommandokette bietet.
Wie eine solche Kommandoliste aufgebaut werden kann ist analog
zu AddReaction(). Es sind im Grunde alle dort genannten Aktionen
auch hier moeglich, nur MUSS es sich hier um ein Array handeln,
da ansonsten das Kommando als Antwortstring ausgegeben wird.
RÜCKGABEWERT:
keiner
BEISPIELE:
AddInfo( "aufgabe", "Ich haette eine Aufgabe fuer Dich.", "sagt:" );
// liefert:
// Monster sagt: Ich haette eine Aufgabe fuer Dich.
AddInfo( "aufgabe", "Ich habe eine Aufgabe fuer Dich.", "erklaert:" );
// liefert:
// Monster erklaert: Ich habe eine Aufgabe fuer Dich.
AddInfo( "wo&wohnt|lebt|haust&annie|maedchen|kind",
"Ein Kind namens Annie wohnt in Kogida.", "antwortet:" );
// liefert auf Fragen in denen jeweils eines der Schluesselwoerter
// aus den Synonymgruppen enthalten ist:
// Bsp: 'Wo wohnt Annie?', 'Wo lebt das kleine Maedchen?', etc.:
// Monster antwortet: Ein Kind namens Annie wohnt in Kogida.
AddInfo("\ndrunk", "Suuuuuviel Wein isch nisch gut, wasch?", "lallt:");
// liefert, wenn der Spieler einen Alkoholwert groesser als 60 hat:
// Monster lallt: Suuuuuviel Wein isch nisch gut, wasch?
AddInfo("\ndefault", "zuckt ratlos mit den Schultern.");
// liefert, wenn keine passende Antwort gefunden wird:
// Monster zuckt ratlos mit den Schultern.
BEISPIELE FUER NETTIS:
AddInfo( "aufgabe|quest|abenteuer",
({ "laechle /gerissen", 1, "sag Ich habe eine Aufgabe fuer Dich. ",
1, "grins /boese"}) );
// liefert:
// Monster laechelt gerissen.
// (1 Sek. Pause)
// Monster sagt: Ich habe eine Aufgabe fuer Dich.
// (1 Sek. Pause)
// Monster grinst boese.
SIEHE AUCH:
RemoveInfo(L), AddReaction(L), P_DEFAULT_INFO, AddCmd(L)
|