FUNKTION:
varargs string name( int fall, int modus, mixed viewer, mixed actor );
ARGUMENTE:
fall - Grammatischer Fall, in dem das Objekt benannt werden soll
modus - Art der Beschreibung
viewer - (optional) Spieler, der diesen Text lesen soll
actor - (optional) Spieler, der diesen Text ausloest
BESCHREIBUNG:
Wenn ein Objekt in einem Satz Erwaehnung finden soll, so kann
mittels dieser Funktion ein Satzteil erzeugt werden, dass einfach
eingesetzt werden kann. Die Faelle sind WER, WESSEN, WEN und WEM.
Als Fall ist zusaetzlich RAW moeglich, was den nackten Namen liefert.
Der modus hat folgende Bedeutung:
NAME_INDEF - erzeuge einen Satzteil mit einem unbestimmten Artikel
NAME_DEF - erzeuge einen Satzteil mit einem bestimmten Artikel
NAME_AUTO - Versuche eine Entscheidung zu treffen, welcher
Artikel benutzt werden soll
NAME_NONE - erzeuge einen Satzteil ohne Artikel
NAME_CAP - erzeuge einen Satzteil mit grossgeschriebenem 1.
Buchstaben (als Ersatz fuer capitalize(name()).
Siehe dazu auch das Bsp.)
NAME_DESCR - erzeuge einen Satzteil mit erweiterter Beschreibung
NAME_STATE - erzeuge einen Satzteil mit Zustandsinfo
NAME_OWNER - erzeuge einen Satzteil mit Besitzerinfo
NAME_PLURAL - erzeuge einen Satzteil mit dem Namen in Mehrzahl
NAME_PLURAL_ART erzeuge einen Satzteil in Mehrzahl mit Artikel
NAME_UACT - aktualisiere die Mengenangaben von Units zuerst
NAME_NO_NUMBER - lasse die Zahlenangabe bei Units weg
NAME_V_IS_WIZ - Erzeuge den Namen aus Magiersicht (nur wichtig fuer
den beschreibenden Namen unsichtbarer Spieler)
NAME_NO_ADJ - erzeuge einen Satzteil ohne Adjektiv
Es kann immer nur einer der ersten vier Modi ausgewaehlt werden,
der jedoch frei mit DESCR, STATE und/oder PLURAL etc kombiniert werden
kann (z.B. NAME_AUTO|NAME_DESCR).
NAME_DESCR liefert P_DESCR. Wenn gleichzeitig NAME_OWNER gesetzt ist,
wird auch das P_DESCR des Besitzers eingebaut (aber nur wenn es
beim Besizter als Array angegeben wurde).
NAME_STATE liefert bei Behaeltern, Lichtquellen, Waffen etc den
Zustand in Klammern mit(siehe _name_state(L).
NAME_OWNER liefert den Besitzer mit, ggf auch als 'Dein' o.ae.
Diesen Schalter nur benutzen, wenn viewer und actor korrekt gesetzt
werden!
Zusaetzlich gibt es den Fall RAW, der einen Nomitaiv ganz ohne Artikel
zurueckgibt. (Zur Benutzung von Rufnamen.)
Die Argumente viewer und actor sind vor allem fuer Objekte mit
Besitzer interessant. Sie werden auf die entsprechenden Objekte
gesetzt (also viewer zB auf das Spielerobjekt, dass den Text sehen
soll). Es ist auch moeglich statt dessen eine 1 zu uebergeben, dann
wird ein entsprechender Text auch erzwungen. Kurzbeispiel:
"Sunrise nimmt ihre Pantoffeln." Siehe auch name_usage(WL).
RÜCKGABEWERT:
Ein Satzteil in Form einer Zeichenkette. Wenn mit P_NAME_ADJ ein
Adjektiv definiert wurde, wird auch dieses mit eingebaut.
BEMERKUNG:
Man kann bei SetProp(P_NAME, ... ); auch ein Array aus 4 Elementen
angeben. Dann wird das erste Element als Nominativ (WER), usw.
bis das 4te Element als Akkusativ (WEN) angenommen.
Die Funktion Name beherrscht automatische Deklination von
(regelmaessigen) Worten. Die wichtigsten Ausnahmen werden berueck-
sichtigt. Um das 's' im Genitiv (WESSEN) braucht man sich also nicht
zu kuemmern.
Mittels der Funktion QueryProp(P_NAME) bekommt man die Daten, die
man mittels SetProp(P_NAME,...) gesetzt hat, (u.U eben auch als
Array) zurueck.
Der angeforderte Modus (NAME_DEF etc) wird ggf. nicht geliefert,
wenn das Objekt mit P_ARTICLE einen anderen Modus zwingend
vorschreibt.
BEISPIEL:
(Weitere Beispiele, vor allem mit komplexer Benutzung aller
namensspezifischen Properties findest du in name_usage(WL))
SetProp(P_NAME, "Ball");
SetProp(P_GENDER, MALE);
SetProp(P_ARTICLE, 1); /* ueberfluessig da 1 default ist */
ball->name(WER, NAME_INDEF) gibt "ein Ball"
ball->name(WEM, NAME_DEF) gibt "dem Ball"
ball->name(WEN, NAME_AUTO) gibt "den Ball" bei nur ein Ball im Raum,
"einen Ball" wenn mehrere dort sind.
NOCHN BEISPIEL:
SetProp(P_NAME, ({"Drache","Drachen","Drachen","Drachen"}));
SetProp(P_GENDER, MALE);
drache->name(WER, NAME_INDEF) gibt "ein Drache"
drache->name(WESSEN, NAME_INDEF) gibt "eines Drachen"
drache->name(RAW) gibt "Drache"
NOCHN BEISPIEL (NAME_CAP-spezifisch):
Ein Spieler ist verfroscht, also PL->SetProp(P_FROG, 1).
PL->name(WER, NAME_AUTO) gibt "ein kleiner Frosch"
PL->name(WER, NAME_AUTO|NAME_CAP) gibt "Ein kleiner Frosch"
Deswegen sollte am Satzanfang immer NAME_CAP mit angegeben werden.
Gerade in der Weihnachtszeit gibt es im Wunderland viele als
Schneefloecken, Tannen etc. getarnte Froesche. (In der Satzmitte
hat NAME_CAP dann selbstverstaendlich nichts zu suchen.)
SIEHE AUCH:
name_usage(WL), P_NAME, P_NAME_ADJ, P_ARTICLE, P_PLURAL, P_DESCR,
_name_state(L), long(L), (veraltet: benennung(MG), short(L)),
IsPlural(L)
|