Repository navigation
ES UO Topic gumps
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas
Leer ventanas del servidor y enviar respuestas: botones, casillas de verificación, botones de opción y campos. La ventana ID, el propietario serial y el índice de ventana abierta no son intercambiables.
| Tema | Comandos y explicaciones |
|---|---|
| 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 Encías | 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
Cada tarjeta de comando tiene varios escenarios independientes: código directo, funciones y clases. A continuación se muestran escenarios breves seleccionados; restricciones y análisis completos están en las cartas.
Parámetros, resultado y todos los escenarios
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;Parámetros, resultado y todos los escenarios
UO.WaitGump(100);
UO.UseObject("0x40001234");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddGumpIgnoreByID(object? arg0);Agrega el gump numérico ID a la lista de excepciones locales utilizada por UO.GetGumpInfo.
-
IDes un gump numérico ID que devuelveUO.GetGumpInfo.
void. Agregar ID no cierra la ventana ni confirma que el servidor la haya procesado.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.AddGumpIgnoreByID");
UO.AddGumpIgnoreByID(123);Parámetros y flujo de ejecución:
- Elimina el gump con ID 123 del resultado de UO.GetGumpInfo.
UO.AddGumpIgnoreByID(123);Parámetros y flujo de ejecución:
- Almacene ID en una variable antes de lanzar la excepción.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var ignoredId = 123;
UO.AddGumpIgnoreByID(ignoredId);
return null;
}Parámetros y flujo de ejecución:
- Agrega un poco de ID; cada excepción afecta a GetGumpInfo.
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()
{
UO.AddGumpIgnoreByID(123);
UO.AddGumpIgnoreByID(456);
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddGumpIgnoreBySerial(object? arg0);Agrega gump serial a la lista de excepciones locales utilizada por UO.GetGumpInfo.
-
Seriales un gump numérico serial que devuelveUO.GetGumpInfo.
void. Agregar serial no cierra la ventana ni confirma que el servidor la haya procesado.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.AddGumpIgnoreBySerial");
UO.AddGumpIgnoreBySerial(1073741824);Parámetros y flujo de ejecución:
- Elimine gump con el serial 1073741824 del resultado UO.GetGumpInfo.
UO.AddGumpIgnoreBySerial(1073741824);Parámetros y flujo de ejecución:
- Pasar serial desde una variable.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var ignoredSerial = 1073741824;
UO.AddGumpIgnoreBySerial(ignoredSerial);
return null;
}Parámetros y flujo de ejecución:
- Elimine dos gomas serial de la salida de GetGumpInfo.
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()
{
UO.AddGumpIgnoreBySerial(1073741824);
UO.AddGumpIgnoreBySerial(1073741825);
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelGump();
void UO.CancelGump(object? arg0);Cierra el servidor seleccionado mediante un solucionador compatible CloseSimpleGump.
-
gumpId- Opcional int/valor numérico. El solucionador primero busca un servidor/local coincidente serial, luego el índice de gump del servidor. Sin argumento, se pasa -1 y se selecciona el último gump.
void: sin valor de retorno.
- Un argumento llamado gumpId no garantiza buscar solo ID. CloseGumpUnsafe para el botón de envío de gump del servidor 0, luego elimina la ventana local. Si no se encuentra gump, no se realiza ninguna acción. Esto no es CancelMenu, ni borra el WaitGump pendiente.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.CancelGump");
UO.CancelGump();Parámetros y flujo de ejecución:
- El formulario sin argumento selecciona el último servidor disponible.
UO.CancelGump();Parámetros y flujo de ejecución:
- Se utiliza el ID real del primer gump; la lista puede cambiar entre llamadas.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- El valor -1 selecciona explícitamente el último gump en el solucionador.
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()
{
UO.CancelGump(-1);
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearGumpsIgnore();Borra ambos conjuntos de tiempo de ejecución ignorados de gump ID y gump serial.
No hay parámetros.
void: sin valor de retorno.
- No cierra las ventanas. Después de borrar, GetGumpInfo puede volver a devolver una instantánea del gump previamente ignorado.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.ClearGumpsIgnore");
UO.ClearGumpsIgnore();Parámetros y flujo de ejecución:
- Borra ambos conjuntos de tiempo de ejecución ignorados de gump ID y gump serial.
UO.ClearGumpsIgnore();Parámetros y flujo de ejecución:
- Elimine la regla de ignorar agregada.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.AddGumpIgnoreByID(0x1234);
UO.ClearGumpsIgnore();
return null;
}Parámetros y flujo de ejecución:
- Borrar un conjunto vacío es aceptable y no crea una nueva configuración.
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()
{
UO.ClearGumpsIgnore();
UO.ClearGumpsIgnore();
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseClientGump(object? arg0);Elimina los gumps del servidor local cuyo ServerSerial coincide con el ID pasado.
-
IDes un gump ID int/numérico en comparación con ServerSerial. Este no es un índice de lista ni una publicación serial local.
void: sin valor de retorno.
- Itera a través de ServerGumpsUnsafe, crea una instantánea de todas las coincidencias y llama a Dispose. No envía el botón 0 ni el resultado del formulario al servidor. Si no hay coincidencias, nada cambia.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.CloseClientGump");
UO.CloseClientGump(UO.GetGumpID(0));Parámetros y flujo de ejecución:
- GetGumpID proporciona el servidor ID; CloseClientGump elimina las ventanas locales coincidentes.
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;Parámetros y flujo de ejecución:
- Especifique ID del servidor deseado; no se aceptan coincidencias.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var id = 0x12345678;
UO.CloseClientGump(id);
return null;
}Parámetros y flujo de ejecución:
- Después de la primera eliminación, el segundo cierre generalmente ya no encuentra la ventana.
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 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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGump(object? arg0);
dynamic UO.GetGump(object? arg0, object? arg1);
dynamic UO.GetGump(object? arg0, object? arg1, object? arg2);Lee un campo del servidor seleccionado. Le permite configurar explícitamente el selector de ventana.
-
gumpId- Opcional primero int en los formularios (gumpId,identificador) y (gumpId,identificador,clave). int o cadena numérica: primero busca una coincidencia exacta de GumpID/serial y luego el índice con 0. -1 es el gump seleccionado por este script, y si no está, el último en la lista actual. Otros int negativos conservan el bit ID de 32. Este es un selector, a diferencia del estricto GumpIndex en NumGump*. -
identifier- string no distingue entre mayúsculas y minúsculas. Todos los valores admitidos y tipos de resultados se enumeran en la sección Devoluciones. El nombre desconocido devuelve una cadena vacía. -
key- Opcional int, predeterminado - 1. Índice con 0 para botón/texto/object/comando; este no es el control ID. Un índice negativo y fuera de límites dan como resultado 0 para el botón o una cadena vacía para los campos de texto. Otros identificadores no utilizan clave.
El tipo de resultado depende del identificador. int: buttonlen — número de botones normales; botón — ID de botón por clave de índice; textlen — número de elementos de texto disponibles; injid — índice de la ventana actual; respondió — 0 (el historial de respuestas no se almacena); inclient: 1 para una ventana activa encontrada, 0 si está ausente; objectcount: número de controles activos, incluidos los anidados. string: serial y gumpid - cadenas hexadecimales 0xXXXXXXX; texto: texto del elemento en la clave de índice; object — nombre del tipo de control; comando: descripción del control (tipo, página, ID, coordenadas, dimensiones y campos admitidos). Si no hay ventana, los identificadores numéricos dan 0, los identificadores de cadena dan una cadena vacía. injid=0 también es un primer índice válido: 0 por sí solo no prueba la ausencia de una ventana. Esto no es Array o Pascal TGumpInfo.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- SelectGump/InfoGump especifica la ventana seleccionada solo en el tiempo de ejecución actual. Si la ventana seleccionada está cerrada, se utiliza el último elemento de la lista actual, que no es necesariamente el elemento más reciente en el tiempo.
- textlen/text se refieren a los controles de texto disponibles, no al grupo de cadenas original del paquete del servidor. object/command se refiere a todo el árbol de controles en vivo. Los índices de diferentes listas no se pueden mezclar.
- Cada llamada lee el estado actual por separado. Para serial, GumpID y listas coincidentes, utilice GetGumpInfo.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetGump("gumpid");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- gumpid y serial devuelven cadenas ya formateadas en hexadecimal; no se necesita maleficio adicional. Las líneas vacías significan que no hay ventana al leer.
var id = UO.GetGump("gumpid");
var serial = UO.GetGump("serial");
UO.Print(id + " / " + serial);Parámetros y flujo de ejecución:
- buttonlen — número de botones; i es el índice de la fila desde 0 hasta contar-1. Botón - ID para respuesta, no gráficos ni índice. Al cambiar de ventana, vuelva a leer la lista.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- 0x12345678 es un ejemplo de GumpID/serial, reemplace ID con la forma deseada. texto con clave=0 lee el primer control de texto disponible; esta es una lista diferente al botón.
- SelectGump informa la ausencia de la ventana especificada, pero no bloquea la lectura posterior: verifique el gumpid devuelto por separado si es necesario.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpButtonsDescription(object? arg0);Devuelve descripciones de los botones regulares de gump del servidor.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
Matriz: descripciones de botones normales. [] - índice no válido o elementos no coincidentes. El índice de la fila comienza con 0; no es un control ID.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Cada línea contiene ButtonID, acción, toPage y gráficos. Los botones de radio no son botones de respuesta normales.
- Cuando SilentMode=0 el resultado no vacío también se agrega a la ventana de texto y la abre. SetSilentMode(1) deja solo devolver la matriz.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetGumpButtonsDescription(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana. ArrayLength comprueba la presencia de una línea antes de llamar a las líneas[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;Parámetros y flujo de ejecución:
- SetSilentMode(1) desactiva la ventana de texto adicional. El Print explícito en el ejemplo todavía genera las líneas.
- i es el índice de la matriz; Tome ID del botón/interruptor deseado de la descripción correspondiente.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- El recuento se convierte al índice de la última ventana. Los datos se leen desde el servidor cargado; Las ventanas locales no se incluyen aquí.
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()
{
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;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpCount();Versión corta GetGumpsCount: número de servidores activos.
No hay parámetros.
int >= 0: número de ventanas, no el índice de la última ventana. 0: la lista está vacía.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.GetGumpCount();
UO.Print("GetGumpCount: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Este es el número de gumps del servidor, no el índice de la ventana; La mochila local y el mapa no están incluidos aquí.
int count = UO.GetGumpCount();
UO.Print($"Active server gumps: {count}");Parámetros y flujo de ejecución:
- Los índices comienzan desde cero. La lista puede cambiar entre llamadas, por lo que se verifica la cantidad actual antes de leerla.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;
}Parámetros y flujo de ejecución:
- La espera está limitada por un tiempo de espera. La mera presencia de una ventana no prueba que se trate de un elemento necesario; para seleccionar, márquelo 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;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpFullLines(object? arg0);Devuelve descripciones de todos los elementos vivos, incluidos los gumps de servidor anidados.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
Matriz: descripciones de todos los elementos vivos, incluidos los anidados. [] - índice no válido o elementos no coincidentes. El índice de la fila comienza con 0; no es un control ID.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Descripciones del árbol de control actual: tipo, página, ID, X/Y, tamaños y campos admitidos. Este no es un paquete de marcado de servidor sin formato.
- Cuando SilentMode=0 el resultado no vacío también se agrega a la ventana de texto y la abre. SetSilentMode(1) deja solo devolver la matriz.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetGumpFullLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana. ArrayLength comprueba la presencia de una línea antes de llamar a las líneas[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;Parámetros y flujo de ejecución:
- SetSilentMode(1) desactiva la ventana de texto adicional. El Print explícito en el ejemplo todavía genera las líneas.
- i es el índice de la matriz; Tome ID del botón/interruptor deseado de la descripción correspondiente.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- El recuento se convierte al índice de la última ventana. Los datos se leen desde el servidor cargado; Las ventanas locales no se incluyen aquí.
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()
{
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;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpID(object? arg0);Lee el ID del tipo de ventana GumpID del índice gump del servidor.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
int — Identificador de tipo de ventana de 32 bits GumpID. 0 es un índice no válido (serial=0 también puede estar presente en la propia ventana). Cuando se establece el bit más significativo, int es negativo: use Hex (valor) para mostrar. Este no es un type de una materia ni un índice.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Para un par serial/GumpID coincidente, use un GetGumpInfo: los campos info[0] e info[1].
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.GetGumpID(0);
UO.Print("GetGumpID: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el primer índice de la lista de servidores. Hex almacena la representación de bits del int negativo.
var value = UO.GetGumpID(0);
UO.Print(Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parámetros y flujo de ejecución:
- Con una lista inmutable, el recuento está después del último índice, por lo que falta =0. El último índice válido es count-1.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var count = UO.GetGumpsCount();
var missing = UO.GetGumpID(count);
UO.Print(Hex(missing));
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parámetros y flujo de ejecución:
- 0x999 es un ejemplo de ID; reemplácelo con el ID real de la ventana deseada. El índice, el propietario ID y serial son valores diferentes.
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()
{
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;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpInfo(object? arg0);Devuelve una instantánea coherente de los identificadores y elementos de un único servidor gump.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
Matriz: exactamente cinco elementos: [0] int serial; [1] int ID de Gump; [2] Matriz de textos no vacíos; [3] Matriz descripciones de botones normales; [4] Matriz descripciones de todos los elementos vivos, incluidos los anidados. Un gump no válido/cerrado o ignorado por este script produce una matriz vacía []. ID con el bit más significativo está representado por int negativo. Una matriz de texto vacía en sí misma no significa que no haya ventana.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- La instantánea completa se copia en una solicitud de hilo del juego. Cambiar/cerrar la ventana después de regresar no cambia la matriz guardada.
- La descripción del control indica el tipo, página, ID, X/Y, dimensiones. Los botones además contienen ButtonID, acción, toPage y graphic; interruptores - ID, marcado, inactivo/activo. Los textos pueden contener espacios y =; La cadena no se puede analizar incondicionalmente por espacios.
- AddGumpIgnoreByID/AddGumpIgnoreBySerial oculta solo el resultado de esta lectura en el script actual; ClearGumpsIgnore elimina estos filtros. GetGumpsCount no disminuye.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetGumpInfo(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- GumpIndex=0: el primer servidor. La comprobación de longitud protege el acceso a los campos de ventana que faltan.
- información[0] — serial, información[1] — GumpID; ambos pertenecen a la misma grabación.
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;Parámetros y flujo de ejecución:
- info[3] — conjunto de descripciones de botones; el campo ButtonID en la línea especifica ID para la respuesta. i es solo el índice de la fila, no el ID del botón.
- Los botones de opción son botones de opción y aparecen en info[4], no en la lista de botones normales.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- info[2] - copia de textos. Sólo se permite el cierre de la ventana no inhibida NoClose.
- El cierre no borra los textos guardados; También se acepta una serie vacía de textos para una ventana existente.
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 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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpSerial(object? arg0);Lee serial propietario de instancia/ventana por índice de gump del servidor.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
int es el bit 32 serial de la instancia/propietario de la ventana. 0 es un índice no válido (serial=0 también puede estar presente en la propia ventana). Cuando se establece el bit más significativo, int es negativo: use Hex (valor) para mostrar. Este no es el type del tema y no es un índice.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Para un par serial/GumpID coincidente, use un GetGumpInfo: los campos info[0] e info[1].
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.GetGumpSerial(0);
UO.Print("GetGumpSerial: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el primer índice de la lista de servidores. Hex almacena la representación de bits del int negativo.
var value = UO.GetGumpSerial(0);
UO.Print(Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parámetros y flujo de ejecución:
- Con una lista inmutable, el recuento está después del último índice, por lo que falta =0. El último índice válido es count-1.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var count = UO.GetGumpsCount();
var missing = UO.GetGumpSerial(count);
UO.Print(Hex(missing));
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parámetros y flujo de ejecución:
- El serial es propiedad de la ventana del servidor o de su propietario según el contrato de comando. No se puede utilizar en lugar del índice gump.
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()
{
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;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpShortLines(object? arg0);Devuelve descripciones de elementos de texto y botones del servidor gump.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
Matriz: descripciones de elementos de texto y botones. [] - índice no válido o elementos no coincidentes. El índice de la fila comienza con 0; no es un control ID.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- La lista corta excluye decoraciones sin texto y sin el tipo Botón; Incluye botones de opción.
- Cuando SilentMode=0 el resultado no vacío también se agrega a la ventana de texto y la abre. SetSilentMode(1) deja solo devolver la matriz.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetGumpShortLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana. ArrayLength comprueba la presencia de una línea antes de llamar a las líneas[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;Parámetros y flujo de ejecución:
- SetSilentMode(1) desactiva la ventana de texto adicional. El Print explícito en el ejemplo todavía genera las líneas.
- i es el índice de la matriz; Tome ID del botón/interruptor deseado de la descripción correspondiente.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- El recuento se convierte al índice de la última ventana. Los datos se leen desde el servidor cargado; Las ventanas locales no se incluyen aquí.
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()
{
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;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpTextLines(object? arg0);Devuelve textos no vacíos de etiquetas, HTML, campos de entrada y etiquetas de conmutadores gump del servidor.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
Array: textos no vacíos de etiquetas, HTML, campos de entrada y etiquetas de cambio. [] - índice no válido o elementos no coincidentes. El índice de la fila comienza con 0; no es control ID.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Sólo texto; ButtonID, dimensiones y estructura no están incluidas. No imprime nada extra.
- GetGumpTextLines no abre una ventana de texto.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetGumpTextLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana. ArrayLength comprueba la presencia de una línea antes de llamar a las líneas[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;Parámetros y flujo de ejecución:
- SetSilentMode(1) desactiva la ventana de texto adicional. El Print explícito en el ejemplo todavía genera las líneas.
- i es el índice de la matriz; Tome ID del botón/interruptor deseado de la descripción correspondiente.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- El recuento se convierte al índice de la última ventana. Los datos se leen desde el servidor cargado; Las ventanas locales no se incluyen aquí.
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()
{
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;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpsCount();Devuelve el número de gumps activos del servidor.
No hay parámetros.
int >= 0: número de ventanas, no el índice de la última ventana. 0: la lista está vacía.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.GetGumpsCount();
UO.Print("GetGumpsCount: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos. count=0 significa que no hay ventanas de servidor en la lista actual.
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;Parámetros y flujo de ejecución:
- i es el índice con 0. El ID resultante identifica tipos de ventanas en lugar de posiciones en la lista.
- Si las ventanas cambian durante la caminata, es necesario volver a leer la lista; count no bloquea la interfaz.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- count-1 es el último índice de la lista actual, no es una garantía de la ventana más nueva. La información está vacía si la ventana desapareció antes de leer.
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 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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoCheckBox(object? arg0, object? arg1);Establece el valor del elemento una vez en el primer servidor adecuado; si el elemento aún no existe, guarda la espera.
-
CheckBoxID- int - exacto ID del elemento del tipo correspondiente. Esto no es un índice, ni un GumpID, ni una ventana serial; 0 es el ID habitual, sin sustitución del primer elemento. -
Value- int - 1 habilitar, 0 deshabilitar. Los valores numéricos distintos de cero también incluyen; Se recomiendan 0/1. Al seleccionar un botón de opción se anula la selección de los botones de opción vecinos de su grupo.
void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.
- Primero verifica las ventanas existentes en el orden de la interfaz actual, luego los diseños de servidor nuevos o actualizados. Se dispara una vez en la primera coincidencia de tipo y ID. Para una ventana específica, use NumGump* con un índice.
- Todos los campos pendientes se aplican antes de las respuestas automáticas de los botones. Repetición del mismo tipo y ID en un script reemplaza un valor que aún no se ha ejecutado. Límite: 1024 campos de cliente pendientes; exceder causa un error de secuencia de comandos.
- La finalización normal del procedimiento ahorra la espera. Cancelar el propietario o Terminate con su nombre elimina sus esperas; TerminateAll elimina todo, incluidos los que quedan después de completar los procedimientos. Cambiar el mundo despeja la cola. Las expectativas no se guardan en el perfil.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.GumpAutoCheckBox");
UO.GumpAutoCheckBox(33, 1);Parámetros y flujo de ejecución:
- El primer parámetro 33 es un ejemplo ID del elemento deseado; reemplácelo con el ID real de InfoGump. El segundo es el valor a establecer. Si no hay elemento, la acción queda pendiente.
UO.GumpAutoCheckBox(33, 1);Parámetros y flujo de ejecución:
- 33 es ID del elemento, 100 es un ejemplo de ID de botón de confirmación, 0x40001234 es serial del objeto que abre el formulario. Reemplace los tres valores por los suyos. El campo se completará antes de la respuesta, incluso si la ventana llegó más tarde.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.GumpAutoCheckBox(33, 1);
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}Parámetros y flujo de ejecución:
- Ambas llamadas usan ID 33. Si el elemento aún no ha aparecido, se aplica el último valor. Si la ventana ya está abierta, ambos cambios se realizan inmediatamente en orden.
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()
{
UO.GumpAutoCheckBox(33, 1);
UO.GumpAutoCheckBox(33, 0);
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoRadiobutton(object? arg0, object? arg1);Establece el valor del elemento una vez en el primer servidor adecuado; si el elemento aún no existe, guarda la espera.
-
RadiobuttonID- int - exacto ID del elemento del tipo correspondiente. Esto no es un índice, ni un GumpID, ni una ventana serial; 0 es el ID habitual, sin sustitución del primer elemento. -
Value- int - 1 habilitar, 0 deshabilitar. Los valores numéricos distintos de cero también incluyen; Se recomiendan 0/1. Al seleccionar un botón de opción se anula la selección de los botones de opción vecinos de su grupo.
void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.
- Primero verifica las ventanas existentes en el orden de la interfaz actual, luego los diseños de servidor nuevos o actualizados. Se dispara una vez en la primera coincidencia de tipo y ID. Para una ventana específica, use NumGump* con un índice.
- Todos los campos pendientes se aplican antes de las respuestas automáticas de los botones. Repetición del mismo tipo y ID en un script reemplaza un valor que aún no se ha ejecutado. Límite: 1024 campos de cliente pendientes; exceder causa un error de secuencia de comandos.
- La finalización normal del procedimiento ahorra la espera. Cancelar el propietario o Terminate con su nombre elimina sus esperas; TerminateAll elimina todo, incluidos los que quedan después de completar los procedimientos. Cambiar el mundo despeja la cola. Las expectativas no se guardan en el perfil.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.GumpAutoRadiobutton");
UO.GumpAutoRadiobutton(33, 1);Parámetros y flujo de ejecución:
- El primer parámetro 33 es un ejemplo ID del elemento deseado; reemplácelo con el ID real de InfoGump. El segundo es el valor a establecer. Si no hay elemento, la acción queda pendiente.
UO.GumpAutoRadiobutton(33, 1);Parámetros y flujo de ejecución:
- 33 es ID del elemento, 100 es un ejemplo de ID de botón de confirmación, 0x40001234 es serial del objeto que abre el formulario. Reemplace los tres valores por los suyos. El campo se completará antes de la respuesta, incluso si la ventana llegó más tarde.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.GumpAutoRadiobutton(33, 1);
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}Parámetros y flujo de ejecución:
- Ambas llamadas usan ID 33. Si el elemento aún no ha aparecido, se aplica el último valor. Si la ventana ya está abierta, ambos cambios se realizan inmediatamente en orden.
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()
{
UO.GumpAutoRadiobutton(33, 1);
UO.GumpAutoRadiobutton(33, 0);
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoTextEntry(object? arg0, object? arg1);Establece el valor del elemento una vez en el primer servidor adecuado; si el elemento aún no existe, guarda la espera.
-
TextEntryID- int - exacto ID del elemento del tipo correspondiente. Esto no es un índice, ni un GumpID, ni una ventana serial; 0 es el ID habitual, sin sustitución del primer elemento. -
Value- string: texto del campo, incluida una línea vacía para borrar. Se conservan las restricciones sobre la longitud y los caracteres permitidos del propio campo.
void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.
- Primero verifica las ventanas existentes en el orden de la interfaz actual, luego los diseños de servidor nuevos o actualizados. Se dispara una vez en la primera coincidencia de tipo y ID. Para una ventana específica, use NumGump* con un índice.
- Todos los campos pendientes se aplican antes de las respuestas automáticas de los botones. Repetición del mismo tipo y ID en un script reemplaza un valor que aún no se ha ejecutado. Límite: 1024 campos de cliente pendientes; exceder causa un error de secuencia de comandos.
- La finalización normal del procedimiento ahorra la espera. Cancelar el propietario o Terminate con su nombre elimina sus esperas; TerminateAll elimina todo, incluidos los que quedan después de completar los procedimientos. Cambiar el mundo despeja la cola. Las expectativas no se guardan en el perfil.
- El texto delimitado por un campo se puede acortar o rechazar; el elemento encontrado todavía consume una acción única. El comando no envía una respuesta de botón y no espera al servidor. Para verificar, use GetGumpInfo/NumGumpTextEntry.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.GumpAutoTextEntry");
UO.GumpAutoTextEntry(33, "500");Parámetros y flujo de ejecución:
- El primer parámetro 33 es un ejemplo ID del elemento deseado; reemplácelo con el ID real de InfoGump. El segundo es el valor a establecer. Si no hay elemento, la acción queda pendiente.
UO.GumpAutoTextEntry(33, "500");Parámetros y flujo de ejecución:
- 33 es ID del elemento, 100 es un ejemplo de ID de botón de confirmación, 0x40001234 es serial del objeto que abre el formulario. Reemplace los tres valores por los suyos. El campo se completará antes de la respuesta, incluso si la ventana llegó más tarde.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.GumpAutoTextEntry(33, "500");
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}Parámetros y flujo de ejecución:
- Ambas llamadas usan ID 33. Si el elemento aún no ha aparecido, se aplica el último valor. Si la ventana ya está abierta, ambos cambios se realizan inmediatamente en orden.
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()
{
UO.GumpAutoTextEntry(33, "500");
UO.GumpAutoTextEntry(33, "");
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GumpExists(object? arg0);
int UO.GumpExists(object? arg0, object? arg1);Comprueba la presencia de un servidor gump utilizando un selector o el par exacto serial/GumpID.
-
id: formato de un argumento: numérico serial, GumpID o índice con 0. -1 no selecciona el último gump aquí. -
firstId: forma de dos argumentos: 32 numérico-bit serial, incluido el int negativo con el bit más significativo. -
secondId— Forma de dos argumentos: GumpID exacto de 32 bits. 0 es un número exacto, no un comodín. Solo -1 vuelve a la verificación de un argumento de firstId como serial/GumpID/index.
int - 1, si la ventana correspondiente existe ahora; 0 en caso contrario. No devuelve índice, serial ni número de coincidencias.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- El cheque no selecciona una ventana y no la reserva. El par ID se comprueba en su conjunto; ID con el bit más significativo no desactiva el filtro.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.GumpExists(0x87654321);
UO.Print("GumpExists: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0x87654321: el GumpID o serial deseado. Un argumento no distingue entre estos espacios ID.
var exists = UO.GumpExists(0x87654321);
UO.Print(Convert.ToString(exists));Parámetros y flujo de ejecución:
- El primer número es serial, el segundo es GumpID. Ambos son negativos en el int con signo, pero la comparación conserva todos los bits 32.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- info[0]/info[1] pertenecen a la misma imagen. existe=1 significa que el par existe ahora; una ventana reabierta con el mismo par no es diferente de la anterior.
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 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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpObject(object? arg0);Selecciona un servidor existente para llamadas posteriores.
-
id- int: Coincide con LocalSerial o ServerSerial primero, luego indexa cero en la lista actual de gumps. Estos no son botones ID. -
gumpId- int: Coincide con LocalSerial o ServerSerial primero, luego indexa cero en la lista actual de gumps. Estos no son botones ID.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Puente.SelectGump guarda _selectedServerGump. Si serial no coincide, toma el índice 0..count-1. No encontrado: el gump seleccionado se convierte en null y se muestra un mensaje.
- Gump no se abre y no se envía ninguna respuesta al servidor. Los índices cambian cuando se abren/cierran ventanas; para seleccionar estable, use el serial/id actual.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.GumpObject");
UO.GumpObject(0);Parámetros y flujo de ejecución:
- Selecciona un servidor existente para llamadas posteriores.
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;Parámetros y flujo de ejecución:
- Puente.SelectGump guarda _selectedServerGump. Si serial no coincide, toma el índice 0..count-1. No encontrado: el gump seleccionado se convierte en null y se muestra un mensaje.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- Gump no se abre y no se envía ninguna respuesta al servidor. Los índices cambian cuando se abren/cierran ventanas; para seleccionar estable, use el serial/id actual.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsGump();Comprueba si hay al menos un servidor activo.
No hay parámetros.
int — 1, si la lista no está vacía; 0 si está vacío. Esta es una señal de disponibilidad, no del número de ventanas.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.IsGump();
UO.Print("IsGump: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos. GetGumpInfo(0) lee el primer elemento y puede devolver una matriz vacía si la ventana ya se ha cerrado.
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;Parámetros y flujo de ejecución:
- Con tres ventanas estables presentes=1, cuenta=3.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var present = UO.IsGump();
var count = UO.GetGumpsCount();
UO.Print(Convert.ToString(present) + "/" + Convert.ToString(count));
return null;
}Parámetros y flujo de ejecución:
- No espere más de aproximadamente 3000 ms, verifique cada 50 ms. El regalo final muestra el estado después de la espera.
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();
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsGumpCanBeClosed(object? arg0);Comprueba si se permite el cierre local del servidor gump con el botón derecho del ratón.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
int — 1, si la ventana existe y CanCloseWithRightClick está habilitado; en caso contrario 0. Esto no es el resultado del cierre o de la presencia de un botón Cancelar.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- NoClose prohíbe CloseSimpleGump; la capacidad de enviar ButtonID al servidor es una acción separada.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.IsGumpCanBeClosed(0);
UO.Print("IsGumpCanBeClosed: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana. La verificación y el cierre son desafíos diferentes; el índice puede cambiar entre ellos.
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;Parámetros y flujo de ejecución:
- closeable=0 en una ventana existente significa que la ventana no se puede cerrar, no la ausencia de la ventana.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- -1 no es válido para este comando de índice y da 0; Esta no es la última selección de ventana.
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 result = UO.IsGumpCanBeClosed(-1);
UO.Print(Convert.ToString(result));
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastGump(object? arg0);
dynamic UO.LastGump(object? arg0, object? arg1);Lee un campo del servidor seleccionado. Utiliza la ventana seleccionada por este script o el último elemento de la lista actual.
-
identifier- string no distingue entre mayúsculas y minúsculas. Todos los valores admitidos y tipos de resultados se enumeran en la sección Devoluciones. El nombre desconocido devuelve una cadena vacía. -
key- Opcional int, predeterminado - 1. Índice con 0 para botón/texto/object/comando; este no es el control ID. Un índice negativo y fuera de límites dan como resultado 0 para el botón o una cadena vacía para los campos de texto. Otros identificadores no utilizan clave.
El tipo de resultado depende del identificador. int: buttonlen — número de botones normales; botón — ID de botón por clave de índice; textlen — número de elementos de texto disponibles; injid — índice de la ventana actual; respondió — 0 (el historial de respuestas no se almacena); inclient: 1 para una ventana activa encontrada, 0 si está ausente; objectcount: número de controles activos, incluidos los anidados. string: serial y gumpid - cadenas hexadecimales 0xXXXXXXX; texto: texto del elemento en la clave de índice; object — nombre del tipo de control; comando: descripción del control (tipo, página, ID, coordenadas, dimensiones y campos admitidos). Si no hay ventana, los identificadores numéricos dan 0, los identificadores de cadena dan una cadena vacía. injid=0 también es un primer índice válido: 0 por sí solo no prueba la ausencia de una ventana. Esto no es Array o Pascal TGumpInfo.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- SelectGump/InfoGump especifica la ventana seleccionada solo en el tiempo de ejecución actual. Si la ventana seleccionada está cerrada, se utiliza el último elemento de la lista actual, que no es necesariamente el elemento más reciente en el tiempo.
- textlen/text se refieren a los controles de texto disponibles, no al grupo de cadenas original del paquete del servidor. object/command se refiere a todo el árbol de controles en vivo. Los índices de diferentes listas no se pueden mezclar.
- Cada llamada lee el estado actual por separado. Para serial, GumpID y listas coincidentes, utilice GetGumpInfo.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.LastGump("gumpid");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- gumpid y serial devuelven cadenas ya formateadas en hexadecimal; no se necesita maleficio adicional. Las líneas vacías significan que no hay ventana al leer.
var id = UO.LastGump("gumpid");
var serial = UO.LastGump("serial");
UO.Print(id + " / " + serial);Parámetros y flujo de ejecución:
- buttonlen — número de botones; i es el índice de la fila desde 0 hasta contar-1. Botón - ID para respuesta, no gráficos ni índice. Al cambiar de ventana, vuelva a leer la lista.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- 0x12345678 es un ejemplo de GumpID/serial, reemplace ID con la forma deseada. texto con clave=0 lee el primer control de texto disponible; esta es una lista diferente al botón.
- SelectGump informa la ausencia de la ventana especificada, pero no bloquea la lectura posterior: verifique el gumpid devuelto por separado si es necesario.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpButton(object? arg0, object? arg1);Activa un botón de gump del servidor existente según el índice estricto de la ventana y el ID del botón exacto.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar. -
Value- int - ID de botón de la descripción de un botón normal. Ni el número de línea, ni el botón graphic, ni el GumpID.
int (bool) - 1, si se encuentran la ventana y el botón y se realiza la acción local; 0 si no hay ventana/botón. Al cambiar la página también se devuelve 1. Esto no es una confirmación del procesamiento del servidor.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- El botón SwitchPage cambia la página localmente. El botón Activar provoca una respuesta de encogimiento; la ventana normalmente se cierra. A diferencia de SendGumpSelect, este comando requiere un ID de botón existente en el árbol de control.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.NumGumpButton(0, 77);
UO.Print("NumGumpButton: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el índice de la ventana, 77 es un ID de botón de ejemplo del inspector. Tu formulario necesita su ID real.
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;Parámetros y flujo de ejecución:
- 0x12345678 es el GumpID esperado, 100 es el ButtonID. Estos dos números pertenecen a espacios diferentes ID.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- 33 - casilla de verificación ID, 1 - habilitar, botón 100 - ID. El estado de la casilla de verificación se incluirá en la respuesta solo para el botón Activar.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpCheckBox(object? arg0, object? arg1, object? arg2);Establece el estado de la bandera en el servidor por índice.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar. -
CBID- int - el elemento ID exacto de la descripción de gump. Este no es el número de serie del elemento; el ID que falta no se reemplaza con un índice. -
Value- int - 1 habilitar/seleccionar, 0 deshabilitar. También se reconocen los valores numéricos distintos de cero, true y marcados. Se recomiendan 0 y 1.
int (bool) — 1, si se encuentra el elemento requerido y su valor final coincide con el especificado; 0 si el índice no es válido, falta el tipo ID/elemento, o si el campo no ha tomado un valor exacto. Restablecer un valor ya establecido también es exitoso.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Cambia el estado local. Los campos y los botones de opción marcados se envían seguidos de la respuesta del botón.
- Al seleccionar un botón de opción se anula la selección del botón de opción adyacente del mismo grupo; Las casillas de verificación habituales son independientes.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.NumGumpCheckBox(0, 33, 1);
UO.Print("NumGumpCheckBox: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana; 33 — exacto CBID; 1 - nuevo valor. Reemplace 33 con ID de su 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;Parámetros y flujo de ejecución:
- 0 borra el campo o lo desmarca. Se devuelve el éxito del cambio, no el nuevo valor del campo.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var ok = UO.NumGumpCheckBox(0, 33, 0);
UO.Print(Convert.ToString(ok));
return null;
}Parámetros y flujo de ejecución:
- 100: ejemplo de confirmación de ButtonID del servidor; es necesario reemplazar ID de su ventana. 0 a SendGumpSelect(0,100) es el índice de la ventana.
- La respuesta puede cerrar el gump y cambiar los índices. enviado significa envío local, resultado de una operación no confirmada por el servidor.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpRadiobutton(object? arg0, object? arg1, object? arg2);Establece el estado de un botón de opción en un servidor agrupado por índice.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar. -
RadiobuttonID- int - el elemento ID exacto de la descripción de gump. Este no es el número de serie del elemento; el ID que falta no se reemplaza con un índice. -
Value- int - 1 habilitar/seleccionar, 0 deshabilitar. También se reconocen los valores numéricos distintos de cero, true y marcados. Se recomiendan 0 y 1.
int (bool) — 1, si se encuentra el elemento requerido y su valor final coincide con el especificado; 0 si el índice no es válido, falta el tipo ID/elemento, o si el campo no ha tomado un valor exacto. Restablecer un valor ya establecido también es exitoso.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Cambia el estado local. Los campos y los botones de opción marcados se envían seguidos de la respuesta del botón.
- Al seleccionar un botón de opción se anula la selección del botón de opción adyacente del mismo grupo; Las casillas de verificación habituales son independientes.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.NumGumpRadiobutton(0, 33, 1);
UO.Print("NumGumpRadiobutton: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana; 33 — ID exacto del botón de radio; 1 - nuevo valor. Reemplace 33 con ID de su 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;Parámetros y flujo de ejecución:
- 0 borra el campo o lo desmarca. Se devuelve el éxito del cambio, no el nuevo valor del campo.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var ok = UO.NumGumpRadiobutton(0, 33, 0);
UO.Print(Convert.ToString(ok));
return null;
}Parámetros y flujo de ejecución:
- 100: ejemplo de confirmación de ButtonID del servidor; es necesario reemplazar ID de su ventana. 0 a SendGumpSelect(0,100) es el índice de la ventana.
- La respuesta puede cerrar el gump y cambiar los índices. enviado significa envío local, resultado de una operación no confirmada por el servidor.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpTextEntry(object? arg0, object? arg1, object? arg2);Establece el texto del campo de entrada en el servidor agrupado por índice.
-
GumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar. -
TextEntryID- int - el elemento ID exacto de la descripción de gump. Este no es el número de serie del elemento; el ID que falta no se reemplaza con un índice. -
Value- string - texto nuevo. Una cadena vacía borra el campo; Se conservan las restricciones de longitud/caracteres en el campo en sí.
int (bool) — 1, si se encuentra el elemento requerido y su valor final coincide con el especificado; 0 si el índice no es válido, falta el tipo ID/elemento, o si el campo no ha tomado un valor exacto. Restablecer un valor ya establecido también es exitoso.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Cambia el estado local. Los campos y los botones de opción marcados se envían seguidos de la respuesta del botón.
- Al seleccionar un botón de opción se anula la selección del botón de opción adyacente del mismo grupo; Las casillas de verificación habituales son independientes.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.NumGumpTextEntry(0, 33, "500");
UO.Print("NumGumpTextEntry: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 — índice de ventana; 33 — exacto TextEntryID; '500' es el nuevo valor. Reemplace 33 con ID de su 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;Parámetros y flujo de ejecución:
- '' borra el campo o lo desmarca. Se devuelve el éxito del cambio, no el nuevo valor del campo.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var ok = UO.NumGumpTextEntry(0, 33, "");
UO.Print(Convert.ToString(ok));
return null;
}Parámetros y flujo de ejecución:
- 100: ejemplo de confirmación de ButtonID del servidor; es necesario reemplazar ID de su ventana. 0 a SendGumpSelect(0,100) es el índice de la ventana.
- La respuesta puede cerrar el gump y cambiar los índices. enviado significa envío local, resultado de una operación no confirmada por el servidor.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SelectGump(object? arg0);Selecciona un servidor existente para llamadas posteriores.
-
id- int: Coincide con LocalSerial o ServerSerial primero, luego indexa cero en la lista actual de gumps. Estos no son botones ID. -
gumpId- int: Coincide con LocalSerial o ServerSerial primero, luego indexa cero en la lista actual de gumps. Estos no son botones ID.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Puente.SelectGump guarda _selectedServerGump. Si serial no coincide, toma el índice 0..count-1. No encontrado: el gump seleccionado se convierte en null y se muestra un mensaje.
- Gump no se abre y no se envía ninguna respuesta al servidor. Los índices cambian cuando se abren/cierran ventanas; para seleccionar estable, use el serial/id actual.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.SelectGump");
UO.SelectGump(0);Parámetros y flujo de ejecución:
- Selecciona un servidor existente para llamadas posteriores.
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;Parámetros y flujo de ejecución:
- Puente.SelectGump guarda _selectedServerGump. Si serial no coincide, toma el índice 0..count-1. No encontrado: el gump seleccionado se convierte en null y se muestra un mensaje.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- Gump no se abre y no se envía ninguna respuesta al servidor. Los índices cambian cuando se abren/cierran ventanas; para seleccionar estable, use el serial/id actual.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.SendGumpSelect(object? arg0);
int UO.SendGumpSelect(object? arg0, object? arg1);
int UO.SendGumpSelect(object? arg0, object? arg1, object? arg2);
int UO.SendGumpSelect(object? arg0, object? arg1, object? arg2, object? arg3);Envía el ID del botón para el servidor seleccionado.
-
triggerId- cadena int o numérica - ID del botón del servidor. 0 normalmente significa cerrar/fallar, pero la acción exacta la determina el servidor. No se requiere un ID de botón visible en el árbol. -
gumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar. Se utiliza únicamente en forma de dos argumentos (gumpIndex, triggerId). -
serial: en las formas de argumento 3/4, el bit numérico 32 serial. 0 o -1 desactiva el filtro serial; los números restantes, incluidos los negativos con el bit más significativo, se comparan exactamente. -
gumpId: en las formas de argumento 3/4, el GumpID numérico de 32 bits. 0 o -1 desactiva el filtro GumpID. Se permiten cadenas hexagonales; Los nombres AddObject no están permitidos aquí. -
timeout: cuarto argumento opcional, int milisegundos para esperar un par ID coincidente. Por defecto, 0 es un intento inmediato; el negativo se limita a 0. Vuelva a comprobar el intervalo 20 ms.
int — 1, si se encuentra un servidor activo y se llama a la respuesta; 0 si no se encuentra la ventana antes de que expire el tiempo de espera. No devuelve el ID seleccionado y no espera a que el servidor confirme el resultado.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Un argumento selecciona el gump previamente seleccionado por este script; si está cerrado/no seleccionado, el último elemento de la lista actual. Dos argumentos especifican un índice estricto. Tres/cuatro: un par de ID con filtros.
- La selección y la llamada de una respuesta se producen en una solicitud de hilo del juego. La espera se cancela deteniendo el procedimiento. No confunda la respuesta directa del servidor con el cambio de página: el botón SwitchPage requiere NumGumpButton.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.SendGumpSelect(100);
UO.Print("SendGumpSelect: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- SelectGump selecciona tipo/serial 0x12345678 o reporta ausencia; 100 - ID de botón.
- Si ya no hay una ventana seleccionada, el formulario de un argumento utiliza la última ventana disponible. Para una identidad estricta, utilice un formulario con dos ID.
UO.SelectGump(0x12345678);
var sent = UO.SendGumpSelect(100);
UO.Print(Convert.ToString(sent));Parámetros y flujo de ejecución:
- 0 — índice, 100 — ID de botón. Esto no es serial=0 ni GumpID=100.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- información[0] - serial, información[1] - GumpID, 100 - BotónID. Cambiar el índice no redirigirá la respuesta a un tipo/propietario diferente.
- Los valores Serial/GumpID 0/-1 son filtros sin restricciones; los pares idénticos no distinguen las instancias reabiertas.
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 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;
}Parámetros y flujo de ejecución:
- 0 desactiva el filtro serial; 0x87654321 — exacto ID con el bit más significativo; 100 — botón; 2000 — espera máxima en ms. No se utiliza como comodín incondicional.
var sent = UO.SendGumpSelect(0, 0x87654321, 100, 2000);
UO.Print(Convert.ToString(sent));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetGump(object? arg0, object? arg1, object? arg2);
void UO.SetGump(object? arg0, object? arg1, object? arg2, object? arg3);Cambia el campo de un servidor existente.
-
gumpId: solo formato de cuatro argumentos: serial/id o índice de gump cero. El formulario con tres usos -1 - el último gump seleccionado/. -
identifier— Cadena "casilla de verificación", "radio" o "entrada de texto", las mayúsculas y minúsculas no son importantes. Un nombre no admitido no cambia el campo. -
key- int: primer elemento LocalSerial/ID, luego índice cero entre elementos del tipo especificado. Ningún elemento: mensaje de error. -
stateValue— Para casilla de verificación/radio: "marcado", "true" no distingue entre mayúsculas y minúsculas o se reconoce distinto de cero int incluye; el otro se apaga. Para entrada de texto: todo el texto hasta ToString.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- SetGumpValue llama a TrySetGumpValue; con 0 muestra un mensaje. Cambia el campo local de un gump ya existente y no registra un gancho esperando una nueva ventana.
- Cambiar la casilla de verificación/entrada de texto no envía una respuesta al servidor por sí solo. Para responder, seleccione el botón vía SendGumpSelect/WaitGump; Los botones de opción se procesan en una vista separada.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.SetGump");
UO.SetGump("checkbox", 0, 1);Parámetros y flujo de ejecución:
- Cambia el campo de un servidor existente.
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;Parámetros y flujo de ejecución:
- SetGumpValue llama a TrySetGumpValue; con 0 muestra un mensaje. Cambia el campo local de un gump ya existente y no registra un gancho esperando una nueva ventana.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- Cambiar la casilla de verificación/entrada de texto no envía una respuesta al servidor por sí solo. Para responder, seleccione el botón vía SendGumpSelect/WaitGump; Los botones de opción se procesan en una vista separada.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGump(object? arg0);
void UO.WaitGump(object? arg0, object? arg1);
void UO.WaitGump(object? arg0, object? arg1, object? arg2);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, object? arg11);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, object? arg11, object? arg12);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, object? arg11, object? arg12, object? arg13);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, object? arg11, object? arg12, object? arg13, object? arg14);
void UO.WaitGump(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, object? arg11, object? arg12, object? arg13, object? arg14, object? arg15);Registra una secuencia de respuestas únicas a los botones. El script continúa ejecutándose inmediatamente; la ausencia de una ventana no provoca un retraso de 30 segundos.
-
triggerId- int ID de botón o numérico string. Una línea puede contener una secuencia hasta | o una coma. Los formularios con argumentos 2..16 toman una secuencia; también permiten matrices y secuencias anidadas. Todos los ID se clasifican antes del registro. Una secuencia vacía, más de 256 de botones de cliente pendientes o un anidamiento de más de 32 niveles provocarán un error sin registro parcial. -
Value— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger1— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger2— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger3— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger4— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger5— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger6— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger7— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger8— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger9— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger10— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger11— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger12— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger13— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger14— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger15— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz. -
trigger16— Elemento de secuencia: int ID de botón, numérico string, cadena con |/coma o matriz de dichos elementos. El orden es de izquierda a derecha. Se aplican límites y reglas generales triggerId. El valor es el nombre del único parámetro de la forma object?, que también acepta una matriz.
void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.
- Busca un botón Activar real con el ID de botón deseado; Se omiten los botones para cambiar de página y ventana sin el botón requerido. El ID posterior no pasa por alto el primero en espera. Para una entrega de marcado, no más de una respuesta en una ventana. El marcado actualizado puede utilizar el mismo objeto de ventana.
- El siguiente WaitGump del mismo script completa su secuencia pendiente. La búsqueda no se limita a GumpID: utilice NumGumpButton o SendGumpSelect para una selección precisa. ButtonID=0 solo funcionará si existe un botón Activar con ID 0; Este no es un cierre universal.
- La finalización normal del procedimiento ahorra la espera. Cancelar el propietario o Terminate con su nombre elimina sus esperas; TerminateAll elimina todo, incluidos los que quedan después de completar los procedimientos. Cambiar el mundo despeja la cola. Las expectativas no se guardan en el perfil.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.WaitGump");
UO.WaitGump(100);Parámetros y flujo de ejecución:
- 100: ID del botón de la respuesta. WaitGump lo registra antes que UseObject; Una mayor ejecución no significa que el servidor ya haya aceptado la respuesta.
UO.WaitGump(100);
UO.UseObject("0x40001234");Parámetros y flujo de ejecución:
- 7, 22 y 1 son los ID de botón de las formas secuenciales. Estos ID se verifican en orden. El número de argumentos no especifica el retraso; la llamada registra toda la secuencia.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.WaitGump(7, 22, 1);
UO.UseObject("0x40001234");
return null;
}Parámetros y flujo de ejecución:
- La línea 7|22|1 especifica la misma secuencia. TerminateAll luego borra todos los gumps pendientes y detiene todos los procedimientos; Esta es una acción global.
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()
{
UO.WaitGump("7|22|1");
UO.TerminateAll();
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGumpCheck(object? arg0, object? arg1);
void UO.WaitGumpCheck(object? arg0, object? arg1, object? arg2, object? arg3);
void UO.WaitGumpCheck(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5);Cambia hasta tres campos de casilla de verificación del gump actual.
-
index- elemento int ID o índice cero, como SetGump. Los argumentos vienen en pares: selector, valor. -
index2- elemento int ID o índice cero, como SetGump. Los argumentos vienen en pares: selector, valor. -
index3- elemento int ID o índice cero, como SetGump. Los argumentos vienen en pares: selector, valor. -
state: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
text: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
state2: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
text2: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
state3: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
text3: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteLegacyManualAlias revisa los argumentos en pares y llama a SetGumpValue(-1, "casilla de verificación", selector, valor) para cada uno. Todos los formularios registrados son argumentos 2, 4 o 6.
- El nombre UO.Wait no significa esperar: no hay bloqueo ni cola para futuros intentos. Si falta el campo, se muestra un error. La respuesta del botón no se envía.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.WaitGumpCheck");
UO.WaitGumpCheck(0, 1);Parámetros y flujo de ejecución:
- Cambia hasta tres campos de casilla de verificación del gump actual.
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;Parámetros y flujo de ejecución:
- ExecuteLegacyManualAlias revisa los argumentos en pares y llama a SetGumpValue(-1, "casilla de verificación", selector, valor) para cada uno. Todos los formularios registrados son argumentos 2, 4 o 6.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- El nombre UO.Wait no significa esperar: no hay bloqueo ni cola para futuros intentos. Si falta el campo, se muestra un error. La respuesta del botón no se envía.
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()
{
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGumpEntry(object? arg0, object? arg1);
void UO.WaitGumpEntry(object? arg0, object? arg1, object? arg2, object? arg3);
void UO.WaitGumpEntry(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5);Cambia hasta tres campos de entrada de texto del gump actual.
-
index- elemento int ID o índice cero, como SetGump. Los argumentos vienen en pares: selector, valor. -
index2- elemento int ID o índice cero, como SetGump. Los argumentos vienen en pares: selector, valor. -
index3- elemento int ID o índice cero, como SetGump. Los argumentos vienen en pares: selector, valor. -
state: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
text: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
state2: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
text2: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
state3: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto. -
text3: valor de campo hasta ToString. La casilla de verificación incluye "marcado"/"true"/número distinto de cero; textentry acepta texto.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteLegacyManualAlias revisa los argumentos en pares y llama a SetGumpValue(-1, "textentry", selector, value) para cada uno. Todos los formularios registrados son argumentos 2, 4 o 6.
- El nombre UO.Wait no significa esperar: no hay bloqueo ni cola para futuros intentos. Si falta el campo, se muestra un error. La respuesta del botón no se envía.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.WaitGumpEntry");
UO.WaitGumpEntry(0, "Example");Parámetros y flujo de ejecución:
- Cambia hasta tres campos de entrada de texto del gump actual.
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;Parámetros y flujo de ejecución:
- ExecuteLegacyManualAlias revisa los argumentos en pares y llama a SetGumpValue(-1, "textentry", selector, value) para cada uno. Todos los formularios registrados son argumentos 2, 4 o 6.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
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;Parámetros y flujo de ejecución:
- El nombre UO.Wait no significa esperar: no hay bloqueo ni cola para futuros intentos. Si falta el campo, se muestra un error. La respuesta del botón no se envía.
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()
{
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;
}ClassicUO — Bad Newbie & C# Scripts IDE