Skip to content

ES UO Topic gumps

Codex edited this page Oct 11, 2026 · 3 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Ventanas Gump

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.

Secciones

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

Todos los comandos del tema

Información de goma

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

Respuestas

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

Ignore / Cerrar

UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial · UO.ClearGumpsIgnore · UO.CancelGump · UO.CloseClientGump

Ejemplos sobre el tema.

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.

UO.GetGumpInfo

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;

UO.WaitGump

Parámetros, resultado y todos los escenarios

UO.WaitGump(100);
UO.UseObject("0x40001234");

Referencia completa de comandos


UO.AddGumpIgnoreByID

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

void UO.AddGumpIgnoreByID(object? arg0);

Agrega el gump numérico ID a la lista de excepciones locales utilizada por UO.GetGumpInfo.

Parámetros

  • ID es un gump numérico ID que devuelve UO.GetGumpInfo.

Valor devuelto

void. Agregar ID no cierra la ventana ni confirma que el servidor la haya procesado.

Comportamiento

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Elimina el gump con ID 123 del resultado de UO.GetGumpInfo. - guión directo

Parámetros y flujo de ejecución:

  • Elimina el gump con ID 123 del resultado de UO.GetGumpInfo.
UO.AddGumpIgnoreByID(123);

2. Almacene ID en una variable antes de lanzar la excepción. - función de guión

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;
}

3. Agrega un poco de ID; cada excepción afecta a GetGumpInfo. - clase de guión

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;
    }
}

UO.AddGumpIgnoreBySerial

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

void UO.AddGumpIgnoreBySerial(object? arg0);

Agrega gump serial a la lista de excepciones locales utilizada por UO.GetGumpInfo.

Parámetros

  • Serial es un gump numérico serial que devuelve UO.GetGumpInfo.

Valor devuelto

void. Agregar serial no cierra la ventana ni confirma que el servidor la haya procesado.

Comportamiento

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Elimine gump con el serial 1073741824 del resultado UO.GetGumpInfo. - guión directo

Parámetros y flujo de ejecución:

  • Elimine gump con el serial 1073741824 del resultado UO.GetGumpInfo.
UO.AddGumpIgnoreBySerial(1073741824);

2. Pasar serial desde una variable. - función de guión

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;
}

3. Elimine dos gomas serial de la salida de GetGumpInfo. - clase de guión

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;
    }
}

UO.CancelGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

void UO.CancelGump();
void UO.CancelGump(object? arg0);

Cierra el servidor seleccionado mediante un solucionador compatible CloseSimpleGump.

Parámetros

  • 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.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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();

1. Cerrar el último golpe - guión directo

Parámetros y flujo de ejecución:

  • El formulario sin argumento selecciona el último servidor disponible.
UO.CancelGump();

2. Cerrar gump mediante ID conocido - función de script

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;

3. Último índice explícito: clase de script

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;
    }
}

UO.ClearGumpsIgnore

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

void UO.ClearGumpsIgnore();

Borra ambos conjuntos de tiempo de ejecución ignorados de gump ID y gump serial.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • No cierra las ventanas. Después de borrar, GetGumpInfo puede volver a devolver una instantánea del gump previamente ignorado.

Scripts independientes de C#

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.

Ejemplo sencillo

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();

1. Estado claro: guión directo

Parámetros y flujo de ejecución:

  • Borra ambos conjuntos de tiempo de ejecución ignorados de gump ID y gump serial.
UO.ClearGumpsIgnore();

2. Borrar después de la configuración: función de script

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;
}

3. Volver a purgar: clase de secuencia de comandos

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;
    }
}

UO.CloseClientGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

void UO.CloseClientGump(object? arg0);

Elimina los gumps del servidor local cuyo ServerSerial coincide con el ID pasado.

Parámetros

  • ID es un gump ID int/numérico en comparación con ServerSerial. Este no es un índice de lista ni una publicación serial local.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Cierre el primer gump con ID - guión directo

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;

2. ID de variable - función de script

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;
}

3. Volver a cerrar - Clase de secuencia de comandos

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;
}

UO.GetGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Leer ID de la ventana seleccionada - script directo

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);

2. Enumerar ID de botón: función de secuencia de comandos

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;

3. Leer texto después de la selección - clase de script

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;
}

UO.GetGumpButtonsDescription

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

dynamic UO.GetGumpButtonsDescription(object? arg0);

Devuelve descripciones de los botones regulares de gump del servidor.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Leer la primera línea - guión directo

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;

2. Recorrer todas las líneas sin ventana automática - función de script

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;

3. Leer los últimos datos de la ventana del servidor abierto: clase de secuencia de comandos

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;
    }
}

UO.GetGumpCount

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.GetGumpCount();

Versión corta GetGumpsCount: número de servidores activos.

Parámetros

No hay parámetros.

Valor devuelto

int >= 0: número de ventanas, no el índice de la última ventana. 0: la lista está vacía.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Compruebe las ventanas del servidor: script directo

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}");

2. Leer ID de ventanas abiertas: función de secuencia de comandos

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;
}

3. Esperar ventana cronometrada - clase de script

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;
    }
}

UO.GetGumpFullLines

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

dynamic UO.GetGumpFullLines(object? arg0);

Devuelve descripciones de todos los elementos vivos, incluidos los gumps de servidor anidados.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Leer la primera línea - guión directo

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;

2. Recorrer todas las líneas sin ventana automática - función de script

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;

3. Leer los últimos datos de la ventana del servidor abierto: clase de secuencia de comandos

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;
    }
}

UO.GetGumpID

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.GetGumpID(object? arg0);

Lee el ID del tipo de ventana GumpID del índice gump del servidor.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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].

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Mostrar ID en hexadecimal: secuencia de comandos directa

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");

2. Límite de la lista de verificación: función de secuencia de comandos

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");

3. Buscar ventana abierta por ID conocido - clase de script

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;
    }
}

UO.GetGumpInfo

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

dynamic UO.GetGumpInfo(object? arg0);

Devuelve una instantánea coherente de los identificadores y elementos de un único servidor gump.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Leer ambos ID - guión directo

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;

2. Listar ID de botones reales: función de script

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;

3. Guardar texto hasta cerrar - clase de script

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;
}

UO.GetGumpSerial

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.GetGumpSerial(object? arg0);

Lee serial propietario de instancia/ventana por índice de gump del servidor.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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].

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Mostrar ID en hexadecimal: secuencia de comandos directa

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");

2. Límite de la lista de verificación: función de secuencia de comandos

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");

3. Mostrar propietarios de todas las ventanas del servidor cargadas - clase de script

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;
    }
}

UO.GetGumpShortLines

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

dynamic UO.GetGumpShortLines(object? arg0);

Devuelve descripciones de elementos de texto y botones del servidor gump.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Leer la primera línea - guión directo

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;

2. Recorrer todas las líneas sin ventana automática - función de script

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;

3. Leer los últimos datos de la ventana del servidor abierto: clase de secuencia de comandos

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;
    }
}

UO.GetGumpTextLines

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

dynamic UO.GetGumpTextLines(object? arg0);

Devuelve textos no vacíos de etiquetas, HTML, campos de entrada y etiquetas de conmutadores gump del servidor.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Leer la primera línea - guión directo

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;

2. Recorrer todas las líneas sin ventana automática - función de script

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;

3. Leer los últimos datos de la ventana del servidor abierto: clase de secuencia de comandos

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;
    }
}

UO.GetGumpsCount

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.GetGumpsCount();

Devuelve el número de gumps activos del servidor.

Parámetros

No hay parámetros.

Valor devuelto

int >= 0: número de ventanas, no el índice de la última ventana. 0: la lista está vacía.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Buscar Windows - script directo

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;

2. Lista ID - función de script

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;

3. Leer el último elemento de la lista - clase de script

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;
}

UO.GumpAutoCheckBox

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Llenado inmediato - guión directo

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);

2. Rellenar antes de abrir: función de secuencia de comandos

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;
}

3. Reemplazo de un valor pendiente: clase de secuencia de comandos

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;
    }
}

UO.GumpAutoRadiobutton

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Llenado inmediato - guión directo

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);

2. Rellenar antes de abrir: función de secuencia de comandos

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;
}

3. Reemplazo de un valor pendiente: clase de secuencia de comandos

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;
    }
}

UO.GumpAutoTextEntry

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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");

1. Llenado inmediato - guión directo

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");

2. Rellenar antes de abrir: función de secuencia de comandos

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;
}

3. Reemplazo de un valor pendiente: clase de secuencia de comandos

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;
    }
}

UO.GumpExists

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

int - 1, si la ventana correspondiente existe ahora; 0 en caso contrario. No devuelve índice, serial ni número de coincidencias.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Comprobación conocida ID - guión directo

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));

2. Verificar par exacto - función de script

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;

3. Verificar identificadores guardados: clase de secuencia de comandos

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;
}

UO.GumpObject

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

void UO.GumpObject(object? arg0);

Selecciona un servidor existente para llamadas posteriores.

Parámetros

  • 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.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Llamada directa - guión directo

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;

2. Opción explícita: función de script

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;

3. Función auxiliar completa: clase de script

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;
}

UO.IsGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.IsGump();

Comprueba si hay al menos un servidor activo.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Lectura condicional: guión directo

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;

2. Distinguir entre cantidad y presencia - función de script

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;
}

3. Espera limitada: clase de secuencia de comandos

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();
}

UO.IsGumpCanBeClosed

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.IsGumpCanBeClosed(object? arg0);

Comprueba si se permite el cierre local del servidor gump con el botón derecho del ratón.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Cierre condicional - guión directo

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;

2. Mostrar Cerrar Desactivar - Función de secuencia de comandos

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;

3. Índice no válido: clase de script

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;
    }
}

UO.LastGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Leer ID de la ventana seleccionada - script directo

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);

2. Enumerar ID de botón: función de secuencia de comandos

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;

3. Leer texto después de la selección - clase de script

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;
}

UO.NumGumpButton

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

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ó.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Presione un botón conocido: guión directo

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;

2. Verifique primero el tipo de ventana: función de secuencia de comandos

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;

3. Cambiar casilla de verificación antes del botón - Clase de script

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;
}

UO.NumGumpCheckBox

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.NumGumpCheckBox(object? arg0, object? arg1, object? arg2);

Establece el estado de la bandera en el servidor por índice.

Parámetros

  • 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.

Valor devuelto

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ó.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Establezca el valor y verifique el resultado: script directo

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;

2. Borrar valor: función de secuencia de comandos

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;
}

3. Completar antes de responder: clase de secuencia de comandos

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;
}

UO.NumGumpRadiobutton

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

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ó.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Establezca el valor y verifique el resultado: script directo

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;

2. Borrar valor: función de secuencia de comandos

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;
}

3. Completar antes de responder: clase de secuencia de comandos

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;
}

UO.NumGumpTextEntry

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

int UO.NumGumpTextEntry(object? arg0, object? arg1, object? arg2);

Establece el texto del campo de entrada en el servidor agrupado por índice.

Parámetros

  • 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í.

Valor devuelto

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ó.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Establezca el valor y verifique el resultado: script directo

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;

2. Borrar valor: función de secuencia de comandos

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;
}

3. Completar antes de responder: clase de secuencia de comandos

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;
}

UO.SelectGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

void UO.SelectGump(object? arg0);

Selecciona un servidor existente para llamadas posteriores.

Parámetros

  • 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.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Llamada directa - guión directo

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;

2. Opción explícita: función de script

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;

3. Función auxiliar completa: clase de script

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;
}

UO.SendGumpSelect

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

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.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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));

1. Responder a la ventana seleccionada - script directo

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));

2. Responder al primer elemento de la lista: función de script

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;

3. Responder específicamente a la ventana desde la instantánea - clase de script

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;
}

4. Espere un tipo específico: guión directo

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));

UO.SetGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Llamada directa - guión directo

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;

2. Opción explícita: función de script

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;

3. Función auxiliar completa: clase de script

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;
}

UO.WaitGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

void: no devuelve nada: ni éxito, ni un nuevo valor, ni confirmación del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Una respuesta: guión directo

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");

2. Múltiples pasos: función de secuencia de comandos

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;
}

3. Cancelar expectativas - Clase de guión

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;
    }
}

UO.WaitGumpCheck

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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);

1. Llamada directa - guión directo

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;

2. Opción explícita: función de script

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;

3. Función auxiliar completa: clase de script

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;
}

UO.WaitGumpEntry

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firmas de C#

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.

Parámetros

  • 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.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • 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.

Scripts independientes de C#

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.

Ejemplo sencillo

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");

1. Llamada directa - guión directo

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;

2. Opción explícita: función de script

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;

3. Función auxiliar completa: clase de script

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;
}

Clone this wiki locally