Zum Hauptinhalt springen

Elite Script Ziele

Ziele wählen die Entitäten oder Positionen für Aktionen, Bedingungen und Zonen aus. Schreibe Target als YAML-Zuordnung. Standardwerte sind SELF für targetType, 20.0 für range und true für track. Feldnamen unterscheiden Groß- und Kleinschreibung nicht; Enum-Werte für Zieltypen müssen großgeschrieben werden.

Zieltypen​

Zieltypen legen fest, welche Entitäten oder Orte von einem Script angesteuert werden.

DIRECT_TARGET ist die Entität des Ereignisses: ein Spieler, eine angreifende Elite oder eine Entität, die eine Zone durchquert. Nutze es nur mit einem passenden Ereignis; ohne direktes Ziel wählt es nichts aus. Es ist nicht automatisch das aktuelle Kampfziel des Bosses. Ziele in der Nähe werden in einem achsenparallelen Quader um den Boss gesucht und nicht nach Entfernung sortiert.

Entitätsziele können Positionsaktionen ihre aktuelle Fußposition liefern. Umgekehrt geschieht dies nicht automatisch: LOCATION, LOCATIONS und LANDING_LOCATION wählen keine Entitäten an diesen Positionen aus. Erstelle dafür eine Zone. Spielerauswahlen schließen Zuschauer und Spieler anderer Begegnungen nicht selbst aus; eine Aktion kann zusätzliche Regeln anwenden.

ZieltypBeschreibungBesonderheiten
NEARBY_PLAYERSSpieler in Reichweiterange optional, Standard 20.0
NEARBY_MOBSLebende Entitäten außer Spielern in Reichweite, Boss ausgeschlossenrange optional, Standard 20.0
NEARBY_ELITESVerwaltete Eliten in Reichweite, Boss ausgeschlossenrange optional, Standard 20.0
WORLD_PLAYERSSpieler in der Welt❌
ALL_PLAYERSSpieler auf dem Server❌
DIRECT_TARGETDie vom Ereignis übergebene EntitätBenötigt ein passendes Ereignis
SELFElite, der die Kraft einsetzt❌
SELF_SPAWNGespeicherte Spawnposition des Bosses für PositionsaktionenEntitätsaktionen erhalten weiterhin den Boss selbst
LOCATIONBestimmter OrtBenötigt location
LOCATIONSMehrere bestimmte OrteBenötigt locations
ZONE_FULLZielt auf das Innere der ZoneBenötigt Zone
ZONE_BORDERZielt auf den Rand der ZoneBenötigt Zone
ACTION_TARGETVerwendet den Zielkontext der umgebenden AktionNur für Aktions-Bedingungen mit FILTERING und relative Vektoren; kein eigenständiges Aktionsziel
LANDING_LOCATIONZielt auf den Ort, an dem ein Block oder eine Entität gelandet ist.Kann nur in den landingScripts der Aktionen SPAWN_FALLING_BLOCK und SUMMON_ENTITY verwendet werden!
INHERIT_SCRIPT_TARGETErbt das Ziel vom Script, das dieses Script ausführtKann nur ausgeführt werden, wenn das Script von einem anderen Script aufgerufen wurde!
INHERIT_SCRIPT_ZONE_FULLZielt auf das Innere der Zone, die vom Script geerbt wird, das dieses Script ausführtBenötigt eine Zone im Script, das dieses Script aufruft!
INHERIT_SCRIPT_ZONE_BORDERZielt auf den Rand der Zone, die vom Script geerbt wird, das dieses Script ausführtBenötigt eine Zone im Script, das dieses Script aufruft!
Beispiel
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions:
- action: MESSAGE
Target:
targetType: ALL_PLAYERS
sValue: "&2Hello World!"

Dies sendet eine Nachricht an das Ziel. Da das Ziel auf ALL_PLAYERS gesetzt ist, wird die Nachricht an alle Spieler gesendet, die online sind.


Gemeinsame Attribute​

Diese Einstellungen gelten beim Auflösen von Zielpositionen. Sie bewegen keine Entität und ändern nicht, welche Entität die Aktion erhält.

WertBeschreibungBesonderheiten
offsetLegt den Versatz für den Zielort fest.Kann keine Entitäten anvisieren!
relativeOffsetVerschiebt Zielpositionen mit einer Vorlage für einen relativen Vektor. Dessen Quell- und Zielauswahl bestimmen die Richtung.Kann keine Entitäten anvisieren!

Versätze gelten für Positionen aus Entitätszielen wie SELF und DIRECT_TARGET, für SELF_SPAWN, LOCATION und LOCATIONS sowie für jede Position, die ZONE_FULL, ZONE_BORDER und ihre geerbten Varianten aus einer Zone abtasten. Um die ganze Zone zu verschieben, setze den Versatz stattdessen auf das eigene Target der Zone, wie in den Beispielen unten. Dieselben Regeln gelten für die Lua-Script-Hilfsfunktionen.

offset verwendet die X/Y/Z-Achsen der Welt, nicht die Blickrichtung. Es wird vor relativeOffset angewendet. Ergebnisse von LANDING_LOCATION und INHERIT_SCRIPT_TARGET überspringen diese zusätzlichen Versätze. Innerhalb eines relativen Vektors verwendet ACTION_TARGET direkt die übergebene Aktionsposition und ignoriert seine eigenen Versatzeinstellungen.

Beispiel
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: SELF
offset: "0,2,0"

Der Blitz schlägt 2 Blöcke über dem Boss ein. STRIKE_LIGHTNING wählt Positionen aus und unterstützt daher einen Versatz. Der Blitz ist rein visuell und verursacht keinen Schaden an Entitäten.

Du kannst keinen Versatz festlegen, um eine Nachricht zu senden, da Nachrichten an Spieler gesendet werden. Du kannst jedoch einen Versatz für eine Zone festlegen, die dann Entitäten anvisieren kann.


range​

Legt die halbe Breite des Suchquaders für NEARBY_PLAYERS, NEARBY_MOBS und NEARBY_ELITES fest. Der Wert gilt für X, Y und Z; es handelt sich nicht um eine kugelförmige Entfernungsgrenze. Mob- und Elitensuchen schließen den ausführenden Boss aus.

Verwende eine feste nicht negative Zahl für einen gleichbleibenden Quader. Ein Bereich mit ~ kann für jede Achse separat ausgewertet werden und verwendet die unter coverage beschriebene Dezimalzahlziehung. Er garantiert keinen Würfel mit einem einzigen zufällig bestimmten Radius.

WertBeschreibungStandard
rangeHalbe Breite in Blöcken für Suchen nach nahen Spielern, Mobs und Eliten.20.0
Beispiel
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 25.0
sValue: "&2Targeted players within 25 blocks!"

Beim Tod des Bosses erhalten Spieler im Suchquader eine Nachricht. Dieser erstreckt sich entlang jeder Achse 25 Blöcke von der Bossposition aus.

location​

Legt den Ort für den Zieltyp LOCATION fest.

WertBeschreibungStandard
locationLegt den Weltort fest, der anvisiert wird.none

Das Format lautet location: worldname,x,y,z,yaw,pitch. Auch worldname,x,y,z ist gültig; yaw und pitch sind dann 0. Die weltlose Form x,y,z,yaw,pitch wird ebenfalls akzeptiert, lässt die Position jedoch ohne Welt und ist selten sinnvoll. Nur drei Werte x,y,z sind ungültig und erzeugen Attempted to deserialize an invalid location! in der Konsole.

Verwende eine geladene Welt oder same_as_boss. Der Parser lädt keine Welt; fehlerhafte Eingaben oder eine nicht aufgelöste Welt können bei der Zielverwendung scheitern. Die Koordinaten sind absolut, auch mit same_as_boss: Dieser Platzhalter ändert nur die Welt.

Ist die konfigurierte Welt nicht geladen und befindet sich der Boss in <configuredWorld>_<number>, wird diese Instanzwelt verwendet. Eine bereits geladene konfigurierte Welt wird dadurch nicht ersetzt.

Beachte, dass same_as_boss ein gültiger Platzhalter für den Weltnamen ist; so wäre z. B. same_as_boss,100,64,100,0,0 ein gültiger Ort, der auf dieselbe Welt zielt, in der sich der Boss befindet.

Beispiel
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: LOCATION
location: "myWorld,100,64,200,0,0"

Dies lässt einen Blitz am Ort x=100, y=64, z=200 einer Welt namens myWorld einschlagen.


locations​

Legt die Orte für den Zieltyp LOCATIONS fest.

WertBeschreibungStandard
locationsLegt die Liste der Weltorte fest, die anvisiert werden.none

Jede Position verwendet worldname,x,y,z,yaw,pitch mit denselben zulässigen Varianten wie location.

Beachte, dass same_as_boss ein gültiger Platzhalter für den Weltnamen ist; so wäre z. B. same_as_boss,100,64,100,0,0 ein gültiger Ort, der auf dieselbe Welt zielt, in der sich der Boss befindet.

Beispiel
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: LOCATIONS
locations:
- "myWorld,100,64,200,0,0"
- "same_as_boss,-100,12,130,0,0"

Dies lässt einen Blitz am Ort x=100, y=64, z=200 einer Welt namens myWorld einschlagen und einen weiteren Blitz in derselben Welt wie der Boss am Ort x=-100, y=12 und z=130.


Zonen anvisieren​

Zonen trennen ihre Ursprungsziele von den Aktionen, die ihre Geometrie verwenden. Zone.Target liefert Ursprünge; ZONE_FULL oder ZONE_BORDER einer Aktion wählt aus den resultierenden Formen aus. Mehrere Ursprünge können mehrere Formen erzeugen. Entitäten werden dedupliziert; überlappende Formen können weiterhin doppelte Partikelpositionen liefern.

Zonen funktionieren in zwei Teilen:

Teil 1 – Festlegen, wo die Zone hinkommt​

Zonen müssen wissen, wo sie sich befinden sollen, und dafür verwendest du das Zielsystem auf dieselbe Weise wie bei jedem anderen ortsbasierten Effekt, etwa einem Blitzeinschlag.

Beispiel
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF

Das Fragment beschreibt einen Zylinder mit Radius 10 und Höhe 1, der an den Füßen des Bosses beginnt und nach oben reicht. Es enthält noch keine Aktionen; ein ausführbares Script benötigt die unten gezeigten Actions. filter: PLAYER gilt für Entitätsabfragen, nicht für geometrische Partikelpositionen.

Einige Zonen, wie STATIC_RAY, haben zwei oder mehr Ziele. Das liegt daran, dass Strahlen Linien sind und Linien durch zwei Punkte definiert werden. Dies wird ausführlicher auf der Zonen-Seite behandelt, aber im Grunde funktionieren sie alle auf dieselbe Weise.

Teil 2 – Das Innere der Zone anvisieren​

Verwende targetType: ZONE_FULL für die gesamte Form oder targetType: ZONE_BORDER für ihren Rand. Positionsaktionen erhalten geometrische Abtastpunkte; Entitätsaktionen erhalten passende Entitäten gemäß Zonenfilter und Einschlussprüfung. Es sind unterschiedliche Sammlungstypen.

Beispiel
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL

Partikel werden an Abtastpunkten im gesamten Zylinder erzeugt, nicht an Spielerpositionen. Es gibt 12 Ausführungen mit jeweils 5 Ticks Abstand. Zonenpartikelaktionen verwenden standardmäßig ungefähr 30 % Abdeckung, sofern coverage nicht ausdrücklich gesetzt ist. filter: PLAYER beschränkt diese Partikel nicht auf Spieler.

Beachte, dass ZONE_BORDER nicht für jede Zone verfügbar ist. Mehr dazu auf der Seite Script-Zonen.

Zone-Track​

Setze track im Target der Aktion, wie unten gezeigt. Mit true werden bewegliche Ursprünge normalerweise bei jeder Anforderung neu aufgelöst. Mit false speichert die Aktion die Zonenformen vor ihrem wait; der Ursprung bleibt fest, spätere Entitätsabfragen suchen aber weiterhin nach Entitäten, die dann darin stehen. Die Spielerliste beim Wirken wird nicht eingefroren.

WertBeschreibungStandard
trackLöst das Aktionsziel neu auf, statt Zonenursprung und Abtastpositionen zu speichern.true

Mit einem positiven animationDuration speichert die Aktion die animierten Formen beim Start, unabhängig von ihrer track-Einstellung. Gespeichert werden die Formen, nicht eine statische Liste ihrer Positionen, sodass ihre Animation weiterläuft. Mehr dazu hier.

Beispiel
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false

Unter Verwendung desselben Beispiels aus Teil 1 und Teil 2 ist die Zone nun so eingestellt, dass sie nicht trackt. Das bedeutet, dass die Zone am Boss-Ort erscheint, aber selbst wenn sich der Boss weiter entfernt, bleibt die Zone dort, wo sie zuerst erschienen ist.

Der Cache wird beim Start der Aktion vor ihrer Wartezeit vorbereitet. Ein verzögertes RUN_SCRIPT verzögert auch den Start und den Cache des aufgerufenen Scripts.

Für eine Warnung mit anschließendem Schaden an der ursprünglichen Position starte beide Scripts sofort und setze wait auf die Schadensaktionen. Verwende übereinstimmende feste Ursprünge, wenn die Positionen unabhängig von Bewegung und vorherigen Aktionen identisch bleiben müssen.

Im Folgenden findest du ein korrektes Beispiel für eine Kraft mit Warn- und Schadensphase, entnommen aus dem Frost Palace Sanctum.

Beispiel
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false
- action: SPAWN_PARTICLE
wait: 60
times: 13
repeatEvery: 3
particles:
- particle: FLAME
amount: 0
x: 0
y: 1
z: 0
speed: 0.2
- particle: FLAME
amount: 0
x: 0.5
y: 1
z: 0.5
speed: 0.2
- particle: FLAME
amount: 0
x: 0
y: 1
z: 0.5
speed: 0.2
- particle: FLAME
amount: 0
x: 0.5
y: 1
z: 0
speed: 0.2
- particle: FLAME
amount: 0
x: -0.5
y: 1
z: -0.5
speed: 0.2
- particle: FLAME
amount: 0
x: -0.5
y: 1
z: 0
speed: 0.2
- particle: FLAME
amount: 0
x: 0
y: 1
z: -0.5
speed: 0.2
- particle: FLAME
amount: 0
x: -0.5
y: 1
z: 0.5
speed: 0.2
- particle: FLAME
amount: 0
x: 0.5
y: 1
z: -0.5
speed: 0.2
Target:
targetType: ZONE_FULL
track: false
- action: RUN_SCRIPT
scripts:
- DamageCylinder
- action: PLAY_ANIMATION
sValue: fire_zone
Target:
targetType: SELF
- action: SET_MOB_AI
duration: 100
bValue: false
Target:
targetType: SELF
Cooldowns:
local: 1200
global: 300
DamageCylinder:
Zone:
radius: 10.0
shape: CYLINDER
height: 10
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
offset: 0,-1,0
Actions:
- action: DAMAGE
wait: 60
repeatEvery: 10
times: 4
multiplier: 4
Target:
targetType: ZONE_FULL
track: false
- action: SET_ON_FIRE
wait: 60
duration: 80
Target:
targetType: ZONE_FULL
track: false

Dieses Script macht eine Menge Dinge, ist aber in zwei klar getrennte Scripts aufgeteilt: VisualCylinder und DamageCylinder.

VisualCylinder läuft zuerst und enthält die Aktion RUN_SCRIPT, die sofort auch DamageCylinder gleichzeitig mit dem laufenden VisualCylinder ausführt.

Allerdings ist jede einzelne Aktion in DamageCylinder so eingestellt, dass sie 60 Ticks bzw. 3 Sekunden wartet.

Die Warnung dauert 3 Sekunden, bevor die verzögerten Effekte beginnen. Beim unmittelbaren Start erfassen beide Scripts dieselbe horizontale Bossposition. Ihre Volumen unterscheiden sich: Der sichtbare Zylinder hat Höhe 1 an den Füßen, der Schadenszylinder beginnt 1 Block tiefer und hat Höhe 10. DAMAGE läuft viermal im Abstand von 10 Ticks; SET_ON_FIRE läuft einmal nach der Wartezeit und fordert 80 Feuerticks an. Die Animation benötigt ein passendes benutzerdefiniertes Modell mit fire_zone.

Jede Ausführung einer Aktion hat ihren eigenen Cache. Überlappende Ausführungen desselben Scripts überschreiben die gespeicherten Positionen der jeweils anderen nicht, und eine neue Ausführung verwendet nie Positionen, die eine frühere gespeichert hat.

Zonenspezifische Zieleigenschaften​

Zonen haben die folgenden spezifischen Eigenschaften:

coverage​

Legt den Prozentsatz der Zone fest, der tatsächlich für die Aktion verwendet wird. Funktioniert nur für Ortsziele (funktioniert nicht beim Anvisieren von Spielern oder anderen Entitäten).

WertBeschreibungStandard
coverageAnteil der beibehaltenen Zonenpositionen; 0.5 entspricht ungefähr der Hälfte. Verwende vorzugsweise einen festen Wert von 0 bis 1.1.0

Ein Bereich wie 0.3~1.0 zieht einen Wert von 0.3 bis ausschließlich 1.0, und die Abdeckung kann für jeden Punkt separat gezogen werden. Verwende einen festen Anteil für eine vorhersehbare Abdeckung. Ein ausdrückliches coverage: 1.0 behält alle Abtastpunkte; ohne Angabe verwendet eine Zonenaktion SPAWN_PARTICLE den Wert 0.3. Entitätsabfragen werden nicht reduziert. Mit track: false wird die Positionsauswahl einer statischen Zone gespeichert und wiederverwendet, statt bei jeder Wiederholung neu gezogen zu werden.

Beispiel
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false
coverage: 0.5

Jeder Abtastpunkt hat eine Chance von 50 %, für Partikel beibehalten zu werden. Die resultierende Anzahl ist ungefähr, nicht exakt die Hälfte.

Ziele vererben​

Wenn ein Script ein anderes Script ausführt (oder dieses Script „aufruft“), ist es möglich, Zonen- und Zielinformationen vom ersten Script an das zweite weiterzugeben.

Beispielhafte Verwendungen

  1. Verbesserte Script-Runner

Script-Runner sind Scripts, deren einzige Funktion darin besteht, eine Menge anderer Scripts auszuführen. Sie werden verwendet, um die Verwaltung von Scripts zu erleichtern, insbesondere beim Umgang mit mehreren Scripts, die ein präzises Timing erfordern.

Mit Zielvererbung können mehrere Scripts dieselbe Zone oder dasselbe Ziel verwenden, was potenziell Hunderte von Zeilen sich wiederholenden Scriptings einspart.

  1. Matrjoschka-Zielfilterung / Filterung wie bei russischen Schachtelpuppen

Eine Elternaktion, die tatsächlich Entitätsziele auflöst und filtert, kann ihr gespeichertes Ergebnis über ihre scripts-Liste an ein Kind weitergeben. Halte die Zieltypen kompatibel. RUN_SCRIPT selbst führt keine Filterung einzelner Ziele aus; eine daran gesetzte FILTERING-Bedingung erzeugt keine gefilterte Liste zur Vererbung.

Prüfe Tags mit ACTION_TARGET und FILTERING an der Entitätsaktion. Eine Zufallschance benötigt Scriptbedingungen oder BLOCKING; sie ist kein einzelner Zufallswurf pro gefilterter Entität. isAlive prüft Bukkit-Gültigkeit, weshalb eine Umkehrung kein verlässlicher Auslöser für den Tod eines Spielers ist.

  1. Komplexe Zonen

Schließlich ist es möglich, Ziele zu schichten, um komplexe Zonen zu erstellen, optional unter Verwendung von Bedingungen, falls erforderlich, und es ist sogar möglich, halb-zufällige Zonen zu erstellen, indem man die Script-Bedingungen und die Möglichkeit nutzt, aus den Script-Aktionen nur eines der aufgelisteten Scripts auszuführen.

Hinweis: In diesem Abschnitt bezieht sich „Eltern-Script“ auf das Script, das das „erbende Script“ ausführt, also das Script, das die geerbten Ziele verwendet.

Bei der Verwendung von Zielvererbung ist es wichtig, das Eltern-Script sorgfältig zu betrachten, um sicherzustellen, dass die richtigen Daten weitergegeben werden.

INHERIT_SCRIPT_TARGET​

INHERIT_SCRIPT_TARGET liest den Zielauflöser oder Cache der konkreten Elternaktion, die das Kind aufgerufen hat, nicht die Vereinigung aller Ziele des Elternscripts. Setze es auf Aktionen oder Zonenursprünge des Kindes, nicht auf dessen oberste Conditions: Diese werden vor dem Vorliegen geerbter Aktionsdaten ausgewertet, und das geerbte Ziel schlägt dort mit einem Fehler fehl.

Die Elternaktion übergibt ihre aufgelösten, durch Bedingungen gefilterten Ziele nur, wenn ihr Target track: false hat. Mit dem Standard track: true löst das Kind das Ziel der Elternaktion erneut auf, ohne deren Filterung. Eine Elternaktion RUN_SCRIPT löst nie eigene Ziele auf, daher löst ihr Kind Entitäten immer neu auf. Mit track: false verwendet das Kind die Positionen wieder, die die Elternaktion beim Start ihrer Aktion gespeichert hat. Dabei gelten folgende Einschränkungen:

  • Bei der Übergabe von Entitätszielen kann das Kind sie mit Entitätsaktionen oder mit Positionsaktionen verwenden. Positionsaktionen erhalten die Positionen der Entitäten.

  • Beim Weitergeben von Ortszielen ist es nur möglich, Orte zu verwenden. Eine Entitätsaktion, die Orte erbt, schlägt mit einem Fehler fehl. Die einzige Möglichkeit, aus einem Ort eine Entität zu bekommen, besteht darin, an diesem Ort eine Zone zu erstellen und nach Entitäten zu suchen. Es ist also nicht unmöglich, einen Ort weiterzugeben und dann Entitäten zu erhalten, aber es erfordert ein wenig zusätzlichen Aufwand.

Zonen vererben​

Bei der Verwendung von INHERIT_SCRIPT_ZONE_FULL oder INHERIT_SCRIPT_ZONE_BORDER ist es zwingend erforderlich, dass das Eltern-Script eine Zone definiert, da das erbende Script sonst nicht korrekt ausgeführt werden kann.

Eine Aktion mit track: false speichert ihre Zonenformen vor Beginn der Wartezeit. Eine Aktion mit Tracking speichert sie normalerweise nicht und löst bewegliche Ursprünge neu auf. Übergebene Daten der Elternaktion können gespeicherte Formen wiederverwenden; track: true friert keine gemeinsame Position ein.

Geerbte Zonenziele verwenden die eigene Zone des Eltern-Scripts und die Formen, die die aufrufende Aktion gespeichert hat, sofern sie welche gespeichert hat. Entitätsabfragen mit INHERIT_SCRIPT_ZONE_FULL verwenden wie ZONE_FULL die Prüfung des gesamten Volumens. Hat das Eltern-Script keine gültige Zone oder wurde das Script nicht von einem anderen Script aufgerufen, schlägt die Aktion mit einem Fehler fehl.

Um einen festen Ursprung zu teilen, gib dem Target der aufrufenden Aktion track: false. Das Kind verwendet dann die Formen wieder, die die Elternaktion beim Start ihrer Aktion gespeichert hat, auch wenn die eigenen Aktionen des Kindes warten.