ES UO Topic shops vendors - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Tiendas y vendedores

Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas

Compra, venta, listados de tiendas, retrasos y precios comerciales personales. AllPrice y MassPriceMove usan el type del elemento donde se especifica en sus opciones.

Compra y venta: procedimiento

Abrir catálogo completo y ejemplos

Secciones

Tema Comandos y explicaciones
Buy UO.Buy
Sell UO.Sell
AutoBuy UO.AutoBuy
AutoSell UO.AutoSell
Shop List UO.GetShopList · UO.ClearShopList · UO.Shop
Prices UO.GetPrice · UO.AllPrice · UO.MassPriceMove
VendorMenu UO.VendorMenu
SendShopReply UO.SendShopReply

Todos los comandos del tema

Compra/Venta

UO.Buy · UO.Sell · UO.AutoBuy · UO.AutoBuyEx · UO.AutoSell · UO.Shop · UO.GetShopList · UO.ClearShopList · UO.VendorMenu · UO.SendShopReply

Precios

UO.GetPrice · UO.AllPrice · UO.MassPriceMove

Retrasos

UO.GetAutoBuyDelay · UO.GetAutoSellDelay · UO.SetAutoBuyDelay · UO.SetAutoSellDelay

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

Parámetros, resultado y todos los escenarios

UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");

UO.MassPriceMove

Parámetros, resultado y todos los escenarios

UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");

Referencia completa de comandos


UO.AllPrice

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

Firmas de C#

void UO.AllPrice();
void UO.AllPrice(object? price);
void UO.AllPrice(object? price, object? @type);

Permite el ingreso automático de precios después de colocar un artículo en el inventario de su proveedor. El equipo no transporta artículos por sí mismo. Primero active el modo, luego arrastre el elemento. El precio se envía sólo después de la correspondiente solicitud del servidor. El segundo parámetro filtra el TYPE del artículo.

Parámetros

  • price: el primer parámetro es el precio total de todo el artículo/pila expuesto, desde 0 hasta 2147483647. 125 significa precio 125. 0: precio claramente cero (gratis si el servidor lo permite), sin cierre. Un valor negativo desactiva el modo; Se recomienda UO.AllPrice() sin argumentos.
  • type: el segundo parámetro opcional es TYPE/Gráfico de 0 a 65535, un número o una cadena hexadecimal, por ejemplo 0x0EED. 0 o ausencia - cualquier tipo. El número de serie del artículo y el nombre del objeto no son apropiados. El color no se filtra.

Valor devuelto

void: sin valor. Activar AllPrice activación de informes. La línea de precio enviado indica que se envió la respuesta, no la aceptación del precio confirmada por el servidor.

Comportamiento

  • El modo se aplica a transferencias posteriores hasta que se desactiva. Una solicitud de precio que ya estaba pendiente antes de la inclusión/transferencia no se completa automáticamente. No responde a las solicitudes de cambio de nombre de proveedor/tienda.
  • Requiere que el contenedor pertenezca a otro carácter/NPC conocido por el cliente. El servidor controla el derecho de gestión del vendedor y la aceptabilidad del precio. La mochila normal del personaje, el cofre en el suelo y la tierra no reciben un precio automático.
  • Para un proveedor estándar, la solicitud de precio cliloc 1043303 se reconoce independientemente del idioma del cliente. También se admiten mensajes de texto del sistema que comienzan con Escriba un precio, Ingrese un precio, Ingrese el precio, Ingrese un precio o Ingrese un precio. Se deja una invitación desconocida para respuesta manual.
  • Se admiten consultas de servidor ASCII y Unicode. Si la invitación no llega en 10 segundos, se cancela la respuesta retrasada. Durante un traslado masivo, la cola también se detiene. Las respuestas ya enviadas no serán recuperadas.
  • El otro artículo TYPE no recibe precio. Si MassMove está habilitado, el siguiente envío espera a que se procese la solicitud de precio; una solicitud desconocida o inapropiada detiene la cola para evitar mezclar elementos.
  • AllPrice() borra los precios pendientes y desactiva el modo. TerminateAll(), abandonar, morir o cambiar de tarjeta también restablece el precio automático. Este comando no cambia los precios de los productos ya listados.

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.AllPrice");
UO.AllPrice();

1. Un precio para artículos posteriores de cualquier tipo - guión directo

Parámetros y flujo de ejecución:

  • precio=125: el precio total de cada artículo. type ausente: todos los tipos son adecuados.
  • Después del lanzamiento, agregue manualmente el artículo al inventario de su proveedor. El cliente responderá a una solicitud de precio con 125. Cada artículo posterior recibe el mismo precio hasta que se apaga.
  • Print sólo se parece a la acción; Este procedimiento en sí no transfiere nada.
UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");

2. Precio automático solo para un tipo determinado: función de script

Parámetros y flujo de ejecución:

  • salePrice se transmite como precio=250. itemType se transmite como type=0x0F7A, no serial de un producto separado.
  • El precio 250 se refiere a la pila completa que se muestra. El comando no multiplica el precio por el número de unidades que contiene.
  • Otros tipos se quedan sin respuesta automática. Para estos, ingrese el precio manualmente o incluya AllPrice con un filtro diferente.
return  RunScenario();
 object? RunScenario()
{
    var itemType = "0x0F7A";
    var salePrice = 250;
    UO.AllPrice(salePrice, itemType);
    return null;
}

3. Exponer explícitamente elementos de forma gratuita: clase de script

Parámetros y flujo de ejecución:

  • precio=0: envía la cadena 0 al servidor como precio. Esto no es cancelar el diálogo ni cerrarlo.
  • type=0x0F7A limita el precio gratuito a este tipo. El comportamiento de la venta gratuita depende de las reglas del servidor.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.AllPrice(0, "0x0F7A");
        return null;
    }
}

4. Desactivar precios automáticos: secuencia de comandos directa

Parámetros y flujo de ejecución:

  • Sin argumentos: se desactiva el modo y se eliminan las respuestas pendientes.
  • El precio ya fijado por el servidor no cambia. El usuario rellena él mismo la siguiente solicitud de precio.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

UO.AllPrice();

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.AllPrice() — UO.AllPrice()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AllPrice(price) — UO.AllPrice(Any)

Parámetros: price (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AllPrice(price, type) — UO.AllPrice(Any,Any)

Parámetros: price (Any), type (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AutoBuy

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

Firmas de C#

void UO.AutoBuy(object? itemType, object? itemColor, object? quantity);

Crea, actualiza o elimina una regla de compra automática en la lista principal predeterminada del perfil actual de Bad Newbie. El comando configura el procesamiento futuro de la oferta del vendedor NPC; no dice compra/venta, no abre tienda y no confirma la transacción. Procedimiento completo: listados de tiendas.

Parámetros

  • itemType - Producto gráfico 0..65535: por ejemplo 0x0F7A - Perla Negra, 0x0F51 - daga. Este no es el serial del vendedor/artículo ni el body del personaje. Se rechaza un número negativo o un número mayor que 65535. Aquí 0xFFFF es un graphic específico, no una máscara de todos los productos.
  • itemColor — Tono del producto: número negativo o 0xFFFF — cualquiera; 0 - sólo artículos sin pintar. Para hue preciso, utilice 0...65534. No utilice colores fuera de este rango: un valor positivo se convierte en ushort. Requerido.
  • quantity: la cantidad de UNIDADES de productos por oferta de tienda recibida, no la cantidad de pilas ni el saldo deseado en la mochila. Lo positivo se limita a 65535. 0/negativo elimina la regla de coincidencia type+color del valor predeterminado; no es "toda la cantidad". Requerido.

Valor devuelto

void - sin valor. Llame en una línea separada, sin var resultado = y sin if. El final de la llamada significa el final de la configuración, no una transacción exitosa. Si no hay perfil o graphic no válido no se crea la regla; No hay resultado numérico del error. Verifique la transacción real según el contenido de la mochila, el oro y la respuesta del servidor.

Comportamiento

  • Todos los argumentos 3 son obligatorios. Esta es una configuración de reglas, no una función de espera.
  • La clave de regla es graphic y la máscara hue en Predeterminado. La llamada repetida reemplaza la cantidad y otros campos de esta regla; no añade otro límite además del anterior. Sin precio/nombre, se eliminan las restricciones anteriores en estos campos.
  • Regla nueva/actualizada Habilitada=true. El cambio general de compra/venta se establece en función de la presencia de reglas y el perfil se guarda. La lista predeterminada deshabilitada en sí no se habilita automáticamente: tanto el modo general como la lista deben estar habilitados en la configuración. Otras listas con nombres no se modifican.
  • El procesamiento comienza cuando llega una lista de mercancías. El límite se gasta en total en las filas que coinciden con una regla. Para cada posición, se utiliza la primera regla habilitada coincidente. La reapertura de la tienda ofrece una nueva oferta y un nuevo límite mientras la regla esté activa.
  • Trabaja a tope con Bad Newbie; en Classic esta automatización está deshabilitada. No sustituya el nombre NPC ni el nombre de la lista guardada en los parámetros. AutoBuyEx agrega filtros de precio/nombre al comprar; ClearShopList restablece ambas automatizaciones por completo.

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.AutoBuy");
UO.AutoBuy(0x0F7A, -1, 1);

1. Preparar la compra de una unidad de reactivo - guión directo

Parámetros y flujo de ejecución:

  • 0x0F7A - graphic reactivo, no ID NPC. Cantidad - 1; color - cualquiera. No se especifica ningún precio máximo en este formulario. El script en sí no dice nada y no abre la tienda. La regla continúa aplicándose para oraciones posteriores hasta que la cambie o la desactive.
UO.AutoBuy(0x0F7A, -1, 1);

2. Configurar un suministro de reactivos para una oferta de tienda: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • 20 - en un máximo de una respuesta de la tienda, y no "llevar la cantidad a 20". AutoBuy no tiene argumentos de precio ni nombre. Si son necesarios, utilice AutoBuyEx; su ejemplo completo está disponible en el siguiente enlace. La falta de bienes, dinero y reglas del servidor determinan el resultado.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuy(0x0F7A, 0, 20);
    return null;
}

3. Eliminar reglas seleccionadas sin restablecer otras listas - clase de script

Parámetros y flujo de ejecución:

  • El asistente acepta graphic. Sólo se eliminan las reglas predeterminadas con AnyHue; se mantienen las reglas individuales hue=0. Esto no cancela una oferta ya enviada al servidor. Para eliminar un color exacto pasa el mismo hue con el que se creó la regla.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.AutoBuy(itemType, -1, 0);
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.AutoBuy(itemType, itemColor, quantity) — UO.AutoBuy(Any,Any,Any)

Parámetros: itemType (Any), itemColor (Any), quantity (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "autobuy":

                    bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), 0, string.Empty); return InjectionValue.Unit;

UO.AutoBuyEx

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

Firmas de C#

void UO.AutoBuyEx(object? itemType, object? itemColor, object? quantity, object? price, object? name);

Crea, actualiza o elimina una regla de compra automática en la lista principal predeterminada del perfil actual de Bad Newbie. El comando configura el procesamiento futuro de la oferta del vendedor NPC; no dice compra/venta, no abre tienda y no confirma la transacción. Procedimiento completo: listados de tiendas.

Parámetros

  • itemType - Producto gráfico 0..65535: por ejemplo 0x0F7A - Perla Negra, 0x0F51 - daga. Este no es el serial del vendedor/artículo ni el body del personaje. Se rechaza un número negativo o un número mayor que 65535. Aquí 0xFFFF es un graphic específico, no una máscara de todos los productos.
  • itemColor — Tono del producto: número negativo o 0xFFFF — cualquiera; 0 - sólo artículos sin pintar. Para hue preciso, utilice 0...65534. No utilice colores fuera de este rango: un valor positivo se convierte en ushort. Requerido.
  • quantity: la cantidad de UNIDADES de productos por oferta de tienda recibida, no la cantidad de pilas ni el saldo deseado en la mochila. Lo positivo se limita a 65535. 0/negativo elimina la regla de coincidencia type+color del valor predeterminado; no es "toda la cantidad". Requerido.
  • price — Precio máximo de UNA unidad, no de toda la transacción. 0/negativo – sin precio máximo. Se permiten productos que sean más caros que el límite positivo. El precio no se negocia ni cambia en el servidor. Requerido.
  • name — Subcadena del nombre del PRODUCTO, sin distinguir entre mayúsculas y minúsculas; Se eliminan los espacios de los bordes, línea vacía: sin filtro. Este no es el nombre del vendedor ni el nombre del anuncio. Por ejemplo, "Black Pearl" verifica el texto de la posición de la tienda si el servidor envió exactamente ese nombre. Requerido.

Valor devuelto

void - sin valor. Llame en una línea separada, sin var resultado = y sin if. El final de la llamada significa el final de la configuración, no una transacción exitosa. Si no hay perfil o graphic no válido no se crea la regla; No hay resultado numérico del error. Verifique la transacción real según el contenido de la mochila, el oro y la respuesta del servidor.

Comportamiento

  • Todos los argumentos 5 son obligatorios. Esta es una configuración de reglas, no una función de espera.
  • La clave de regla es graphic y la máscara hue en Predeterminado. La llamada repetida reemplaza la cantidad y otros campos de esta regla; no añade otro límite además del anterior. Sin precio/nombre, se eliminan las restricciones anteriores en estos campos.
  • Regla nueva/actualizada Habilitada=true. El cambio general de compra/venta se establece en función de la presencia de reglas y el perfil se guarda. La lista predeterminada deshabilitada en sí no se habilita automáticamente: tanto el modo general como la lista deben estar habilitados en la configuración. Otras listas con nombres no se modifican.
  • El procesamiento comienza cuando llega una lista de mercancías. El límite se gasta en total en las filas que coinciden con una regla. Para cada posición, se utiliza la primera regla habilitada coincidente. La reapertura de la tienda ofrece una nueva oferta y un nuevo límite mientras la regla esté activa.
  • Trabaja a tope con Bad Newbie; en Classic esta automatización está deshabilitada. No sustituya el nombre NPC ni el nombre de la lista guardada en los parámetros. AutoBuyEx agrega filtros de precio/nombre al comprar; ClearShopList restablece ambas automatizaciones por completo.

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.AutoBuyEx");
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");

1. Preparar la compra de una unidad de reactivo - guión directo

Parámetros y flujo de ejecución:

  • 0x0F7A - graphic reactivo, no ID NPC. Cantidad - 1; color - cualquiera. Precio máximo 5 por unidad. El script en sí no dice nada y no abre la tienda. La regla continúa aplicándose para oraciones posteriores hasta que la cambie o la desactive.
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");

2. Configurar un suministro de reactivos para una oferta de tienda: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • 20: máximo en respuesta de una tienda, y no "llevar la cantidad a 20". 5 — precio por unidad, “Black Pearl” — subcadena del nombre del producto. Si el servidor llama al reactivo de manera diferente, cambie el filtro o pase "". La falta de bienes, dinero y reglas del servidor determinan el resultado.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuyEx(0x0F7A, 0, 20, 5, "Black Pearl");
    return null;
}

3. Eliminar reglas seleccionadas sin restablecer otras listas - clase de script

Parámetros y flujo de ejecución:

  • El asistente acepta graphic. Sólo se eliminan las reglas predeterminadas con AnyHue; se mantienen las reglas individuales hue=0. Esto no cancela una oferta ya enviada al servidor. Para eliminar un color exacto pasa el mismo hue con el que se creó la regla.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.AutoBuyEx(itemType, -1, 0, 0, "");
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.AutoBuyEx(itemType, itemColor, quantity, price, name) — UO.AutoBuyEx(Any,Any,Any,Any,Any)

Parámetros: itemType (Any), itemColor (Any), quantity (Any), price (Any), name (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "autobuyex":

                    bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;

UO.AutoSell

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

Firmas de C#

void UO.AutoSell(object? itemType, object? itemColor, object? quantity);

Crea, actualiza o elimina una regla de venta automática en la lista principal predeterminada del perfil actual de Bad Newbie. El comando configura el procesamiento futuro de la oferta del vendedor NPC; no dice compra/venta, no abre tienda y no confirma la transacción. Procedimiento completo: listados de tiendas.

Parámetros

  • itemType - Producto gráfico 0..65535: por ejemplo 0x0F7A - Perla Negra, 0x0F51 - daga. Este no es el serial del vendedor/artículo ni el body del personaje. Se rechaza un número negativo o un número mayor que 65535. Aquí 0xFFFF es un graphic específico, no una máscara de todos los productos.
  • itemColor — Tono del producto: número negativo o 0xFFFF — cualquiera; 0 - sólo artículos sin pintar. Para hue preciso, utilice 0...65534. No utilice colores fuera de este rango: un valor positivo se convierte en ushort. Requerido.
  • quantity: la cantidad de UNIDADES de productos por oferta de tienda recibida, no la cantidad de pilas ni el saldo deseado en la mochila. Lo positivo se limita a 65535. 0/negativo elimina la regla de coincidencia type+color del valor predeterminado; no es "toda la cantidad". Requerido.

Valor devuelto

void - sin valor. Llame en una línea separada, sin var resultado = y sin if. El final de la llamada significa el final de la configuración, no una transacción exitosa. Si no hay perfil o graphic no válido no se crea la regla; No hay resultado numérico del error. Verifique la transacción real según el contenido de la mochila, el oro y la respuesta del servidor.

Comportamiento

  • Todos los argumentos 3 son obligatorios. Esta es una configuración de reglas, no una función de espera.
  • La clave de regla es graphic y la máscara hue en Predeterminado. La llamada repetida reemplaza la cantidad y otros campos de esta regla; no añade otro límite además del anterior. Sin precio/nombre, se eliminan las restricciones anteriores en estos campos.
  • Regla nueva/actualizada Habilitada=true. El cambio general de compra/venta se establece en función de la presencia de reglas y el perfil se guarda. La lista predeterminada deshabilitada en sí no se habilita automáticamente: tanto el modo general como la lista deben estar habilitados en la configuración. Otras listas con nombres no se modifican.
  • El procesamiento comienza cuando llega una lista de mercancías. El límite se gasta en total en las filas que coinciden con una regla. Para cada posición, se utiliza la primera regla habilitada coincidente. La reapertura de la tienda ofrece una nueva oferta y un nuevo límite mientras la regla esté activa.
  • Trabaja a tope con Bad Newbie; en Classic esta automatización está deshabilitada. No sustituya el nombre NPC ni el nombre de la lista guardada en los parámetros. AutoBuyEx agrega filtros de precio/nombre al comprar; ClearShopList restablece ambas automatizaciones por completo.

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.AutoSell");
UO.AutoSell(0x0F51, -1, 1);

1. Permitir la venta de una daga - guión directo

Parámetros y flujo de ejecución:

  • 0x0F51 - graphic daga, cualquiera hue, 1 - una por frase. El equipo no selecciona un serial específico y no prueba la utilidad/valor del artículo. Seleccione el type/color exacto de su artículo.
UO.AutoSell(0x0F51, -1, 1);

2. Vender sólo una bata de un determinado color es función del guión.

Parámetros y flujo de ejecución:

  • 0x1F03 es un ejemplo de una bata graphic estándar, 0x0044 es un ejemplo de hue. Reemplace ambos con su producto. 5 — unidades, no precio; No se aceptan los parámetros de precio mínimo y nombre Sell/AutoSell. El servidor debe incluir el artículo en la oferta de venta.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoSell(0x1F03, 0x0044, 5);
    return null;
}

3. Deshabilite dos tipos de ventas antes de ir a NPC - clase de script

Parámetros y flujo de ejecución:

  • El nombre del procedimiento es arbitrario; itemType y hue son sus parámetros. Se conservan otras reglas, compras y listas de nombres personalizados. Si otra lista habilitada también vende estos artículos, desactive la regla correspondiente a través de la configuración.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        RemoveSaleRule(0x0F51, -1);
        RemoveSaleRule(0x1F03, 0x0044);
        return null;
    }

    void RemoveSaleRule(dynamic itemType, dynamic hue)
    {
        UO.AutoSell(itemType, hue, 0);
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.AutoSell(itemType, itemColor, quantity) — UO.AutoSell(Any,Any,Any)

Parámetros: itemType (Any), itemColor (Any), quantity (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "autosell":

                    bridge.SetAutoSellRule(Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;

UO.Buy

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

Firmas de C#

void UO.Buy(object? @type);
void UO.Buy(object? @type, object? color);
void UO.Buy(object? @type, object? color, object? quantity);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice, object? name);

Crea, actualiza o elimina una regla de compra automática en la lista principal predeterminada del perfil actual de Bad Newbie. El comando configura el procesamiento futuro de la oferta del vendedor NPC; no dice compra/venta, no abre tienda y no confirma la transacción. Procedimiento completo: listados de tiendas.

Parámetros

  • type - Producto gráfico 0..65535: por ejemplo 0x0F7A - Perla Negra, 0x0F51 - daga. Este no es el serial del vendedor/artículo ni el body del personaje. Se rechaza un número negativo o un número mayor que 65535. Aquí 0xFFFF es un graphic específico, no una máscara de todos los productos.
  • color — Tono del producto: número negativo o 0xFFFF — cualquiera; 0 - sólo artículos sin pintar. Para hue preciso, utilice 0...65534. No utilice colores fuera de este rango: un valor positivo se convierte en ushort. El valor predeterminado es 1.
  • quantity: la cantidad de UNIDADES de productos por oferta de tienda recibida, no la cantidad de pilas ni el saldo deseado en la mochila. Lo positivo se limita a 65535. 0/negativo elimina la regla de coincidencia type+color del valor predeterminado; no es "toda la cantidad". El valor predeterminado es 1.
  • maxPrice — Precio máximo de UNA unidad, no de toda la transacción. 0/negativo – sin precio máximo. Se permiten productos que sean más caros que el límite positivo. El precio no se negocia ni cambia en el servidor. El valor predeterminado es 0.
  • name — Subcadena del nombre del PRODUCTO, sin distinguir entre mayúsculas y minúsculas; Se eliminan los espacios de los bordes, línea vacía: sin filtro. Este no es el nombre del vendedor ni el nombre del anuncio. Por ejemplo, "Black Pearl" verifica el texto de la posición de la tienda si el servidor envió exactamente ese nombre. El valor predeterminado es una cadena vacía.

Valor devuelto

void - sin valor. Llame en una línea separada, sin var resultado = y sin if. El final de la llamada significa el final de la configuración, no una transacción exitosa. Si no hay perfil o graphic no válido no se crea la regla; No hay resultado numérico del error. Verifique la transacción real según el contenido de la mochila, el oro y la respuesta del servidor.

Comportamiento

  • Buy acepta argumentos de 1 a 5; falta el color correcto=-1, cantidad=1, maxPrice=0, nombre="".
  • La clave de regla es graphic y la máscara hue en Predeterminado. La llamada repetida reemplaza la cantidad y otros campos de esta regla; no añade otro límite además del anterior. Sin precio/nombre, se eliminan las restricciones anteriores en estos campos.
  • Regla nueva/actualizada Habilitada=true. El cambio general de compra/venta se establece en función de la presencia de reglas y el perfil se guarda. La lista predeterminada deshabilitada en sí no se habilita automáticamente: tanto el modo general como la lista deben estar habilitados en la configuración. Otras listas con nombres no se modifican.
  • El procesamiento comienza cuando llega una lista de mercancías. El límite se gasta en total en las filas que coinciden con una regla. Para cada posición, se utiliza la primera regla habilitada coincidente. La reapertura de la tienda ofrece una nueva oferta y un nuevo límite mientras la regla esté activa.
  • Trabaja a tope con Bad Newbie; en Classic esta automatización está deshabilitada. No sustituya el nombre NPC ni el nombre de la lista guardada en los parámetros. AutoBuyEx agrega filtros de precio/nombre al comprar; ClearShopList restablece ambas automatizaciones por completo.

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.Buy");
UO.Buy(0x0F7A);

1. Preparar la compra de una unidad de reactivo - guión directo

Parámetros y flujo de ejecución:

  • 0x0F7A - graphic reactivo, no ID NPC. Cantidad - 1; color - cualquiera. No se especifica ningún precio máximo en este formulario. El script en sí no dice nada y no abre la tienda. La regla continúa aplicándose para oraciones posteriores hasta que la cambie o la desactive.
UO.Buy(0x0F7A);

2. Configurar un suministro de reactivos para una oferta de tienda: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • 20: máximo en respuesta de una tienda, y no "llevar la cantidad a 20". 5 — precio por unidad, “Black Pearl” — subcadena del nombre del producto. Si el servidor llama al reactivo de manera diferente, cambie el filtro o pase "". La falta de bienes, dinero y reglas del servidor determinan el resultado.
return  RunScenario();
 object? RunScenario()
{
    UO.Buy(0x0F7A, 0, 20, 5, "Black Pearl");
    return null;
}

3. Eliminar reglas seleccionadas sin restablecer otras listas - clase de script

Parámetros y flujo de ejecución:

  • El asistente acepta graphic. Sólo se eliminan las reglas predeterminadas con AnyHue; se mantienen las reglas individuales hue=0. Esto no cancela una oferta ya enviada al servidor. Para eliminar un color exacto pasa el mismo hue con el que se creó la regla.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.Buy(itemType, -1, 0);
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.Buy(type) — UO.Buy(Any)

Parámetros: type (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color) — UO.Buy(Any,Any)

Parámetros: type (Any), color (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity) — UO.Buy(Any,Any,Any)

Parámetros: type (Any), color (Any), quantity (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity, maxPrice) — UO.Buy(Any,Any,Any,Any)

Parámetros: type (Any), color (Any), quantity (Any), maxPrice (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity, maxPrice, name) — UO.Buy(Any,Any,Any,Any,Any)

Parámetros: type (Any), color (Any), quantity (Any), maxPrice (Any), name (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.ClearShopList

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

Firmas de C#

void UO.ClearShopList();

Elimina las reglas de compra y venta automática del perfil activo.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • Borra BackNewbieAutoBuyRules y BackNewbieAutoSellRules, desactiva AutoBuy/AutoSell compartido, actualiza OptionsGump y guarda el perfil. La lista de botín no cambia; la ausencia de un perfil da una acción vací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.ClearShopList");
UO.ClearShopList();

1. Estado claro: guión directo

Parámetros y flujo de ejecución:

  • Elimina las reglas de compra y venta automática del perfil activo.
UO.ClearShopList();

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

Parámetros y flujo de ejecución:

  • Eliminar la regla para comprar vendajes junto con el resto de reglas comerciales.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuy(0x0E21, -1, 10);
    UO.ClearShopList();
    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.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClearShopList();
        UO.ClearShopList();
        return null;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.ClearShopList() — UO.ClearShopList()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "clearshoplist":

                    bridge.ClearAutoShopRules(); return InjectionValue.Unit;

UO.GetAutoBuyDelay

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

Firmas de C#

dynamic UO.GetAutoBuyDelay();

Lee el retraso de compra automático actual desde el perfil del cliente.

Parámetros

No hay parámetros.

Valor devuelto

int: retraso actual en milisegundos. Los valores escritos por el configurador están limitados a 0…65535. 0 significa que no hay demora adicional; esto no es un error. Si no hay ningún perfil cargado, se devuelve 3. La lectura no devuelve la cantidad del artículo ni confirma la transacción.

Comportamiento

  • La configuración es general para el perfil actual: los cambios en otro script o UI serán visibles la próxima vez que lo lea. Cero es una configuración válida, no una señal de que faltan datos ni una razón para devolver el caché de script anterior.
  • El valor predeterminado es 3 ms. Después de enviar una operación automática, el administrador establece la hora para la siguiente operación permitida. Las listas de proveedores que llegaron antes no se procesan con este pase; getter no activa una espera y no envía una compra/venta por sí mismo.
  • Esto no es un retraso de MassMove, Drag/Drop ni operaciones manuales. El nuevo valor se aplica al programar el próximo retraso; el momento ya asignado no se recalcula.

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.GetAutoBuyDelay();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Mostrar el retraso actual - script directo

Parámetros y flujo de ejecución:

  • No hay argumentos. retraso: tiempo en milisegundos.
  • El valor refleja el perfil en el momento de la llamada. La var guardada no se actualizará más adelante.
var delay = UO.GetAutoBuyDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));

2. Cambiar configuración y leer valor limitado - función de script

Parámetros y flujo de ejecución:

  • el emisor obtiene 70000 ms; el máximo permitido es 65535. El ejemplo cambia la configuración del perfil.
  • real debe contener 65535 cuando se carga el perfil. Getter devuelve el valor restringido real en lugar del argumento original 70000.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoBuyDelay(70000);
    var actual = UO.GetAutoBuyDelay();
    UO.Print(Convert.ToString(actual));
    return null;
}

3. Distinguir entre retraso cero y distinto de cero: clase de escenario

Parámetros y flujo de ejecución:

  • El cero se comprueba explícitamente. Este ejemplo no cambia el perfil.
  • La latencia cero no significa que la operación se haya completado. Para conocer el resultado de la transacción, consulte los objetos del juego.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var current = UO.GetAutoBuyDelay();
        if (Truth(current == 0))
        {
            UO.Print("No additional delay");
        }
        else
        {
            UO.Print("Delay: " + Convert.ToString(current) + " ms");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetAutoBuyDelay() — UO.GetAutoBuyDelay()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "getautobuydelay":

                    return new InjectionValue(bridge.GetAutoBuyDelay());

UO.GetAutoSellDelay

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

Firmas de C#

dynamic UO.GetAutoSellDelay();

Lee el retraso de venta automática actual desde el perfil del cliente.

Parámetros

No hay parámetros.

Valor devuelto

int: retraso actual en milisegundos. Los valores escritos por el configurador están limitados a 0…65535. 0 significa que no hay demora adicional; esto no es un error. Si no hay ningún perfil cargado, se devuelve 3. La lectura no devuelve la cantidad del artículo ni confirma la transacción.

Comportamiento

  • La configuración es general para el perfil actual: los cambios en otro script o UI serán visibles la próxima vez que lo lea. Cero es una configuración válida, no una señal de que faltan datos ni una razón para devolver el caché de script anterior.
  • El valor predeterminado es 3 ms. Después de enviar una operación automática, el administrador establece la hora para la siguiente operación permitida. Las listas de proveedores que llegaron antes no se procesan con este pase; getter no activa una espera y no envía una compra/venta por sí mismo.
  • Esto no es un retraso de MassMove, Drag/Drop ni operaciones manuales. El nuevo valor se aplica al programar el próximo retraso; el momento ya asignado no se recalcula.

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.GetAutoSellDelay();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Mostrar el retraso actual - script directo

Parámetros y flujo de ejecución:

  • No hay argumentos. retraso: tiempo en milisegundos.
  • El valor refleja el perfil en el momento de la llamada. La var guardada no se actualizará más adelante.
var delay = UO.GetAutoSellDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));

2. Cambiar configuración y leer valor limitado - función de script

Parámetros y flujo de ejecución:

  • el emisor obtiene 70000 ms; el máximo permitido es 65535. El ejemplo cambia la configuración del perfil.
  • real debe contener 65535 cuando se carga el perfil. Getter devuelve el valor restringido real en lugar del argumento original 70000.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoSellDelay(70000);
    var actual = UO.GetAutoSellDelay();
    UO.Print(Convert.ToString(actual));
    return null;
}

3. Distinguir entre retraso cero y distinto de cero: clase de escenario

Parámetros y flujo de ejecución:

  • El cero se comprueba explícitamente. Este ejemplo no cambia el perfil.
  • La latencia cero no significa que la operación se haya completado. Para conocer el resultado de la transacción, consulte los objetos del juego.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var current = UO.GetAutoSellDelay();
        if (Truth(current == 0))
        {
            UO.Print("No additional delay");
        }
        else
        {
            UO.Print("Delay: " + Convert.ToString(current) + " ms");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetAutoSellDelay() — UO.GetAutoSellDelay()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "getautoselldelay":

                    return new InjectionValue(bridge.GetAutoSellDelay());

UO.GetPrice

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

Firmas de C#

dynamic UO.GetPrice(object? objID);

Lee el Artículo.Precio conocido por el cliente para el artículo serial.

Parámetros

  • objID — Serie del objeto o nombre admitido de self/backpack/lasttarget/objeto guardado; Las cadenas numéricas y las cadenas 0x se resuelven en tiempo de ejecución.

Valor devuelto

int: conversión no verificada de uint Item.Price a int. Un elemento faltante da 0; los precios superiores a 2147483647 se muestran como int negativos.

Comportamiento

  • El equipo no solicita una propuesta de proveedor. El valor depende de los datos recibidos previamente por el cliente. Cero puede indicar un precio desconocido/cero o la ausencia de un artículo; para probar un objeto use Exists.

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.GetPrice(UO.LastTarget());
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Precio del artículo seleccionado - guión directo

Parámetros y flujo de ejecución:

  • El resultado es un Item.Price almacenado en caché.
var item = UO.LastTarget();
if (Truth(UO.Exists(item)))
{
    var price = UO.GetPrice(item);
    UO.Print(Convert.ToString(price));
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Cero serial – función de script

Parámetros y flujo de ejecución:

  • Un elemento faltante da 0.
return  RunScenario();
 object? RunScenario()
{
    var price = UO.GetPrice(0);
    UO.Print(Convert.ToString(price));
    return null;
}

3. Resumen de precios: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Sólo una nueva llamada relee el modelo; la pausa en sí no exige un precio.
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 item = UO.LastTarget();
        var before = UO.GetPrice(item);
        await Delay(500);
        var after = UO.GetPrice(item);
        UO.Print(Convert.ToString(before) + " " + Convert.ToString(after));
        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetPrice(objID) — UO.GetPrice(Any)

Parámetros: objID (Any)

Resultado: dynamic / Any.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "getprice":

                    return new InjectionValue(bridge.GetPrice(Arg(0)));

UO.GetShopList

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

Firmas de C#

dynamic UO.GetShopList();

Lee los productos de la última oferta activa del vendedor NPC. Le permite consultar el tipo, cantidad y precio antes de comprar o vender.

Parámetros

No hay parámetros.

Valor devuelto

Matriz de string: matriz de cadenas, índices de 0. Cada línea: serial|graphic|hue|monto|precio|nombre. Serie - ID posición específica, graphic - tipo, hue - color; los primeros tres campos están escritos en formato 0x. Cantidad: unidades disponibles menos el borrador en la ventana, precio: precio de una unidad, nombre: nombre. Esta no es una lista serial ni una lista bool. Si no hay oferta, la matriz está vacía. El nombre puede contener |: los primeros cinco delimitadores definen los campos, el resto es el nombre.

Comportamiento

  • Primero, como acción normal del juego, abra una compra o venta desde el NPC deseado y espere a que el servidor ofrezca. Estos equipos en sí no buscan un vendedor, no abren comercio, no fijan un precio para un vendedor personal y no transfieren artículos entre cofres. ID del vendedor no se pasa como parámetro: en caso de varias ofertas se utiliza la última.
  • En el administrador, la oferta se almacena en la sesión de juego. Al cerrar el cliente gráfico se guarda la propuesta y el borrador, al abrirlo se restaura la ventana. Cerrar la tienda, responder, cerrar el servidor o desconectar la conexión elimina la oferta. Autocompra/autoventa Bad Newbie puede procesarlo antes del script.
  • La lectura no envía solicitudes al servidor. Esta es una instantánea del suministro ya recibido, no una garantía del stock actual de NPC. El campo de cantidad refleja las unidades, no el número de filas/pilas. ArrayLength(filas) cuenta las posiciones. Los precios aquí leen GetShopList; SendShopReply no acepta el precio.
  • La lista explícita reemplaza el borrador y no se agrega al mismo. Repitiendo uno serial suma la cantidad; el total está limitado por la cantidad total del artículo en la oferta. Desconocido serial, cantidad incorrecta o no positiva rechaza la respuesta completa antes de enviarla, guardando la oferta. Si no hay frase, SendShopReply informa un error. La línea "0" no es un comando de deshacer; usar "".

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.GetShopList();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Analizar la primera posición: guión directo

Parámetros y flujo de ejecución:

  • GetWord utiliza el índice de 0: 0 - serial, 1 - graphic, 2 - hue, 3 - cantidad, 4 - precio. Antes de las filas [0] se verifica la longitud de la matriz.
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
    return null;
}
var serial = ReadField(rows[0], 0, "|");
var itemType = ReadField(rows[0], 1, "|");
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
var price = Convert.ToDouble(ReadField(rows[0], 4, "|"));
UO.Print(serial + " / " + itemType + " / " + Convert.ToString(amount) + " / " + Convert.ToString(price));

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;

string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }

2. Compra hasta diez vendajes a precio limitado - función script

Parámetros y flujo de ejecución:

  • Solo para oferta de COMPRA preapertura. 0x0E21 — vendas, 5 — precio unitario máximo, 10 — cantidad requerida. Se toma la primera posición adecuada; exacto serial se lee de la oración. El código no inicia la compra en sí.
return  RunScenario();
 object? RunScenario()
{
    var rows = UO.GetShopList();
    for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
    {
        var row = rows[i];
        if (Truth(ReadField(row, 1, "|") == "0x0E21"))
        {
            var price = Convert.ToDouble(ReadField(row, 4, "|"));
            var amount = Convert.ToInt32(ReadField(row, 3, "|"));
            if (Truth(price > 0) && Truth(price <= 5) && Truth(amount > 0))
            {
                if (Truth(amount > 10))
                {
                    amount = 10;
                }

                UO.SendShopReply(ReadField(row, 0, "|") + ":" + Convert.ToString(amount));
                return null;
            }
        }
    }

    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;
string ReadField(object? row, int index, string separator)
{
    string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
    return index >= 0 && index < fields.Length ? fields[index] : "";
}

3. Calcular el stock disponible del tipo seleccionado - clase de escenario

Parámetros y flujo de ejecución:

  • La función auxiliar se proporciona en su totalidad: suma el campo de importe de todas las posiciones del tipo especificado. Si la cláusula está vacía, devuelve 0; Esta es la cantidad de unidades disponibles, no la cantidad de animales o elementos del personaje.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var available = CountOfferedType("0x0E21");
        if (Truth(available < 10))
        {
            UO.Print("Bandage stock below 10: " + Convert.ToString(available));
        }

        return null;
    }

    dynamic CountOfferedType(dynamic itemType)
    {
        var total = 0;
        var rows = UO.GetShopList();
        for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
        {
            if (Truth(ReadField(rows[i], 1, "|") == itemType))
            {
                total = total + Convert.ToInt32(ReadField(rows[i], 3, "|"));
            }
        }

        return total;
    }

    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;
    string ReadField(object? row, int index, string separator)
    {
        string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
        return index >= 0 && index < fields.Length ? fields[index] : "";
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetShopList() — UO.GetShopList()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

Código interno de implementación; no es un script independiente.

public InjectionValue GetShopList()

            => new InjectionValue((bridge.GetShopList() ?? Array.Empty<string>()).Select(item => new InjectionValue(item)).ToArray());

UO.MassPriceMove

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

Firmas de C#

void UO.MassPriceMove();
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination, object? x, object? y, object? z);

Permite la transferencia masiva de artículos de un TYPE con precios automáticos en el inventario de su proveedor. La fuente está determinada por la primera transferencia manual. Cada pila se transfiere en su totalidad y se considera un artículo; Después de su solicitud de precio, el cliente responde y sólo entonces continúa la cola.

Parámetros

  • delay: el primer parámetro es el retraso entre solicitudes de transferencia en milisegundos, un número entero de 0 a 2147483647. 350 significa 0,35 segundos. Con 0 no se envía más de un siguiente acarreo por cuadro de juego. No se agrega ningún retraso a GrabDelay. Un valor negativo desactiva el modo y borra la cola; para apagar, se prefiere una notación UO.MassPriceMove() clara.
  • quantity: el segundo parámetro es el límite TOTAL de artículos individuales (artículos), incluida la primera transferencia manual. Una pila/pila se considera un artículo, independientemente de la cantidad que contenga. 50 significa hasta 50 pilas enteras o 50 artículos individuales. La pila NO se divide en este límite. 0 - todos los elementos adecuados. No se permiten valores negativos.
  • type - El tercer parámetro es el código de tipo de artículo (Gráfico/Tipo), el número entero 0..65535, por ejemplo 0x0EED o la cadena "0x0EED" para oro. Esto NO es serial/ID y NO es el nombre AddObject. 0 determina el tipo mediante la primera transferencia manual. Con un tipo explícito, arrastrar otro tipo no activa la cola; El modo continúa esperando un elemento adecuado.
  • price: el cuarto parámetro requerido es el precio total 0...2147483647 de cada artículo/pila completa que se muestra. 0 significa libre, sin cierre. Se rechaza el precio negativo.
  • destination: el quinto parámetro opcional es serial o el nombre guardado del contenedor en el inventario de su proveedor. Si no está, se toma del reset manual. Una mochila normal, un cofre en el suelo y un destino=0 se desvían aquí: es imposible fijar un precio en el suelo.
  • x - Sexto parámetro - X dentro del contenedor del proveedor: -1 o 65535 para colocación automática, en caso contrario 0..65535. Indicado sólo junto con Y y Z.
  • y - Séptimo parámetro - Y dentro del contenedor del proveedor: -1/65535 para colocación automática, de lo contrario 0..65535. Sólo se indica junto con X y Z.
  • z — El octavo parámetro es la altura -128...127, dentro del contenedor generalmente 0. Sin X/Y/Z explícito, con un destino determinado, se utilizan -1,-1,0; Al asignar manualmente, se toma la ubicación de reinicio.

Valor devuelto

void: sin valor. Activar MassPriceMove habilita la espera de muestra manual. Los mensajes de transferencia y precio indican solicitudes enviadas y no una garantía de aceptación del servidor.

Comportamiento

  • Formularios con argumentos 0, 4, 5 o 8. Orden exacto: retraso, cantidad, type, precio, destino, x, y, z. No se admiten tripletas de coordenadas parciales.
  • Primero, llame al comando, luego levante y arrastre todo el elemento correspondiente. El tipo 0 lo recuerda TYPE; un tipo explícito omite ajustes manuales de otros tipos. La fuente siempre se toma del primer elemento adecuado.
  • La cantidad incluye el primer artículo manual. 50 significa 50 pilas completas de 100, no unidades 50 de la pila. 0 - todos los objetos rectos adecuados. El color no se filtra y los contenedores anidados no se expanden.
  • Se aplican las reglas de reconocimiento de solicitud de precio AllPrice, incluidas ASCII/Unicode y 10-segundo de espera. Retraso de pausa - intervalo mínimo: un servidor lento lo aumenta para no confundir precios.
  • No es necesario habilitar el modo general AllPrice. El precio de esta operación tiene prioridad sobre AllPrice. No se recomienda cambiar el precio AllPrice o transferir manualmente artículos adicionales durante la cola: una respuesta desconocida o una falla del servidor interrumpe la cola.
  • MassPriceMove() desactiva la cola de transferencia actual y cancela la respuesta de precio pendiente; se conserva el AllPrice general, si se habilitó por separado. TerminateAll() desactiva ambos modos. Esta es una cola en común con MassMove: la nueva activación reemplaza a la anterior.
  • Si no se reconoce la solicitud de precio, el comando abandona el cuadro de diálogo para entrada manual y detiene más transferencias. La falla del servidor, la muerte, el cambio de mapa y el elemento/contenedor no disponible también dejan de funcionar.
  • Llamar repetidamente el mismo comando correctamente, mientras el modo todavía espera el primer arrastre del mouse, desactiva la espera: Desactivar MassMove/MassPriceMove aparece directamente en la ventana del juego. La siguiente llamada vuelve a activar el modo. Después de la primera transferencia, utilice el formulario sin argumentos para detener la cola restante. Las solicitudes que ya se han enviado no se revierten.

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.MassPriceMove");
UO.MassPriceMove();

1. Mueva las pilas 50 con el precio, determinando el tipo con el mouse - script directo

Parámetros y flujo de ejecución:

  • retraso=350 ms; cantidad=50 de artículos individuales, incluido el primer manual; type=0 recuerda TYPE muestra; precio=125 para cada artículo completo.
  • Faltan destino y coordenadas: arrastre la muestra directamente al inventario de su proveedor.
  • Si las pilas originales son 100, se transfieren un máximo de 50 pilas completas. Cada uno recibe un precio 125 después de que el servidor lo solicite.
UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");

2. Todos los artículos de un tipo conocido en la bolsa del proveedor seleccionado - función de script

Parámetros y flujo de ejecución:

  • AddObject le solicita que seleccione una bolsa de proveedor y la guarda como seller_bag. Este es el destino ID; type sigue siendo el código 0x0F7A.
  • demora=500, cantidad=0 sin límite, type=0x0F7A, precio=250, destino=vendor_bag.
  • Falta X/Y/Z: -1,-1,0. Para iniciar una cola, arrastre manualmente un elemento del tipo apropiado; a partir de ahí se determina la bolsa original.
return  RunScenario();
 object? RunScenario()
{
    UO.AddObject("vendor_bag");
    UO.MassPriceMove(500, 0, "0x0F7A", 250, "vendor_bag");
    UO.Print("Now drag one matching item from the source");
    return null;
}

3. Especifique los ocho parámetros y la ubicación dentro de la bolsa - clase de escenario

Parámetros y flujo de ejecución:

  • retraso=350 ms; cantidad=10 artículos completos; type=itemType=0x0EED; precio=1000 por cada pila completa.
  • destino=vendorBag es el ID real de las bolsas de su proveedor, reemplace el ejemplo. Este es el quinto parámetro, no el cuarto.
  • x=60, y=70 es el lugar dentro de esta bolsa, z=0. Estas no son las coordenadas del personaje en el mapa.
  • Una vez llamado, arrastre y suelte manualmente la muestra adecuada desde la fuente. Si el servidor rechaza la ubicación, se detiene cualquier solicitud adicional.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var itemType = "0x0EED";
        var vendorBag = "0x40005678";
        UO.MassPriceMove(350, 10, itemType, 1000, vendorBag, 60, 70, 0);
        return null;
    }
}

4. Cancelar cola y respuesta de precio pendiente - script directo

Parámetros y flujo de ejecución:

  • Sin argumentos, el comando apaga la cola general de transferencias masivas y borra su respuesta de precio pendiente.
  • Los precios y transferencias ya aceptados por el servidor no se revierten. Para detener otros procedimientos y habilitar por separado AllPrice, use UO.TerminateAll().

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

UO.MassPriceMove();

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.MassPriceMove() — UO.MassPriceMove()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price) — UO.MassPriceMove(Any,Any,Any,Any)

Parámetros: delay (Any), quantity (Any), type (Any), price (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price, destination) — UO.MassPriceMove(Any,Any,Any,Any,Any)

Parámetros: delay (Any), quantity (Any), type (Any), price (Any), destination (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price, destination, x, y, z) — UO.MassPriceMove(Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: delay (Any), quantity (Any), type (Any), price (Any), destination (Any), x (Any), y (Any), z (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.Sell

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

Firmas de C#

void UO.Sell(object? @type);
void UO.Sell(object? @type, object? color);
void UO.Sell(object? @type, object? color, object? quantity);

Crea, actualiza o elimina una regla de venta automática en la lista principal predeterminada del perfil actual de Bad Newbie. El comando configura el procesamiento futuro de la oferta del vendedor NPC; no dice compra/venta, no abre tienda y no confirma la transacción. Procedimiento completo: listados de tiendas.

Parámetros

  • type - Producto gráfico 0..65535: por ejemplo 0x0F7A - Perla Negra, 0x0F51 - daga. Este no es el serial del vendedor/artículo ni el body del personaje. Se rechaza un número negativo o un número mayor que 65535. Aquí 0xFFFF es un graphic específico, no una máscara de todos los productos.
  • color — Tono del producto: número negativo o 0xFFFF — cualquiera; 0 - sólo artículos sin pintar. Para hue preciso, utilice 0...65534. No utilice colores fuera de este rango: un valor positivo se convierte en ushort. El valor predeterminado es 1.
  • quantity: la cantidad de UNIDADES de productos por oferta de tienda recibida, no la cantidad de pilas ni el saldo deseado en la mochila. Lo positivo se limita a 65535. 0/negativo elimina la regla de coincidencia type+color del valor predeterminado; no es "toda la cantidad". El valor predeterminado es 1.

Valor devuelto

void - sin valor. Llame en una línea separada, sin var resultado = y sin if. El final de la llamada significa el final de la configuración, no una transacción exitosa. Si no hay perfil o graphic no válido no se crea la regla; No hay resultado numérico del error. Verifique la transacción real según el contenido de la mochila, el oro y la respuesta del servidor.

Comportamiento

  • Sell ​​toma de los argumentos 1 a 3; Falta el color correcto=-1, cantidad=1.
  • La clave de regla es graphic y la máscara hue en Predeterminado. La llamada repetida reemplaza la cantidad y otros campos de esta regla; no añade otro límite además del anterior. Sin precio/nombre, se eliminan las restricciones anteriores en estos campos.
  • Regla nueva/actualizada Habilitada=true. El cambio general de compra/venta se establece en función de la presencia de reglas y el perfil se guarda. La lista predeterminada deshabilitada en sí no se habilita automáticamente: tanto el modo general como la lista deben estar habilitados en la configuración. Otras listas con nombres no se modifican.
  • El procesamiento comienza cuando llega una lista de mercancías. El límite se gasta en total en las filas que coinciden con una regla. Para cada posición, se utiliza la primera regla habilitada coincidente. La reapertura de la tienda ofrece una nueva oferta y un nuevo límite mientras la regla esté activa.
  • Trabaja a tope con Bad Newbie; en Classic esta automatización está deshabilitada. No sustituya el nombre NPC ni el nombre de la lista guardada en los parámetros. AutoBuyEx agrega filtros de precio/nombre al comprar; ClearShopList restablece ambas automatizaciones por completo.

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.Sell");
UO.Sell(0x0F51);

1. Permitir la venta de una daga - guión directo

Parámetros y flujo de ejecución:

  • 0x0F51 - graphic daga, cualquiera hue, 1 - una por frase. El equipo no selecciona un serial específico y no prueba la utilidad/valor del artículo. Seleccione el type/color exacto de su artículo.
UO.Sell(0x0F51);

2. Vender sólo una bata de un determinado color es función del guión.

Parámetros y flujo de ejecución:

  • 0x1F03 es un ejemplo de una bata graphic estándar, 0x0044 es un ejemplo de hue. Reemplace ambos con su producto. 5 — unidades, no precio; No se aceptan los parámetros de precio mínimo y nombre Sell/AutoSell. El servidor debe incluir el artículo en la oferta de venta.
return  RunScenario();
 object? RunScenario()
{
    UO.Sell(0x1F03, 0x0044, 5);
    return null;
}

3. Deshabilite dos tipos de ventas antes de ir a NPC - clase de script

Parámetros y flujo de ejecución:

  • El nombre del procedimiento es arbitrario; itemType y hue son sus parámetros. Se conservan otras reglas, compras y listas de nombres personalizados. Si otra lista habilitada también vende estos artículos, desactive la regla correspondiente a través de la configuración.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        RemoveSaleRule(0x0F51, -1);
        RemoveSaleRule(0x1F03, 0x0044);
        return null;
    }

    void RemoveSaleRule(dynamic itemType, dynamic hue)
    {
        UO.Sell(itemType, hue, 0);
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.Sell(type) — UO.Sell(Any)

Parámetros: type (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.Sell(type, color) — UO.Sell(Any,Any)

Parámetros: type (Any), color (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.Sell(type, color, quantity) — UO.Sell(Any,Any,Any)

Parámetros: type (Any), color (Any), quantity (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.SendShopReply

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

Firmas de C#

void UO.SendShopReply(object? reply);

Envía la selección de productos a la última oferta activa del vendedor NPC. La dirección de la transacción está determinada por la oferta: comprarle a NPC o venderle.

Parámetros

  • reply — Cadena: "serial:cantidad"; varias posiciones están separadas por |, ; o coma. En lugar de : digamos =. Serie: posiciones ID de GetShopList, decimal o 0x, no graphic ni ID vendedor. La cantidad es un número entero positivo de unos, no el número de pilas; sin él, se toma 1. "aceptar" no distingue entre mayúsculas y minúsculas o "1" confirma la ventana de borrador; una línea vacía cancela la transacción con una respuesta vacía.

Valor devuelto

void - No hay valor de devolución: ni true/false, ni el importe, ni la confirmación de compra. El servidor decide si la transacción es válida. Después de enviar, verifique si hay elementos actualizados, oro o mensajes del servidor.

Comportamiento

  • Primero, como acción normal del juego, abra una compra o venta desde el NPC deseado y espere a que el servidor ofrezca. Estos equipos en sí no buscan un vendedor, no abren comercio, no fijan un precio para un vendedor personal y no transfieren artículos entre cofres. ID del vendedor no se pasa como parámetro: en caso de varias ofertas se utiliza la última.
  • En el administrador, la oferta se almacena en la sesión de juego. Al cerrar el cliente gráfico se guarda la propuesta y el borrador, al abrirlo se restaura la ventana. Cerrar la tienda, responder, cerrar el servidor o desconectar la conexión elimina la oferta. Autocompra/autoventa Bad Newbie puede procesarlo antes del script.
  • La lectura no envía solicitudes al servidor. Esta es una instantánea del suministro ya recibido, no una garantía del stock actual de NPC. El campo de cantidad refleja las unidades, no el número de filas/pilas. ArrayLength(filas) cuenta las posiciones. Los precios aquí leen GetShopList; SendShopReply no acepta el precio.
  • La lista explícita reemplaza el borrador y no se agrega al mismo. Repitiendo uno serial suma la cantidad; el total está limitado por la cantidad total del artículo en la oferta. Desconocido serial, cantidad incorrecta o no positiva rechaza la respuesta completa antes de enviarla, guardando la oferta. Si no hay frase, SendShopReply informa un error. La línea "0" no es un comando de deshacer; usar "".

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.SendShopReply");
UO.SendShopReply("");

1. Selecciona hasta tres unidades de la primera posición - guión directo

Parámetros y flujo de ejecución:

  • Se seleccionan hasta 3 unidades de primera posición; serial no tiene piel dura. Para una oferta de compra es una compra, para una oferta de venta es una venta. Comprueba qué oferta tienes abierta.
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
    return null;
}
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
if (Truth(amount > 3))
{
    amount = 3;
}
if (Truth(amount > 0))
{
    UO.SendShopReply(ReadField(rows[0], 0, "|") + ":" + Convert.ToString(amount));
}

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;

string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }

2. Seleccione un artículo a la vez dentro del presupuesto - función de script

Parámetros y flujo de ejecución:

  • Sólo para oferta de COMPRA: presupuesto 30, tipo 0x0E21. Se selecciona una unidad de cada artículo elegible si el precio es positivo y está dentro del presupuesto restante. La cadena se concatena usando |; uno SendShopReply envía la selección completa.
return  RunScenario();
 object? RunScenario()
{
    double budget = 30;
    var reply = "";
    var rows = UO.GetShopList();
    for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
    {
        var row = rows[i];
        if (Truth(ReadField(row, 1, "|") == "0x0E21"))
        {
            var price = Convert.ToDouble(ReadField(row, 4, "|"));
            var amount = Convert.ToInt32(ReadField(row, 3, "|"));
            if (Truth(price > 0) && Truth(price <= budget) && Truth(amount > 0))
            {
                if (Truth(reply != ""))
                {
                    reply = reply + "|";
                }

                reply = reply + ReadField(row, 0, "|") + ":1";
                budget = budget - price;
            }
        }
    }

    if (Truth(reply != ""))
    {
        UO.SendShopReply(reply);
    }

    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;
string ReadField(object? row, int index, string separator)
{
    string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
    return index >= 0 && index < fields.Length ? fields[index] : "";
}

3. Confirmar borrador de ventana - Clase de script

Parámetros y flujo de ejecución:

  • Preselecciona cantidades en el escaparate de la tienda. "aceptar" envía exactamente este borrador; Después de cerrar la ventana del juego, se guarda. Si no se selecciona nada, se enviará una respuesta vacía. "1" es sinónimo de confirmación, no de serial asunto.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.SendShopReply("accept");
        return null;
    }
}

4. Cancelar oferta - guión directo

Parámetros y flujo de ejecución:

  • Una línea vacía envía una respuesta vacía y cierra la oferta activa. El cheque GetShopList evita ser llamado cuando no hay bienes, pero no distingue entre una oración vacía y una ausente.

Listas Shop / Listas de compra y venta

Shop listas / Listas de compra y venta

if (Truth(ArrayLength(UO.GetShopList()) > 0))
{
    UO.SendShopReply("");
}

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;

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.SendShopReply(reply) — UO.SendShopReply(Any)

Parámetros: reply (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

public void SendShopReply(InjectionValue reply) => bridge.SendShopReply(reply.ToString());

UO.SetAutoBuyDelay

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

Firmas de C#

void UO.SetAutoBuyDelay(object? value);

Establece el retraso de compra automático y guarda el perfil actual.

Parámetros

  • value: número requerido de milisegundos. Un valor negativo se limita a 0, un valor mayor que 65535 se limita al número 65535. 0 desactiva el retraso adicional, pero no desactiva el comercio automático en sí.

Valor devuelto

void: sin valor de retorno. Llame como una línea separada, luego use GetAutoBuyDelay() para leer la configuración efectiva. Si no hay ningún perfil, el configurador no guarda nada; getter en este estado da estándar 3 ms.

Comportamiento

  • La configuración es general para el perfil actual: los cambios en otro script o UI serán visibles la próxima vez que lo lea. Cero es una configuración válida, no una señal de que faltan datos ni una razón para devolver el caché de script anterior.
  • El valor predeterminado es 3 ms. Después de enviar una operación automática, el administrador establece la hora para la siguiente operación permitida. Las listas de proveedores que llegaron antes no se procesan con este pase; getter no activa una espera y no envía una compra/venta por sí mismo.
  • Esto no es un retraso de MassMove, Drag/Drop ni operaciones manuales. El nuevo valor se aplica al programar el próximo retraso; el momento ya asignado no se recalcula.
  • En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.

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.SetAutoBuyDelay");
UO.SetAutoBuyDelay(350);

1. Establecer intervalo 350 ms - script directo

Parámetros y flujo de ejecución:

  • Valor=350: milisegundos entre operaciones automáticas permitidas.
  • La configuración se guarda en el perfil actual y es visible para otros scripts.
UO.SetAutoBuyDelay(350);
UO.Print(Convert.ToString(UO.GetAutoBuyDelay()));

2. Eliminar retraso adicional: función de script

Parámetros y flujo de ejecución:

  • Valor=0 tiene un significado independiente; no se reemplaza por el valor anterior distinto de cero.
  • Sólo cambia el retraso. Las reglas, listas y un cambio de comercio automático general se configuran por separado.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoBuyDelay(0);
    var actual = UO.GetAutoBuyDelay();
    if (Truth(actual == 0))
    {
        UO.Print("Delay disabled");
    }

    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. Aplicar valor calculado: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • request=70000 excede el máximo. aplicado lee el perfil después de las restricciones del establecimiento.
  • Cuando se carga el perfil, el resultado será 65535. Para volver al retraso estándar, llame explícitamente al configurador con 3.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var requested = 70000;
        UO.SetAutoBuyDelay(requested);
        var applied = UO.GetAutoBuyDelay();
        UO.Print("Requested: " + Convert.ToString(requested));
        UO.Print("Applied: " + Convert.ToString(applied));
        return null;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.SetAutoBuyDelay(value) — UO.SetAutoBuyDelay(Any)

Parámetros: value (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "setautobuydelay":

                    state.AutoBuyDelay = Math.Max(0, Arg(0));

                    bridge.SetAutoBuyDelay(state.AutoBuyDelay);

                    return InjectionValue.Unit;

UO.SetAutoSellDelay

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

Firmas de C#

void UO.SetAutoSellDelay(object? value);

Establece el retraso de la venta automática y guarda el perfil actual.

Parámetros

  • value: número requerido de milisegundos. Un valor negativo se limita a 0, un valor mayor que 65535 se limita al número 65535. 0 desactiva el retraso adicional, pero no desactiva el comercio automático en sí.

Valor devuelto

void: sin valor de retorno. Llame como una línea separada, luego use GetAutoSellDelay() para leer la configuración efectiva. Si no hay ningún perfil, el configurador no guarda nada; getter en este estado da estándar 3 ms.

Comportamiento

  • La configuración es general para el perfil actual: los cambios en otro script o UI serán visibles la próxima vez que lo lea. Cero es una configuración válida, no una señal de que faltan datos ni una razón para devolver el caché de script anterior.
  • El valor predeterminado es 3 ms. Después de enviar una operación automática, el administrador establece la hora para la siguiente operación permitida. Las listas de proveedores que llegaron antes no se procesan con este pase; getter no activa una espera y no envía una compra/venta por sí mismo.
  • Esto no es un retraso de MassMove, Drag/Drop ni operaciones manuales. El nuevo valor se aplica al programar el próximo retraso; el momento ya asignado no se recalcula.
  • En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.

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.SetAutoSellDelay");
UO.SetAutoSellDelay(350);

1. Establecer intervalo 350 ms - script directo

Parámetros y flujo de ejecución:

  • Valor=350: milisegundos entre operaciones automáticas permitidas.
  • La configuración se guarda en el perfil actual y es visible para otros scripts.
UO.SetAutoSellDelay(350);
UO.Print(Convert.ToString(UO.GetAutoSellDelay()));

2. Eliminar retraso adicional: función de script

Parámetros y flujo de ejecución:

  • Valor=0 tiene un significado independiente; no se reemplaza por el valor anterior distinto de cero.
  • Sólo cambia el retraso. Las reglas, listas y un cambio de comercio automático general se configuran por separado.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoSellDelay(0);
    var actual = UO.GetAutoSellDelay();
    if (Truth(actual == 0))
    {
        UO.Print("Delay disabled");
    }

    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. Aplicar valor calculado: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • request=70000 excede el máximo. aplicado lee el perfil después de las restricciones del establecimiento.
  • Cuando se carga el perfil, el resultado será 65535. Para volver al retraso estándar, llame explícitamente al configurador con 3.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var requested = 70000;
        UO.SetAutoSellDelay(requested);
        var applied = UO.GetAutoSellDelay();
        UO.Print("Requested: " + Convert.ToString(requested));
        UO.Print("Applied: " + Convert.ToString(applied));
        return null;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.SetAutoSellDelay(value) — UO.SetAutoSellDelay(Any)

Parámetros: value (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "setautoselldelay":

                    state.AutoSellDelay = Math.Max(0, Arg(0));

                    bridge.SetAutoSellDelay(state.AutoSellDelay);

                    return InjectionValue.Unit;

UO.Shop

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

Firmas de C#

void UO.Shop();

Imprime una lista local de líneas comerciales.

Parámetros

No hay parámetros.

Valor devuelto

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

Comportamiento

  • ExecuteLegacyManualAlias lee bridge.GetShopList y concatena las líneas mediante "|" para SystemMessage. El menú del vendedor no se abre, no se realiza compra/venta.
  • Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.

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.Shop");
UO.Shop();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Imprime una lista local de líneas comerciales.
UO.Shop();

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

Parámetros y flujo de ejecución:

  • ExecuteLegacyManualAlias lee bridge.GetShopList y concatena las líneas mediante "|" para SystemMessage. El menú del vendedor no se abre, no se realiza compra/venta.
return  RunScenario();
 object? RunScenario()
{
    UO.Shop();
    UO.Print(UO.GetArrayLength(UO.GetShopList()));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.Shop();
        UO.TextOpen();
        UO.TextPrint("Shop list was printed in the journal");
        return null;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.Shop() — UO.Shop()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "shop": SystemMessage(string.Join(" | ", bridge.GetShopList())); break;

UO.VendorMenu

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

Firmas de C#

void UO.VendorMenu(object? vendor);
void UO.VendorMenu(object? menu, object? choice);

Utiliza un vendedor o registra un gancho de menú permanente.

Parámetros

  • vendor — Formulario con un argumento: serial/alias del objeto vendedor.
  • menu: un formulario con dos argumentos: un título y un elemento de menú, ambos como texto. Esta es una operación diferente; el primer argumento no es serial.
  • choice: un formulario con dos argumentos: un título y un elemento de menú, ambos como texto. Esta es una operación diferente; el primer argumento no es serial.

Valor devuelto

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

Comportamiento

  • Un argumento llama puente.UseObject. Los dos argumentos llaman bridge.AddMenuHook(menu,choice,true), donde true significa un gancho repetible.
  • No compra ni vende automáticamente. La apertura y selección de menús la determina el servidor; el gancho registrado actúa en los siguientes menús coincidentes hasta que se cancele.
  • Para formularios de menú/opción, el administrador selecciona el primer menú cuyo título contiene mensajes, sin distinguir entre mayúsculas y minúsculas; SessionMenu selecciona el primer elemento cuyo nombre contiene opciones, y tampoco distingue entre mayúsculas y minúsculas. El texto en blanco es adecuado para cualquier persona; El texto numérico es un fragmento del nombre, no un índice. Una selección exitosa envía una respuesta y cierra el menú local. Un enlace único se elimina sólo después de una selección exitosa; queda un gancho permanente.

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.VendorMenu");
UO.VendorMenu("lasttarget");

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Utiliza un vendedor o registra un gancho de menú permanente.
if (Truth(UO.Exists("lasttarget")))
{
    UO.VendorMenu("lasttarget");
}

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:

  • Un argumento llama puente.UseObject. Los dos argumentos llaman bridge.AddMenuHook(menu,choice,true), donde true significa un gancho repetible.
return  RunScenario();
 object? RunScenario()
{
    UO.VendorMenu("Vendor", "Buy");
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • No compra ni vende automáticamente. La apertura y selección de menús la determina el servidor; el gancho registrado actúa en los siguientes menús coincidentes hasta que se cancele.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.VendorMenu("Vendor", "Buy");
        UO.Print(UO.MenuHookPresent());
        UO.CancelMenu();
        return null;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.VendorMenu(vendor) — UO.VendorMenu(Any)

Parámetros: vendor (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "vendormenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);

                    else bridge.UseObject(Arg(0, bridge.LastTarget));

                    break;

UO.VendorMenu(menu, choice) — UO.VendorMenu(Any,Any)

Parámetros: menu (Any), choice (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "vendormenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);

                    else bridge.UseObject(Arg(0, bridge.LastTarget));

                    break;
⚠️ **GitHub.com Fallback** ⚠️