FindObject (veraltet)

Kategorie: Objekte / Suche
Ab Engineversion: 4.6.5.0 CP (erweitert ab 4.9.1.0 GWE)

Beschreibung

Liefert das erste gefundene Objekt, das den angegebenen Suchkriterien entspricht. Sind iWdt und iHgt beide -1, so wird das nächstliegende Objekt gefunden. Sind sie beide 0, wird nur am Punkt iX/iY gesucht. Sind iX, iY, iWdt und iHgt alle 0, gilt als Suchrechteck die gesamte Karte (auch bei lokalen Aufrufen). Es müssen stets die Bedingungen aller Parameter erfüllt sein, die angegeben und nicht 0 sind.

Syntax

object FindObject (id idDef, int iX, int iY, int iWdt, int iHgt, int dwOCF, string szAction, object pActionTarget, any pContainer, object pFindNext);

Parameter

idDef:
[opt] Objekttyp
iX:
[opt] Suchposition bzw. linker Rand des Suchrechtecks. Bei lokalem Aufruf Offset zum aufrufenden Objekt.
iY:
[opt] Suchposition bzw. oberer Rand des Suchrechtecks. Bei lokalem Aufruf Offset zum aufrufenden Objekt.
iWdt:
[opt] Breite des Suchrechtecks. Siehe auch Hinweis unten.
iHgt:
[opt] Höhe des Suchrechtecks. Siehe auch Hinweis unten.
dwOCF:
[opt] Bitmaske von Objektattributen. Es werden alle Objekte gefunden, die mindestens eines der übergebenen Objektattribute besitzen. 0 findet alle Objekte.
szAction:
[opt] Aktivität des zu findenden Objekts.
pActionTarget:
[opt] Aktivitätsziel des zu findenden Objekts. Siehe dazu auch SetAction, GetActionTarget
pContainer:
[opt] Behälter des zu findenden Objekts. Wenn angegeben, wird nur dieser Behälter durchsucht. Möglich sind auch NoContainer für Objekte, die sich im Freien befinden und AnyContainer für alle Objekte.
pFindNext:
[opt] Objekt, nach dem die Suche begonnen wird. Über diesen Parameter können in einer Schleife nacheinander alle Objekte gefunden werden, die den Suchkriterien entsprechen.

Anmerkungen

Bei objektlokalem Aufruf findet sich das aufrufende Objekt nicht selber.
Wird ein vollständiges Suchrechteck angegeben, so werden Objekte gefunden, deren Mittelpunkt sich innerhalb dieses Rechtecks befindet. Sind alle vier Werte des Suchrechtecks (iX, iY, iWdt, iHgt) gleich 0 oder wurden nicht angegeben, so wird immer die gesamte Spielfläche durchsucht. Sind Breite und Höhe des Suchrechtecks (iWdt, iHgt) gleich 0, so gelten die Koordinaten (iX, iY) als Suchpunkt und es werden nur Objekte gefunden, die diesen Suchpunkt überlappen. Sind Breite und Höhe des Suchrechtecks beide gleich -1, so wird vom Suchpunkt ausgehend das jeweils nächstliegende Objekt gefunden.
Die Funktion ist veraltet. Es wird empfohlen, FindObjects bzw. FindObject2 zu verwenden, da diese Funktionen mehr Suchparameter unterstützen und für viele Fälle besser optimiert sind.

Beispiele

var obj;
if (FindObject(0, LandscapeWidth()-100, 0, 100,LandscapeHeight(), OCF_CrewMember()))
  Message (Format ("<%s>|Hier gehts nicht weiter.", obj, GetName (obj)");"
Lässt den Clonk realisieren, dass die Landschaft am rechten Rand endlich ist.
Incinerate(FindObject(CLNK, 0,0, -1,-1));
Entzündet den nächstliegenden Clonk.
Explode(100, FindObject(0, 100, 100, 0, 0, OCF_Living(), "Jump"));
Lässt einen Clonk explodieren, der sich an Position 100/100 befindet, und springt.
var obj;
while (obj=FindObject(WIPF, 0,0,0,0, 0, 0,0, NoContainer(), obj)) Incinerate(obj);
Entzündet alle Wipfe, die nirgends enthalten sind.
Siehe auch: AnyContainer, FindObject2, FindObjectOwner, FindObjects, NoContainer
Sven2, November 2001
matthes, Juni 2004