FUNKTION:
varargs mixed match_living(string str, int flag, object room)
ARGUMENTE:
str - Kuerzel, nach dem die living_names durchsucht werden sollen
flag - MATCH_PLAYER, MATCH_NO_DOUBLES, MATCH_OBJS, MATCH_NO_INVIS
sowie MATCH_PLAYER_FIRST
room - Raum, der durchsucht werden soll (oder NULL)
BESCHREIBUNG:
Sucht ein Lebewesen, dessen 'living-name' (siehe set_living_name(E))
mit str beginnt ('wol' findet Lebewesen 'wolf').
Sind mehrere Namen moeglich, so wird ein Fehlercode zurueckgegeben
(Lebewesen 'wolf' und 'wolfi' sind vorhanden, 'wol' ist dann
nicht eindeutig zuordbar).
Wird der Name eines Lebewesens genau getroffen, werden keine
weiteren Lebewesen mehr gesucht ('wolf' findet nur 'wolf' jedoch
nicht 'wolfi' - es wird also keine Fehlermeldung zurueckgegeben).
Gibt es mehrere Lebewesen, die 'wolf' heissen (der gesuchte Name
also mehrfach vergeben ist), so wird kein Fehlercode geliefert.
Es sei denn, in flag ist MATCH_NO_DOUBLES gesetzt, so dass solche
Doubles nicht ignoriert werden - es wird dann in einem solchen
Fall -1 zurueckgegeben.
Gesetztes MATCH_PLAYER in flag beschraenkt die Suche auf Spieler
(genauer auf interactive()s).
Ist MATCH_OBJS gesetzt, werden alle in Frage kommenden Objekte als
Array zurueckgeliefert. Ein direkter Treffer ist nur dann moeglich,
wenn es keine Doubles gibt. Wird nichts gefunden, wird ein leeres
Array zurueckgegeben.
Ist room gesetzt, so wird nur im Inventury dieses Objektes gesucht;
automatisch ist dabei immer MATCH_NO_DOUBLES gesetzt.
Ist MATCH_NO_INVIS gesetzt, wird die Suche so durchgefuehrt, als
ob Lebewesen mit gesetztem P_INVIS nicht vorhanden waeren.
Ist MATCH_PLAYER_FIRST gesetzt, so wird zunaechst eine Suche nach
einem passenden Spieler durchgefuehrt (genauso als ob MATCH_PLAYER
gesetzt waere). Wird kein passender Spieler gefunden, wird ein
NPC gesucht, dessen Name muss dann jedoch genau (!) passen.
Die Defines fuer 'flag' sind in <defines.h> definiert.
RÜCKGABEWERT:
Der Name des Lebewesens. Er ist zB in find_player(), find_living()
oder find_livings() verwendbar.
-1, wenn es mehrere Lebewesen gibt, auf dessen Name str passt
-2, wenn es kein Lebewesen gibt, auf dessen Name str passt
Wenn MATCH_OBJ gesetzt ist immer ein Array aus Objekten (oder ein
leeres Array). Es ist hierbei nicht mehr moeglich Doubletten von
Objekten mit differierenden Namen zu unterscheiden.
BEISPIELE:
match_living("wargon"); => "wargon", wenn Wargon eingeloggt
ist.
match_living("war"); => "wargon", wenn es kein anderes
Lebewesen gibt, dessen Name mit
"war" beginnt.
match_living("war", MATCH_PLAYER); => "wargon", wenn es zwar einen
NPC namens "wartemal" gibt, aber
keinen anderen Spieler, der mit
"war" beginnt.
SIEHE AUCH:
find_living(S), find_livings(S), find_player(S), find_netdead(S)
set_living_name(S), present_living(S)
|