Zum Hauptinhalt springen

Elite Script Relative Vektoren

Wofür sie verwendet werden

Relative Vektoren sind Vektoren, die relativ zu einem bestimmten, aber dynamischen Standort sind.

Um am besten zu erklären, was diese sind, betrachten wir den folgenden Fall: Sie möchten einen Spieler als Teil einer Fähigkeit zum Boss schieben. Da sich sowohl der Boss als auch der Spieler während des Kampfes bewegen, ist es nicht möglich, sich auf einen bestimmten Vektor zu verlassen, um diesen Effekt zu erzielen - Sie benötigen einen Vektor, der vom Spieler zum Boss führt. (Stellen Sie sich eine kurze Linie mit einem Pfeil vor, der vom Spieler zum Boss zeigt.)

Relative Vektoren können auf so viele Arten verwendet werden, dass es unmöglich wäre, sie alle aufzulisten, aber darunter sind: Schießen von Entitäten (wie Projektilen) auf einen bestimmten Spieler oder Mob; Spawnen von Verstärkungen hinter einem Spieler; Schießen eines fallenden Blocks in eine bestimmte Richtung; Erstellen von Strahlen, die auf einen Spieler geschossen werden, und vieles mehr.

Wie funktionieren Vektoren?

Wenn Sie nicht wissen oder sich nicht erinnern, was Vektoren sind oder wie sie funktionieren, können Sie sich Vektoren als Pfeile vorstellen, die von einem Punkt zu einem anderen Punkt zeigen.

Als solche ist eine der Eigenschaften von Vektoren ihre Länge. Diese Länge ist wichtig; im Fall von Pfeilen ist diese Länge die Geschwindigkeit, mit der ein Pfeil geschossen wird, im Fall des Versuchs, Offset-Punkte von einem bestimmten Ort zu erhalten, ist es die Entfernung von diesem Punkt. Dinge, die weiter entfernt sind, haben größere Vektorlängen, und nähere Dinge haben kürzere Längen.

Für einige Mechaniken möchten Sie wahrscheinlich nicht darauf verlassen, wie weit zwei Punkte voneinander entfernt sind, da Sie nur eine Richtung erhalten möchten. Glücklicherweise können Sie die Vektornormalisierung verwenden, die garantiert, dass die Richtung erhalten bleibt, aber die Länge auf 1.0 ändert. Sie können dann Multiplikatoren verwenden, um den Vektor einfach zu ändern, bis Sie mit dem Offset, den er bietet, oder der Geschwindigkeit, die er gibt, zufrieden sind.

Eigenschaften

WertDetailsErforderlich?Standardwert
SourceTargetTarget an dem Punkt, von dem der Vektor startetnone
DestinationTargetTarget am Endpunkt für den Vektornone
normalizeLegt fest, ob der Vektor normalisiert werden sollfalse
multiplierMultipliziert die Länge des Vektors. Sie können diesen Wert randomisieren, indem Sie ~ verwenden. Beispiel: 1.0~2.5.1.0
offsetErmöglicht das Einfügen eines manuellen festen Offsets zu diesem Offset. Sie können diesen Wert randomisieren, indem Sie ~ verwenden. Beispiel: 0~5,0~2,0~10.none
Beispiel
eliteScript:
ShootChicken:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SUMMON_ENTITY
sValue: CHICKEN
Target:
targetType: SELF
RelativeVector:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: DIRECT_TARGET
normalize: true
multiplier: 2.0

Schießt ein Huhn


eliteScript:
ShootArrow:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SUMMON_ENTITY
sValue: ARROW
Target:
targetType: SELF
RelativeVector:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: DIRECT_TARGET
normalize: true
multiplier: 2.0

Schießt einen Pfeil


eliteScript:
SpawnReinforcement:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SUMMON_ENTITY
sValue: ZOMBIE
Target:
targetType: SELF
RelativeOffset:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: DIRECT_TARGET
normalize: true
multiplier: 2.0

Spawnt einen Zombie 2 Blöcke hinter dem Spieler, relativ zum Boss.


eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
Shape: SPHERE
target:
targetType: SELF_SPAWN
offset: 0,0,0
track: false
filter: PLAYER
radius: 6
Actions:
- action: SPAWN_PARTICLE
repeatEvery: 38
times: 5
Target:
targetType: ZONE_FULL
track: false
coverage: 0.9
particles:
- particle: FLAME
RelativeVector:
SourceTarget:
targetType: ACTION_TARGET
track: true
DestinationTarget:
targetType: SELF_SPAWN
offset: 0,-0.5,0
speed: 0.05

Erstellt eine animierte Flammenkugel, die zur Spawn-Position schrumpft.

Reihenfolge der Operationen

Die Reihenfolge der Operationen beim Anwenden der Eigenschaften ist wie folgt:

Vektorberechnung -> normalize -> multiplier -> offset

Elite Script Relative Offset

Wofür werden sie verwendet?

Relative Offsets funktionieren ähnlich wie relative Vektoren, aber mit dem Ziel, Offsets Flexibilität zu verleihen. Sie ermöglichen es Ihnen, Positionen beim Scripting dynamisch anzupassen, wodurch es einfacher wird, Zielpositionen oder Effekte basierend auf dem Kontext feinabzustimmen.

Wie funktionieren relative Offsets?

Relative Offsets sind additiv, was bedeutet, dass das, was der Offset ergibt, zum Basiswert (wie einem Standort oder Vektor) hinzugefügt wird.

Lassen Sie uns ein Beispiel aufschlüsseln:

Sie haben eine ray zone:

  • Target 1 ist SELF (der Boss).
  • Target 2 ist NEARBY_PLAYERS mit einer Reichweite von 10.

Wenn ein Spieler 8 Blöcke entfernt gefunden wird, ist der Strahl 8 Blöcke lang und endet beim Spieler.

Nun wenden wir einen relativen Offset an:

Fall 1: normalize = false, multiplier = 1

  • Die ursprüngliche Entfernung beträgt 8.
  • Offset-Wert wird 8 × 1 = 8.
  • Endgültige Strahllänge: 8 + 8 = 16.

Der Strahl wird durch den Spieler gehen und für 8 zusätzliche Blöcke weitergehen.

Fall 2: normalize = false, multiplier = 2

  • Offset-Wert wird 8 × 2 = 16.
  • Endgültige Strahllänge: 8 + 16 = 24.

Fall 3: normalize = true, multiplier = 1

  • Die Entfernung wird auf 1 normalisiert.
  • Offset-Wert wird 1 × 1 = 1.
  • Endgültige Strahllänge: 8 + 1 = 9.

Fall 4: normalize = true, multiplier = 2

  • Offset-Wert wird 1 × 2 = 2.
  • Endgültige Strahllänge: 8 + 2 = 10.

Zusammenfassung

  • normalize = false verwendet die tatsächliche Entfernung zwischen den Zielen.
  • normalize = true beginnt immer von einer Basis von 1, unabhängig von der tatsächlichen Entfernung.
  • Der Offset wird immer zum ursprünglichen Wert hinzugefügt.
  • Wenn multiplier auf 0 mit normalize = true gesetzt ist, wird der Offset 0 (da 1 × 0 = 0), und mit normalize = false wird der Offset ebenfalls 0 (da jede Zahl multipliziert mit 0 gleich 0 ist), wodurch der relative Offset in beiden Fällen effektiv deaktiviert wird.

Dieses System ermöglicht es Ihnen, Entfernungen beim Erstellen komplexerer Skill-Logik im EliteMobs-Scripting dynamisch zu erweitern oder zu verkleinern.

Eigenschaften

WertDetailsErforderlich?Standardwert
SourceTargetTarget an dem Punkt, von dem der Vektor startetnone
DestinationTargetTarget am Endpunkt für den Vektornone
normalizeLegt fest, ob der Vektor normalisiert werden sollfalse
multiplierMultipliziert die Länge des Vektors. Sie können diesen Wert randomisieren, indem Sie ~ verwenden. Beispiel: 1.0~2.5.1.0
Beispiel
eliteScript:
MakeStaticRay:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: STATIC_RAY
Target:
targetType: SELF
offset: 0,1,0
Target2:
targetType: NEARBY_PLAYERS
range: 10
offset: 0,1,0
relativeOffset:
sourceTarget:
targetType: SELF
destinationTarget:
targetType: NEARBY_PLAYERS
range: 10
multiplier: 5
normalize: true
Actions:
- action: SPAWN_PARTICLE
Target:
targetType: ZONE_FULL
particles:
- particle: ELECTRIC_SPARK
amount: 1
repeatEvery: 1
times: 400

Dies erstellt einen statischen Strahl zwischen dem Boss und dem Spieler, mit einem relativen Offset, der den Strahl 5 Blöcke über den Spieler hinaus verlängert. Beachten Sie, dass reguläre Offsets auch auf Target und Target2 angewendet werden, um sicherzustellen, dass der Strahl von der Mitte des Bosses zur Mitte des Spielers gezeichnet wird, anstatt von deren Füßen.

Hinweis: Auch wenn dieses Beispiel einen relativen Offset auf einer Zone verwendet, beachten Sie, dass relative Offsets nicht auf Zonen beschränkt sind, sie können auch auf andere Ziele angewendet werden.