Skip to content

ES UO Topic containers

Codex edited this page Oct 12, 2026 · 4 revisions

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

Contenedores

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

Lea el contenido, abra y seleccione el contenedor de destino. Un contenedor cerrado o aún no cargado no proporciona al cliente una lista completa de artículos.

Secciones

Tema Comandos y explicaciones
Backpack UO.Backpack
Bank UO.ObjAtLayerEx · UO.OpenContainer
OpenContainer UO.OpenContainer
LastContainer UO.LastContainer
ContainerOf UO.ContainerOf · UO.GetParent
IsContainer UO.IsContainer
Contenedores anidados UO.GetContent · UO.FindTypeEx · UO.FindTypesArrayEx
Receiving Container UO.SetReceivingContainer · UO.UnsetReceivingContainer
Catch Bag UO.SetCatchBag · UO.UnsetCatchBag
Container Transfers UO.MoveItem · UO.MoveItems · UO.MassMove · UO.EmptyContainer

Todos los comandos del tema

Backpack / Ground

UO.Backpack · UO.Ground

OpenContainer

UO.OpenContainer

LastContainer

UO.LastContainer

ContainerOf

UO.ContainerOf · UO.GetParent · UO.ContainerOff

IsContainer

UO.IsContainer

Contenedores anidados

UO.GetContent

Contenedor receptor

UO.SetReceivingContainer · UO.UnsetReceivingContainer

Bolsa de captura

UO.SetCatchBag · UO.UnsetCatchBag

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

Parámetros, resultado y todos los escenarios

UO.OpenContainer("lasttarget");

UO.EmptyContainer

Parámetros, resultado y todos los escenarios

UO.Print("Select a chest or corpse");
var sent = UO.EmptyContainer(350);
if (Truth(sent == 0))
{
    UO.Print("Cancelled, empty, unavailable, or a transfer failed");
}

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

Referencia completa de comandos


UO.Backpack

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

Firmas de C#

int UO.Backpack();

Devuelve el ID de la mochila equipada del personaje actual.

Parámetros

No hay parámetros.

Valor devuelto

int - serial/ID, no graphic/type, capa, número de elementos o bool. 0: no hay ningún objeto actual. Se guardan todos los bits 32 serial; marque != 0, no == true o > 0. El resultado guardado no se actualiza por sí solo. Busca un elemento recuperado en la capa Backpack del reproductor actual. No hay jugador/destruido, no se ha quitado ninguna mochila o bolsa - 0. Devuelve el contenedor, no el contenido; no crea una nueva bolsa.

Comportamiento

  • No hay parámetros. Lee datos locales a través de Invoke en la transmisión del juego; cancelar el script interrumpe la espera de ese hilo. No envía el paquete, no abre el contenedor/destino y no transfiere el artículo.
  • El self/backpack integrado sin paréntesis se lee nuevamente a menos que lo anule una variable de script. Los nombres de cadenas son procesados ​​por el comando de recepción. En el destino de transporte, "self" significa la mochila y UO.Self() devuelve el serial del personaje. Para el contenedor ID, utilice UO.Backpack() explícitamente.
  • World.Clear elimina al jugador; las lecturas posteriores arrojan 0. Entrar al mundo o cambiar la bolsa equipada puede cambiar ID. Las lecturas individuales no son atómicas. Un ID distinto de cero no prueba la conexión, la resolución del servidor ni la carga de contenido.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.

var result = UO.Backpack();
UO.Print("Backpack: " + Convert.ToString(result));

1. Lectura y salida ID - script directo

Parámetros y flujo de ejecución:

  • id almacena el resultado de una llamada; HEX formatea serial para el registro. El ejemplo no selecciona ni usa nada.
var id = UO.Backpack();
UO.Print("ID: " + Hex(id));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2. Detectar cambio ID - Función de secuencia de comandos

Parámetros y flujo de ejecución:

  • antes/después se leen a intervalos de 250 ms. UO.Wait agregado solo por ejemplo. Igualdad significa idéntica final ID; Es posible que se pasen por alto los cambios intermedios.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.Backpack();
    await Delay(250);
    var after = UO.Backpack();
    if (Truth(before != after))
    {
        UO.Print("ID changed: " + Hex(after));
    }

    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Función completa IsOwnSerial - clase de script

Parámetros y flujo de ejecución:

  • candidato - guardado ID LastTarget. IsOwnSerial(candidato) toma uno serial y devuelve bool: true para el actual ID distinto de cero; de lo contrario, false. La definición de la función se proporciona en su totalidad; El objetivo no cambia.
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 candidate = UO.LastTarget();
        if (Truth(Truth(IsOwnSerial(candidate)) == true))
        {
            UO.Print("Own object selected");
        }
        else
        {
            UO.Print("Different object or no own object");
        }

        return null;
    }

    dynamic IsOwnSerial(dynamic candidate)
    {
        var current = UO.Backpack();
        return Truth(current != 0) && Truth(current == candidate);
    }

    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.Backpack() — UO.Backpack()

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

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

case "backpack": return new InjectionValue(bridge.Backpack);

UO.ContainerOf

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

Firmas de C#

string UO.ContainerOf(object? name);

Lee el padre inmediato del elemento.

Parámetros

  • name — Serie/ID de un objeto específico: int, cadena decimal/hexadecimal o alias de conjunto self, backpack, lasttarget, lastobject o nombre AddObject. Esto no es graphic/type.

Valor devuelto

string de la forma "0x40001234" - serial del propietario del contenedor/carácter. Para un elemento en el suelo, es "0x00000000" o "0xFFFFFFFF". Para nombre/objeto desconocido o móvil: "0x00000000". No es el graphic del contenedor, ni el ID del elemento en sí, ni el propietario raíz de la bolsa anidada.

Comportamiento

  • Se lee el campo Contenedor de un elemento local, sin recorrido recursivo ni llamada al servidor. Marque Exists antes de interpretar un resultado nulo. Ground utiliza dos representaciones válidas.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.

var result = UO.ContainerOf("backpack");
UO.Print("ContainerOf: " + Convert.ToString(result));

1. Descubra el contenedor de un artículo: guión directo

Parámetros y flujo de ejecución:

  • El elemento es serial de la pila encontrada. type=0x0EED se transmite únicamente por FindType.
  • padre denota la mochila real, no el carácter que contiene la mochila.
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
    var parent = UO.ContainerOf(item);
    UO.Print(Convert.ToString(parent));
}

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

2. Descubra el propietario de la mochila - función de script

Parámetros y flujo de ejecución:

  • El argumento es la propia mochila.
  • El padre de la mochila equipada será el serial del personaje.
return  RunScenario();
 object? RunScenario()
{
    var bag = UO.GetSerial("backpack");
    if (Truth(UO.Exists(bag)))
    {
        UO.Print(Convert.ToString(UO.ContainerOf(bag)));
    }

    return null;
}

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

3. Verificar elemento en el terreno - Clase de script

Parámetros y flujo de ejecución:

  • GetContent("ground") proporciona ID elementos fuera de los contenedores.
  • Ambas representaciones de la tierra son válidas. Un padre nulo sin Exists no es suficiente para inferir la posición de un objeto.
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 items = UO.GetContent("ground");
        if (Truth(ArrayLength(items) > 0))
        {
            var item = items[0];
            if (Truth(UO.Exists(item)))
            {
                UO.Print(Convert.ToString(UO.ContainerOf(item)));
            }
        }

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

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.ContainerOf(name) — UO.ContainerOf(Any)

Parámetros: name (Any)

Resultado: string / String.

Durante la llamada:

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

public string ContainerOf(InjectionValue name)

        {

            if (TryGetObject(name, out int id))

            {

                var containerId = bridge.ContainerOf(id);

                if (containerId < 0)

                    return "0xFFFFFFFF";



                return $"0x{containerId:X8}";

            }



            return "0x00000000";

        }

UO.ContainerOff

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

Firmas de C#

void UO.ContainerOff();

Restablece el contenedor de tiempo de ejecución de recepción designado.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • Llama a UnsetReceivingContainer y escribe Estado.ReceivingContainer=0. Las siguientes operaciones de Grab sin una asignación explícita utilizan la mochila, si hay una disponible. Los artículos no se mueven y la ventana del contenedor no se cierra.

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

1. Restablecer asignación: guión directo

Parámetros y flujo de ejecución:

  • El estado ReceivingContainer se convierte en 0.
UO.ContainerOff();

2. Restablecer después de la asignación - función de script

Parámetros y flujo de ejecución:

  • La asignación está borrada; la acción no mueve el contenido.
return  RunScenario();
 object? RunScenario()
{
    UO.SetReceivingContainer("backpack");
    UO.ContainerOff();
    return null;
}

3. Restablecer - Clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • El estado nulo permite un reinicio repetido.
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.ContainerOff();
        UO.ContainerOff();
        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.ContainerOff() — UO.ContainerOff()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();

UO.GetContent

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

Firmas de C#

dynamic UO.GetContent(object? id);

Lee el contenido directo de un contenedor o artículos cargados en el suelo.

Parámetros

  • id — Serie/ID de un objeto específico: int, cadena decimal/hexadecimal o alias de conjunto self, backpack, lasttarget, lastobject o nombre AddObject. Esto no es graphic/type. Las líneas my/backpack seleccionan la mochila. Sólo se seleccionan terrenos explícitos 0, "0" o "ground". Un alias desconocido, una mochila perdida, un ID negativo o un tipo de valor inadecuado dan como resultado una matriz vacía.

Valor devuelto

Matriz - serial de cada hijo directo. Para ground/0 - artículos fuera de contenedores; Se tienen en cuenta ambas marcas normales del suelo 0 y 0xFFFFFFFF. Sin entradas, se devuelve una matriz vacía. La lista contiene ID, no type y ninguna capa.

Comportamiento

  • Se leen los datos ya descargados por el cliente. El comando no abre el contenedor, no mueve elementos ni descarga objetos de todo el servidor.
  • Matriz: matriz con índices que comienzan desde 0. Guárdalo en var, marca ArrayLength antes de acceder. Los elementos pueden desaparecer del mundo después de tomar una instantánea: marque Exists(serial) antes de actuar.
  • No hay recorrido recursivo de bolsas anidadas, clasificación por distancia, filtro Ignore o FindDistance/FindVertical. La instantánea normal de FindType permanece sin cambios.
  • Un cofre sin abrir puede parecer vacío: la ausencia de datos recibidos no prueba que el servidor esté vacío. Primero use un recipiente abierto y espere su contenido.

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

1. Obtener tamaño de lista - script directo

Parámetros y flujo de ejecución:

  • ID="backpack" - mochila del personaje actual, solo elementos anidados directos.
  • Longitud: número de registros/ID. Esta no es la cantidad de Monto en pilas. La lista vacía da 0.
var items = UO.GetContent("backpack");
UO.Print(Convert.ToString(ArrayLength(items)));

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Recorrer todo lo encontrado ID - función de script

Parámetros y flujo de ejecución:

  • ID="backpack" - mochila del personaje actual, solo elementos anidados directos.
  • elementos [i] - numérico serial. Hex se utiliza sólo para salida. El bucle no accede al último índice.
return  RunScenario();
 object? RunScenario()
{
    var items = UO.GetContent("backpack");
    var i = 0;
    while (Truth(i < ArrayLength(items)))
    {
        UO.Print("0x" + Hex(items[i]));
        i = i + 1;
    }

    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Verifique el primer registro antes de leer: clase de guión

Parámetros y flujo de ejecución:

  • ID="backpack" - mochila del personaje actual, solo elementos anidados directos.
  • Se verifican dos cosas diferentes: el registro en la instantánea y la existencia del objeto ahora. Orden sin clasificación explícita no significa cercanía.
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 items = UO.GetContent("backpack");
        if (Truth(ArrayLength(items) > 0))
        {
            var first = items[0];
            if (Truth(UO.Exists(first)))
            {
                UO.Print(UO.GetName(first));
            }
        }
        else
        {
            UO.Print("Empty list");
        }

        return null;
    }

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

4. Obtenga todos los elementos terrestres descargados: secuencia de comandos directa

Parámetros y flujo de ejecución:

  • ID="ground" selecciona explícitamente el terreno. NPC/jugadores no están incluidos en esta lista.
  • El radio de búsqueda aquí no se limita a FindDistance. Para el filtro type y la distancia hay GetWorldItems(type,color,distancia).
var groundItems = UO.GetContent("ground");
UO.Print(Convert.ToString(ArrayLength(groundItems)));

int ArrayLength(object? value) => value is System.Array array ? array.Length : 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.GetContent(id) — UO.GetContent(Any)

Parámetros: id (Any)

Resultado: dynamic / Any.

Durante la llamada:

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

case "getcontent":

                case "getequipment":

                {

                    InjectionValue selection = arguments[0];

                    bool ground = false, explicitZero;

                    int container;

                    if (selection.Kind == InjectionValueKind.String)

                    {

                        string text = Text(0).Trim();

                        ground = text.Equals("ground", StringComparison.OrdinalIgnoreCase);

                        explicitZero = NumberConversions.TryStr2Int(text, out int literal) && literal == 0;

                        container = ground ? 0 : text.Equals("my", StringComparison.OrdinalIgnoreCase)

                            ? bridge.Backpack : GetObject(text);

                    }

                    else

                    {

                        if (selection.Kind != InjectionValueKind.Integer && selection.Kind != InjectionValueKind.Decimal)

                            return new InjectionValue(Array.Empty<InjectionValue>());

                        container = Arg(0);

                        explicitZero = selection.Kind == InjectionValueKind.Integer ? selection.Integer == 0 : selection.Decimal == 0d;

                    }

                    // Only an explicit ground/zero selector may query world items.

                    if (container < 0 || container == 0 && !ground && !explicitZero)

                        return new InjectionValue(Array.Empty<InjectionValue>());

                    bool equipment = name.Equals("GetEquipment", StringComparison.OrdinalIgnoreCase);

                    int[] items = equipment

                        ? container == 0 ? Array.Empty<int>() : bridge.GetEquipment(container)

                        : bridge.GetContent(container);

                    return new InjectionValue(items.Select(serial => new InjectionValue(serial)).ToArray());

                }

UO.GetParent

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

Firmas de C#

dynamic UO.GetParent(object? objID);

Lee el padre inmediato del elemento.

Parámetros

  • objID — Serie/ID de un objeto específico: int, cadena decimal/hexadecimal o alias de conjunto self, backpack, lasttarget, lastobject o nombre AddObject. Esto no es graphic/type.

Valor devuelto

int - serial propietario del contenedor/carácter. Para un artículo en tierra, es 0 o -1 (bits 0xFFFFFFFF), dependiendo de la entrada del cliente. Para un objeto o móvil desconocido: 0. No es el graphic del contenedor, ni el ID del elemento en sí, ni el propietario raíz de la bolsa anidada.

Comportamiento

  • Se lee el campo Contenedor de un elemento local, sin recorrido recursivo ni llamada al servidor. Marque Exists antes de interpretar un resultado nulo. Ground utiliza dos representaciones válidas.

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

1. Descubra el contenedor de un artículo: guión directo

Parámetros y flujo de ejecución:

  • El elemento es serial de la pila encontrada. type=0x0EED se transmite únicamente por FindType.
  • padre denota la mochila real, no el carácter que contiene la mochila.
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
    var parent = UO.GetParent(item);
    UO.Print(Convert.ToString(parent));
}

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

2. Descubra el propietario de la mochila - función de script

Parámetros y flujo de ejecución:

  • El argumento es la propia mochila.
  • El padre de la mochila equipada será el serial del personaje.
return  RunScenario();
 object? RunScenario()
{
    var bag = UO.GetSerial("backpack");
    if (Truth(UO.Exists(bag)))
    {
        UO.Print(Convert.ToString(UO.GetParent(bag)));
    }

    return null;
}

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

3. Verificar elemento en el terreno - Clase de script

Parámetros y flujo de ejecución:

  • GetContent("ground") proporciona ID elementos fuera de los contenedores.
  • Ambas representaciones de la tierra son válidas. Un padre nulo sin Exists no es suficiente para inferir la posición de un objeto.
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 items = UO.GetContent("ground");
        if (Truth(ArrayLength(items) > 0))
        {
            var item = items[0];
            if (Truth(UO.Exists(item)))
            {
                UO.Print(Convert.ToString(UO.GetParent(item)));
            }
        }

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

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.GetParent(objID) — UO.GetParent(Any)

Parámetros: objID (Any)

Resultado: dynamic / Any.

Durante la llamada:

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

case "getparent": return new InjectionValue(bridge.ContainerOf(Arg(0)));

UO.Ground

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

Firmas de C#

int UO.Ground();

Devuelve un designador de terreno especial para el parámetro de búsqueda del contenedor o el destino de transferencia.

Parámetros

No hay parámetros.

Valor devuelto

int, siempre 0. Este cero es un designador de terreno válido, no false, ni un error de búsqueda, ni un elemento ID, graphic, un número de mapa o una coordenada. No marque Ground() como señal de éxito; verifique el resultado de búsqueda o transferencia al que se le pasó este valor.

Comportamiento

  • No hay parámetros. La llamada Ground() en sí no busca nada, no mueve nada, no abre el objetivo, no envía paquetes y no cambia los resultados de la búsqueda anterior. Antes de entrar al juego, también devuelve 0.
  • Envíe los comandos FindType, FindList, Count, FindTypeEx, FindTypesArrayEx, CountEx o MoveItem a la posición del contenedor/destino. La búsqueda ve objetos del mundo cargados, pero no carga celdas distantes. Para la transferencia al suelo, X/Y/Z son las coordenadas mundiales, no los píxeles de la ventana del contenedor.
  • FindType(type, color) todavía aparece en el inventario: el segundo parámetro es el color. Para tierra, escriba FindType(type, color, UO.Ground()). En el antiguo compacto FindType/MoveItem el número -1 indica inventario; en compatible FindTypeEx/FindTypesArrayEx/CountEx - 1 también se permite como tierra. Utilice UO.Ground() o el nombre explícito ground, no transfiera designaciones numéricas entre diferentes comandos sin verificar.
  • Las diferencias de notación entre los comandos y los ejemplos anteriores describen este cliente.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.

var result = UO.Ground();
UO.Print("Ground: " + Convert.ToString(result));

1. Leer símbolo de tierra - guión directo

Parámetros y flujo de ejecución:

  • el destino recibe int 0, Print genera este número. La llamada en sí no descarta nada.
var destination = UO.Ground();
UO.Print(Convert.ToString(destination));

2. Encuentra una pila de oro en el suelo - función de script

Parámetros y flujo de ejecución:

  • 0x0EED - gráficos dorados; el segundo -1 significa cualquier hue. Ground() establece una búsqueda en el mundo, false desactiva la recursividad del contenedor. FindTypeEx devuelve uno serial o 0 si no hay resultado. != 0 comprueba esto serial. Se utilizan el FindDistance/FindVertical actual y la lista Ignore.
return  RunScenario();
 object? RunScenario()
{
    var id = UO.FindTypeEx(0x0EED, -1, UO.Ground(), false);
    if (Truth(id != 0))
    {
        UO.Print(Hex(id));
    }
    else
    {
        UO.Print("0");
    }

    return null;
}

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

3. Función completa para encontrar dos gráficos en la Tierra - clase de script

Parámetros y flujo de ejecución:

  • FindGroundTypes(firstType, secondType, radio, altura) busca oro 0x0EED y perla negra 0x0F7A con radio=5 y altura=10. declarar los tipos de variables [1] crea dos celdas; colores[0] y contenedores[0] - uno cada uno. Toda la pila cuenta como un resultado; los tipos/colores son alternativos, los contenedores que se cruzan no se duplican ID. La función devuelve la matriz guardada serial; Finalmente restablece ambos límites. Salidas principales cada ID. El código de función se proporciona completo.
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 ids = FindGroundTypes(0x0EED, 0x0F7A, 5, 10);
        foreach (var id in ids)
        {
            UO.Print(Hex(id));
        }

        return null;
    }

    dynamic FindGroundTypes(dynamic firstType, dynamic secondType, dynamic radius, dynamic height)
    {
        var oldDistance = UO.FindDistance();
        var oldVertical = UO.FindVertical();
        dynamic[] types = new dynamic[checked((int)(1) + 1)];
        types[0] = firstType;
        types[1] = secondType;
        dynamic[] colors = new dynamic[checked((int)(0) + 1)];
        colors[0] = -1;
        dynamic[] containers = new dynamic[checked((int)(0) + 1)];
        containers[0] = UO.Ground();
        try
        {
            UO.FindDistance(radius);
            UO.FindVertical(height);
            UO.FindTypesArrayEx(types, colors, containers, false);
            return UO.GetFoundItems();
        }
        finally
        {
            UO.FindDistance(oldDistance);
            UO.FindVertical(oldVertical);
        }
    }

    string Hex(object? value) => Convert.ToInt64(value).ToString("X");
}

4. Mover un elemento conocido a la celda de un personaje: guión directo

Parámetros y flujo de ejecución:

  • Reemplace 0x40001001 con serial de un artículo disponible. IsObjectExists primero verifica el objeto cargado. MoveItem(artículo, cantidad, destino, X, Y, Z): cantidad=0 - toda la pila, Ground() - tierra, GetX/GetY/GetZ - la celda mundial del personaje. El resultado es 1 si el cliente aceptó la solicitud de transferencia, en caso contrario 0. Este es el resultado de MoveItem, no de Ground(), y no de una confirmación de entrega del servidor.
var item = 0x40001001;
if (Truth(UO.IsObjectExists(item)))
{
    var result = UO.MoveItem(item, 0, UO.Ground(), UO.GetX("self"), UO.GetY("self"), UO.GetZ("self"));
}

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.Ground() — UO.Ground()

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

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

case "ground": return new InjectionValue(0);

UO.IsContainer

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

Firmas de C#

int UO.IsContainer(object? objID);

Comprueba la bandera del contenedor en los datos del mosaico del tipo gráfico del elemento cargado.

Parámetros

  • objID — Obligatorio serial/ID de un objeto específico: int, cadena hexadecimal o alias self, backpack, lasttarget, lastobject, lastcontainer, último estado, elemento de búsqueda, último cadáver o nombre AddObject. Esto no es graphic/type. El nombre no especificado se resuelve en 0; el comando no abre ningún objetivo nuevo.

Valor devuelto

int 1: un elemento conocido tiene un atributo de contenedor en sus datos graphic. int 0: no existe tal signo, el objeto es mobile, desconocido o eliminado. Esta no es la cantidad de cosas en el contenedor, ni una señal de que el contenedor está abierto, ni una confirmación del acceso al contenido.

El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.

Comportamiento

  • Se lee el modelo del cliente local; No hay solicitudes al servidor, ni esperas ni movimientos.
  • El resultado se refiere al momento de la lectura. Después de UO.Wait u otra acción, el objeto y sus indicadores pueden cambiar.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.

var result = UO.IsContainer(UO.GetSerial("lastobject"));
UO.Print("IsContainer: " + Convert.ToString(result));

1. Verifique el último elemento usado: secuencia de comandos directa

Parámetros y flujo de ejecución:

  • El elemento es el serial del objeto lastobject, no su type.
  • El comando solo lee el atributo del contenedor y no lo abre.
var item = UO.GetSerial("lastobject");
if (Truth(UO.IsContainer(item)))
{
    UO.Print("Known container: " + item);
}
else
{
    UO.Print("Not a known container");
}

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

2. Seleccionar contenedor antes de buscar - función de script

Parámetros y flujo de ejecución:

  • La bolsa debe ser seleccionada con antelación y el cliente debe conocer su contenido.
  • FindType recibe oro type, cualquier contenedor hue y serial. Un resultado vacío no prueba que el contenedor del servidor esté vacío.
return  RunScenario();
 object? RunScenario()
{
    var bag = UO.GetSerial("lasttarget");
    if (Truth(UO.IsContainer(bag)))
    {
        var found = UO.FindType(0x0EED, -1, bag);
        UO.Print("Known gold item: " + found);
    }

    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. Verifique por separado la presencia y clasificación - clase de escenario

Parámetros y flujo de ejecución:

  • Exists y IsContainer responden preguntas diferentes sobre el mismo serial.
  • Si los TileData no son adecuados o aún no están disponibles, la clasificación puede diferir de lo esperado; no lo utilices como control de los derechos del cofre.
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 bag = UO.GetSerial("backpack");
        var exists = UO.Exists(bag);
        var container = UO.IsContainer(bag);
        UO.Print("Loaded: " + Convert.ToString(exists));
        UO.Print("Container flag: " + Convert.ToString(container));
        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.IsContainer(objID) — UO.IsContainer(Any)

Parámetros: objID (Any)

Resultado: int / Integer.

Durante la llamada:

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

case "iscontainer": return new InjectionValue(bridge.IsContainer(Arg(0)));

UO.LastContainer

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

Firmas de C#

dynamic UO.LastContainer();

Lee el serial del último contenedor.

Parámetros

No hay parámetros.

Valor devuelto

int — guardado serial; 0 significa serial no está instalado. No es bool ni graphic/type; Es posible que un ID distinto de cero ya no exista en el mundo.

Comportamiento

  • Fuente del campo: _world.LastContainer. El comando no selecciona, usa ni ataca el objeto.
  • Lee el estado local actual. No hay paquete, objetivo o actualización automática; las lecturas individuales pueden ver diferentes estados.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Lee el serial del último contenedor.
var id = UO.LastContainer();
UO.Print(Hex(id));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

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

Parámetros y flujo de ejecución:

  • Fuente del campo: _world.LastContainer. El comando no selecciona, usa ni ataca el objeto.
return  RunScenario();
 object? RunScenario()
{
    var id = UO.LastContainer();
    if (Truth(id != 0) && Truth(UO.Exists(id)))
    {
        UO.Print(UO.GetName(id));
    }

    return null;
}

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

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Lee el estado local actual. No hay paquete, objetivo o actualización automática; las lecturas individuales pueden ver diferentes estados.
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 before = UO.LastContainer();
        UO.Wait(500);
        var after = UO.LastContainer();
        UO.Print(before = after);
        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.LastContainer() — UO.LastContainer()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "lastcontainer": return new InjectionValue(bridge.GetLastContainer());

UO.OpenContainer

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

Firmas de C#

void UO.OpenContainer(object? id);
void UO.OpenContainer(object? id, object? timeout);

Solicitudes para abrir un contenedor.

Parámetros

  • id — Objeto serial/ID: int, cadena numérica/hexadecimal o alias establecido, por ejemplo "lasttarget". Esto no es graphic/type. Verifique el objeto cargado antes de actuar.
  • timeout — Opcional int, milisegundos; el valor predeterminado es 0. Un valor negativo no añade anticipación.

Valor devuelto

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

Comportamiento

  • Bridge.OpenContainer llama a UseObject(id), luego UO.Wait(timeout) solo si se agota el tiempo de espera>0. La pausa es fija; no se comprueba la presencia/contenido del contenedor.
  • Sin tiempo de espera no hay pausa. El final de la pausa no debe tomarse como evidencia de que el contenido se ha abierto o cargado 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.OpenContainer");
UO.OpenContainer("lasttarget");

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Solicitudes para abrir un contenedor.
UO.OpenContainer("lasttarget");

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

Parámetros y flujo de ejecución:

  • Bridge.OpenContainer llama a UseObject(id), luego UO.Wait(timeout) solo si se agota el tiempo de espera>0. La pausa es fija; no se comprueba la presencia/contenido del contenedor.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        UO.OpenContainer("lasttarget", 1000);
    }

    return null;
}

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

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Sin tiempo de espera no hay pausa. El final de la pausa no debe tomarse como evidencia de que el contenido se ha abierto o cargado por completo.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var id = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.OpenContainer(id, 1000);
            UO.Print(UO.GetName(id));
        }

        return null;
    }

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

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.OpenContainer(id) — UO.OpenContainer(Any)

Parámetros: id (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void OpenContainer(InjectionValue id) => bridge.OpenContainer(GetObject(id), 0);

UO.OpenContainer(id, timeout) — UO.OpenContainer(Any,Any)

Parámetros: id (Any), timeout (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void OpenContainer(InjectionValue id, InjectionValue timeout) => bridge.OpenContainer(GetObject(id), NumberConversions.ToInt(timeout));

UO.SetCatchBag

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

Firmas de C#

void UO.SetCatchBag();
void UO.SetCatchBag(object? container);

Parámetros

  • container — Serie del contenedor, su nombre guardado, "backpack" o "my". 0 desasigna. Sin argumentos, se utiliza lastobject: el último objeto aplicado, no restablecido. Si el nombre no resulta positivo serial, se elimina la asignación. La instalación en sí no verifica la disponibilidad del servidor ni la idoneidad del objeto para la migración.

Valor devuelto

void: Sin valor de retorno. No puede usar var resultado = UO.SetCatchBag(...), si UO.SetCatchBag(...), ni esperar el número 1 como confirmación. El movimiento real se realiza mediante un comando independiente, por ejemplo Grab.

Comportamiento

  • UO.SetCatchBag() y UO.SetReceivingContainer() tienen valores de forma diferentes sin argumentos: el primero toma lastobject, el segundo restablece el contenedor.
  • Restablecimiento explícito: UO.UnsetCatchBag(), UO.UnsetReceivingContainer() o UO.SetCatchBag(0). Después del reinicio, Grab usa su mochila sin una tarea separada.
  • Tener instalado el serial no significa que el servidor permitirá colocar el artículo allí. La distancia, la existencia y la disponibilidad se comprueban durante el propio traslado.
  • 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.SetCatchBag");
UO.SetCatchBag();

1. Asigna explícitamente tu mochila - guión directo

Parámetros y flujo de ejecución:

  • El parámetro de contenedor único recibe la cadena "backpack". El tiempo de ejecución lo permite en serial de tu mochila.
  • La llamada se escribe en una línea separada sin resultado var porque devuelve Unidad. El mensaje Print describe la configuración y no confirma la transferencia del artículo.
var destination = "backpack";
UO.SetCatchBag(destination);
UO.Print("Receiving container: own backpack");

2. Seleccionar el último contenedor usado - función de script

Parámetros y flujo de ejecución:

  • Esta sobrecarga no tiene parámetros: internamente se utiliza el nombre lastobject.
  • Los paréntesis vacíos no significan restablecer. Preseleccione el contenedor apropiado simplemente haciendo doble clic. La disponibilidad de bolsas para su transporte real depende del estado actual del juego.
return  RunScenario();
 object? RunScenario()
{
    UO.SetCatchBag();
    UO.Print("Destination taken from lastobject");
    return null;
}

3. Establezca un serial específico y luego devuelva el destino predeterminado: clase de script

Parámetros y flujo de ejecución:

  • En la primera llamada, contenedor=bolsa contiene la cadena hexadecimal serial. 0x40001234 es un ejemplo, debes reemplazarlo con tu propio valor.
  • En la segunda llamada, contenedor=0 lo desasigna. Los siguientes Grab sin un contenedor explícito usan una mochila.
  • El reinicio se encuentra después del bloque de acarreo previsto. Configurar y restablecer no devuelven ningún resultado y no mueven elementos por sí solos.
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 bag = "0x40001234";
        UO.SetCatchBag(bag);
        UO.Print("Configured destination: " + bag);
        UO.SetCatchBag(0);
        UO.Print("Destination reset to the normal backpack fallback");
        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.SetCatchBag() — UO.SetCatchBag()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "setcatchbag":

                    SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");

                    break;

UO.SetCatchBag(container) — UO.SetCatchBag(Any)

Parámetros: container (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "setcatchbag":

                    SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");

                    break;

UO.SetReceivingContainer

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

Firmas de C#

void UO.SetReceivingContainer();
void UO.SetReceivingContainer(object? id);

Establece el contenedor receptor para el futuro Grab.

Parámetros

  • id - Opcional serial/alias. "my"/"backpack" - mochila actual. El positivo ID se conserva sin verificación de existencia; 0/negativo/sin argumento borra la configuración.

Valor devuelto

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

Comportamiento

  • La cadena se resuelve GetObject, excepto el especial my/backpack. Puente.SetReceivingContainer asigna Estado.ReceivingContainer. El artículo no es transferido por esta llamada.
  • Después de limpiar, Grab usa la mochila sin un propósito explícito. Un ID positivo por sí solo no confirma que el contenedor esté cargado o sea accesible para el servidor.
  • 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.SetReceivingContainer");
UO.SetReceivingContainer();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Establece el contenedor receptor para el futuro Grab.
UO.SetReceivingContainer("backpack");

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

Parámetros y flujo de ejecución:

  • La cadena se resuelve GetObject, excepto el especial my/backpack. Puente.SetReceivingContainer asigna Estado.ReceivingContainer. El artículo no es transferido por esta llamada.
return  RunScenario();
 object? RunScenario()
{
    UO.SetReceivingContainer();
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Después de limpiar, Grab usa la mochila sin un propósito explícito. Un ID positivo por sí solo no confirma que el contenedor esté cargado o sea accesible para el 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()
    {
        var bag = UO.GetSerial("lastcontainer");
        if (Truth(UO.IsContainer(bag)))
        {
            UO.SetReceivingContainer(bag);
        }

        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.SetReceivingContainer() — UO.SetReceivingContainer()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void SetReceivingContainer() => UnsetReceivingContainer();

UO.SetReceivingContainer(id) — UO.SetReceivingContainer(Integer)

Parámetros: id (Integer/String)

Resultado: void / Unit.

Durante la llamada:

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

public void SetReceivingContainer(int id)

        {

            if (id <= 0)

                bridge.UnsetReceivingContainer();

            else

                bridge.SetReceivingContainer(id);

        }

UO.SetReceivingContainer(id) — UO.SetReceivingContainer(String)

Parámetros: id (Integer/String)

Resultado: void / Unit.

Durante la llamada:

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

public void SetReceivingContainer(string id)

        {

            string name = (id ?? string.Empty).Trim();

            if (name.Equals("my", StringComparison.OrdinalIgnoreCase)

                || name.Equals("backpack", StringComparison.OrdinalIgnoreCase))

            {

                SetReceivingContainer(bridge.Backpack);

                return;

            }

            SetReceivingContainer(GetObject(id));

        }

UO.UnsetCatchBag

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

Firmas de C#

void UO.UnsetCatchBag();

Limpia el contenedor receptor para Grab.

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 llama a UnsetReceivingContainer; el puente asigna ReceivingContainer=0. El Grab posterior usa una mochila. Esto no es quitar la bolsa.
  • Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
  • 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.UnsetCatchBag");
UO.UnsetCatchBag();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Limpia el contenedor receptor para Grab.
UO.UnsetCatchBag();

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

Parámetros y flujo de ejecución:

  • ExecuteLegacyManualAlias llama a UnsetReceivingContainer; el puente asigna ReceivingContainer=0. El Grab posterior usa una mochila. Esto no es quitar la bolsa.
return  RunScenario();
 object? RunScenario()
{
    UO.SetCatchBag("backpack");
    UO.UnsetCatchBag();
    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.UnsetCatchBag();
        UO.Print(UO.Backpack());
        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.UnsetCatchBag() — UO.UnsetCatchBag()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "unsetcatchbag": UnsetReceivingContainer(); break;

UO.UnsetReceivingContainer

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

Firmas de C#

void UO.UnsetReceivingContainer();

Borra el contenedor de recepción guardado.

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

  • UnsetReceivingContainer asigna ReceivingContainer=0. Posteriormente Grab usa una mochila sin un propósito explícito. Los artículos no se transfieren.
  • Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
  • 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.UnsetReceivingContainer");
UO.UnsetReceivingContainer();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Borra el contenedor de recepción guardado.
UO.UnsetReceivingContainer();

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

Parámetros y flujo de ejecución:

  • UnsetReceivingContainer asigna ReceivingContainer=0. Posteriormente Grab usa una mochila sin un propósito explícito. Los artículos no se transfieren.
return  RunScenario();
 object? RunScenario()
{
    UO.SetReceivingContainer("backpack");
    UO.UnsetReceivingContainer();
    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.UnsetReceivingContainer();
        UO.Print(UO.Backpack());
        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.UnsetReceivingContainer() — UO.UnsetReceivingContainer()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();

Clone this wiki locally