GetValue
Kategorie: Objekte
/ Status
Ab Engineversion: 4.6.5.0 CP
(erweitert ab 4.9.1.0 GWE)
Beschreibung
Gibt einen Objekt- oder Definitionswert zurück. Bei angegebenem idDef wird der Definitionswert zurückgegeben, ansonsten der Objektwert von pObj oder dem aufrufenden Objekt bei pObj=0.
Ein Objektwert berechnet sich folgendermaßen: Bei angegebenem pObj wird zunächst geprüft, ob eine CalcValue-Funktion im Script des Objekttyps von pObj vorhanden ist, und gegebenenfalls ausgewertet. Ansonsten wird der Definitionswert (siehe nächster Absatz) verwendet. Unabhängig davon wird der Wert des Objekts immer der Fertigstellung (GetCon()/100) multipliziert. Tote Lebewesen (GetCategory()&OCF_Living() && !GetAlive()) haben immer den Wert 0.
Der Definitionswert wird folgendermaßen ermittelt: Ist eine CalcDefValue-Funktion im Script vorhanden, wird diese ausgewertet. Ansonsten wird eine Wertüberladung aus der Scenario.txt verwendet. Ist diese ebenfalls nicht vorhanden, wird der in der DefCore angegebene Wert benutzt.
Syntax
int GetValue
(object pObj, id idDef, object pBase, int iForPlayer);
Parameter
- pObj:
[opt]
Objekt, von dem der aktuelle Wert abgefragt werden soll. 0 bei lokalem Aufruf oder angegebenem idDef.
- idDef:
[opt]
Wenn angegeben: Definition, von der der Standardwert abgefragt werden soll. Ansonsten wird pObj ausgewertet.
- pBase:
[opt]
Basis, in der gekauft wird. Falls pObj einen CalcValue-Aufruf zur Verfügung stellt, wird dieser Parameter an den Aufruf weitergegeben.
- iForPlayer:
[opt]
Spieler, für den der Wert gilt. Falls pObj einen CalcValue-Aufruf zur Verfügung stellt, wird auch dieser Parameter an den Aufruf weitergegeben.
Anmerkung
Die beiden Parameter pBase und iForPlayer sind für szenarienspezifische Handelsmodelle gedacht, und werden nur in CalcValue/CalcDefValue-Aufrufen verwendet.
Beispiel
var iValue=GetValue();
while (iValue-->0) CreateContents(ROCK);
RemoveObject(0, 1);
Objektscript: Das Objekt erzeugt so viele Steine, wie es wert ist, und vernichtet sich dann selber (wobei es die Steine auswirft).
Sven2, März 2003