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)