Cleaning up: removing obsolete functions and its documentation

stable-5.2
Tobias Zwick 2009-07-15 14:41:34 +02:00
parent 4b3357dfd7
commit e74c484aa9
21 changed files with 56 additions and 743 deletions

View File

@ -43,7 +43,7 @@ protected func InitializePlayer(int iPlr)
protected func FxInt_EAITimer(object pCrew, int iEffNum, int iEffTime)
{
// Nächsten Gegner angreifen
var pEnemy = <funclink>FindObject2</funclink>(<funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>(pCrew)), <funclink>Find_OCF</funclink>(<funclink>OCF_Alive</funclink>), <funclink>Sort_Distance</funclink>());
var pEnemy = <funclink>FindObject</funclink>(<funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>(pCrew)), <funclink>Find_OCF</funclink>(<funclink>OCF_Alive</funclink>), <funclink>Sort_Distance</funclink>());
<funclink>if</funclink> (pEnemy) <funclink>SetCommand</funclink>(pCrew, "Attack", pEnemy);
<funclink>return</funclink> FX_OK;
}
@ -108,7 +108,7 @@ protected func InitializeScriptPlayer(int iPlr, int idTeam)
protected func FxInt_EAITimer(object pCrew, int iEffNum, int iEffTime)
{
// Nächsten Gegner angreifen
var pEnemy = <funclink>FindObject2</funclink>(<funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>(pCrew)), <funclink>Find_OCF</funclink>(<funclink>OCF_Alive</funclink>), <funclink>Sort_Distance</funclink>());
var pEnemy = <funclink>FindObject</funclink>(<funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>(pCrew)), <funclink>Find_OCF</funclink>(<funclink>OCF_Alive</funclink>), <funclink>Sort_Distance</funclink>());
<funclink>if</funclink> (pEnemy) <funclink>SetCommand</funclink>(pCrew, "Attack", pEnemy);
<funclink>return</funclink> FX_OK;
}

View File

@ -20,7 +20,6 @@
<related>
<funclink>Find_AnyContainer</funclink>
<funclink>FindObject</funclink>
<funclink>FindObjectOwner</funclink>
</related>
</func>
<author>jwk</author><date>April 2002</date>

View File

@ -13,7 +13,7 @@
<remark>Dieser Wert ist als Engine-Konstante definiert. Die Funktionsklammern können daher optional weggelassen werden.</remark>
<examples>
<example>
<code><funclink>SetComDir</funclink>(COMD_Right, <funclink>FindObject2</funclink>(Find_ID(BLMP)));</code>
<code><funclink>SetComDir</funclink>(COMD_Right, <funclink>FindObject</funclink>(Find_ID(BLMP)));</code>
<text>Ändert die Flugrichtung eines Luftschiffes.</text>
</example>
</examples>

View File

@ -5,7 +5,7 @@
<func>
<title>CastObjects</title>
<category>Objekte</category><subcat>Erzeugung</subcat>
<version>4.6.5.0 CP</version>
<version>4.6.5.0 CP<extversion>4.10.0.0 OC</extversion></version>
<syntax>
<rtype>int</rtype>
<params>
@ -14,6 +14,8 @@
<param><type>int </type><name>iLevel</name><desc>Geschwindigkeit der verschleuderten Objekte</desc></param>
<param><type>int </type><name>iX</name><desc>X-Ausgangsposition. Offset zum aufrufenden Objekt bei lokalem Aufruf.</desc><optional /></param>
<param><type>int </type><name>iY</name><desc>Y-Ausgangsposition. Offset zum aufrufenden Objekt bei lokalem Aufruf.</desc><optional /></param>
<param><type>int </type><name>iAngle</name><desc>Winkel in den die Objekte verschleudert werden.</desc><optional /></param>
<param><type>int </type><name>iAngleVariance</name><desc>Maximale Abweichung von diesem Winkel. Wenn nicht angegeben werden Objekte in alle Richtungen verschleudert.</desc><optional /></param>
</params>
</syntax>
<desc>Verschleudert iNumber Objekte an angegebener Position mit einer Geschwindigkeit von iLevel. Bei einem lokalen Aufruf haben die erzeugten Objekte den selben Besitzer wie das aufrufende Objekt.</desc>
@ -30,4 +32,5 @@ CastObjects(SPRK,1,20,<funclink>GetVertex</funclink>(num, 0)<emlink href="script
</related>
</func>
<author>Günther</author><date>Februar 2002</date>
<author>Newton</author><date>Juli 2009</date>
</funcs>

View File

@ -5,7 +5,7 @@
<func>
<title>CastPXS</title>
<category>Landschaft</category>
<version>4.6.5.0 CP</version>
<version>4.6.5.0 CP <extversion>4.10.0.0 OC</extversion></version>
<syntax>
<rtype>int</rtype>
<params>
@ -14,6 +14,8 @@
<param><type>int</type><name>iLevel</name><desc>Stärke</desc></param>
<param><type>int</type><name>iX</name><desc>X-Koordinate</desc></param>
<param><type>int</type><name>iY</name><desc>Y-Koordinate</desc></param>
<param><type>int </type><name>iAngle</name><desc>Winkel in den die Materialpixel verschleudert werden.</desc><optional /></param>
<param><type>int </type><name>iAngleVariance</name><desc>Maximale Abweichung von diesem Winkel. Wenn nicht angegeben werden Materialpixel in alle Richtungen verschleudert.</desc><optional /></param>
</params>
</syntax>
<desc>Verschleudert namentlich angegebene Materialpixel an angegebener Position. Bei einem lokalen Aufruf gelten die Koordinaten als Offset zum aufrufenden Objekt.</desc>
@ -28,4 +30,5 @@
</related>
</func>
<author>jwk</author><date>April 2002</date>
<author>Newton</author><date>Juli 2009</date>
</funcs>

View File

@ -15,7 +15,7 @@
<desc>Eliminiert einen Spieler. Die Runde gilt für diesen Spieler als verloren.</desc>
<examples>
<example>
<code>if (!<funclink>FindObjectOwner</funclink>(FLAG, 0)) EliminatePlayer(0);</code>
<code>if (!<funclink>FindObject</funclink>(Find_ID(FLAG), Find_Owner(0))) EliminatePlayer(0);</code>
<text>Wenn der erste Spieler keine Flagge mehr hat, wird er eliminiert.</text>
</example>
</examples>

View File

@ -1,62 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>FindObject</title>
<category>Objekte</category><subcat>Suche</subcat>
<version>4.6.5.0 CP<extversion>4.9.1.0 GWE</extversion></version>
<deprecated />
<syntax>
<rtype>object</rtype>
<params>
<param><type>id</type><name>idDef</name><desc>Objekttyp</desc><optional /></param>
<param><type>int</type><name>iX</name><desc>Suchposition bzw. linker Rand des Suchrechtecks. Bei lokalem Aufruf Offset zum aufrufenden Objekt.</desc><optional /></param>
<param><type>int</type><name>iY</name><desc>Suchposition bzw. oberer Rand des Suchrechtecks. Bei lokalem Aufruf Offset zum aufrufenden Objekt.</desc><optional /></param>
<param><type>int</type><name>iWdt</name><desc>Breite des Suchrechtecks. Siehe auch Hinweis unten.</desc><optional /></param>
<param><type>int</type><name>iHgt</name><desc>Höhe des Suchrechtecks. Siehe auch Hinweis unten.</desc><optional /></param>
<param><type>int</type><name>dwOCF</name><desc>Bitmaske von Objektattributen. Es werden alle Objekte gefunden, die mindestens eines der übergebenen Objektattribute besitzen. 0 findet alle Objekte.</desc><optional /></param>
<param><type>string</type><name>szAction</name><desc>Aktivität des zu findenden Objekts.</desc><optional /></param>
<param><type>object</type><name>pActionTarget</name><desc>Aktivitätsziel des zu findenden Objekts. Siehe dazu auch <funclink>SetAction</funclink>, <funclink>GetActionTarget</funclink></desc><optional /></param>
<param><type>any</type><name>pContainer</name><desc>Behälter des zu findenden Objekts. Wenn angegeben, wird nur dieser Behälter durchsucht. Möglich sind auch <funclink>NoContainer</funclink> für Objekte, die sich im Freien befinden und <funclink>AnyContainer</funclink> für alle Objekte.</desc><optional /></param>
<param><type>object</type><name>pFindNext</name><desc>Objekt, nach dem die Suche begonnen wird. Über diesen Parameter können in einer Schleife nacheinander alle Objekte gefunden werden, die den Suchkriterien entsprechen.</desc><optional /></param>
</params>
</syntax>
<desc>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.</desc>
<remark>Bei objektlokalem Aufruf findet sich das aufrufende Objekt nicht selber.</remark>
<remark>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.</remark>
<remark>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.</remark>
<examples>
<example>
<code>var obj;
if (FindObject(0, <funclink>LandscapeWidth</funclink>()-100, 0, 100,<funclink>LandscapeHeight</funclink>(), <funclink>OCF_CrewMember</funclink>()))
<funclink>Message</funclink> (<funclink>Format</funclink> ("&lt;%s&gt;|Hier gehts nicht weiter.", obj, <funclink>GetName</funclink> (obj)");</code>
<text>Lässt den Clonk realisieren, dass die Landschaft am rechten Rand endlich ist.</text>
</example>
<example>
<code><funclink>Incinerate</funclink>(FindObject(CLNK, 0,0, -1,-1));</code>
<text>Entzündet den nächstliegenden Clonk.</text>
</example>
<example>
<code><funclink>Explode</funclink>(100, FindObject(0, 100, 100, 0, 0, <funclink>OCF_Living</funclink>(), "Jump"));</code>
<text>Lässt einen Clonk explodieren, der sich an Position 100/100 befindet, und springt.</text>
</example>
<example>
<code>var obj;
<funclink>while</funclink> (obj=FindObject(WIPF, 0,0,0,0, 0, 0,0, <funclink>NoContainer</funclink>(), obj)) <funclink>Incinerate</funclink>(obj);</code>
<text>Entzündet alle Wipfe, die nirgends enthalten sind.</text>
</example>
</examples>
<related>
<funclink>NoContainer</funclink>
<funclink>AnyContainer</funclink>
<funclink>FindObjects</funclink>
<funclink>FindObject2</funclink>
<funclink>FindObjectOwner</funclink>
</related>
</func>
<author>Sven2</author><date>November 2001</date>
<author>matthes</author><date>Juni 2004</date>
</funcs>

View File

@ -3,9 +3,9 @@
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>FindObject2</title>
<title>FindObject</title>
<category>Objekte</category><subcat>Suche</subcat>
<version>4.9.6.0 CR</version>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>object</rtype>
<params>
@ -14,11 +14,11 @@
</params>
</syntax>
<desc>Gibt ein Objekt zurück, das die angegebenen Suchkriterien erfüllt. Die Suchkriterien werden mittels speziellen Kriteriums-Funktionen der Form "Find_*" angegeben.</desc>
<remark>Anders als bei <funclink>FindObject</funclink> findet sich bei objektlokalen Aufrufen von FindObject2 das aufrufende Objekt selbst. Dies kann durch <funclink>Find_Exclude</funclink>() verhindert werden.</remark>
<remark>Die Kriterien werden genau so angegeben wie bei <funclink>FindObjects</funclink> und <funclink>ObjectCount2</funclink>. Siehe <funclink>FindObjects</funclink> für weitere Kriterium-Beispiele.</remark>
<remark>Das aufrufende Objekt findet sich in FindObject auch selbst. Dies kann durch <funclink>Find_Exclude</funclink>() verhindert werden.</remark>
<remark>Die Kriterien werden genau so angegeben wie bei <funclink>FindObjects</funclink> und <funclink>ObjectCount</funclink>. Siehe <funclink>FindObjects</funclink> für weitere Kriterium-Beispiele.</remark>
<examples>
<example>
<code><funclink>if</funclink>(<funclink>FindObject2</funclink>(<funclink>Find_Distance</funclink>(10), <funclink>Find_OCF</funclink>(<funclink>OCF_CrewMember</funclink>), <funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>()))
<code><funclink>if</funclink>(<funclink>FindObject</funclink>(<funclink>Find_Distance</funclink>(10), <funclink>Find_OCF</funclink>(<funclink>OCF_CrewMember</funclink>), <funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>()))
<funclink>Explode</funclink>(20);</code>
<text>Wenn sich ein feindlicher Clonk näher als 10 Pixel an das Objekt heranwagt, explodiert dieses.</text>
</example>
@ -45,8 +45,7 @@
<funclink>Find_Owner</funclink>
<funclink>FindObject</funclink>
<funclink>FindObjects</funclink>
<funclink>FindObjectOwner</funclink>
<funclink>ObjectCount2</funclink>
<funclink>ObjectCount</funclink>
</related>
</func>
<author>Clonkonaut</author><date>Juli 2006</date>

View File

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>FindObjectOwner</title>
<category>Objekte</category><subcat>Suche</subcat>
<version>4.9.1.0 GWE</version>
<syntax>
<rtype>object</rtype>
<params>
<param><type>id</type><name>idDef</name><desc>Objekttyp</desc><optional /></param>
<param><type>int</type><name>iOwner</name><desc>Besitzer, den das gefundene Objekt haben soll</desc></param>
<param><type>int</type><name>iX</name><desc>Linke Kante der Position. Bei lokalem Aufruf Offset zum aufrufenden Objekt.</desc><optional /></param>
<param><type>int</type><name>iY</name><desc>Obere Kante der Position. Bei lokalem Aufruf Offset zum aufrufenden Objekt.</desc><optional /></param>
<param><type>int</type><name>iWdt</name><desc>Suchrechteck Breite</desc><optional /></param>
<param><type>int</type><name>iHgt</name><desc>Suchrechteck Höhe</desc><optional /></param>
<param><type>int</type><name>dwOCF</name><desc>Objektattribute. Es werden nur Objekte gefunden, die alle angegebenen Objektattribute besitzen. 0 findet alle Objekte.</desc><optional /></param>
<param><type>string</type><name>szAction</name><desc>Aktivität des zu findenden Objekts</desc><optional /></param>
<param><type>object</type><name>pActionTarget</name><desc>Aktivitätsziel, das das Objekt besitzen muss. Siehe dazu auch <funclink>SetAction</funclink>, <funclink>GetActionTarget</funclink></desc><optional /></param>
<param><type>object</type><name>pFindNext</name><desc>Objekt, hinter dem die Suche begonnen wird. Über diesen Parameter können in einer Schleife alle Objekte gefunden werden, die den Suchkriterien entsprechen.</desc><optional /></param>
</params>
</syntax>
<desc>Sucht Objekte nach ihrem Besitzer und anderen Kriterien, analog zu <funclink>FindObject</funclink>.</desc>
<examples>
<example>
<code><funclink>RemoveObject</funclink>(FindObjectOwner(FLAG, 0));</code>
<text>Entfernt die Flagge des ersten Spielers.</text>
</example>
</examples>
<related>
<funclink>FindObject</funclink>
<funclink>FindObject2</funclink>
<funclink>FindObjects</funclink>
<funclink>GetOwner</funclink>
<funclink>SetOwner</funclink>
</related>
</func>
<author>Sven2</author><date>November 2001</date>
</funcs>

View File

@ -15,7 +15,7 @@
</syntax>
<desc>Erstellt eine Liste von Objekten, auf die alle angegeben Suchkriterien zutreffen. Die Suchkriterien werden mittels speziellen Kriteriums-Funktionen der Form "Find_*" angegeben.</desc>
<remark>Anders als bei <funclink>FindObject</funclink> findet sich bei objektlokalen Aufrufen von FindObjects das aufrufende Objekt selbst. Dies kann durch <funclink>Find_Exclude</funclink>() verhindert werden.</remark>
<remark>Die Kriterien werden genau so angegeben wie bei <funclink>FindObject2</funclink> und <funclink>ObjectCount2</funclink>.</remark>
<remark>Die Kriterien werden genau so angegeben wie bei <funclink>FindObject</funclink> und <funclink>ObjectCount</funclink>.</remark>
<examples>
<example>
<code><funclink>for</funclink>(var pVehicle in FindObjects (<funclink>Find_Owner</funclink>(1), <funclink>Find_Category</funclink>(<funclink>C4D_Vehicle</funclink>)))
@ -57,10 +57,8 @@
<funclink>Find_OCF</funclink>
<funclink>Find_Or</funclink>
<funclink>Find_Owner</funclink>
<funclink>FindObject2</funclink>
<funclink>ObjectCount2</funclink>
<funclink>FindObject</funclink>
<funclink>FindObjectOwner</funclink>
<funclink>ObjectCount</funclink>
</related>
</func>
<author>Clonkonaut</author><date>Juli 2006</date>

View File

@ -16,11 +16,11 @@
<remark>Für weitere Informationen und Beispiele zur Benutzung dieser Funktion sehe <funclink>FindObjects</funclink>.</remark>
<examples>
<example>
<code><funclink>ObjectCount2</funclink>(Find_OCF(<funclink>OCF_InLiquid</funclink> | <funclink>OCF_InSolid</funclink>))</code>
<code><funclink>ObjectCount</funclink>(Find_OCF(<funclink>OCF_InLiquid</funclink> | <funclink>OCF_InSolid</funclink>))</code>
<text>Gibt die Anzahl der Objekte zurück, die sich in Flüssigkeit befinden oder im Boden stecken.</text>
</example>
<example>
<code><funclink>FindObject2</funclink>(Find_OCF(<funclink>OCF_Alive</funclink>), Find_OCF(<funclink>OCF_OnFire</funclink>))</code>
<code><funclink>FindObject</funclink>(Find_OCF(<funclink>OCF_Alive</funclink>), Find_OCF(<funclink>OCF_OnFire</funclink>))</code>
<text>Gibt das erstbeste brennende Lebewesen zurück, falls ein solches existiert.</text>
</example>
</examples>

View File

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>GetMaterialColor</title>
<category>Landschaft</category>
<subcat>Material</subcat>
<version>4.9.1.0 GWE</version>
<syntax>
<rtype>int</rtype>
<params>
<param><type>int</type><name>iMat</name><desc>Index des Materials, von dem eine Farbe ermittelt wird</desc></param>
<param><type>int</type><name>iNumber</name><desc>Materialfarbnummer (0-2)</desc></param>
<param><type>int</type><name>iChannel</name><desc>Channel. 0=Rot; 1=Grün; 2=Blau</desc></param>
</params>
</syntax>
<desc>Ermittelt die Farbe eines Materials.</desc>
<remark>Dieser Wert ist nicht synchronisationssicher!</remark>
<examples>
<example>
<code>var bgmat=<funclink>GetMaterial</funclink>(<funclink>GetX</funclink>(<funclink>GetCursor</funclink>(0)), <funclink>GetY</funclink>(<funclink>GetCursor</funclink>(0))+12));
<funclink>SetSkyFade</funclink>(GetMaterialColor(bgmat,0,0),GetMaterialColor(bgmat,0,1),GetMaterialColor(bgmat,0,2),GetMaterialColor(bgmat,1,0),GetMaterialColor(bgmat,1,1),GetMaterialColor(bgmat,1,2));
</code>
<text>Setzt die Himmelsfarben nach dem Material, auf dem der geraude ausgewählte Clonks des ersten Spielers steht.</text>
</example>
</examples>
<related>
<funclink>SetMaterialColor</funclink>
<funclink>Material</funclink>
</related>
</func>
<author>Sven2</author><date>November 2001</date>
</funcs>

View File

@ -9,7 +9,7 @@
<syntax>
<rtype>int</rtype>
</syntax>
<desc>Spielernummer: Kein Spieler. Diese Konstante kann als Besitzerangabe für diverse Funktionen wie <funclink>CreateObject</funclink> oder <funclink>FindObjectOwner</funclink> verwendet werden, um einen neutralen Spieler anzugeben.</desc>
<desc>Spielernummer: Kein Spieler. Diese Konstante kann als Besitzerangabe für diverse Funktionen wie <funclink>CreateObject</funclink> verwendet werden, um einen neutralen Spieler anzugeben.</desc>
<remark>Dieser Wert ist als Engine-Konstante definiert. Die Funktionsklammern können daher optional weggelassen werden.</remark>
<examples>
<example>

View File

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>ObjectCount</title>
<category>Objekte</category><subcat>Suche</subcat>
<version>4.6.5.0 CP</version>
<syntax>
<rtype>int</rtype>
<params>
<param><type>id</type><name>idDef</name><desc>Objekttyp</desc><optional /></param>
<param><type>int</type><name>iX</name><desc>Linke Kante der Position. Bei lokalem Aufruf Offset zum aufrufenden Objekt.</desc><optional /></param>
<param><type>int</type><name>iY</name><desc>Obere Kante der Position. Bei lokalem Aufruf Offset zum aufrufenden Objekt.</desc><optional /></param>
<param><type>int</type><name>iWdt</name><desc>Suchrechteck Breite</desc><optional /></param>
<param><type>int</type><name>iHgt</name><desc>Suchrechteck Höhe</desc><optional /></param>
<param><type>int</type><name>dwOCF</name><desc>Objektattribute. Es werden nur Objekte gefunden, die alle angegebenen Objektattribute besitzen. 0 findet alle Objekte.</desc><optional /></param>
<param><type>string</type><name>szAction</name><desc>Aktivität des zu findenden Objekts</desc><optional /></param>
<param><type>object</type><name>pActionTarget</name><desc>Aktivitätsziel, das das Objekt besitzen muss. Siehe dazu auch <funclink>SetAction</funclink>, <funclink>GetActionTarget</funclink></desc><optional /></param>
<param><type>any</type><name>pContainer</name><desc>Containerobjekt. Wenn angegeben, wird nur dieser Behälter durchsucht. Möglich sind auch <funclink>NoContainer</funclink> (Objekt befindet sich im Freien), und <funclink>AnyContainer</funclink> (Objekt ist in einem beliebigen Behälter enthalten).</desc><optional /></param>
<param><type>int</type><name>iOwner</name><desc>Besitzer, den die gefundenen Objekte haben sollen.</desc><optional /></param>
</params>
</syntax>
<desc>Sucht Objekte, und gibt deren Anzahl zurück. 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.</desc>
<related>
<funclink>FindObject</funclink>
<funclink>NoContainer</funclink>
<funclink>AnyContainer</funclink>
<funclink>FindObjectOwner</funclink>
<funclink>ObjectCount2</funclink>
</related>
</func>
<author>jwk</author><date>August 2002</date>
</funcs>

View File

@ -3,9 +3,9 @@
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>ObjectCount2</title>
<title>ObjectCount</title>
<category>Objekte</category><subcat>Suche</subcat>
<version>4.9.6.0 CR</version>
<version>4.10.0.0 CR</version>
<syntax>
<rtype>int</rtype>
<params>
@ -14,10 +14,10 @@
</params>
</syntax>
<desc>Gibt die Anzahl der Objekte zurück, die das angegebenen Suchkriterien erfüllen. Die Suchkriterien werden mittels speziellen Kriteriums-Funktionen der Form "Find_*" angegeben.</desc>
<remark>Die Kriterien werden genau so angegeben wie bei <funclink>FindObjects</funclink> und <funclink>FindObject2</funclink>. Siehe <funclink>FindObjects</funclink> für weitere Kriterium-Beispiele.</remark>
<remark>Die Kriterien werden genau so angegeben wie bei <funclink>FindObjects</funclink> und <funclink>FindObject</funclink>. Siehe <funclink>FindObjects</funclink> für weitere Kriterium-Beispiele.</remark>
<examples>
<example>
<code><funclink>Message</funclink>( "Noch %d feindliche Clonks!", ObjectCount2(<funclink>Find_OCF</funclink>(<funclink>OCF_CrewMember</funclink>), <funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>()) );</code>
<code><funclink>Message</funclink>( "Noch %d feindliche Clonks!", ObjectCount(<funclink>Find_OCF</funclink>(<funclink>OCF_CrewMember</funclink>), <funclink>Find_Hostile</funclink>(<funclink>GetOwner</funclink>()) );</code>
<text>Informiert über die Stärke der Feinde.</text>
</example>
</examples>
@ -41,7 +41,7 @@
<funclink>Find_OCF</funclink>
<funclink>Find_Or</funclink>
<funclink>Find_Owner</funclink>
<funclink>FindObject2</funclink>
<funclink>FindObject</funclink>
<funclink>FindObjects</funclink>
<funclink>ObjectCount</funclink>
</related>

View File

@ -120,7 +120,7 @@
<examples>
<example>
<code>SetCommand(<funclink>this</funclink>(), "Attack", <funclink>FindObjectOwner</funclink>(CLNK, 1, 0, 0, -1, -1), 0, 0, 0, 0, 10);</code>
<code>SetCommand(<funclink>this</funclink>(), "Attack", <funclink>FindObject</funclink>(Find_ID(CLNK),Sort_Distance(0,0)), 0, 0, 0, 0, 10);</code>
<text>
Dieser Script gibt dem ausführenden Clonk den Befehl, den nächstgelegenen Clonk von Spieler 1 zu attackieren. Dabei soll er nicht so schnell aufgeben und (wenn er z.B.
daran scheitert, den Weg zum Feind zu finden) es 10 Mal zu versuchen, bis er sein Ziel erreicht hat oder abbricht.

View File

@ -2089,7 +2089,7 @@ C4FindObject *CreateCriterionsFromPars(C4Value *pPars, C4FindObject **pFOs, C4So
return pFO;
}
static C4Value FnObjectCount2(C4AulContext *cthr, C4Value *pPars)
static C4Value FnObjectCount(C4AulContext *cthr, C4Value *pPars)
{
// Create FindObject-structure
C4FindObject *pFOs[C4AUL_MAX_Par];
@ -2105,7 +2105,7 @@ static C4Value FnObjectCount2(C4AulContext *cthr, C4Value *pPars)
return C4VInt(iCnt);
}
static C4Value FnFindObject2(C4AulContext *cthr, C4Value *pPars)
static C4Value FnFindObject(C4AulContext *cthr, C4Value *pPars)
{
// Create FindObject-structure
C4FindObject *pFOs[C4AUL_MAX_Par];
@ -2139,107 +2139,6 @@ static C4Value FnFindObjects(C4AulContext *cthr, C4Value *pPars)
return C4VArray(pResult);
}
static C4Value FnObjectCount(C4AulContext *cthr, C4Value *pPars)
{
// Got an array? Use the new-style function.
if(pPars->getArray())
return FnObjectCount2(cthr, pPars);
// Get paramters
PAR(id, id);
PAR(int, x); PAR(int, y); PAR(int, wdt); PAR(int, hgt);
PAR(int, dwOCF);
PAR(string, szAction);
PAR(object, pActionTarget);
PAR(any, vContainer);
PAR(int, iOwner);
// Local call adjust coordinates
if (cthr->Obj)
if (x || y || wdt || hgt) // if not default full range
{ x+=cthr->Obj->GetX(); y+=cthr->Obj->GetY(); }
// Adjust default ocf
if (dwOCF==0) dwOCF = OCF_All;
// Adjust default owner
if (iOwner==0) iOwner = ANY_OWNER; // imcomplete useless implementation
// NO_CONTAINER/ANY_CONTAINER
C4Object * pContainer = vContainer.getObj();
if(vContainer.getInt() == NO_CONTAINER)
pContainer = reinterpret_cast<C4Object *>(NO_CONTAINER);
if(vContainer.getInt() == ANY_CONTAINER)
pContainer = reinterpret_cast<C4Object *>(ANY_CONTAINER);
// Find object
return C4VInt(Game.ObjectCount(id,x,y,wdt,hgt,dwOCF,
FnStringPar(szAction),pActionTarget,
cthr->Obj, // Local calls exclude self
pContainer,
iOwner));
}
static C4Value FnFindObject(C4AulContext *cthr, C4Value *pPars)
{
// Got an array? Use the new-style function.
if(pPars->getArray())
return FnFindObject2(cthr, pPars);
// Get parameters
PAR(id, id);
PAR(int, x); PAR(int, y); PAR(int, wdt); PAR(int, hgt);
PAR(int, dwOCF);
PAR(string, szAction);
PAR(object, pActionTarget);
PAR(any, vContainer);
PAR(object, pFindNext);
// Local call adjust coordinates
if (cthr->Obj)
if (x || y || wdt || hgt) // if not default full range
{ x+=cthr->Obj->GetX(); y+=cthr->Obj->GetY(); }
// Adjust default ocf
if (dwOCF==0) dwOCF = OCF_All;
// NO_CONTAINER/ANY_CONTAINER
C4Object * pContainer = vContainer.getObj();
if(vContainer.getInt() == NO_CONTAINER)
pContainer = reinterpret_cast<C4Object *>(NO_CONTAINER);
if(vContainer.getInt() == ANY_CONTAINER)
pContainer = reinterpret_cast<C4Object *>(ANY_CONTAINER);
// Find object
return C4Value(Game.FindObject(id,x,y,wdt,hgt,dwOCF,
FnStringPar(szAction),pActionTarget,
cthr->Obj, // Local calls exclude self
pContainer,
ANY_OWNER,
pFindNext));
}
static C4Object *FnFindObjectOwner(C4AulContext *cthr,
C4ID id,
long iOwner,
long x, long y, long wdt, long hgt,
long dwOCF,
C4String *szAction, C4Object *pActionTarget,
C4Object *pFindNext)
{
// invalid owner?
if (!ValidPlr(iOwner) && iOwner != NO_OWNER) return NULL;
// Local call adjust coordinates
if (cthr->Obj)
if (x || y || wdt || hgt) // if not default full range
{ x+=cthr->Obj->GetX(); y+=cthr->Obj->GetY(); }
// Adjust default ocf
if (dwOCF==0) dwOCF = OCF_All;
// Find object
return Game.FindObject(id,x,y,wdt,hgt,dwOCF,
FnStringPar(szAction),pActionTarget,
cthr->Obj, // Local calls exclude self
NULL,
iOwner,
pFindNext);
}
static bool FnMakeCrewMember(C4AulContext *cthr, C4Object *pObj, long iPlayer)
{
if (!ValidPlr(iPlayer)) return false;
return !!::Players.Get(iPlayer)->MakeCrewMember(pObj);
}
static bool FnGrabObjectInfo(C4AulContext *cthr, C4Object *pFrom, C4Object *pTo)
{
// local call, safety
@ -2568,20 +2467,6 @@ static bool FnScriptGo(C4AulContext *cthr, bool go)
return TRUE;
}
static bool FnCastPXS(C4AulContext *cthr, C4String *mat_name, long amt, long level, long tx, long ty)
{
if (cthr->Obj) { tx+=cthr->Obj->GetX(); ty+=cthr->Obj->GetY(); }
::PXS.Cast(::MaterialMap.Get(FnStringPar(mat_name)),amt,tx,ty,level);
return TRUE;
}
static bool FnCastObjects(C4AulContext *cthr, C4ID id, long amt, long level, long tx, long ty)
{
if (cthr->Obj) { tx+=cthr->Obj->GetX(); ty+=cthr->Obj->GetY(); }
Game.CastObjects(id,cthr->Obj,amt,level,tx,ty, cthr->Obj ? cthr->Obj->Owner : NO_OWNER, cthr->Obj ? cthr->Obj->Controller : NO_OWNER);
return TRUE;
}
static long FnMaterial(C4AulContext *cthr, C4String *mat_name)
{
return ::MaterialMap.Get(FnStringPar(mat_name));
@ -3135,40 +3020,6 @@ static long FnGetClimate(C4AulContext *cthr)
return ::Weather.GetClimate();
}
static bool FnSetSkyFade(C4AulContext *cthr, long iFromRed, long iFromGreen, long iFromBlue, long iToRed, long iToGreen, long iToBlue)
{
// newgfx: set modulation
DWORD dwBack,dwMod=GetClrModulation(::Landscape.Sky.FadeClr1, C4RGB(iFromRed, iFromGreen, iFromBlue), dwBack);
::Landscape.Sky.SetModulation(dwMod,dwBack);
return TRUE;
}
static bool FnSetSkyColor(C4AulContext *cthr, long iIndex, long iRed, long iGreen, long iBlue)
{
// set first index only
if (iIndex) return TRUE;
// get color difference
DWORD dwBack,dwMod=GetClrModulation(::Landscape.Sky.FadeClr1, C4RGB(iRed, iGreen, iBlue), dwBack);
::Landscape.Sky.SetModulation(dwMod,dwBack);
// success
return TRUE;
}
static long FnGetSkyColor(C4AulContext *cthr, long iIndex, long iRGB)
{
// relict from OldGfx
if (iIndex || !Inside<long>(iRGB,0,2)) return 0;
DWORD dwClr=::Landscape.Sky.FadeClr1;
BltAlpha(dwClr, ::Landscape.Sky.FadeClr2 | ((iIndex*0xff/19)<<24));
switch (iRGB)
{
case 0: return (dwClr>>16)&0xff;
case 1: return (dwClr>>8)&0xff;
case 2: return dwClr&0xff;
default: return 0;
}
}
static long FnLandscapeWidth(C4AulContext *cthr)
{
return GBackWdt;
@ -3256,78 +3107,16 @@ static long FnSetTransferZone(C4AulContext *cthr, long iX, long iY, long iWdt, l
return Game.TransferZones.Set(iX,iY,iWdt,iHgt,pObj);
}
static bool FnNot(C4AulContext *cthr, bool fCondition)
{
return !fCondition;
}
static bool FnOr(C4AulContext *cthr, bool fCon1, bool fCon2, bool fCon3, bool fCon4, bool fCon5)
{
return (fCon1 || fCon2 || fCon3 || fCon4 || fCon5);
}
static bool FnAnd(C4AulContext *cthr, bool fCon1, bool fCon2)
{
return (fCon1 && fCon2);
}
static long FnBitAnd(C4AulContext *cthr, long iVal1, long iVal2)
{
return (iVal1 & iVal2);
}
static C4Value FnEqual_C4V(C4AulContext *cthr, C4Value * Val1, C4Value * Val2)
{
return C4VBool(Val1->GetData()==Val2->GetData());
}
static long FnLessThan(C4AulContext *cthr, long iVal1, long iVal2)
{
return (iVal1<iVal2);
}
static long FnGreaterThan(C4AulContext *cthr, long iVal1, long iVal2)
{
return (iVal1>iVal2);
}
static long FnSum(C4AulContext *cthr, long iVal1, long iVal2, long iVal3, long iVal4)
{
return (iVal1+iVal2+iVal3+iVal4);
}
static long FnSub(C4AulContext *cthr, long iVal1, long iVal2, long iVal3, long iVal4)
{
return (iVal1-iVal2-iVal3-iVal4);
}
static long FnAbs(C4AulContext *cthr, long iVal)
{
return Abs(iVal);
}
static long FnMul(C4AulContext *cthr, long iVal1, long iVal2)
{
return (iVal1*iVal2);
}
static long FnDiv(C4AulContext *cthr, long iVal1, long iVal2)
{
if (!iVal2) return 0;
return (iVal1/iVal2);
}
static long FnMod(C4AulContext *cthr, long iVal1, long iVal2)
{
if (!iVal2) return 0;
return (iVal1%iVal2);
}
static long FnPow(C4AulContext *cthr, long iVal1, long iVal2)
{
return Pow(iVal1, iVal2);
}
static long FnSin(C4AulContext *cthr, long iAngle, long iRadius, long iPrec)
{
if(!iPrec) iPrec = 1;
@ -3453,12 +3242,6 @@ static bool FnInside(C4AulContext *cthr, long iVal, long iRange1, long iRange2)
return Inside(iVal,iRange1,iRange2);
}
static long FnSEqual(C4AulContext *cthr, C4String *szString1, C4String *szString2)
{
if(szString1 == szString2) return TRUE;
return SEqual(FnStringPar(szString1),FnStringPar(szString2));
}
static long FnRandom(C4AulContext *cthr, long iRange)
{
return Random(iRange);
@ -4598,30 +4381,6 @@ static long FnGetDefBottom(C4AulContext* cthr, C4Object *pObj)
return pObj->GetY()+pObj->Def->Shape.y+pObj->Def->Shape.Hgt;
}
static bool FnSetMaterialColor(C4AulContext* cthr, long iMat, long iClr1R, long iClr1G, long iClr1B, long iClr2R, long iClr2G, long iClr2B, long iClr3R, long iClr3G, long iClr3B)
{
// get mat
if (!MatValid(iMat)) return FALSE;
C4Material *pMat = &::MaterialMap.Map[iMat];
// newgfx: emulate by landscape modulation - enlightment not allowed...
DWORD dwBack, dwMod=GetClrModulation(C4RGB(pMat->Color[0], pMat->Color[1], pMat->Color[2]), C4RGB(iClr1R, iClr1G, iClr1B), dwBack);
dwMod&=0xffffff;
if (!dwMod) dwMod=1;
if (dwMod==0xffffff) dwMod=0;
::Landscape.SetModulation(dwMod);
// done
return TRUE;
}
static long FnGetMaterialColor(C4AulContext* cthr, long iMat, long iNum, long iChannel)
{
// get mat
if (!MatValid(iMat)) return FALSE;
C4Material *pMat = &::MaterialMap.Map[iMat];
// get color
return pMat->Color[iNum*3+iChannel];
}
static C4String *FnMaterialName(C4AulContext* cthr, long iMat)
{
// mat valid?
@ -5222,8 +4981,6 @@ static bool FnClearParticles(C4AulContext *cthr, C4String *szName, C4Object *pOb
return TRUE;
}
static bool FnIsNewgfx(C4AulContext*) { return TRUE; }
#define SkyPar_KEEP -163764
static bool FnSetSkyParallax(C4AulContext* ctx, long iMode, long iParX, long iParY, long iXDir, long iYDir, long iX, long iY)
@ -6477,29 +6234,16 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
for (C4ScriptFnDef *pDef = &C4ScriptFnMap[0]; pDef->Identifier; pDef++)
pEngine->AddFunc(pDef->Identifier, pDef);
// AddFunc(pEngine, "SetSaturation", FnSetSaturation); //public: 0
AddFunc(pEngine, "Or", FnOr, false);
AddFunc(pEngine, "Not", FnNot, false);
AddFunc(pEngine, "And", FnAnd, false);
AddFunc(pEngine, "BitAnd", FnBitAnd, false);
AddFunc(pEngine, "Sum", FnSum, false);
AddFunc(pEngine, "Sub", FnSub, false);
AddFunc(pEngine, "Abs", FnAbs);
AddFunc(pEngine, "Min", FnMin);
AddFunc(pEngine, "Max", FnMax);
AddFunc(pEngine, "Mul", FnMul, false);
AddFunc(pEngine, "Div", FnDiv, false);
AddFunc(pEngine, "Mod", FnMod, false);
AddFunc(pEngine, "Pow", FnPow, false);
AddFunc(pEngine, "Sin", FnSin);
AddFunc(pEngine, "Cos", FnCos);
AddFunc(pEngine, "Sqrt", FnSqrt);
AddFunc(pEngine, "ArcSin", FnArcSin);
AddFunc(pEngine, "ArcCos", FnArcCos);
AddFunc(pEngine, "LessThan", FnLessThan, false);
AddFunc(pEngine, "GreaterThan", FnGreaterThan, false);
AddFunc(pEngine, "BoundBy", FnBoundBy);
AddFunc(pEngine, "Inside", FnInside);
AddFunc(pEngine, "SEqual", FnSEqual, false);
AddFunc(pEngine, "Random", FnRandom);
AddFunc(pEngine, "AsyncRandom", FnAsyncRandom);
AddFunc(pEngine, "DoCon", FnDoCon);
@ -6597,7 +6341,6 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
AddFunc(pEngine, "MusicLevel", FnMusicLevel);
AddFunc(pEngine, "SetPlayList", FnSetPlayList);
AddFunc(pEngine, "SoundLevel", FnSoundLevel, false);
AddFunc(pEngine, "FindObjectOwner", FnFindObjectOwner);
AddFunc(pEngine, "RemoveObject", FnRemoveObject);
AddFunc(pEngine, "GetActionTarget", FnGetActionTarget);
AddFunc(pEngine, "SetActionTargets", FnSetActionTargets);
@ -6621,9 +6364,6 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
AddFunc(pEngine, "SetPlrShowCommand", FnSetPlrShowCommand);
AddFunc(pEngine, "GetWind", FnGetWind);
AddFunc(pEngine, "SetWind", FnSetWind);
AddFunc(pEngine, "SetSkyFade", FnSetSkyFade);
AddFunc(pEngine, "SetSkyColor", FnSetSkyColor);
AddFunc(pEngine, "GetSkyColor", FnGetSkyColor);
AddFunc(pEngine, "GetTemperature", FnGetTemperature);
AddFunc(pEngine, "SetTemperature", FnSetTemperature);
AddFunc(pEngine, "LaunchLightning", FnLaunchLightning);
@ -6634,8 +6374,6 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
AddFunc(pEngine, "DigFree", FnDigFree);
AddFunc(pEngine, "FreeRect", FnFreeRect);
AddFunc(pEngine, "DigFreeRect", FnDigFreeRect);
AddFunc(pEngine, "CastPXS", FnCastPXS);
AddFunc(pEngine, "CastObjects", FnCastObjects);
AddFunc(pEngine, "Hostile", FnHostile);
AddFunc(pEngine, "SetHostility", FnSetHostility);
AddFunc(pEngine, "PlaceVegetation", FnPlaceVegetation);
@ -6736,8 +6474,6 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
AddFunc(pEngine, "ResortObjects", FnResortObjects);
AddFunc(pEngine, "ResortObject", FnResortObject);
AddFunc(pEngine, "GetDefBottom", FnGetDefBottom);
AddFunc(pEngine, "SetMaterialColor", FnSetMaterialColor);
AddFunc(pEngine, "GetMaterialColor", FnGetMaterialColor);
AddFunc(pEngine, "MaterialName", FnMaterialName);
AddFunc(pEngine, "SetMenuSize", FnSetMenuSize);
AddFunc(pEngine, "GetNeededMatStr", FnGetNeededMatStr);
@ -6752,7 +6488,6 @@ void InitFunctionMap(C4AulScriptEngine *pEngine)
AddFunc(pEngine, "CastBackParticles", FnCastBackParticles);
AddFunc(pEngine, "PushParticles", FnPushParticles);
AddFunc(pEngine, "ClearParticles", FnClearParticles);
AddFunc(pEngine, "IsNewgfx", FnIsNewgfx, false);
AddFunc(pEngine, "SetSkyAdjust", FnSetSkyAdjust);
AddFunc(pEngine, "SetMatAdjust", FnSetMatAdjust);
AddFunc(pEngine, "GetSkyAdjust", FnGetSkyAdjust);
@ -7206,11 +6941,9 @@ C4ScriptFnDef C4ScriptFnMap[]={
//{ "FindConstructionSite", 0 ,C4V_Bool ,{ C4V_C4ID ,C4V_Int ,C4V_Int ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any} ,MkFnC4V FnFindConstructionSite , 0 },
{ "PathFree2", 1 ,C4V_Bool ,{ C4V_pC4Value,C4V_pC4Value,C4V_Int ,C4V_Int ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any} ,MkFnC4V FnPathFree2_C4V , 0 },
{ "DeathAnnounce", 1 ,C4V_Bool ,{ C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any} ,0 , FnDeathAnnounce },
{ "FindObject", 1 ,C4V_C4Object ,{ C4V_C4ID ,C4V_Int ,C4V_Int ,C4V_Int ,C4V_Int ,C4V_Int ,C4V_String ,C4V_C4Object,C4V_Any ,C4V_C4Object} ,0 , FnFindObject },
{ "FindObject2", 1 ,C4V_C4Object ,{ C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array},0 , FnFindObject2 },
{ "FindObject", 1 ,C4V_C4Object ,{ C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array},0 , FnFindObject },
{ "FindObjects", 1 ,C4V_Array ,{ C4V_Array ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any} ,0 , FnFindObjects },
{ "ObjectCount", 1 ,C4V_Int ,{ C4V_C4ID ,C4V_Int ,C4V_Int ,C4V_Int ,C4V_Int ,C4V_Int ,C4V_String ,C4V_C4Object,C4V_Any ,C4V_Int},0 , FnObjectCount },
{ "ObjectCount2", 1 ,C4V_Int ,{ C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array},0 , FnObjectCount2 },
{ "ObjectCount", 1 ,C4V_Int ,{ C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array ,C4V_Array},0 , FnObjectCount },
{ "ObjectCall", 1 ,C4V_Any ,{ C4V_C4Object,C4V_String,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any} ,MkFnC4V FnObjectCall_C4V , 0 },
{ "ProtectedCall", 1 ,C4V_Any ,{ C4V_C4Object,C4V_String,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any} ,MkFnC4V FnProtectedCall_C4V , 0 },
{ "PrivateCall", 1 ,C4V_Any ,{ C4V_C4Object,C4V_String,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any} ,MkFnC4V FnPrivateCall_C4V , 0 },

View File

@ -57,17 +57,17 @@ public func AtTreeToChop() { return !Contained() && FindTree() && GetPhysical("C
public func FindConstructionSite()
{
return FindObject2(Find_AtRect(-1,-16,2,32), Find_OCF(OCF_Construct), Find_Layer(GetObjectLayer()));
return FindObject(Find_AtRect(-1,-16,2,32), Find_OCF(OCF_Construct), Find_Layer(GetObjectLayer()));
}
public func FindEnergySite()
{
return FindObject2(Find_AtPoint(), Find_OCF(OCF_PowerConsumer), Find_NoContainer(), Find_Layer(GetObjectLayer()), Find_Func("NeedsEnergy"));
return FindObject(Find_AtPoint(), Find_OCF(OCF_PowerConsumer), Find_NoContainer(), Find_Layer(GetObjectLayer()), Find_Func("NeedsEnergy"));
}
public func FindTree()
{
return FindObject2(Find_AtPoint(), Find_OCF(OCF_Chop), Find_Layer(GetObjectLayer()));
return FindObject(Find_AtPoint(), Find_OCF(OCF_Chop), Find_Layer(GetObjectLayer()));
}
/* Steuerung */
@ -748,7 +748,7 @@ public func FxIntNotAvailableTimer(target, number)
public func GetProducerOf(def)
{
return FindObject2(Find_InRect(-500,-250,1000,500), Find_Func("IsProducerOf", this, def), Sort_Distance());
return FindObject(Find_InRect(-500,-250,1000,500), Find_Func("IsProducerOf", this, def), Sort_Distance());
}
/* Trinken */

View File

@ -30,14 +30,6 @@ global func GetActMapVal(string strEntry, string strAction, id idDef, int iEntry
return GetProperty(strEntry, GetProperty(strAction, idDef));
}
global func CastC4ID(x) { return x; }
// Abgelöst durch SetPosition
global func ForcePosition(object obj, int x, int y) { return SetPosition(x, y, obj); }
// Abgelöst durch RemoveObject
global func AssignRemoval(object obj) { return RemoveObject(obj); }
// Für Szenarien ohne Objects.c4d...
global func EmptyBarrelID() { return BARL; }
@ -98,26 +90,6 @@ global func ShowNeededMaterial(object pOfObject)
return 1;
}
global func SetOnlyVisibleToOwner(bool fVisible, object pObj)
{
var oldVal=GetOnlyVisibleToOwner(pObj);
if (fVisible)
SetVisibility(VIS_Owner | VIS_God, pObj);
else
SetVisibility(VIS_All, pObj);
return oldVal;
}
global func GetOnlyVisibleToOwner(object pObj)
{
return (GetVisibility(pObj) == VIS_Owner | VIS_God);
}
global func MessageBoard(string msg, par0, par1, par2, par3, par4, par5, par6, par7, par8)
{
return Log(msg, par0, par1, par2, par3, par4, par5, par6, par7, par8);
}
// Fasskonfiguration
// Kann z.B. durch eine Spielregel überladen werden (Shamino)
// Bit 0 (1): Wasserfässer sind auch im Verkauf 8 Clunker wert

View File

@ -3,20 +3,10 @@
/*-- flgr --*/
// Liefert das Offset zur gewünschten Landscape-X-Position zurück
global func AbsX(int x) {
return x - GetX();
}
global func AbsX(int x) { return x - GetX(); }
// Liefert das Offset zur gewünschten Landscape-Y-Position zurück
global func AbsY(int y) {
return y - GetY();
}
// Liefert 1 zurück wenn keine der angegeben Konditionen wahr ist
// sollte nicht mehr benutzt werden!
global func Nor(bool con1, bool con2, bool con3, bool con4, bool con5) {
return !(con1 || con2 || con3 || con4 || con5);
}
global func AbsY(int y) { return y - GetY(); }
// Erzeugt ein Objekt mit der angegeben ID in iMaterial. iRetries ist die Anzahl der Versuche.
global func PlaceInMaterial(id def, int material, int _retries) { // C4ID id, int iMaterial, [int iRetries]
@ -116,145 +106,14 @@ global func Concat() {
/*-- Joern --*/
//Objekt hüpft mit der angegebenen Kraft.
global func Bounce(int iPower)
{
if(!GBackSolid(0,-2)) SetYDir(-Random(iPower));
if(GBackSolid(0,-2)) SetYDir(Random(10));
if(GBackSolid(-2,0)) SetXDir(-GetXDir());
if(GBackSolid(2,0)) SetXDir(-GetXDir());
return 1;
}
//Fügt zum Konto des genannten Spielers iValue Gold hinzu
global func DoWealth(int iPlayer, int iValue)
{
return SetWealth(iPlayer, iValue + GetWealth(iPlayer));
}
//Erstellt für iPlayer ein Crewmember mit der genannten ID zufällig an einer begehbaren Stelle (an Land, nicht im Wasser).
global func RndMakeCrewMember(int iPlayer, id ID)
{
var anim=PlaceAnimal(WIPF),crw;
MakeCrewMember(crw=CreateObject( ID,GetX(anim),GetY(anim),iPlayer ), iPlayer);
RemoveObject(anim);
return crw;
}
//Objekt Explodiert mehrmals.
global func SemiExplode(int iLevel, int incidence)
{
for(var i = 0; i < incidence; i++)
Explode(iLevel,CreateObject(ROCK, 0, 0, GetOwner()));
RemoveObject();
return 1;
}
/*-- Tyron --*/
// Wandelt einen DWORD in RGB werte um
// select 0: a, select 1: R, select 2: G, select 3: B
global func GetRGBaValue(val,sel) {
return (val>>((3-sel)*8)&255);
}
// Abwärtskompatibilität
global func GetRGBValue(val,sel) {
return (GetRGBaValue(val,sel));
}
// Hiermit lässt sich eine Farbe eines RGB Wertes setzen
// select 0: a, select 1: R, select 2: G, select 3: B
global func SetRGBaValue(int val, int newval, int sel) {
// Alte Farbe 'löschen'
val = val&~(255<<((3-sel)*8));
// Neue hinzufügen
return (val|newval<<((3-sel)*8));
}
// Diese Funktion verändert die angegeben Farbe eines RGB Wertes
// select 0: a, select 1: R, select 2: G, select 3: B
global func DoRGBaValue(int val, int chng, int sel) {
return (val + (chng<<((3-sel)*8)));
}
global func SplitRGBaValue(rgb, &red, &green, &blue, &alpha) {
red=GetRGBaValue(rgb,1);
green=GetRGBaValue(rgb,2);
blue=GetRGBaValue(rgb,3);
alpha=GetRGBaValue(rgb,0);
}
global func HSL2RGB(hsl) {
var hue=GetRGBaValue(hsl,1), sat=GetRGBaValue(hsl,2),lightness=GetRGBaValue(hsl,3);
var red, green, blue;
var var1, var2;
//Log("hue: %d sat: %d lightness: %d",hue,sat, lightness);
if(sat==0) {
red = green = blue = lightness;
} else {
if(lightness<128) var2 = (lightness*(255 + sat))/255;
else var2 = lightness+sat-lightness*sat/255;
var1 = 2*lightness-var2;
red = Hue_2_RGB( var1, var2, hue+85);
green= Hue_2_RGB( var1, var2, hue );
blue = Hue_2_RGB( var1, var2, hue-85);
}
//Log("red: %d green: %d blue: %d",red, green, blue);
return RGB(red, green, blue);
}
global func Hue_2_RGB(var1, var2, hue) {
if(hue<0) hue+=255;
if(hue>255) hue-=255;
if(6*hue<255) return ( var1 + ((var2 - var1) * 6 * hue)/255);
if(2*hue<255) return ( var2 );
if(3*hue<510) return ( var1 + ((var2 - var1)*( 510 / 3 - hue )*6)/255);
return (var1);
}
global func RGB2HSL(rgb) {
var red=GetRGBaValue(rgb,1), green=GetRGBaValue(rgb,2),blue=GetRGBaValue(rgb,3);
var min_val = Min(red, Min(green, blue)), max_val = Max(red, Max(green, blue));
var diff_val = max_val - min_val;
var lightness = (max_val + min_val)/2;
var hue, sat, diff_red, diff_green, diff_blue;
//Log("red: %d green: %d blue: %d",red, green, blue);
//Log("max_val: %d, min_val: %d",max_val, min_val);
if (diff_val==0) {
hue=0;
sat=0;
} else {
//Log("%d/%d",255*diff_val,510-(max_val+min_val));
if(lightness<128) sat=(255*diff_val)/(max_val+min_val);
else sat=(255*diff_val)/(510-(max_val+min_val));
diff_red = ((255*(max_val-red ))/6 + (255*diff_val)/2)/diff_val;
diff_green= ((255*(max_val-green))/6 + (255*diff_val)/2)/diff_val;
diff_blue = ((255*(max_val-blue ))/6 + (255*diff_val)/2)/diff_val;
if (red ==max_val) hue=diff_blue-diff_green;
else if (green==max_val) hue=255/3+diff_red-diff_blue;
else if (blue ==max_val) hue=510/3+diff_green-diff_red;
if (hue<0) hue+=255;
if (hue>255) hue-=255;
}
//Log("hue: %d",hue);
//Log("sat: %d",sat);
//Log("lightness: %d",lightness);
return (RGB(hue,sat,lightness));
}
// Prüft ob die angegebene Definition vorhanden ist
global func FindDefinition(id idDef) {
@ -343,40 +202,32 @@ global func LaunchVolcano(int x, int y, int strength, string mat) {
return 1;
}
// Gleich wie CastObjects nur dass man hier Schleuderwinkel verändern kann
global func CastObjectsX(iddef,am,lev,x,y,angs,angw,callback) {
var ang, obj, xdir;
for(var i=0;i<am;i++) {
ang=angs+Random(angw) - angw/2;
SetR(Random(360),obj=CreateObject(iddef,x,y,-1));
SetXDir(xdir=Cos(ang,lev)+RandomX(-3,3),obj);
SetYDir(Sin(ang,lev)+RandomX(-3,3),obj);
SetRDir((10+Random(21))*xdir/Abs(xdir),obj);
if(callback)
if(callback==-1) GameCall("ObjectCast",obj);
else Call(callback,obj);
global func CastObjects(iddef,am,lev,x,y,angs,angw) {
if(!angw) angw = 180;
for(var i=0; i<am; i++) {
var obj = CreateObject(iddef,x,y,NO_OWNER);
var ang = angs + RandomX(-angw/2,angw/2);
var xdir = xdir=Cos(ang,lev) + RandomX(-3,3)
obj->SetR(Random(360));
obj->SetXDir(xdir);
obj->SetYDir(Sin(ang,lev) + RandomX(-3,3));
obj->SetRDir((10+Random(21))*xdir/Abs(xdir));
}
}
// Gleich wie CastPXS nur dass man hier Schleuderwinkel verändern kann
global func CastPXSX(string mat,int am,int lev,int x,int y,int angs,int angw) {
var ang;
global func CastPXS(string mat,int am,int lev,int x,int y,int angs,int angw) {
if(!angw) angw = 180;
for(var i=0;i<am;i++) {
ang=angs+Random(angw) - angw/2;
var ang = angs + RandomX(-angw/2,angw/2);
InsertMaterial(Material(mat),x,y,Cos(ang,lev)+RandomX(-3,3),Sin(ang,lev)+RandomX(-3,3));
}
}
// selbsterklärend...
global func Tan(int iAngle, int iRadius) {
return (iRadius * Sin(iAngle,iRadius*100)) / Cos(iAngle,iRadius*100) ;
}
global func GetMaterialColorX(mat, num) {
return RGB(GetMaterialColor(mat, num,0),GetMaterialColor(mat, num,1),GetMaterialColor(mat, num,2));
}
/*-- Roscher --*/
// Wie FindConstructionSite, arbeitet jedoch mit Referenzen auf zwei benannte Variablen
@ -417,9 +268,6 @@ global func Visible(int iPlr, object pObj)
return false;
}
global func HSL(int h, int s, int l) { return HSL2RGB(RGB(h,s,l)); }
global func HSLa(int h, int s, int l, int a) { return HSL2RGB(RGB(h,s,l)) | (a & 255)<<24; }
/*-- timi --*/
global func GetPlayerByName(string strPlrName)

View File

@ -56,9 +56,6 @@ global func ToggleBit(int iOldVal, int iBitNr)
return iOldVal ^ (1 << iBitNr);
}
global func RGB(int r, int g, int b) { return (r & 255)<<16 | (g & 255)<<8 | (b & 255); }
global func RGBa (int r, int g, int b, int a) { return (a & 255)<<24 | (r & 255)<<16 | (g & 255)<<8 | (b & 255); }
global func DrawParticleLine (szKind, x0, y0, x1, y1, prtdist, a, b0, b1, ydir)
{
// Parameter gültig?
@ -91,81 +88,14 @@ global func GetAvailableObject (def, xobj)
Find_Func("GetAvailableObjectCheck", GetOwner()),
Find_Not(Find_Container(xobj)));
if (!xobj) SetLength(crit, GetLength(crit) - 1);
return FindObject2(crit, Sort_Distance());
return FindObject(crit, Sort_Distance());
}
global func GetAvailableObjectCheck(int plr)
{
// Object is not connected to a pipe (for line construction kits)
if (FindObject2 (Find_ActionTarget(this), Find_Or(Find_ID(SPIP), Find_ID(DPIP)), Find_Action("Connect"))) return false;
if (FindObject (Find_ActionTarget(this), Find_Or(Find_ID(SPIP), Find_ID(DPIP)), Find_Action("Connect"))) return false;
// Not chosen by another friendly clonk
if (GetEffect("IntNotAvailable",this) && !Hostile(plr,GetOwner(EffectVar(0,this,GetEffect("IntNotAvailable",this))))) return false;
return true;
}
// Einen Script zeitverzögert und ggf. wiederholt ausführen
global func Schedule(string strScript, int iInterval, int iRepeat, object pObj)
{
// Default
if(!iRepeat) iRepeat = 1;
if(!pObj) pObj = this;
// Effekt erzeugen
var iEffect = AddEffect("IntSchedule", pObj, 1, iInterval, pObj);
if(iEffect <= 0) return false;
// Variablen setzen
EffectVar(0, pObj, iEffect) = strScript;
EffectVar(1, pObj, iEffect) = iRepeat;
return true;
}
global func FxIntScheduleTimer(object pObj, int iEffect)
{
// Nur eine bestimmte Anzahl Ausführungen
var fDone = (--EffectVar(1, pObj, iEffect) <= 0);
// Ausführen
eval(EffectVar(0, pObj, iEffect));
return -fDone;
}
// Eine Funktion zeitverzögert und ggf. wiederholt aufrufen
global func ScheduleCall(object pObj, string strFunction, int iInterval, int iRepeat, par0, par1, par2, par3, par4)
{
// Default
if(!iRepeat) iRepeat = 1;
if(!pObj) pObj = this;
// Effekt erzeugen
var iEffect = AddEffect("IntScheduleCall", pObj, 1, iInterval, pObj);
if(iEffect <= 0) return false;
// Variablen setzen
EffectVar(0, pObj, iEffect) = strFunction;
EffectVar(1, pObj, iEffect) = iRepeat;
// EffectVar(2): Nur zur Abwärtskompatibilität reserviert
EffectVar(2, pObj, iEffect) = pObj;
for(var i = 0; i < 5; i++)
EffectVar(i + 3, pObj, iEffect) = Par(i + 4);
return true;
}
global func FxIntScheduleCallTimer(object pObj, int iEffect)
{
// Nur eine bestimmte Anzahl Ausführungen
var fDone = (--EffectVar(1, pObj, iEffect) <= 0);
// Ausführen
Call(EffectVar(0, pObj, iEffect), EffectVar(3, pObj, iEffect), EffectVar(4, pObj, iEffect), EffectVar(5, pObj, iEffect), EffectVar(6, pObj, iEffect), EffectVar(7, pObj, iEffect));
// Nur eine bestimmte Anzahl Ausführungen
return (-fDone);
}
global func ClearScheduleCall(object pObj, string strFunction)
{
var i, iEffect;
// Von Effektzahl abwärts zählen, da Effekte entfernt werden
i = GetEffectCount("IntScheduleCall", pObj);
while (i--)
// Alle ScheduleCall-Effekte prüfen
if (iEffect = GetEffect("IntScheduleCall", pObj, i))
// Gesuchte Zielfunktion
if (EffectVar(0, pObj, iEffect) == strFunction)
// Effekt löschen
RemoveEffect(0, pObj, iEffect);
}