SetPhysical

Kategorie: Objekte / Status
Ab Engineversion: 4.6.5.0 CP (erweitert ab 4.9.6.0 CR)

Beschreibung

Ändert die physischen Eigenschaften eines Objekts. Hiermit können die in der Physical-Sektion der DefCore.txt angegebenen Werte temporär oder permanent angepasst werden.

Syntax

bool SetPhysical (string szPhysical, int iValue, int iMode, object pObj);

Parameter

szPhysical:
Name der Eigenschaft, die geändert werden soll
iValue:
0-100000: Neuer Wert für diese Eigenschaft
iMode:
[opt] Änderungsmodus (symbolische Konstanten ab CR):
Konstante Wert Bedeutung
PHYS_Current 0 Die Eigenschaften werden im gerade aktiven Modus (temporär oder permanent) des Objektes geändert.
PHYS_Permanent 1 Die Eigenschaften werden permanent geändert. Das heißt, dass auch die Infosektion des Objektes modifiziert wird, und die Änderungen somit auch in die Spielerdatei geschrieben werden. Nur Spielercrewobjekte besitzen eine Infosektion.
PHYS_Temporary 2 Für das Objekt wird eine temporäre Infosektion erzeugt, sofern noch nicht vorhanden, und temporären Modus gesetzt. Änderungen im temporären Modus landen nicht in der Spielerdatei. Um temporäre Physicals wieder zu den Originalen zurückzusetzen, sollte ResetPhysical verwendet werden.
PHYS_StackTemporary 3 Wie PHYS_Temporary, jedoch wird zusätzlich der vorherige Physical-Wert gesichert und kann einzeln mit einem ResetPhysical-Aufruf wiederhergestellt werden. Ab CR.

pObj:
[opt] Objekt, dessen Physical gesetzt werden soll. 0 bei lokalen Aufrufen.

Beispiele

protected func Activate(pEater)
  {
  [$DescEatPill$]
  SetPhysical("Magic", 1000000, PHYS_Temporary, pEater);
  while(DoMagicEnergy(1, pEater)) ;
  return(RemoveObject());
  }
Script für eine Magiepille: Der essende Clonk bekommt temporär Zauberenergie.
protected func FxJumpBoostStart(object trg, int num, int iTemp)
  {
  SetPhysical("Jump", GetPhysical("Jump", PHYS_Current, trg) + 10000, PHYS_StackTemporary, trg);
  return(FX_OK);
  }
		
protected func FxJumpBoostStop(object trg, int num, int reason, bool tmp)
  {
  ResetPhysical(trg, "Jump");
  return(FX_OK);
  }
Script für einen Effekt namens JumpBoost: Wenn auf ein Objekt angewendet, kann es bis zum Löschen des Effektes höher springen. Die Kombination von PHYS_StackTemporary beim Setzen und Angabe der geänderten Physical in ResetPhysical sorgt dafür, dass sich mehrere solcher Effekte problemlos kombinieren lassen.
Siehe auch: DefCore.txt, [Physical], GetPhysical, ResetPhysical, TrainPhysical
Sven2, Juni 2003