DE UO Topic gumps - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Home · C# · IDE · UO API · A–Z · Beispiele · Sprachen
Serverfenster lesen und Antworten senden: Schaltflächen, Kontrollkästchen, Optionsfelder und Felder. ID-Fenster, serial-Eigentümer und geöffneter Fensterindex sind nicht austauschbar.
| Thema | Befehle und Erklärungen |
|---|---|
| GetGump | UO.GetGump |
| GetGumpInfo | UO.GetGumpInfo |
| Gump ID / Serial | UO.GetGumpID · UO.GetGumpSerial |
| Text Lines | UO.GetGumpTextLines · UO.GetGumpFullLines · UO.GetGumpShortLines |
| Buttons | UO.GetGumpButtonsDescription · UO.NumGumpButton |
| CheckBox | UO.NumGumpCheckBox · UO.GumpAutoCheckBox |
| RadioButton | UO.NumGumpRadiobutton · UO.GumpAutoRadiobutton |
| TextEntry | UO.NumGumpTextEntry · UO.GumpAutoTextEntry |
| WaitGump | UO.WaitGump |
| SelectGump | UO.SelectGump |
| SendGumpSelect | UO.SendGumpSelect |
| Ignore Gumps | UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial · UO.ClearGumpsIgnore |
| Close Gump | UO.IsGumpCanBeClosed · UO.CloseClientGump · UO.CancelGump |
UO.GetGump · UO.GetGumpID · UO.GetGumpSerial · UO.GetGumpCount · UO.GetGumpsCount · UO.GetGumpInfo · UO.GetGumpButtonsDescription · UO.GetGumpFullLines · UO.GetGumpShortLines · UO.GetGumpTextLines · UO.GumpObject · UO.LastGump · UO.IsGump · UO.GumpExists · UO.IsGumpCanBeClosed
UO.NumGumpButton · UO.NumGumpCheckBox · UO.NumGumpRadiobutton · UO.NumGumpTextEntry · UO.GumpAutoCheckBox · UO.GumpAutoRadiobutton · UO.GumpAutoTextEntry · UO.WaitGump · UO.WaitGumpCheck · UO.WaitGumpEntry · UO.SelectGump · UO.SendGumpSelect · UO.SetGump
UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial · UO.ClearGumpsIgnore · UO.CancelGump · UO.CloseClientGump
Jede Befehlskarte verfügt über mehrere unabhängige Szenarien: Direktcode, Funktionen und Klassen. Nachfolgend finden Sie ausgewählte kurze Szenarien; Einschränkungen und eine vollständige Analyse sind geplant.
Parameter, Ergebnis und alle Szenarien
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
UO.Print("Serial=" + Hex(info[0]));
UO.Print("GumpID=" + Hex(info[1]));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter, Ergebnis und alle Szenarien
UO.WaitGump(100);
UO.UseObject("0x40001234");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddGumpIgnoreByID(object? id);Fügt den numerischen ID-Gump zur lokalen Ausnahmeliste hinzu, die von UO.GetGumpInfo verwendet wird.
-
idist ein numerischer ID-Gump, derUO.GetGumpInfozurückgibt.
void. Durch das Hinzufügen von ID wird das Fenster nicht geschlossen und es wird auch nicht bestätigt, dass der Server es verarbeitet hat.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.AddGumpIgnoreByID");
UO.AddGumpIgnoreByID(123);Parameter und Ablauf:
- Beseitigen Sie Gump mit ID 123 aus dem Ergebnis von UO.GetGumpInfo.
UO.AddGumpIgnoreByID(123);Parameter und Ablauf:
- Speichern Sie ID in einer Variablen, bevor Sie die Ausnahme auslösen.
return RunScenario();
object? RunScenario()
{
var ignoredId = 123;
UO.AddGumpIgnoreByID(ignoredId);
return null;
}Parameter und Ablauf:
- Fügen Sie etwas ID hinzu; Jede Ausnahme betrifft GetGumpInfo.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.AddGumpIgnoreByID(123);
UO.AddGumpIgnoreByID(456);
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: id (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "addgumpignorebyid": state.IgnoredGumpIds.Add(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddGumpIgnoreBySerial(object? serial);Fügt serial gump zur lokalen Ausnahmeliste hinzu, die von UO.GetGumpInfo verwendet wird.
-
serialist ein numerischer serial-Gump, derUO.GetGumpInfozurückgibt.
void. Durch das Hinzufügen von serial wird das Fenster nicht geschlossen und es wird auch nicht bestätigt, dass der Server es verarbeitet hat.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.AddGumpIgnoreBySerial");
UO.AddGumpIgnoreBySerial(1073741824);Parameter und Ablauf:
- Beseitigen Sie Gummi mit serial 1073741824 aus dem Ergebnis UO.GetGumpInfo.
UO.AddGumpIgnoreBySerial(1073741824);Parameter und Ablauf:
- Übergeben Sie serial aus der Variablen.
return RunScenario();
object? RunScenario()
{
var ignoredSerial = 1073741824;
UO.AddGumpIgnoreBySerial(ignoredSerial);
return null;
}Parameter und Ablauf:
- Eliminieren Sie zwei serial Gumps aus der Ausgabe von GetGumpInfo.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.AddGumpIgnoreBySerial(1073741824);
UO.AddGumpIgnoreBySerial(1073741825);
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: serial (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "addgumpignorebyserial": state.IgnoredGumpSerials.Add(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelGump();
void UO.CancelGump(object? gumpId);Schließt den ausgewählten Server-Gump über einen kompatiblen Resolver CloseSimpleGump.
-
gumpId– Optionaler int/numerischer Wert. Der Resolver sucht zunächst nach einem passenden Server/Lokal serial und dann nach dem Server-Gump-Index. Ohne Argument wird -1 übergeben und der letzte Gump ausgewählt.
void – kein Rückgabewert.
- Ein Argument namens gumpId garantiert nicht, dass nur ID gesucht wird. CloseGumpUnsafe für Server-Gump sendet die Schaltfläche 0 und löscht dann das lokale Fenster. Wenn kein Gump gefunden wird, gibt es keine Aktion. Dies ist weder CancelMenu, noch löscht es das ausstehende WaitGump.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.CancelGump");
UO.CancelGump();Parameter und Ablauf:
- Das Formular ohne Argument wählt den neuesten verfügbaren Server-Gump aus.
UO.CancelGump();Parameter und Ablauf:
- Es wird der tatsächliche ID des ersten Gumps verwendet; Die Liste kann sich zwischen Anrufen ändern.
return RunScenario();
object? RunScenario()
{
var id = UO.GetGumpID(0);
if (Truth(id != 0))
{
UO.CancelGump(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Der Wert -1 wählt explizit den letzten Gump im Resolver aus.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.CancelGump(-1);
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseSimpleGump:bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;Parameter: gumpId (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseSimpleGump:bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearGumpsIgnore();Löscht beide Sätze der ignorierten Laufzeit von Gump ID und Gump serial.
Es gibt keine Parameter.
void – kein Rückgabewert.
- Schließt die Fenster nicht. Nach dem Löschen kann GetGumpInfo erneut einen Schnappschuss des zuvor ignorierten Gumps zurückgeben.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.ClearGumpsIgnore");
UO.ClearGumpsIgnore();Parameter und Ablauf:
- Löscht beide Sätze der ignorierten Laufzeit von Gump ID und Gump serial.
UO.ClearGumpsIgnore();Parameter und Ablauf:
- Entfernen Sie die hinzugefügte Ignorierregel.
return RunScenario();
object? RunScenario()
{
UO.AddGumpIgnoreByID(0x1234);
UO.ClearGumpsIgnore();
return null;
}Parameter und Ablauf:
- Das Löschen eines leeren Satzes ist akzeptabel und erstellt keine neue Einstellung.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ClearGumpsIgnore();
UO.ClearGumpsIgnore();
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: void / Unit.
Beim Aufruf:
Interner Implementierungscode; kein eigenständiges Skript.
case "cleargumpsignore":
state.IgnoredGumpIds.Clear(); state.IgnoredGumpSerials.Clear(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseClientGump(object? id);Entfernt lokale Server-Gumps, deren ServerSerial mit dem übergebenen ID übereinstimmt.
-
id- int/numerisch ID Gump im Vergleich zu ServerSerial. Dies ist weder ein Listenindex noch ein lokaler serial.
void – kein Rückgabewert.
- Durchläuft ServerGumpsUnsafe, erstellt einen Snapshot aller Übereinstimmungen und ruft Dispose auf. Sendet die Schaltfläche 0 oder das Formularergebnis nicht an den Server. Wenn es keine Übereinstimmungen gibt, ändert sich nichts.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.CloseClientGump");
UO.CloseClientGump(UO.GetGumpID(0));Parameter und Ablauf:
- GetGumpID stellt Server ID bereit; CloseClientGump entfernt übereinstimmende lokale Fenster.
if (Truth(UO.GetGumpsCount() > 0))
{
var id = UO.GetGumpID(0);
UO.CloseClientGump(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Geben Sie ID des gewünschten Server-Gumps an; Es sind keine Übereinstimmungen akzeptabel.
return RunScenario();
object? RunScenario()
{
var id = 0x12345678;
UO.CloseClientGump(id);
return null;
}Parameter und Ablauf:
- Nach dem ersten Dispose findet der zweite Close das Fenster meist nicht mehr.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var id = UO.GetGumpID(0);
if (Truth(id != 0))
{
UO.CloseClientGump(id);
UO.CloseClientGump(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: id (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseClientGump:bridge.CloseClientGump(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "closeclientgump": bridge.CloseClientGump(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGump(object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier, object? key);Liest ein Feld des ausgewählten Server-Gumps. Ermöglicht Ihnen, die Fensterauswahl explizit festzulegen.
-
gumpId– Optionales erstes int in den Formen (gumpId,Bezeichner) und (gumpId,Bezeichner,Schlüssel). int oder numerische Zeichenfolge: Sucht zuerst nach einer genauen GumpID/serial-Übereinstimmung, dann nach dem Index mit 0. -1 ist der von diesem Skript ausgewählte Gump, und wenn er nicht vorhanden ist, der letzte in der aktuellen Liste. Andere negative int behalten 32-Bit ID. Dies ist ein Selektor, im Gegensatz zum strikten GumpIndex in NumGump*. -
identifier- string Groß- und Kleinschreibung wird nicht beachtet. Alle unterstützten Werte und Ergebnistypen werden im Abschnitt „Rückgaben“ aufgeführt. Unbekannter Name gibt eine leere Zeichenfolge zurück. -
key– Optional int, Standard – 1. Index mit 0 für Schaltfläche/Text/object/Befehl; Dies ist keine ID-Steuerung. Ein negativer Index und außerhalb der Grenzen führen zu 0 für Schaltflächen oder einer leeren Zeichenfolge für Textfelder. Andere Bezeichner verwenden keinen Schlüssel.
Die Art des Ergebnisses hängt vom Identifikator ab. int: buttonlen – Anzahl der regulären Tasten; button – ButtonID nach Indexschlüssel; textlen – Anzahl der verfügbaren Textelemente; injid – aktueller Fensterindex; antwortete – 0 (Antwortverlauf wird nicht gespeichert); inclient – 1 für ein gefundenes Live-Fenster, 0 falls nicht vorhanden; objectcount – Anzahl der Live-Steuerelemente, einschließlich verschachtelter. string: serial und Gumpid – Hex-Strings 0xXXXXXXXX; text – Elementtext am Indexschlüssel; object – Name des Steuerungstyps; Befehl – Beschreibung des Steuerelements (Typ, Seite, ID, Koordinaten, Abmessungen und unterstützte Felder). Wenn kein Fenster vorhanden ist, ergeben numerische Bezeichner 0, Zeichenfolgenbezeichner eine leere Zeichenfolge. injid=0 ist ebenfalls ein gültiger erster Index: 0 allein beweist nicht das Fehlen eines Fensters. Dies ist kein Array oder Pascal TGumpInfo.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- SelectGump/InfoGump gibt das ausgewählte Fenster nur in der aktuellen Laufzeit an. Wenn das ausgewählte Fenster geschlossen ist, wird das letzte Element in der aktuellen Liste verwendet, das nicht unbedingt das aktuellste Element ist.
- textlen/text beziehen sich auf die verfügbaren Textsteuerelemente, nicht auf den ursprünglichen String-Pool des Serverpakets. object/Befehl bezieht sich auf den gesamten Baum der Live-Steuerelemente. Indizes aus verschiedenen Listen können nicht gemischt werden.
- Jeder Aufruf liest den aktuellen Zustand separat aus. Für übereinstimmende serial, GumpID und Listen verwenden Sie GetGumpInfo.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
object? result = UO.GetGump("gumpid");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- gumpid und serial geben Strings zurück, die bereits hexadezimal formatiert sind; kein zusätzliches Hex erforderlich. Leere Zeilen bedeuten, dass beim Lesen kein Fenster vorhanden ist.
var id = UO.GetGump("gumpid");
var serial = UO.GetGump("serial");
UO.Print(id + " / " + serial);Parameter und Ablauf:
- buttonlen – Anzahl der Knöpfe; i ist der Index der Zeile von 0 bis count-1. Schaltfläche – ID für Antwort, nicht für Grafiken oder Index. Wenn Sie das Fenster wechseln, lesen Sie die Liste erneut.
return RunScenario();
object? RunScenario()
{
var count = UO.GetGump("buttonlen");
var i = 0;
while (Truth(i < count))
{
var button = UO.GetGump("button", i);
UO.Print(Convert.ToString(button));
i = i + 1;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- 0x12345678 ist ein Beispiel für GumpID/serial, ersetzen Sie ID durch die gewünschte Form. text mit key=0 liest das erste verfügbare Textsteuerelement; Dies ist eine andere Liste als die Schaltfläche.
- SelectGump meldet das Fehlen des angegebenen Fensters, blockiert jedoch nicht das nachfolgende Lesen: Überprüfen Sie das zurückgegebene Gumpid bei Bedarf separat.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.SelectGump(0x12345678);
if (Truth(UO.GetGump("inclient")))
{
var count = UO.GetGump("textlen");
if (Truth(count > 0))
{
UO.Print(UO.GetGump("text", 0));
}
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: identifier (String)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.LastGump:LastGump(identifier, -1).
Interner Implementierungscode; kein eigenständiges Skript.
public InjectionValue GetGump(string identifier) => LastGump(identifier, -1);Parameter: gumpId (Integer/String), identifier (String/Integer)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.GetGump:GetGump(gumpId, identifier, -1).
Interner Implementierungscode; kein eigenständiges Skript.
public InjectionValue GetGump(int gumpId, string identifier) => GetGump(gumpId, identifier, -1);Parameter: gumpId (Integer/String), identifier (String/Integer)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.LastGump:LastGump(identifier, key).
Interner Implementierungscode; kein eigenständiges Skript.
public InjectionValue GetGump(string identifier, int key) => LastGump(identifier, key);Parameter: gumpId (Integer), identifier (String), key (Integer)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.ConvertGumpValue:ConvertGumpValue(identifier, bridge.GetGumpValue(gumpId, identifier, key)). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpValue:bridge.GetGumpValue(gumpId, identifier, key).
Interner Implementierungscode; kein eigenständiges Skript.
public InjectionValue GetGump(int gumpId, string identifier, int key)
=> ConvertGumpValue(identifier, bridge.GetGumpValue(gumpId, identifier, key));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpButtonsDescription(object? gumpIndex);Gibt Beschreibungen der regulären Server-Gump-Schaltflächen zurück.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
Array – Beschreibungen der regulären Schaltflächen. [] – ungültiger Index oder keine passenden Elemente. Der Zeilenindex beginnt mit 0; es handelt sich nicht um eine ID-Steuerung.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Jede Zeile enthält ButtonID, Aktion, toPage und Grafiken. Optionsfelder sind keine normalen Antwortschaltflächen.
- Bei SilentMode=0 wird das nicht leere Ergebnis auch zum Textfenster hinzugefügt und dieses geöffnet. SetSilentMode(1) lässt nur die Rückgabe des Arrays zu.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
object? result = UO.GetGumpButtonsDescription(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex. ArrayLength prüft, ob eine Leitung vorhanden ist, bevor Leitungen aufgerufen werden[0].
var lines = UO.GetGumpButtonsDescription(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- SetSilentMode(1) deaktiviert das zusätzliche Textfenster. Der explizite Print im Beispiel gibt weiterhin Zeichenfolgen aus.
- i ist der Array-Index; Entnehmen Sie ID des gewünschten Tasters/Schalters der entsprechenden Beschreibung.
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpButtonsDescription(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Der Zählerstand wird in den Index des letzten Fensters umgerechnet. Die Daten werden vom geladenen Server-Gump gelesen; Lokale Fenster sind hier nicht enthalten.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpButtonsDescription(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: dynamic / Array.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GumpLinesResult:GumpLinesResult(bridge.GetGumpButtonsDescription(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpButtonsDescription:bridge.GetGumpButtonsDescription(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumpbuttonsdescription": return GumpLinesResult(bridge.GetGumpButtonsDescription(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpCount();Kurzfassung GetGumpsCount: Anzahl der aktiven Server-Gumps.
Es gibt keine Parameter.
int >= 0 — Anzahl der Fenster, nicht der Index des letzten Fensters. 0 – die Liste ist leer.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.GetGumpCount();
UO.Print("GetGumpCount: " + Convert.ToString(result));Parameter und Ablauf:
- Dies ist die Anzahl der Server-Gumps, nicht der Fensterindex; Lokaler Rucksack und Karte sind hier nicht enthalten.
int count = UO.GetGumpCount();
UO.Print($"Active server gumps: {count}");Parameter und Ablauf:
- Indizes beginnen bei Null. Die Liste kann sich zwischen Anrufen ändern, daher wird vor dem Lesen die aktuelle Menge überprüft.
return RunScenario();
object? RunScenario()
{
int count = UO.GetGumpCount();
for (int index = 0; index < count; index++)
{
if (index >= UO.GetGumpCount())
break;
UO.Print($"Gump {index}: ID={UO.GetGumpID(index)}, serial={UO.GetGumpSerial(index)}");
}
return null;
}Parameter und Ablauf:
- Die Wartezeit ist durch ein Timeout begrenzt. Das bloße Vorhandensein eines Fensters beweist nicht, dass es sich hierbei um einen notwendigen Fehler handelt; Zur Auswahl markieren Sie es ID.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
bool appeared = await WaitForGump(3000);
UO.Print(appeared ? "A server gump appeared" : "No server gump within the timeout");
return null;
}
async Task<bool> WaitForGump(int timeoutMs)
{
var timer = System.Diagnostics.Stopwatch.StartNew();
while (timer.ElapsedMilliseconds < timeoutMs)
{
if (UO.GetGumpCount() > 0)
return true;
await WaitAsync(50);
}
return false;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.GetGumpCount. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpCount:bridge.GetGumpCount().
Interner Implementierungscode; kein eigenständiges Skript.
public int GetGumpCount() => bridge.GetGumpCount();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpFullLines(object? gumpIndex);Gibt Beschreibungen aller lebenden Elemente zurück, einschließlich verschachtelter Server-Gumps.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
Array – Beschreibungen aller lebenden Elemente, einschließlich verschachtelter. [] – ungültiger Index oder keine passenden Elemente. Der Zeilenindex beginnt mit 0; es handelt sich nicht um eine ID-Steuerung.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Beschreibungen des aktuellen Kontrollbaums: Typ, Seite, ID, X/Y, Größen und unterstützte Felder. Dies ist kein rohes Server-Markup-Paket.
- Bei SilentMode=0 wird das nicht leere Ergebnis auch zum Textfenster hinzugefügt und dieses geöffnet. SetSilentMode(1) lässt nur die Rückgabe des Arrays zu.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
object? result = UO.GetGumpFullLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex. ArrayLength prüft, ob eine Leitung vorhanden ist, bevor Leitungen aufgerufen werden[0].
var lines = UO.GetGumpFullLines(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- SetSilentMode(1) deaktiviert das zusätzliche Textfenster. Der explizite Print im Beispiel gibt weiterhin Zeichenfolgen aus.
- i ist der Array-Index; Entnehmen Sie ID des gewünschten Tasters/Schalters der entsprechenden Beschreibung.
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpFullLines(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Der Zählerstand wird in den Index des letzten Fensters umgerechnet. Die Daten werden vom geladenen Server-Gump gelesen; Lokale Fenster sind hier nicht enthalten.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpFullLines(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: dynamic / Array.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GumpLinesResult:GumpLinesResult(bridge.GetGumpFullLines(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpFullLines:bridge.GetGumpFullLines(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumpfulllines": return GumpLinesResult(bridge.GetGumpFullLines(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpID(object? gumpIndex);Liest die GumpID-Fenstertyp-ID aus dem Gump-Index des Servers.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
int – 32-Bit-Fenstertyp-ID GumpID. 0 ist ein ungültiger Index (serial=0 kann auch im Fenster selbst vorhanden sein). Wenn das höchstwertige Bit gesetzt ist, ist int negativ: Verwenden Sie Hex(Wert) zur Anzeige. Dies ist kein type eines Themas oder ein Index.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Verwenden Sie für ein übereinstimmendes serial/GumpID-Paar ein GetGumpInfo: die Felder info[0] und info[1].
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.GetGumpID(0);
UO.Print("GetGumpID: " + Convert.ToString(result));Parameter und Ablauf:
- 0 ist der erste Index der Serverliste. Hex speichert die Bitdarstellung des negativen int.
var value = UO.GetGumpID(0);
UO.Print(Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parameter und Ablauf:
- Bei einer unveränderlichen Liste liegt die Anzahl nach dem letzten Index, also fehlt=0. Der letzte gültige Index ist count-1.
return RunScenario();
object? RunScenario()
{
var count = UO.GetGumpsCount();
var missing = UO.GetGumpID(count);
UO.Print(Hex(missing));
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parameter und Ablauf:
- 0x999 ist ein Beispiel für ID; Ersetzen Sie es durch das echte ID des gewünschten Fensters. Index, ID und serial Besitzer sind unterschiedliche Werte.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int wantedId = 0x00000999;
int count = UO.GetGumpsCount();
for (int index = 0; index < count; index++)
{
if (index >= UO.GetGumpsCount())
break;
if (UO.GetGumpID(index) == wantedId)
{
UO.Print($"Gump index {index}, serial {UO.GetGumpSerial(index)}");
return index;
}
}
return -1;
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpId:bridge.GetGumpId(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumpid": return new InjectionValue(bridge.GetGumpId(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpInfo(object? gumpIndex);Gibt eine konsistente Momentaufnahme der Bezeichner und Elemente eines einzelnen Server-Gumps zurück.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
Array – genau fünf Elemente: [0] int serial; [1] int GumpID; [2] Array nicht leerer Texte; [3] Array Beschreibungen regulärer Schaltflächen; [4] Array mit Beschreibungen aller lebenden Elemente, einschließlich verschachtelter Elemente. Ein ungültiger/geschlossener oder von diesem Skript ignorierter Gump erzeugt ein leeres Array []. ID mit dem höchstwertigen Bit wird durch einen negativen int dargestellt. Ein leeres Textarray an sich bedeutet nicht, dass kein Fenster vorhanden ist.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Der gesamte Snapshot wird in einer Game-Thread-Anfrage kopiert. Durch Ändern/Schließen des Fensters nach der Rückkehr wird das gespeicherte Array nicht geändert.
- Die Beschreibung des Steuerelements gibt den Typ, die Seite, ID, X/Y und die Abmessungen an. Schaltflächen enthalten zusätzlich ButtonID, Aktion, toPage und graphic; Schalter - ID, geprüft, inaktiv/aktiv. Texte dürfen Leerzeichen und = enthalten; Die Zeichenfolge kann nicht bedingungslos durch Leerzeichen analysiert werden.
- AddGumpIgnoreByID/AddGumpIgnoreBySerial verbirgt nur das Ergebnis dieser Lesung im aktuellen Skript; ClearGumpsIgnore entfernt diese Filter. GetGumpsCount verringert sich nicht.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
object? result = UO.GetGumpInfo(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- GumpIndex=0 – der erste Server-Gump. Die Längenprüfung schützt den Zugriff auf fehlende Fensterfelder.
- info[0] – serial, info[1] – GumpID; beide gehören zur selben Aufnahme.
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
UO.Print("Serial=" + Hex(info[0]));
UO.Print("GumpID=" + Hex(info[1]));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- info[3] – Array von Schaltflächenbeschreibungen; Das ButtonID-Feld in der Zeile gibt ID für die Antwort an. i ist nur der Zeilenindex, nicht die ButtonID.
- Optionsfelder sind Optionsfelder und erscheinen in der Info[4], nicht in der Liste der regulären Schaltflächen.
return RunScenario();
object? RunScenario()
{
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var buttons = info[3];
var i = 0;
while (Truth(i < ArrayLength(buttons)))
{
UO.Print(buttons[i]);
i = i + 1;
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- info[2] – Kopie der Texte. Das Schließen ist nur für das nicht gesperrte Fenster NoClose zulässig.
- Beim Schließen werden gespeicherte Texte nicht gelöscht; Für ein bestehendes Fenster ist auch ein leeres Textarray akzeptabel.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var texts = info[2];
UO.CloseSimpleGump(0);
if (Truth(ArrayLength(texts) > 0))
{
UO.Print(texts[0]);
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: dynamic / Array.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpId:bridge.GetGumpId(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpSerial:bridge.GetGumpSerial(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpTextLines:bridge.GetGumpTextLines(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpButtonsDescription:bridge.GetGumpButtonsDescription(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpFullLines:bridge.GetGumpFullLines(index). -
InjectionScript.Runtime.InjectionApiUO.StringArray:StringArray(snapshot.Text).
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumpinfo":
{
int index = Arg(0);
GumpSnapshot snapshot;
if (bridge is IApiGumpAccess reader)
snapshot = reader.ReadGump(index);
else
{
int id = bridge.GetGumpId(index);
snapshot = id == 0 ? null : new GumpSnapshot(bridge.GetGumpSerial(index), id,
bridge.GetGumpTextLines(index), bridge.GetGumpButtonsDescription(index), bridge.GetGumpFullLines(index));
}
if (snapshot == null || state.IgnoredGumpIds.Contains(snapshot.Id)
|| state.IgnoredGumpSerials.Contains(snapshot.Serial))
return new InjectionValue(Array.Empty<InjectionValue>());
return new InjectionValue(new[]
{
new InjectionValue(snapshot.Serial), new InjectionValue(snapshot.Id), StringArray(snapshot.Text),
StringArray(snapshot.Buttons), StringArray(snapshot.Controls)
});
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpSerial(object? gumpIndex);Liest serial Instanz-/Fensterbesitzer nach Server-Gump-Index.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
int ist das 32-Bit serial der Fensterinstanz/des Fensterbesitzers. 0 ist ein ungültiger Index (serial=0 kann auch im Fenster selbst vorhanden sein). Wenn das höchstwertige Bit gesetzt ist, ist int negativ: Verwenden Sie Hex(Wert) zur Anzeige. Dies ist nicht das type des Themas und kein Index.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Verwenden Sie für ein übereinstimmendes serial/GumpID-Paar ein GetGumpInfo: die Felder info[0] und info[1].
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.GetGumpSerial(0);
UO.Print("GetGumpSerial: " + Convert.ToString(result));Parameter und Ablauf:
- 0 ist der erste Index der Serverliste. Hex speichert die Bitdarstellung des negativen int.
var value = UO.GetGumpSerial(0);
UO.Print(Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parameter und Ablauf:
- Bei einer unveränderlichen Liste liegt die Anzahl nach dem letzten Index, also fehlt=0. Der letzte gültige Index ist count-1.
return RunScenario();
object? RunScenario()
{
var count = UO.GetGumpsCount();
var missing = UO.GetGumpSerial(count);
UO.Print(Hex(missing));
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parameter und Ablauf:
- Serial ist Eigentum des Serverfensters oder seines Eigentümers gemäß dem Befehlsvertrag. Es kann nicht anstelle des Gump-Index verwendet werden.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int count = UO.GetGumpsCount();
for (int index = 0; index < count; index++)
{
if (index >= UO.GetGumpsCount())
break;
int serial = UO.GetGumpSerial(index);
UO.Print($"Window {index}: serial={UO.Int2Hex(serial)}, ID={UO.GetGumpID(index)}");
}
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpSerial:bridge.GetGumpSerial(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumpserial": return new InjectionValue(bridge.GetGumpSerial(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpShortLines(object? gumpIndex);Gibt Beschreibungen von Textelementen und Schaltflächen des Server-Gumps zurück.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
Array – Beschreibungen von Textelementen und Schaltflächen. [] – ungültiger Index oder keine passenden Elemente. Der Zeilenindex beginnt mit 0; es handelt sich nicht um eine ID-Steuerung.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Die kurze Liste schließt Dekorationen ohne Text und ohne den Button-Typ aus; Enthält Optionsfelder.
- Bei SilentMode=0 wird das nicht leere Ergebnis auch zum Textfenster hinzugefügt und dieses geöffnet. SetSilentMode(1) lässt nur die Rückgabe des Arrays zu.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
object? result = UO.GetGumpShortLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex. ArrayLength prüft, ob eine Leitung vorhanden ist, bevor Leitungen aufgerufen werden[0].
var lines = UO.GetGumpShortLines(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- SetSilentMode(1) deaktiviert das zusätzliche Textfenster. Der explizite Print im Beispiel gibt weiterhin Zeichenfolgen aus.
- i ist der Array-Index; Entnehmen Sie ID des gewünschten Tasters/Schalters der entsprechenden Beschreibung.
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpShortLines(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Der Zählerstand wird in den Index des letzten Fensters umgerechnet. Die Daten werden vom geladenen Server-Gump gelesen; Lokale Fenster sind hier nicht enthalten.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpShortLines(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: dynamic / Array.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GumpLinesResult:GumpLinesResult(bridge.GetGumpShortLines(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpShortLines:bridge.GetGumpShortLines(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumpshortlines": return GumpLinesResult(bridge.GetGumpShortLines(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpTextLines(object? gumpIndex);Gibt nicht leere Texte von Beschriftungen, HTML, Eingabefeldern und Beschriftungen von Server-Gump-Schaltern zurück.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
Array – nicht leere Texte von Beschriftungen, HTML, Eingabefeldern und Schalterbeschriftungen. [] – ungültiger Index oder keine passenden Elemente. Der Zeilenindex beginnt mit 0; es handelt sich nicht um eine ID-Steuerung.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Nur Text; ButtonID, Abmessungen und Struktur sind nicht enthalten. Druckt nichts extra.
- GetGumpTextLines öffnet kein Textfenster.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
object? result = UO.GetGumpTextLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex. ArrayLength prüft, ob eine Leitung vorhanden ist, bevor Leitungen aufgerufen werden[0].
var lines = UO.GetGumpTextLines(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- SetSilentMode(1) deaktiviert das zusätzliche Textfenster. Der explizite Print im Beispiel gibt weiterhin Zeichenfolgen aus.
- i ist der Array-Index; Entnehmen Sie ID des gewünschten Tasters/Schalters der entsprechenden Beschreibung.
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpTextLines(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Der Zählerstand wird in den Index des letzten Fensters umgerechnet. Die Daten werden vom geladenen Server-Gump gelesen; Lokale Fenster sind hier nicht enthalten.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpTextLines(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: dynamic / Array.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.StringArray:StringArray(bridge.GetGumpTextLines(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpTextLines:bridge.GetGumpTextLines(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumptextlines": return StringArray(bridge.GetGumpTextLines(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpsCount();Gibt die Anzahl der aktiven Server-Gumps zurück.
Es gibt keine Parameter.
int >= 0 — Anzahl der Fenster, nicht der Index des letzten Fensters. 0 – die Liste ist leer.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.GetGumpsCount();
UO.Print("GetGumpsCount: " + Convert.ToString(result));Parameter und Ablauf:
- Es gibt keine Argumente. count=0 bedeutet, dass in der aktuellen Liste keine Serverfenster vorhanden sind.
var count = UO.GetGumpsCount();
if (Truth(count == 0))
{
UO.Print("No server gumps");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- i ist der Index mit 0. Das resultierende ID identifiziert Fenstertypen und nicht Positionen in der Liste.
- Wenn sich die Fenster während des Spaziergangs ändern, muss die Liste erneut gelesen werden. count blockiert die Schnittstelle nicht.
return RunScenario();
object? RunScenario()
{
var count = UO.GetGumpsCount();
var i = 0;
while (Truth(i < count))
{
UO.Print(Hex(UO.GetGumpID(i)));
i = i + 1;
}
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- count-1 ist der letzte Index der aktuellen Liste, keine Garantie für das neueste Fenster. info ist leer, wenn das Fenster vor dem Lesen verschwunden ist.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var count = UO.GetGumpsCount();
if (Truth(count > 0))
{
var info = UO.GetGumpInfo(count - 1);
UO.Print(ArrayLength(info));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpCount:bridge.GetGumpCount().
Interner Implementierungscode; kein eigenständiges Skript.
case "getgumpscount": return new InjectionValue(bridge.GetGumpCount());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoCheckBox(object? checkBoxID, object? value);Setzt den Wert des Elements einmal im ersten geeigneten Server-Gump; Wenn das Element noch nicht existiert, wird das Warten erspart.
-
checkBoxID- int - genaues ID des Elements des entsprechenden Typs. Dies ist kein Index, keine GumpID und kein serial-Fenster; 0 ist das übliche ID, ohne Ersetzung des ersten Elements. -
value- int - 1 aktivieren, 0 deaktivieren. Zu den numerischen Werten ungleich Null gehören auch; 0/1 werden empfohlen. Durch die Auswahl eines Optionsfelds wird die Auswahl der benachbarten Optionsfelder seiner Gruppe aufgehoben.
void – gibt nichts zurück: weder Erfolg, noch einen neuen Wert, noch Serverbestätigung.
- Überprüft zunächst vorhandene Fenster in der aktuellen Schnittstellenreihenfolge, dann neue oder aktualisierte Serverlayouts. Wird einmalig beim ersten Treffer des Typs und ID ausgelöst. Verwenden Sie für ein bestimmtes Fenster NumGump* mit einem Index.
- Alle ausstehenden Felder werden vor den automatischen Schaltflächenantworten angewendet. Wiederholung desselben Typs und ID in einem Skript ersetzt einen Wert, der noch nicht ausgeführt wurde. Limit – 1024 ausstehende Client-Felder; Eine Überschreitung führt zu einem Skriptfehler.
- Der normale Abschluss des Vorgangs erspart das Warten. Wenn Sie den Eigentümer oder Terminate mit seinem Namen stornieren, werden seine Wartezeiten entfernt; TerminateAll löscht alles, einschließlich derjenigen, die nach Abschluss der Verfahren übrig bleiben. Die Veränderung der Welt macht die Warteschlange frei. Erwartungen werden nicht im Profil gespeichert.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.GumpAutoCheckBox");
UO.GumpAutoCheckBox(33, 1);Parameter und Ablauf:
- Der erste Parameter 33 ist ein Beispiel ID des gewünschten Elements; Ersetzen Sie es durch das echte ID von InfoGump. Der zweite ist der einzustellende Wert. Wenn kein Element vorhanden ist, bleibt die Aktion ausstehend.
UO.GumpAutoCheckBox(33, 1);Parameter und Ablauf:
- 33 ist ID des Elements, 100 ist ein Beispiel für eine Bestätigungs-ButtonID, 0x40001234 ist serial des Objekts, das das Formular öffnet. Ersetzen Sie alle drei Werte durch Ihre eigenen. Das Feld wird vor der Antwort ausgefüllt, auch wenn das Fenster später eintrifft.
return RunScenario();
object? RunScenario()
{
UO.GumpAutoCheckBox(33, 1);
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}Parameter und Ablauf:
- Beide Anrufe verwenden ID 33. Ist das Element noch nicht erschienen, gilt der letzte Wert. Ist das Fenster bereits geöffnet, werden beide Änderungen sofort der Reihe nach durchgeführt.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.GumpAutoCheckBox(33, 1);
UO.GumpAutoCheckBox(33, 0);
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: checkBoxID (Any), value (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.QueueGumpControl:QueueGumpControl("checkbox", Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1).
Interner Implementierungscode; kein eigenständiges Skript.
case "gumpautocheckbox": QueueGumpControl("checkbox", Arg(0), Text(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoRadiobutton(object? radiobuttonID, object? value);Setzt den Wert des Elements einmal im ersten geeigneten Server-Gump; Wenn das Element noch nicht existiert, wird das Warten erspart.
-
radiobuttonID- int - genaues ID des Elements des entsprechenden Typs. Dies ist kein Index, keine GumpID und kein serial-Fenster; 0 ist das übliche ID, ohne Ersetzung des ersten Elements. -
value- int - 1 aktivieren, 0 deaktivieren. Zu den numerischen Werten ungleich Null gehören auch; 0/1 werden empfohlen. Durch die Auswahl eines Optionsfelds wird die Auswahl der benachbarten Optionsfelder seiner Gruppe aufgehoben.
void – gibt nichts zurück: weder Erfolg, noch einen neuen Wert, noch Serverbestätigung.
- Überprüft zunächst vorhandene Fenster in der aktuellen Schnittstellenreihenfolge, dann neue oder aktualisierte Serverlayouts. Wird einmalig beim ersten Treffer des Typs und ID ausgelöst. Verwenden Sie für ein bestimmtes Fenster NumGump* mit einem Index.
- Alle ausstehenden Felder werden vor den automatischen Schaltflächenantworten angewendet. Wiederholung desselben Typs und ID in einem Skript ersetzt einen Wert, der noch nicht ausgeführt wurde. Limit – 1024 ausstehende Client-Felder; Eine Überschreitung führt zu einem Skriptfehler.
- Der normale Abschluss des Vorgangs erspart das Warten. Wenn Sie den Eigentümer oder Terminate mit seinem Namen stornieren, werden seine Wartezeiten entfernt; TerminateAll löscht alles, einschließlich derjenigen, die nach Abschluss der Verfahren übrig bleiben. Die Veränderung der Welt macht die Warteschlange frei. Erwartungen werden nicht im Profil gespeichert.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.GumpAutoRadiobutton");
UO.GumpAutoRadiobutton(33, 1);Parameter und Ablauf:
- Der erste Parameter 33 ist ein Beispiel ID des gewünschten Elements; Ersetzen Sie es durch das echte ID von InfoGump. Der zweite ist der einzustellende Wert. Wenn kein Element vorhanden ist, bleibt die Aktion ausstehend.
UO.GumpAutoRadiobutton(33, 1);Parameter und Ablauf:
- 33 ist ID des Elements, 100 ist ein Beispiel für eine Bestätigungs-ButtonID, 0x40001234 ist serial des Objekts, das das Formular öffnet. Ersetzen Sie alle drei Werte durch Ihre eigenen. Das Feld wird vor der Antwort ausgefüllt, auch wenn das Fenster später eintrifft.
return RunScenario();
object? RunScenario()
{
UO.GumpAutoRadiobutton(33, 1);
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}Parameter und Ablauf:
- Beide Anrufe verwenden ID 33. Ist das Element noch nicht erschienen, gilt der letzte Wert. Ist das Fenster bereits geöffnet, werden beide Änderungen sofort der Reihe nach durchgeführt.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.GumpAutoRadiobutton(33, 1);
UO.GumpAutoRadiobutton(33, 0);
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: radiobuttonID (Any), value (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.QueueGumpControl:QueueGumpControl("radio", Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1).
Interner Implementierungscode; kein eigenständiges Skript.
case "gumpautoradiobutton": QueueGumpControl("radio", Arg(0), Text(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoTextEntry(object? textEntryID, object? value);Setzt den Wert des Elements einmal im ersten geeigneten Server-Gump; Wenn das Element noch nicht existiert, wird das Warten erspart.
-
textEntryID- int - genaues ID des Elements des entsprechenden Typs. Dies ist kein Index, keine GumpID und kein serial-Fenster; 0 ist das übliche ID, ohne Ersetzung des ersten Elements. -
value- string – Feldtext, einschließlich einer Leerzeile zum Löschen. Einschränkungen hinsichtlich der Länge und zulässigen Zeichen des Feldes selbst bleiben erhalten.
void – gibt nichts zurück: weder Erfolg, noch einen neuen Wert, noch Serverbestätigung.
- Überprüft zunächst vorhandene Fenster in der aktuellen Schnittstellenreihenfolge, dann neue oder aktualisierte Serverlayouts. Wird einmalig beim ersten Treffer des Typs und ID ausgelöst. Verwenden Sie für ein bestimmtes Fenster NumGump* mit einem Index.
- Alle ausstehenden Felder werden vor den automatischen Schaltflächenantworten angewendet. Wiederholung desselben Typs und ID in einem Skript ersetzt einen Wert, der noch nicht ausgeführt wurde. Limit – 1024 ausstehende Client-Felder; Eine Überschreitung führt zu einem Skriptfehler.
- Der normale Abschluss des Vorgangs erspart das Warten. Wenn Sie den Eigentümer oder Terminate mit seinem Namen stornieren, werden seine Wartezeiten entfernt; TerminateAll löscht alles, einschließlich derjenigen, die nach Abschluss der Verfahren übrig bleiben. Die Veränderung der Welt macht die Warteschlange frei. Erwartungen werden nicht im Profil gespeichert.
- Durch ein Feld begrenzter Text kann gekürzt oder abgelehnt werden; Das gefundene Element verbraucht weiterhin eine einmalige Aktion. Der Befehl sendet keine Schaltflächenantwort und wartet nicht auf den Server. Verwenden Sie zur Überprüfung GetGumpInfo/NumGumpTextEntry.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.GumpAutoTextEntry");
UO.GumpAutoTextEntry(33, "500");Parameter und Ablauf:
- Der erste Parameter 33 ist ein Beispiel ID des gewünschten Elements; Ersetzen Sie es durch das echte ID von InfoGump. Der zweite ist der einzustellende Wert. Wenn kein Element vorhanden ist, bleibt die Aktion ausstehend.
UO.GumpAutoTextEntry(33, "500");Parameter und Ablauf:
- 33 ist ID des Elements, 100 ist ein Beispiel für eine Bestätigungs-ButtonID, 0x40001234 ist serial des Objekts, das das Formular öffnet. Ersetzen Sie alle drei Werte durch Ihre eigenen. Das Feld wird vor der Antwort ausgefüllt, auch wenn das Fenster später eintrifft.
return RunScenario();
object? RunScenario()
{
UO.GumpAutoTextEntry(33, "500");
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}Parameter und Ablauf:
- Beide Anrufe verwenden ID 33. Ist das Element noch nicht erschienen, gilt der letzte Wert. Ist das Fenster bereits geöffnet, werden beide Änderungen sofort der Reihe nach durchgeführt.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.GumpAutoTextEntry(33, "500");
UO.GumpAutoTextEntry(33, "");
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: textEntryID (Any), value (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.QueueGumpControl:QueueGumpControl("textentry", Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1).
Interner Implementierungscode; kein eigenständiges Skript.
case "gumpautotextentry": QueueGumpControl("textentry", Arg(0), Text(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GumpExists(object? id);
int UO.GumpExists(object? firstId, object? secondId);Überprüft das Vorhandensein eines Server-Gump mithilfe eines Selektors oder des genauen Paares serial/GumpID.
-
id– Ein-Argument-Formular: numerisch serial, GumpID oder Index mit 0. -1 wählt hier nicht den letzten Gump aus. -
firstId– Form mit zwei Argumenten: numerisches 32-Bit serial, einschließlich negatives int mit höchstwertigem Bit. -
secondId– Zwei-Argument-Form: genaue 32-Bit-GumpID. 0 ist eine exakte Zahl, kein Platzhalter. Nur -1 schaltet zurück zur Ein-Argument-Prüfung von firstId als serial/GumpID/index.
int - 1, wenn das entsprechende Fenster jetzt existiert; 0 sonst. Gibt keinen Index, serial oder Anzahl der Übereinstimmungen zurück.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Die Prüfung wählt kein Fenster aus und reserviert es nicht. Das Paar ID wird als Ganzes geprüft; ID mit dem höchstwertigen Bit deaktiviert den Filter nicht.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.GumpExists(0x87654321);
UO.Print("GumpExists: " + Convert.ToString(result));Parameter und Ablauf:
- 0x87654321 – die gewünschte GumpID oder serial. Ein Argument unterscheidet nicht zwischen diesen Leerzeichen ID.
var exists = UO.GumpExists(0x87654321);
UO.Print(Convert.ToString(exists));Parameter und Ablauf:
- Die erste Zahl ist serial, die zweite ist GumpID. Beide sind im vorzeichenbehafteten int negativ, aber der Vergleich behält alle 32-Bits bei.
return RunScenario();
object? RunScenario()
{
var exists = UO.GumpExists(0x87654321, 0x98765432);
if (Truth(exists))
{
UO.Print("Matching pair exists");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- info[0]/info[1] gehören zum selben Bild. exist=1 bedeutet, dass das Paar jetzt existiert; Ein erneut geöffnetes Fenster mit demselben Paar unterscheidet sich nicht vom vorherigen.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var exists = UO.GumpExists(info[0], info[1]);
UO.Print(Convert.ToString(exists));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: id (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.GumpExists. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GumpExists:bridge.GumpExists(NumberConversions.ToInt(id), -1). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(id).
Interner Implementierungscode; kein eigenständiges Skript.
public int GumpExists(InjectionValue id) => bridge.GumpExists(NumberConversions.ToInt(id), -1);Parameter: firstId (Any), secondId (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.GumpExists. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GumpExists:bridge.GumpExists(NumberConversions.ToInt(firstId), NumberConversions.ToInt(secondId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(firstId).
Interner Implementierungscode; kein eigenständiges Skript.
public int GumpExists(InjectionValue firstId, InjectionValue secondId)
=> bridge.GumpExists(NumberConversions.ToInt(firstId), NumberConversions.ToInt(secondId));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpObject(object? gumpId);Wählt einen vorhandenen Server-Gump für nachfolgende Aufrufe aus.
-
gumpId– int: Entspricht zuerst LocalSerial oder ServerSerial, dann Index Null in der aktuellen Gumps-Liste. Dies sind keine ID-Tasten.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- Bridge.SelectGump speichert _selectedServerGump. Wenn serial nicht übereinstimmt, wird der Index 0..count-1 verwendet. Nicht gefunden – der ausgewählte Gump wird zu null und eine Meldung wird angezeigt.
- Gump öffnet sich nicht und es wird keine Antwort an den Server gesendet. Indizes ändern sich, wenn Fenster geöffnet/geschlossen werden; Für eine stabile Auswahl verwenden Sie die aktuelle serial/id.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.GumpObject");
UO.GumpObject(0);Parameter und Ablauf:
- Wählt einen vorhandenen Server-Gump für nachfolgende Aufrufe aus.
if (Truth(UO.GumpExists(0)))
{
UO.GumpObject(0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Bridge.SelectGump speichert _selectedServerGump. Wenn serial nicht übereinstimmt, wird der Index 0..count-1 verwendet. Nicht gefunden – der ausgewählte Gump wird zu null und eine Meldung wird angezeigt.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
var serial = UO.GetGumpSerial(0);
UO.GumpObject(serial);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Gump öffnet sich nicht und es wird keine Antwort an den Server gesendet. Indizes ändern sich, wenn Fenster geöffnet/geschlossen werden; Für eine stabile Auswahl verwenden Sie die aktuelle serial/id.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.GumpObject(0);
UO.Print(UO.LastGump("gumpid"));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpId (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SelectGump:bridge.SelectGump(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "gumpobject": bridge.SelectGump(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsGump();Überprüft, ob mindestens ein aktiver Server-Gump vorhanden ist.
Es gibt keine Parameter.
int — 1, wenn die Liste nicht leer ist; 0 wenn leer. Dies ist ein Zeichen der Verfügbarkeit, nicht der Anzahl der Fenster.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.IsGump();
UO.Print("IsGump: " + Convert.ToString(result));Parameter und Ablauf:
- Es gibt keine Argumente. GetGumpInfo(0) liest das erste Element und gibt möglicherweise ein leeres Array zurück, wenn das Fenster bereits geschlossen wurde.
if (Truth(UO.IsGump()))
{
var info = UO.GetGumpInfo(0);
UO.Print(ArrayLength(info));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Wenn drei stabile Fenster vorhanden sind=1, Anzahl=3.
return RunScenario();
object? RunScenario()
{
var present = UO.IsGump();
var count = UO.GetGumpsCount();
UO.Print(Convert.ToString(present) + "/" + Convert.ToString(count));
return null;
}Parameter und Ablauf:
- Warten Sie nicht länger als ca. 3000 ms, prüfen Sie alle 50 ms. Das letzte Geschenk zeigt den Zustand nach dem Warten.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var started = Now();
while (Truth(UO.IsGump() == 0) && Truth(Now() - started < 3000))
{
await Delay(50);
}
var present = UO.IsGump();
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
private int Now() => global::ClassicUO.CSharp.CSharpScriptContext.Current.Now();
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpCount:bridge.GetGumpCount().
Interner Implementierungscode; kein eigenständiges Skript.
case "isgump": return new InjectionValue(bridge.GetGumpCount() > 0 ? 1 : 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsGumpCanBeClosed(object? gumpIndex);Überprüft, ob das lokale Schließen des Server-Gumps mit der rechten Maustaste zulässig ist.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln.
int — 1, wenn das Fenster existiert und CanCloseWithRightClick aktiviert ist; andernfalls 0. Dies ist nicht auf das Schließen oder das Vorhandensein einer Schaltfläche „Abbrechen“ zurückzuführen.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- NoClose verbietet CloseSimpleGump; Die Möglichkeit, ButtonID an den Server zu senden, ist eine separate Aktion.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.IsGumpCanBeClosed(0);
UO.Print("IsGumpCanBeClosed: " + Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex. Verifizierung und Abschluss sind unterschiedliche Herausforderungen; Der Index kann sich zwischen ihnen ändern.
if (Truth(UO.IsGumpCanBeClosed(0)))
{
UO.CloseSimpleGump(0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- closable=0 für ein vorhandenes Fenster bedeutet, dass das Fenster nicht geschlossen werden kann, nicht das Fehlen des Fensters.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
var closable = UO.IsGumpCanBeClosed(0);
UO.Print(Convert.ToString(closable));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- -1 ist für diesen Indexbefehl nicht gültig und ergibt 0; Dies ist nicht die letzte Fensterauswahl.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var result = UO.IsGumpCanBeClosed(-1);
UO.Print(Convert.ToString(result));
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsGumpCanBeClosed:bridge.IsGumpCanBeClosed(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "isgumpcanbeclosed": return new InjectionValue(bridge.IsGumpCanBeClosed(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastGump(object? identifier);
dynamic UO.LastGump(object? identifier, object? key);Liest ein Feld des ausgewählten Server-Gumps. Verwendet das von diesem Skript ausgewählte Fenster oder das letzte Element der aktuellen Liste.
-
identifier- string Groß- und Kleinschreibung wird nicht beachtet. Alle unterstützten Werte und Ergebnistypen werden im Abschnitt „Rückgaben“ aufgeführt. Unbekannter Name gibt eine leere Zeichenfolge zurück. -
key– Optional int, Standard – 1. Index mit 0 für Schaltfläche/Text/object/Befehl; Dies ist keine ID-Steuerung. Ein negativer Index und außerhalb der Grenzen führen zu 0 für Schaltflächen oder einer leeren Zeichenfolge für Textfelder. Andere Bezeichner verwenden keinen Schlüssel.
Die Art des Ergebnisses hängt vom Identifikator ab. int: buttonlen – Anzahl der regulären Tasten; button – ButtonID nach Indexschlüssel; textlen – Anzahl der verfügbaren Textelemente; injid – aktueller Fensterindex; antwortete – 0 (Antwortverlauf wird nicht gespeichert); inclient – 1 für ein gefundenes Live-Fenster, 0 falls nicht vorhanden; objectcount – Anzahl der Live-Steuerelemente, einschließlich verschachtelter. string: serial und Gumpid – Hex-Strings 0xXXXXXXXX; text – Elementtext am Indexschlüssel; object – Name des Steuerungstyps; Befehl – Beschreibung des Steuerelements (Typ, Seite, ID, Koordinaten, Abmessungen und unterstützte Felder). Wenn kein Fenster vorhanden ist, ergeben numerische Bezeichner 0, Zeichenfolgenbezeichner eine leere Zeichenfolge. injid=0 ist ebenfalls ein gültiger erster Index: 0 allein beweist nicht das Fehlen eines Fensters. Dies ist kein Array oder Pascal TGumpInfo.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- SelectGump/InfoGump gibt das ausgewählte Fenster nur in der aktuellen Laufzeit an. Wenn das ausgewählte Fenster geschlossen ist, wird das letzte Element in der aktuellen Liste verwendet, das nicht unbedingt das aktuellste Element ist.
- textlen/text beziehen sich auf die verfügbaren Textsteuerelemente, nicht auf den ursprünglichen String-Pool des Serverpakets. object/Befehl bezieht sich auf den gesamten Baum der Live-Steuerelemente. Indizes aus verschiedenen Listen können nicht gemischt werden.
- Jeder Aufruf liest den aktuellen Zustand separat aus. Für übereinstimmende serial, GumpID und Listen verwenden Sie GetGumpInfo.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
object? result = UO.LastGump("gumpid");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- gumpid und serial geben Strings zurück, die bereits hexadezimal formatiert sind; kein zusätzliches Hex erforderlich. Leere Zeilen bedeuten, dass beim Lesen kein Fenster vorhanden ist.
var id = UO.LastGump("gumpid");
var serial = UO.LastGump("serial");
UO.Print(id + " / " + serial);Parameter und Ablauf:
- buttonlen – Anzahl der Knöpfe; i ist der Index der Zeile von 0 bis count-1. Schaltfläche – ID für Antwort, nicht für Grafiken oder Index. Wenn Sie das Fenster wechseln, lesen Sie die Liste erneut.
return RunScenario();
object? RunScenario()
{
var count = UO.LastGump("buttonlen");
var i = 0;
while (Truth(i < count))
{
var button = UO.LastGump("button", i);
UO.Print(Convert.ToString(button));
i = i + 1;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- 0x12345678 ist ein Beispiel für GumpID/serial, ersetzen Sie ID durch die gewünschte Form. text mit key=0 liest das erste verfügbare Textsteuerelement; Dies ist eine andere Liste als die Schaltfläche.
- SelectGump meldet das Fehlen des angegebenen Fensters, blockiert jedoch nicht das nachfolgende Lesen: Überprüfen Sie das zurückgegebene Gumpid bei Bedarf separat.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.SelectGump(0x12345678);
if (Truth(UO.LastGump("inclient")))
{
var count = UO.LastGump("textlen");
if (Truth(count > 0))
{
UO.Print(UO.LastGump("text", 0));
}
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: identifier (String)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.LastGump. -
InjectionScript.Runtime.InjectionApiUO.LastGump:LastGump(identifier, -1).
Interner Implementierungscode; kein eigenständiges Skript.
public InjectionValue LastGump(string identifier) => LastGump(identifier, -1);Parameter: identifier (String), key (Integer)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.LastGump. -
InjectionScript.Runtime.InjectionApiUO.ConvertGumpValue:ConvertGumpValue(identifier, bridge.GetGumpValue(-1, identifier, key)). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpValue:bridge.GetGumpValue(-1, identifier, key).
Interner Implementierungscode; kein eigenständiges Skript.
public InjectionValue LastGump(string identifier, int key) => ConvertGumpValue(identifier, bridge.GetGumpValue(-1, identifier, key));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpButton(object? gumpIndex, object? value);Aktiviert eine vorhandene Server-Gump-Schaltfläche basierend auf dem strengen Fensterindex und der genauen ButtonID.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln. -
value– int – ButtonID aus der Beschreibung eines regulären Buttons. Nicht die Zeilennummer, nicht die Schaltfläche graphic, nicht die GumpID.
int (bool) – 1, wenn das Fenster und die Schaltfläche gefunden werden und die lokale Aktion ausgeführt wird; 0 wenn kein Fenster/Knopf vorhanden ist. Beim Wechseln der Seite wird auch 1 zurückgegeben. Dies ist keine Bestätigung der Serververarbeitung.
Das Ergebnis des Befehls ist ein numerisches Flag: 1 bedeutet eine erfüllte Bedingung, 0 bedeutet eine nicht erfüllte Bedingung. Nach var result = command(...) prüfen, ob (result != 0) oder if (result == 0). Speichern Sie das Ergebnis eines Aufrufs: Ein wiederholter Aufruf kann die Aktion erneut ausführen oder den Status lesen, der sich bereits geändert hat.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Die Schaltfläche SwitchPage schaltet die Seite lokal um. Die Schaltfläche „Aktivieren“ löst eine Gump-Reaktion aus; Normalerweise schließt sich das Fenster. Im Gegensatz zu SendGumpSelect erfordert dieser Befehl eine vorhandene ButtonID im Kontrollbaum.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.NumGumpButton(0, 77);
UO.Print("NumGumpButton: " + Convert.ToString(result));Parameter und Ablauf:
- 0 ist der Fensterindex, 77 ist eine Beispiel-ButtonID aus dem Inspektor. Ihr Formular benötigt sein echtes ID.
var ok = UO.NumGumpButton(0, 77);
if (Truth(ok == 0))
{
UO.Print("Button not found");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- 0x12345678 ist die erwartete GumpID, 100 ist die ButtonID. Diese beiden Zahlen gehören zu unterschiedlichen Räumen ID.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpID(0) == 0x12345678))
{
var ok = UO.NumGumpButton(0, 100);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- 33 – ID-Kontrollkästchen, 1 – aktivieren, 100 – ID-Taste. Der Kontrollkästchenstatus wird nur für die Schaltfläche „Aktivieren“ in die Antwort einbezogen.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.NumGumpCheckBox(0, 33, 1)))
{
var ok = UO.NumGumpButton(0, 100);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any), value (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ActivateGumpButton:bridge.ActivateGumpButton(Arg(0), Arg(1)).
Interner Implementierungscode; kein eigenständiges Skript.
case "numgumpbutton": return (bridge is IApiGumpAccess buttons
? buttons.ActivateGumpButtonAtIndex(Arg(0), Arg(1)) : bridge.ActivateGumpButton(Arg(0), Arg(1))) != 0 ? InjectionValue.True : InjectionValue.False;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpCheckBox(object? gumpIndex, object? cbid, object? value);Legt den Status des Flags im Server anhand des Index fest.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln. -
cbid– int – das genaue ID-Element aus der Gump-Beschreibung. Dies ist nicht die Seriennummer des Elements; das fehlende ID wird nicht durch einen Index ersetzt. -
value- int - 1 aktivieren/auswählen, 0 deaktivieren. Numerische Werte ungleich Null, true und geprüft werden ebenfalls erkannt. 0 und 1 werden empfohlen.
int (bool) — 1, wenn das erforderliche Element gefunden wird und sein Endwert mit dem angegebenen übereinstimmt; 0, wenn der Index ungültig ist, der ID/Elementtyp fehlt oder wenn das Feld keinen genauen Wert angenommen hat. Auch das Zurücksetzen eines bereits eingestellten Wertes gelingt.
Das Ergebnis des Befehls ist ein numerisches Flag: 1 bedeutet eine erfüllte Bedingung, 0 bedeutet eine nicht erfüllte Bedingung. Nach var result = command(...) prüfen, ob (result != 0) oder if (result == 0). Speichern Sie das Ergebnis eines Aufrufs: Ein wiederholter Aufruf kann die Aktion erneut ausführen oder den Status lesen, der sich bereits geändert hat.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Ändert den lokalen Status. Die Felder und aktivierten Optionsfelder werden gesendet, gefolgt von der Schaltflächenantwort.
- Durch die Auswahl eines Optionsfelds wird die Auswahl des benachbarten Optionsfelds derselben Gruppe aufgehoben. Normale Kontrollkästchen sind unabhängig.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.NumGumpCheckBox(0, 33, 1);
UO.Print("NumGumpCheckBox: " + Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex; 33 – exaktes CBID; 1 – neuer Wert. Ersetzen Sie 33 durch ID aus Ihrem Gump.
var ok = UO.NumGumpCheckBox(0, 33, 1);
if (Truth(ok == 0))
{
UO.Print("Control missing or value rejected");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- 0 löscht das Feld oder deaktiviert es. Es wird der Erfolg der Änderung zurückgegeben, nicht der neue Wert des Feldes.
return RunScenario();
object? RunScenario()
{
var ok = UO.NumGumpCheckBox(0, 33, 0);
UO.Print(Convert.ToString(ok));
return null;
}Parameter und Ablauf:
- 100 – Beispiel einer Server-ButtonID-Bestätigung; Es muss ID Ihres Fensters ersetzt werden. 0 bis SendGumpSelect(0,100) ist der Fensterindex.
- Die Antwort kann den Gump schließen und die Indizes ändern. Gesendet bedeutet lokales Senden, das Ergebnis einer vom Server nicht bestätigten Operation.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.NumGumpCheckBox(0, 33, 1)))
{
var sent = UO.SendGumpSelect(0, 100);
UO.Print(Convert.ToString(sent));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any), cbid (Any), value (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SetIndexedGumpValue:SetIndexedGumpValue(Arg(0), "checkbox", Arg(1), Text(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(2).
Interner Implementierungscode; kein eigenständiges Skript.
case "numgumpcheckbox": return SetIndexedGumpValue(Arg(0), "checkbox", Arg(1), Text(2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpRadiobutton(object? gumpIndex, object? radiobuttonID, object? value);Legt den Status eines Optionsfelds in einem Server anhand des Index fest.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln. -
radiobuttonID– int – das genaue ID-Element aus der Gump-Beschreibung. Dies ist nicht die Seriennummer des Elements; das fehlende ID wird nicht durch einen Index ersetzt. -
value- int - 1 aktivieren/auswählen, 0 deaktivieren. Numerische Werte ungleich Null, true und geprüft werden ebenfalls erkannt. 0 und 1 werden empfohlen.
int (bool) — 1, wenn das erforderliche Element gefunden wird und sein Endwert mit dem angegebenen übereinstimmt; 0, wenn der Index ungültig ist, der ID/Elementtyp fehlt oder wenn das Feld keinen genauen Wert angenommen hat. Auch das Zurücksetzen eines bereits eingestellten Wertes gelingt.
Das Ergebnis des Befehls ist ein numerisches Flag: 1 bedeutet eine erfüllte Bedingung, 0 bedeutet eine nicht erfüllte Bedingung. Nach var result = command(...) prüfen, ob (result != 0) oder if (result == 0). Speichern Sie das Ergebnis eines Aufrufs: Ein wiederholter Aufruf kann die Aktion erneut ausführen oder den Status lesen, der sich bereits geändert hat.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Ändert den lokalen Status. Die Felder und aktivierten Optionsfelder werden gesendet, gefolgt von der Schaltflächenantwort.
- Durch die Auswahl eines Optionsfelds wird die Auswahl des benachbarten Optionsfelds derselben Gruppe aufgehoben. Normale Kontrollkästchen sind unabhängig.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.NumGumpRadiobutton(0, 33, 1);
UO.Print("NumGumpRadiobutton: " + Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex; 33 – genaue RadiobuttonID; 1 – neuer Wert. Ersetzen Sie 33 durch ID aus Ihrem Gump.
var ok = UO.NumGumpRadiobutton(0, 33, 1);
if (Truth(ok == 0))
{
UO.Print("Control missing or value rejected");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- 0 löscht das Feld oder deaktiviert es. Es wird der Erfolg der Änderung zurückgegeben, nicht der neue Wert des Feldes.
return RunScenario();
object? RunScenario()
{
var ok = UO.NumGumpRadiobutton(0, 33, 0);
UO.Print(Convert.ToString(ok));
return null;
}Parameter und Ablauf:
- 100 – Beispiel einer Server-ButtonID-Bestätigung; Es muss ID Ihres Fensters ersetzt werden. 0 bis SendGumpSelect(0,100) ist der Fensterindex.
- Die Antwort kann den Gump schließen und die Indizes ändern. Gesendet bedeutet lokales Senden, das Ergebnis einer vom Server nicht bestätigten Operation.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.NumGumpRadiobutton(0, 33, 1)))
{
var sent = UO.SendGumpSelect(0, 100);
UO.Print(Convert.ToString(sent));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any), radiobuttonID (Any), value (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SetIndexedGumpValue:SetIndexedGumpValue(Arg(0), "radio", Arg(1), Text(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(2).
Interner Implementierungscode; kein eigenständiges Skript.
case "numgumpradiobutton": return SetIndexedGumpValue(Arg(0), "radio", Arg(1), Text(2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpTextEntry(object? gumpIndex, object? textEntryID, object? value);Legt den Text des Eingabefelds im Server nach Index fest.
-
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln. -
textEntryID– int – das genaue ID-Element aus der Gump-Beschreibung. Dies ist nicht die Seriennummer des Elements; das fehlende ID wird nicht durch einen Index ersetzt. -
value- string – neuer Text. Eine leere Zeichenfolge löscht das Feld; Längen-/Zeichenbeschränkungen für das Feld selbst bleiben erhalten.
int (bool) — 1, wenn das erforderliche Element gefunden wird und sein Endwert mit dem angegebenen übereinstimmt; 0, wenn der Index ungültig ist, der ID/Elementtyp fehlt oder wenn das Feld keinen genauen Wert angenommen hat. Auch das Zurücksetzen eines bereits eingestellten Wertes gelingt.
Das Ergebnis des Befehls ist ein numerisches Flag: 1 bedeutet eine erfüllte Bedingung, 0 bedeutet eine nicht erfüllte Bedingung. Nach var result = command(...) prüfen, ob (result != 0) oder if (result == 0). Speichern Sie das Ergebnis eines Aufrufs: Ein wiederholter Aufruf kann die Aktion erneut ausführen oder den Status lesen, der sich bereits geändert hat.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Ändert den lokalen Status. Die Felder und aktivierten Optionsfelder werden gesendet, gefolgt von der Schaltflächenantwort.
- Durch die Auswahl eines Optionsfelds wird die Auswahl des benachbarten Optionsfelds derselben Gruppe aufgehoben. Normale Kontrollkästchen sind unabhängig.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.NumGumpTextEntry(0, 33, "500");
UO.Print("NumGumpTextEntry: " + Convert.ToString(result));Parameter und Ablauf:
- 0 – Fensterindex; 33 – exaktes TextEntryID; „500“ ist der neue Wert. Ersetzen Sie 33 durch ID aus Ihrem Gump.
var ok = UO.NumGumpTextEntry(0, 33, "500");
if (Truth(ok == 0))
{
UO.Print("Control missing or value rejected");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- '' löscht das Feld oder deaktiviert es. Es wird der Erfolg der Änderung zurückgegeben, nicht der neue Wert des Feldes.
return RunScenario();
object? RunScenario()
{
var ok = UO.NumGumpTextEntry(0, 33, "");
UO.Print(Convert.ToString(ok));
return null;
}Parameter und Ablauf:
- 100 – Beispiel einer Server-ButtonID-Bestätigung; Es muss ID Ihres Fensters ersetzt werden. 0 bis SendGumpSelect(0,100) ist der Fensterindex.
- Die Antwort kann den Gump schließen und die Indizes ändern. Gesendet bedeutet lokales Senden, das Ergebnis einer vom Server nicht bestätigten Operation.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.NumGumpTextEntry(0, 33, "500")))
{
var sent = UO.SendGumpSelect(0, 100);
UO.Print(Convert.ToString(sent));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: gumpIndex (Any), textEntryID (Any), value (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SetIndexedGumpValue:SetIndexedGumpValue(Arg(0), "textentry", Arg(1), Text(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(2).
Interner Implementierungscode; kein eigenständiges Skript.
case "numgumptextentry": return SetIndexedGumpValue(Arg(0), "textentry", Arg(1), Text(2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SelectGump(object? id);Wählt einen vorhandenen Server-Gump für nachfolgende Aufrufe aus.
-
id– int: Entspricht zuerst LocalSerial oder ServerSerial, dann Index Null in der aktuellen Gumps-Liste. Dies sind keine ID-Tasten.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- Bridge.SelectGump speichert _selectedServerGump. Wenn serial nicht übereinstimmt, wird der Index 0..count-1 verwendet. Nicht gefunden – der ausgewählte Gump wird zu null und eine Meldung wird angezeigt.
- Gump öffnet sich nicht und es wird keine Antwort an den Server gesendet. Indizes ändern sich, wenn Fenster geöffnet/geschlossen werden; Für eine stabile Auswahl verwenden Sie die aktuelle serial/id.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.SelectGump");
UO.SelectGump(0);Parameter und Ablauf:
- Wählt einen vorhandenen Server-Gump für nachfolgende Aufrufe aus.
if (Truth(UO.GumpExists(0)))
{
UO.SelectGump(0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Bridge.SelectGump speichert _selectedServerGump. Wenn serial nicht übereinstimmt, wird der Index 0..count-1 verwendet. Nicht gefunden – der ausgewählte Gump wird zu null und eine Meldung wird angezeigt.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
var serial = UO.GetGumpSerial(0);
UO.SelectGump(serial);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Gump öffnet sich nicht und es wird keine Antwort an den Server gesendet. Indizes ändern sich, wenn Fenster geöffnet/geschlossen werden; Für eine stabile Auswahl verwenden Sie die aktuelle serial/id.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.SelectGump(0);
UO.Print(UO.LastGump("gumpid"));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: id (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SelectGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SelectGump:bridge.SelectGump(NumberConversions.ToInt(id)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(id).
Interner Implementierungscode; kein eigenständiges Skript.
public void SelectGump(InjectionValue id) => bridge.SelectGump(NumberConversions.ToInt(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.SendGumpSelect(object? triggerId);
int UO.SendGumpSelect(object? gumpIndex, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId, object? timeout);Sendet die ButtonID für den ausgewählten Server-Gump.
-
triggerId– int oder numerische Zeichenfolge – Server-ButtonID. 0 bedeutet normalerweise Schließen/Ablehnen, aber die genaue Aktion wird vom Server bestimmt. Eine sichtbare ButtonID im Baum ist nicht erforderlich. -
gumpIndex– Obligatorisch int – Index des aktiven Server-Gumps, von 0 bis GetGumpsCount()-1. Dies ist nicht GumpID/serial. Negative Zahlen und Indizes außerhalb der Liste sind ungültig. Das Öffnen, Schließen und Neuanordnen von Fenstern kann den Index ändern; Überprüfen Sie GetGumpID/GetGumpSerial, bevor Sie handeln. Wird nur in der Form mit zwei Argumenten verwendet (gumpIndex, triggerId). -
serial– In den Argumentformen 3/4 das numerische 32-Bit serial. 0 oder -1 deaktiviert den Filter serial; die restlichen Zahlen, auch die negativen mit dem höchstwertigen Bit, werden exakt verglichen. -
gumpId– In den Argumentformen 3/4 die numerische 32-Bit-GumpID. 0 oder -1 deaktiviert den GumpID-Filter. Hex-Strings sind erlaubt; Namen AddObject sind hier nicht erlaubt. -
timeout– Optionales viertes Argument, int Millisekunden, um auf ein passendes ID-Paar zu warten. Standardmäßig ist 0 ein sofortiger Versuch; das Negativ ist auf 0 begrenzt. Wiederholungsintervall 20 ms.
int – 1, wenn ein Live-Server-Gump gefunden wird und die Antwort aufgerufen wird; 0, wenn das Fenster nicht vor Ablauf des Timeouts gefunden wird. Gibt den ausgewählten ID nicht zurück und wartet nicht darauf, dass der Server das Ergebnis bestätigt.
- Funktioniert mit aktiven Server-Gumps. Rucksack, Karte, Einstellungen und andere lokale Fenster sind in dieser Liste nicht enthalten. Ein Aufruf liest Daten im Spielthread; Verschiedene Anrufe können unterschiedliche Zustände der Liste sehen.
- Ein Argument wählt den Gump aus, der zuvor von diesem Skript ausgewählt wurde; wenn es geschlossen/nicht ausgewählt ist – das letzte Element der aktuellen Liste. Zwei Argumente geben einen strikten Index an. Drei/Vier – ein Paar ID mit Filtern.
- Das Auswählen und Aufrufen einer Antwort erfolgt in einer Game-Thread-Anfrage. Das Warten wird durch Stoppen des Vorgangs abgebrochen. Verwechseln Sie direkte Serverantwort nicht mit Seitenwechsel: Die Schaltfläche SwitchPage erfordert NumGumpButton.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.SendGumpSelect(100);
UO.Print("SendGumpSelect: " + Convert.ToString(result));Parameter und Ablauf:
- SelectGump wählt Typ/serial 0x12345678 oder meldet Abwesenheit; 100 – ButtonID.
- Wenn kein ausgewähltes Fenster mehr vorhanden ist, verwendet das Ein-Argument-Formular das letzte verfügbare Fenster. Für eine strikte Identität verwenden Sie ein Formular mit zwei ID.
UO.SelectGump(0x12345678);
var sent = UO.SendGumpSelect(100);
UO.Print(Convert.ToString(sent));Parameter und Ablauf:
- 0 – Index, 100 – ButtonID. Dies ist nicht serial=0 und nicht GumpID=100.
return RunScenario();
object? RunScenario()
{
var sent = UO.SendGumpSelect(0, 100);
if (Truth(sent == 0))
{
UO.Print("No gump at index zero");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- info[0] – serial, info[1] – GumpID, 100 – ButtonID. Durch Ändern des Index wird die Antwort nicht an einen anderen Typ/Besitzer umgeleitet.
- Serial/GumpID-Werte 0/-1 sind uneingeschränkte Filter; Identische Paare unterscheiden nicht erneut geöffnete Instanzen.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var sent = UO.SendGumpSelect(info[0], info[1], 100);
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}Parameter und Ablauf:
- 0 deaktiviert den Filter serial; 0x87654321 – exaktes ID mit dem höchstwertigen Bit; 100 – Taste; 2000 – maximale Wartezeit in ms. Wird nicht als unbedingter Platzhalter verwendet.
var sent = UO.SendGumpSelect(0, 0x87654321, 100, 2000);
UO.Print(Convert.ToString(sent));C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: triggerId (Integer/String)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(triggerId).
Interner Implementierungscode; kein eigenständiges Skript.
public int SendGumpSelect(int triggerId) => bridge.SendGumpSelect(triggerId);Parameter: triggerId (Integer/String)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect:SendGumpSelect(NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(triggerId).
Interner Implementierungscode; kein eigenständiges Skript.
public int SendGumpSelect(string triggerId) => SendGumpSelect(NumberConversions.ToInt(triggerId));Parameter: gumpIndex (Any), triggerId (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(NumberConversions.ToInt(gumpIndex), NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(gumpIndex).
Interner Implementierungscode; kein eigenständiges Skript.
public int SendGumpSelect(InjectionValue gumpIndex, InjectionValue triggerId)
=> bridge.SendGumpSelect(NumberConversions.ToInt(gumpIndex), NumberConversions.ToInt(triggerId));Parameter: serial (Any), gumpId (Any), triggerId (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serial).
Interner Implementierungscode; kein eigenständiges Skript.
public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId)
=> bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId));Parameter: serial (Any), gumpId (Any), triggerId (Any), timeout (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId), Math.Max(0, NumberConversions.ToInt(timeout))). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serial).
Interner Implementierungscode; kein eigenständiges Skript.
public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId, InjectionValue timeout)
=> bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId),
NumberConversions.ToInt(triggerId), Math.Max(0, NumberConversions.ToInt(timeout)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetGump(object? identifier, object? key, object? stateValue);
void UO.SetGump(object? gumpId, object? identifier, object? key, object? stateValue);Ändert das Feld eines vorhandenen Server-Gumps.
-
gumpId– Nur Form mit vier Argumenten: serial/id oder Null-Gump-Index. Das Formular mit drei Verwendungen -1 - der ausgewählte/letzte Gump. -
identifier– String „checkbox“, „radio“ oder „textentry“, Groß- und Kleinschreibung spielt keine Rolle. Ein nicht unterstützter Name ändert das Feld nicht. -
key– int: erstes LocalSerial/ID-Element, dann Nullindex unter den Elementen der angegebenen Art. Kein Element – Fehlermeldung. -
stateValue– Für Kontrollkästchen/Radio: „markiert“, „true“ Groß-/Kleinschreibung wird nicht beachtet oder ein Wert ungleich Null wird erkannt. int umfasst; der andere schaltet sich aus. Für die Texteingabe – der gesamte Text bis ToString.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- SetGumpValue ruft TrySetGumpValue auf; Mit 0 wird eine Meldung angezeigt. Ändert das lokale Feld eines bereits vorhandenen Gumps und registriert keinen Hook, der auf ein neues Fenster wartet.
- Beim Ändern des Kontrollkästchens/Texteintrags wird selbst keine Antwort an den Server gesendet. Um zu antworten, wählen Sie die Schaltfläche über SendGumpSelect/WaitGump; Optionsfelder werden in einer separaten Ansicht verarbeitet.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.SetGump");
UO.SetGump("checkbox", 0, 1);Parameter und Ablauf:
- Ändert das Feld eines vorhandenen Server-Gumps.
if (Truth(UO.GetGumpsCount() > 0))
{
UO.SetGump("checkbox", 0, 1);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- SetGumpValue ruft TrySetGumpValue auf; Mit 0 wird eine Meldung angezeigt. Ändert das lokale Feld eines bereits vorhandenen Gumps und registriert keinen Hook, der auf ein neues Fenster wartet.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.SetGump(0, "textentry", 0, "Example");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Beim Ändern des Kontrollkästchens/Texteintrags wird selbst keine Antwort an den Server gesendet. Um zu antworten, wählen Sie die Schaltfläche über SendGumpSelect/WaitGump; Optionsfelder werden in einer separaten Ansicht verarbeitet.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.SetGump("radio", 0, "true");
UO.SetGump("checkbox", 0, 0);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: identifier (Any), key (Any), stateValue (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SetGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:identifier.ToString(). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(key).
Interner Implementierungscode; kein eigenständiges Skript.
public void SetGump(InjectionValue identifier, InjectionValue key, InjectionValue stateValue)
=> bridge.SetGumpValue(-1, identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());Parameter: gumpId (Any), identifier (Any), key (Any), stateValue (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.SetGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(NumberConversions.ToInt(gumpId), identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString()). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(gumpId). -
InjectionScript.Runtime.InjectionValue.ToString:identifier.ToString().
Interner Implementierungscode; kein eigenständiges Skript.
public void SetGump(InjectionValue gumpId, InjectionValue identifier, InjectionValue key, InjectionValue stateValue)
=> bridge.SetGumpValue(NumberConversions.ToInt(gumpId), identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGump(object? value);
void UO.WaitGump(object? trigger1, object? trigger2);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15, object? trigger16);Registriert eine Folge einmaliger Reaktionen auf Schaltflächen. Das Skript läuft sofort weiter; Das Fehlen eines Fensters führt nicht zu einer Verzögerung von 30 Sekunden.
-
value– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger1– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger2– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger3– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger4– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger5– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger6– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger7– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger8– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger9– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger10– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger11– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger12– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger13– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger14– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger15– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert. -
trigger16– Sequenzelement: int ButtonID, numerisch string, Zeichenfolge mit |/Komma oder Array solcher Elemente. Die Reihenfolge erfolgt von links nach rechts. Es gelten die allgemeinen Grenzen und Regeln triggerId. Wert ist der Name des einzigen Parameters der Form object?, der auch ein Array akzeptiert.
void – gibt nichts zurück: weder Erfolg, noch einen neuen Wert, noch Serverbestätigung.
- Sucht nach einem echten Activate-Button mit der gewünschten ButtonID; Schaltflächen zum Wechseln von Seiten und Fenstern ohne die erforderliche Schaltfläche werden übersprungen. Nachfolgende ID umgehen nicht das erste Warten. Für eine Markup-Übermittlung – nicht mehr als eine Antwort in einem Fenster. Das aktualisierte Markup kann dasselbe Fensterobjekt verwenden.
- Der nächste WaitGump desselben Skripts schließt seine ausstehende Sequenz ab. Die Suche ist nicht auf GumpID beschränkt: Verwenden Sie NumGumpButton oder SendGumpSelect für eine genaue Auswahl. ButtonID=0 funktioniert nur, wenn eine vorhandene Aktivierungsschaltfläche mit ID 0 vorhanden ist; Dies ist kein universeller Verschluss.
- Der normale Abschluss des Vorgangs erspart das Warten. Wenn Sie den Eigentümer oder Terminate mit seinem Namen stornieren, werden seine Wartezeiten entfernt; TerminateAll löscht alles, einschließlich derjenigen, die nach Abschluss der Verfahren übrig bleiben. Die Veränderung der Welt macht die Warteschlange frei. Erwartungen werden nicht im Profil gespeichert.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.WaitGump");
UO.WaitGump(100);Parameter und Ablauf:
- 100 – ButtonID der Antwort. WaitGump registriert es vor UseObject; Eine weitere Ausführung bedeutet nicht, dass der Server die Antwort bereits akzeptiert hat.
UO.WaitGump(100);
UO.UseObject("0x40001234");Parameter und Ablauf:
- 7, 22 und 1 sind die ButtonIDs der sequentiellen Formulare. Diese ID werden der Reihe nach überprüft. Die Anzahl der Argumente gibt nicht die Verzögerung an; Der Anruf protokolliert die gesamte Sequenz.
return RunScenario();
object? RunScenario()
{
UO.WaitGump(7, 22, 1);
UO.UseObject("0x40001234");
return null;
}Parameter und Ablauf:
- Die Zeile 7|22|1 gibt die gleiche Reihenfolge an. TerminateAll löscht dann alle ausstehenden Gumps und stoppt alle Vorgänge; Dies ist eine globale Aktion.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.WaitGump("7|22|1");
UO.TerminateAll();
return null;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: value (Any/Integer/String)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(arguments).
Interner Implementierungscode; kein eigenständiges Skript.
case "waitgump": CompactWaitGump(arguments); return InjectionValue.Unit;Parameter: value (Any/Integer/String)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.WaitGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitGumpSelect:bridge.WaitGumpSelect(triggerId, 30_000).
Interner Implementierungscode; kein eigenständiges Skript.
public void WaitGump(int triggerId)
{
if (bridge is IApiGumpAutomation automation) automation.QueueGumpButtons(new[] { triggerId });
else bridge.WaitGumpSelect(triggerId, 30_000);
}Parameter: value (Any/Integer/String)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.WaitGump. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(chain). -
InjectionScript.Runtime.InjectionApiUO.WaitGump:WaitGump(NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(triggerId).
Interner Implementierungscode; kein eigenständiges Skript.
public void WaitGump(string triggerId)
{
string text = (triggerId ?? string.Empty).Trim();
if (text.Contains('|') || text.Contains(','))
{
InjectionValue[] chain = text.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(value => new InjectionValue(value.Trim())).ToArray();
CompactWaitGump(chain);
return;
}
WaitGump(NumberConversions.ToInt(triggerId));
}Parameter: trigger1 (Any), trigger2 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6) — UO.WaitGump(Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15, trigger16) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
Parameter: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any), trigger16 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
Der Aufruf führt den gespeicherten Handler-Delegate aus. Die Registrierungsmethode erzeugt ihn beim Aufbau der API.
Interner Implementierungscode; kein eigenständiges Skript.
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGumpCheck(object? index, object? state);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2, object? index3, object? state3);Ändert bis zu drei Kontrollkästchenfelder des aktuellen Gumps.
-
index– int ID Element oder Nullindex, wie SetGump. Die Argumente kommen paarweise vor: Selektor, Wert. -
index2– int ID Element oder Nullindex, wie SetGump. Die Argumente kommen paarweise vor: Selektor, Wert. -
index3– int ID Element oder Nullindex, wie SetGump. Die Argumente kommen paarweise vor: Selektor, Wert. -
state– Feldwert bis ToString. Das Kontrollkästchen enthält „markiert“/„true“/eine Zahl ungleich Null; textentry akzeptiert Text. -
state2– Feldwert bis ToString. Das Kontrollkästchen enthält „markiert“/„true“/eine Zahl ungleich Null; textentry akzeptiert Text. -
state3– Feldwert bis ToString. Das Kontrollkästchen enthält „markiert“/„true“/eine Zahl ungleich Null; textentry akzeptiert Text.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- ExecuteLegacyManualAlias geht die Argumente paarweise durch und ruft für jedes einzelne SetGumpValue(-1, „checkbox“, selector, value) auf. Alle registrierten Formen sind 2-, 4- oder 6-Argumente.
- Der Name UO.Wait bedeutet nicht warten: Es gibt keine Blockierung und keine Warteschlange für zukünftiges Warten. Fehlt das Feld, wird ein Fehler angezeigt. Die Schaltflächenantwort wird nicht gesendet.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.WaitGumpCheck");
UO.WaitGumpCheck(0, 1);Parameter und Ablauf:
- Ändert bis zu drei Kontrollkästchenfelder des aktuellen Gumps.
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpCheck(0, 1);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- ExecuteLegacyManualAlias geht die Argumente paarweise durch und ruft für jedes einzelne SetGumpValue(-1, „checkbox“, selector, value) auf. Alle registrierten Formen sind 2-, 4- oder 6-Argumente.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpCheck(0, 1, 1, 0);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Der Name UO.Wait bedeutet nicht warten: Es gibt keine Blockierung und keine Warteschlange für zukünftiges Warten. Fehlt das Feld, wird ein Fehler angezeigt. Die Schaltflächenantwort wird nicht gesendet.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpCheck(0, 1, 1, 0, 2, 1);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: index (Any), state (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
Interner Implementierungscode; kein eigenständiges Skript.
case "waitgumpcheck":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));
break;Parameter: index (Any), state (Any), index2 (Any), state2 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
Interner Implementierungscode; kein eigenständiges Skript.
case "waitgumpcheck":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));
break;
UO.WaitGumpCheck(index, state, index2, state2, index3, state3) — UO.WaitGumpCheck(Any,Any,Any,Any,Any,Any)
Parameter: index (Any), state (Any), index2 (Any), state2 (Any), index3 (Any), state3 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
Interner Implementierungscode; kein eigenständiges Skript.
case "waitgumpcheck":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGumpEntry(object? index, object? text);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2, object? index3, object? text3);Ändert bis zu drei Texteingabefelder des aktuellen Gumps.
-
index– int ID Element oder Nullindex, wie SetGump. Die Argumente kommen paarweise vor: Selektor, Wert. -
index2– int ID Element oder Nullindex, wie SetGump. Die Argumente kommen paarweise vor: Selektor, Wert. -
index3– int ID Element oder Nullindex, wie SetGump. Die Argumente kommen paarweise vor: Selektor, Wert. -
text– Feldwert bis ToString. Das Kontrollkästchen enthält „markiert“/„true“/eine Zahl ungleich Null; textentry akzeptiert Text. -
text2– Feldwert bis ToString. Das Kontrollkästchen enthält „markiert“/„true“/eine Zahl ungleich Null; textentry akzeptiert Text. -
text3– Feldwert bis ToString. Das Kontrollkästchen enthält „markiert“/„true“/eine Zahl ungleich Null; textentry akzeptiert Text.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- ExecuteLegacyManualAlias geht die Argumente paarweise durch und ruft für jedes Argument SetGumpValue(-1, „textentry“, selector, value) auf. Alle registrierten Formen sind 2-, 4- oder 6-Argumente.
- Der Name UO.Wait bedeutet nicht warten: Es gibt keine Blockierung und keine Warteschlange für zukünftiges Warten. Fehlt das Feld, wird ein Fehler angezeigt. Die Schaltflächenantwort wird nicht gesendet.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.WaitGumpEntry");
UO.WaitGumpEntry(0, "Example");Parameter und Ablauf:
- Ändert bis zu drei Texteingabefelder des aktuellen Gumps.
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpEntry(0, "Example");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- ExecuteLegacyManualAlias geht die Argumente paarweise durch und ruft für jedes Argument SetGumpValue(-1, „textentry“, selector, value) auf. Alle registrierten Formen sind 2-, 4- oder 6-Argumente.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpEntry(0, "First", 1, "Second");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parameter und Ablauf:
- Der Name UO.Wait bedeutet nicht warten: Es gibt keine Blockierung und keine Warteschlange für zukünftiges Warten. Fehlt das Feld, wird ein Fehler angezeigt. Die Schaltflächenantwort wird nicht gesendet.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpEntry(0, "First", 1, "Second", 2, "Third");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: index (Any), text (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
Interner Implementierungscode; kein eigenständiges Skript.
case "waitgumpentry":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));
break;Parameter: index (Any), text (Any), index2 (Any), text2 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
Interner Implementierungscode; kein eigenständiges Skript.
case "waitgumpentry":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));
break;
UO.WaitGumpEntry(index, text, index2, text2, index3, text3) — UO.WaitGumpEntry(Any,Any,Any,Any,Any,Any)
Parameter: index (Any), text (Any), index2 (Any), text2 (Any), index3 (Any), text3 (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
Interner Implementierungscode; kein eigenständiges Skript.
case "waitgumpentry":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));
break;