Zum Inhalt springen

Hilfe:Skript-API

Aus SW Pedia
Version vom 14. Oktober 2026, 21:36 Uhr von Maintenance script (Diskussion | Beiträge) (Skript-Bibliothek)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Alle Befehle, die ein Skript im Schattenwelt-Client benutzen kann. Skripte sind Python 3 (über pocketpy); die Namen folgen der Legion-API von TazUO, viele TazUO-Skripte laufen deshalb mit wenig Anpassung. Benutzung, Regeln und Teilen: Hilfe:Skripte.

Grundlagen

  • Alle Befehle liegen im Modul API, das ohne import verfügbar ist.
  • Serials, Grafiken und Farben sind Zahlen, z. B. 0x0EED.
  • print(...) schreibt mit dem Skriptnamen ins Journal, Fehler erscheinen rot.
  • Eigene Hilfsmodule im Ordner Scripts lassen sich mit import laden.
  • .script <name> startet oder stoppt ein Skript, .script stop stoppt alle. Bis zu 15 Skripte laufen gleichzeitig.
  • Höchstens eine Aktion pro Sekunde über alle Skripte. Aktionen sind Benutzen, Bewegen, Ausrüsten, Zaubern, Skills, Angriff, Ziele, Sprechen und Gump-Antworten.

Nachrichten und Ablauf

Befehl Beschreibung
SysMsg(msg, hue=946) Systemnachricht, nur für dich
Msg(msg) sprechen
EmoteMsg(msg) Emote
HeadMsg(msg, serial, hue=946) Text über einem Objekt, nur für dich
Pause(sekunden) warten (bis 600 s)
Stop() Skript beenden

Spieler

API.Player liefert immer aktuelle Werte: Serial, Name, Hits, HitsMax, Mana, ManaMax, Stam, StamMax, Str, Dex, Int, Weight, WeightMax, Gold, X, Y, Z, IsDead, IsPoisoned, InWarMode, IsHidden.

API.Backpack ist die Serial deines Rucksacks.

Suchen

Befehl Ergebnis
FindItem(serial) Item oder None
FindType(grafik, container=None, range=None, hue=None, minamount=0) erstes passendes Item oder None
FindTypeAll(grafik, container=None, range=None, hue=None, minamount=0) Liste von Items
FindLayer(layer, serial=None) getragenes Item auf einem Layer
ItemsInContainer(container, recursive=False) Liste von Items
Contents(container) Anzahl Items im Behälter
GetItemsOnGround(distance=2, graphic=None) Items am Boden in der Nähe
FindMobile(serial) Mobile oder None
GetAllMobiles(distance=18) Liste von Mobiles
NearestMobile(distance=10) nächstes lebendes Mobile oder None
GetSkill(name_oder_nummer) Skillwert als Zahl

Ein Item hat Serial, Graphic, Hue, Amount, Name, Container, Layer, X, Y, Z, Distance, OnGround, IsCorpse. Ein Mobile hat Serial, Graphic, Hue, Name, X, Y, Z, Distance, Hits, HitsMax, Notoriety, IsDead, IsHuman, IsPet, IsYou. Diese Werte sind ein Schnappschuss zum Zeitpunkt des Aufrufs.

Handeln

Befehl Beschreibung
UseObject(serial) Doppelklick
UseType(grafik, hue=None, container=None) erstes passendes Item benutzen, True/False
ClickObject(serial) Einfachklick
MoveItem(serial, ziel, amount=0) Item in einen Behälter legen (0 = ganzer Stapel)
EquipItem(serial) anziehen
CastSpell(name_oder_nummer) zaubern
UseSkill(name_oder_nummer) Fertigkeit benutzen
Attack(serial) angreifen (keine Spieler)
SetWarMode(True/False) Kampfmodus

Ziele

Befehl Beschreibung
HasTarget(type='any') gibt es gerade einen Zielcursor? (any, harmful, beneficial, neutral)
WaitForTarget(type='any', timeout=5) auf Zielcursor warten, True/False
Target(serial) Objekt anvisieren
TargetSelf() sich selbst anvisieren
TargetLocation(x, y, z, graphic=None) Boden oder Static anvisieren
CancelTarget() Zielcursor abbrechen

Journal

Befehl Beschreibung
InJournal(text, clear=False) kam der Text seit Skriptstart im Journal vor? Mit $ am Anfang ist es ein regulärer Ausdruck
InJournalAny(liste, clear=False) einer der Texte
ClearJournal() gemerkte Zeilen leeren

Gumps (Server-Fenster)

Befehl Beschreibung
HasGump(gumpid=None) ist ein Server-Gump offen?
WaitForGump(gumpid=None, timeout=5) warten, True/False
ReplyGump(button, gumpid=None) Knopf drücken
CloseGump(gumpid=None) schließen

Gespeicherte Variablen

Werte, die ein Skript über einen Neustart hinaus behalten soll. Sie sind immer Text (Zahlen werden umgewandelt).

Befehl Beschreibung
SavePersistentVar(name, wert, scope=API.PersistentVar.Char) speichern
GetPersistentVar(name, default='', scope=API.PersistentVar.Char) lesen, default wenn nicht vorhanden
RemovePersistentVar(name, scope=API.PersistentVar.Char) löschen, True/False

Bereiche: API.PersistentVar.Char (dieser Charakter), Account (alle Charaktere des Kontos), Server (alle Konten auf diesem Server), Global (alles auf diesem Rechner).

anzahl = int(API.GetPersistentVar("Runden", "0")) + 1
API.SavePersistentVar("Runden", anzahl)
print(f"Skript lief schon {anzahl} Mal")

Beispiel

while True:
    if API.Player.Hits < API.Player.HitsMax * 0.6:
        if API.UseType(0x0E21):          # Bandage
            if API.WaitForTarget():
                API.TargetSelf()
        API.Pause(8)
    API.Pause(1)