EliteScript
EliteScript ist ein umfassendes Skriptsystem für MagmaGuys Plugins, das erweiterte Anpassungsoptionen für die Erstellung dynamischer Verhaltensweisen für Bosse und andere Entitäten in Minecraft bietet.
EliteMobs bietet zwei Skriptsysteme, und beide werden vollständig unterstützt. EliteScript ist nicht veraltet.
- EliteScript (diese Seite und die zugehörigen Seiten) verwendet deklaratives YAML. Es eignet sich besonders für Fähigkeiten nach dem Muster „Führe bei diesem Ereignis diese Aktionen auf diesen Zielen aus“. Keine der hier beschriebenen Funktionen wurde entfernt oder ersetzt.
- Lua-Fähigkeiten verwenden
.lua-Dateien im selben Ordnerpowers. Sie eignen sich besonders für Variablen, Schleifen, zufällige Verzweigungen, Zustände pro Boss und zeitversetzte Folgeaktionen. Die meisten mitgelieferten Fähigkeiten sind in Lua geschrieben; einige YAML-Fähigkeiten bleiben enthalten.
Die Systeme ergänzen sich: Luas API context.script ist eine dünne Schnittstelle zur EliteScript-Engine. Wenn du in Lua context.script:target({...}) oder context.script:zone({...}) schreibst, wird die übergebene Tabelle an genau denselben Code für Ziele, Zonen, relative Vektoren und Partikel weitergereicht, der auf diesen Seiten dokumentiert ist. Alle folgenden Feldnamen gelten daher unverändert. Wenn du später zu Lua wechselst, kannst du dein EliteScript-Wissen weiterverwenden.
Eine praktische Folge: Wenn eine .lua-Fähigkeit und eine .yml-Fähigkeit denselben Basisnamen haben, verweist ein Eintrag für die .yml-Datei in der Boss-Liste powers: auf die .lua-Datei. So wurden die mitgelieferten Fähigkeiten migriert, ohne bestehende Boss-Konfigurationen unbrauchbar zu machen.
Übersicht
EliteScript ermöglicht Serveradministratoren die Erstellung ereignisgesteuerter Verhaltensweisen für benutzerdefinierte Bosse und Mobs. Das Skriptsystem basiert auf sechs Kernkomponenten:
- Events: Auslöser, die die Skriptausführung starten (Schaden, Erscheinen, Tod usw.)
- Conditions: Voraussetzungen, die erfüllt sein müssen, damit Aktionen ausgeführt werden
- Actions: Die auszuführenden Verhaltensweisen (Schaden, Teleport, Partikel spawnen usw.)
- Targets: Welche Entitäten oder Orte von den Aktionen betroffen sind
- Zones: Definierte Bereiche in der Welt für Zielerfassung und Erkennung
- Cooldowns: Zeitbeschränkungen zur Vermeidung von Skript-Spam
Elite Scripts können als eigenständige Power-Dateien oder direkt in benutzerdefinierten Boss-Konfigurationsdateien hinzugefügt werden.
Enthält ein Boss mehrere Skripte, wird ein fehlerhaft formatiertes Skript übersprungen. Eine Konsolenmeldung nennt das Skript und die Boss-Datei; andere gültige Skripte können weiterhin geladen werden. Conditions und Cooldowns müssen Zuordnungen von Schlüsseln zu Werten enthalten, keine YAML-Listen. Auch ungültige Zahlen führen zum Überspringen des Skripts: eine Dezimalzahl, wo eine ganze Zahl erwartet wird, etwa duration: 1.5, ein umgekehrter Bereich wie 5~1 oder Text, der keine Zahl ist. Korrigiere das gemeldete Skript und lade die Konfiguration neu, um sein Verhalten wiederherzustellen.
Schnellstart-Beispiel
Hier ist ein einfaches EliteScript, das einen Boss Blitze auf Spieler schlagen lässt, wenn er beschädigt wird:
eliteScript:
LightningStrike:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: DIRECT_TARGET
repeatEvery: 20
times: 3
Cooldowns:
local: 60
global: 20
Dieses Skript wird ausgelöst, wenn ein Spieler dem Boss Schaden zufügt. Es zeigt beim Spieler dreimal einen Blitz (einmal pro Sekunde), mit einem Cooldown von 60 Ticks vor der nächsten Auslösung. STRIKE_LIGHTNING ist rein visuell; füge eine Aktion DAMAGE hinzu, wenn die Fähigkeit dem Spieler Schaden zufügen soll.
Skript-Komponenten
EliteScript bietet umfangreiche Anpassungsmöglichkeiten durch sein Komponentensystem. Detaillierte Informationen zu jeder Komponente findest du auf den folgenden Seiten:
Kernkomponenten
- Events - 13 Ereignistypen einschließlich Schaden, Tod, Erscheinen, Kampf und zonenbasierte Auslöser
- Actions - 35 Aktionstypen zur Erstellung komplexer Verhaltensweisen
- Targets - 17 Zieltypen zur Auswahl von Entitäten und Orten
- Conditions - Filter- und Blockierbedingungen mit mehreren Prüfungstypen
- Zones - 8 Zonenformen (Kugeln, Zylinder, Quader, Strahlen, Kegel usw.)
- Cooldowns - Lokale und globale Cooldown-Systeme
- Relative Vektoren - Erweiterte Positionierung und Bewegung
Häufige Anwendungsfälle
EliteScript wird häufig verwendet für:
- Phasenbasierte Bosskämpfe: Verschiedene Angriffsmuster bei verschiedenen Gesundheitsprozenten
- Arena-Mechaniken: Zonenbasierter Schaden, Buffs oder Spawns in bestimmten Bereichen
- Benutzerdefinierte Angriffe: Einzigartige Partikeleffekte, Projektile und Flächenangriffe
- Umgebungsgefahren: Periodische Blitze, fallende Blöcke oder Feuer
- Interaktive Mechaniken: Teleportation, Mob-Spawning und Weltmodifikation
- Spielerkommunikation: Nachrichten, Titel, Aktionsleisten und Bossleisten
- Bedingte Verhaltensweisen: Verschiedene Aktionen basierend auf Spieleranzahl, Standort oder Boss-Zustand
Implementierung
Skripte können auf zwei Arten implementiert werden:
- Power-Dateien: Erstelle eigenständige
.yml-Dateien in~/plugins/EliteMobs/powers/ - Benutzerdefinierte Boss-Dateien: Füge
eliteScript:-Abschnitte direkt zu benutzerdefinierten Boss-Konfigurationen hinzu
Detaillierte Anweisungen zum Erstellen von Powers und benutzerdefinierten Bossen findest du unter:
Leistungshinweise
Beachte beim Erstellen von Skripten diese Best Practices:
- Verwende Cooldowns, um Leistungsprobleme durch schnell auslösende Skripte zu vermeiden
- Zonenbasierte Ereignisse (ZoneEnterEvent, ZoneLeaveEvent) sind rechenintensiv - verwende kleine Zonen und angemessene Cooldowns
- Verwende Filterbedingungen, um unnötige Prüfungen zu reduzieren
- Teste Skripte gründlich, bevor du sie auf Produktivservern einsetzt
Nächste Schritte
Um deine eigenen EliteScripts zu erstellen:
- Lies die Events-Seite, um zu verstehen, was Skripte auslösen kann
- Erkunde die Actions-Seite, um zu sehen, welche Verhaltensweisen du erstellen kannst
- Lerne Targets kennen, um zu steuern, was deine Aktionen beeinflussen
- Studiere die Beispiele auf jeder Komponentenseite
- Beginne mit einfachen Skripten und steigere die Komplexität schrittweise
