Skip to content

ES UO Topic search

Codex edited this page Oct 17, 2026 · 5 revisions

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

Buscar

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

Seleccionar un área de búsqueda y filtros, procesar el resultado, lista de elementos encontrados y excepciones. Verifique el valor "no encontrado" en la tarjeta de comando: serial, cantidad y lista: resultados diferentes.

Secciones

Tema Comandos y explicaciones
Buscar artículos UO.FindType · UO.FindTypeEx · UO.FindTypesArrayEx · UO.FindAnyType
Buscar Móviles UO.FindMobile · UO.FindType
Buscar jugadores UO.FindMobile · UO.FindType
Buscar NPC UO.FindMobile · UO.FindType
Buscar monstruos UO.FindMobile · UO.FindType
Buscar por Serie UO.Exists · UO.GetSerial
Buscar por tipo UO.FindType · UO.FindTypeEx · UO.FindTypesArrayEx
Buscar por Notoriety UO.FindByNotoriety · UO.FindNotoriety
Buscar por Distancia UO.FindDistance · UO.FindType
Búsqueda por Coordenadas UO.FindAtCoord
Buscar por Z UO.FindVertical · UO.FindType
Buscar Ground UO.FindType · UO.CountGround
Buscar contenedores UO.FindTypeEx · UO.OpenContainer
FindList UO.AddFindList · UO.FindList · UO.GetFindedList · UO.GetFoundItems · UO.FindItem · UO.FindCount · UO.FindQuantity · UO.FindFullQuantity
Ignore Lists UO.Ignore · UO.IgnoreOff · UO.IgnoreReset · UO.AddIgnoreList · UO.SelectIgnoreList
Bad Objects UO.SetBadObject · UO.ClearBadObjectList
Bad Locations UO.SetBadLocation · UO.ClearBadLocationList

Todos los comandos del tema

Buscar elementos

UO.FindType · UO.FindTypeEx · UO.FindTypesArrayEx · UO.FindAnyType · UO.FindAtCoord · UO.FindItem · UO.FindCount · UO.FindQuantity · UO.FindFullQuantity · UO.Count · UO.CountEx · UO.CountGround · UO.GetWorldItems · UO.GetFoundItems · UO.GetFindedList

Buscar Móviles

UO.FindMobile · UO.FindMan · UO.FindByNotoriety · UO.FindNotoriety

Buscar por Distancia / Z

UO.FindDistance · UO.FindVertical

FindList

UO.AddFindList · UO.ClearFindList · UO.DeleteFindList · UO.FindList · UO.InfoFindList · UO.MFGI

Ignore Listas

UO.Ignore · UO.IgnoreOff · UO.IgnoreReset · UO.AddIgnoreList · UO.ClearIgnoreList · UO.DeleteIgnoreList · UO.SelectIgnoreList · UO.GetIgnoreList

Objetos malos

UO.SetBadObject · UO.ClearBadObjectList

Malas ubicaciones

UO.SetBadLocation · UO.ClearBadLocationList

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

Parámetros, resultado y todos los escenarios

var gold = UO.FindType(0x0EED, -1, "backpack");
if (Truth(gold == ""))
{
    UO.Print("Gold was not found in the loaded backpack");
}
else
{
    UO.Print("Gold serial: " + gold);
    UO.Info(gold);
}

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

UO.FindFullQuantity

Parámetros, resultado y todos los escenarios

var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindFullQuantity();
UO.Print(Convert.ToString(value));

Partes de la referencia

1 · 2

Referencia completa de comandos


UO.AddFindList

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

Firmas de C#

void UO.AddFindList(object? list, object? @type);
void UO.AddFindList(object? list, object? @type, object? color);

Agrega la regla type/hue al conjunto nombrado para UO.FindList. El conjunto le permite buscar repetidamente varios tipos de objetos o móviles y establecer la prioridad de los tipos según el orden de adición.

Parámetros

  • list: el nombre del conjunto de reglas, por ejemplo, "botín". Pase la cadena sin |: este carácter se utiliza como separador dentro del registro. El nombre no distingue entre mayúsculas y minúsculas. Este no es un contenedor serial ni una serie de elementos encontrados.
  • type - Gráfico/type de un elemento o body mobile, no su serial. Normalmente int 0...65535, incluido 0x0EED; -1 o 0xFFFF significa cualquier type al buscar. Proporcione un valor por entrada. Se agregan varios tipos mediante llamadas separadas.
  • color — Tono de un objeto/cuerpo, no RGB. int 0..65535; 0 - regular hue 0, -1 o 0xFFFF - cualquiera. En AddFindList, omitir color significa cualquier hue al realizar la búsqueda.

Valor devuelto

void: Sin valor de retorno. No asigne la llamada a una variable y no la pruebe en true/1. Se puede inferir el estado de las definiciones UO.InfoFindList(); la búsqueda en sí se inicia por separado a través de UO.FindList().

Comportamiento

  • Las definiciones están en el estado del tiempo de ejecución del script dado. Un otro tiempo de ejecución independiente tiene su propio conjunto; cerrar la ventana IDE no borra estas reglas. Este no es un archivo de configuración ni una lista de objetos globales del juego.
  • AddFindList agrega la entrada al final; las repeticiones no se eliminan. Para reaprovisionar su kit, primero llame a ClearFindList("nombre"). Cambiar las definiciones no borra FindItem/FindCount/GetFoundItems que ya se han recibido.
  • El registro almacena campos de texto. El literal numérico 0x0EED se almacena como "3821", la cadena "0x0EED" se almacena como "0x0EED". La búsqueda convierte ambas opciones en un número y DeleteFindList compara el texto almacenado. Utilice el mismo formulario al agregar y eliminar.
  • El nombre desconocido en FindList no es un conjunto registrado vacío: el motor intenta analizarlo como una lista de tipos numéricos. Un nombre no numérico provoca un error de conversión. Después de eliminar la última entrada, cree un nuevo conjunto antes de buscar ese nombre.
  • Los argumentos se almacenan inmediatamente; la verificación numérica type/hue se realiza en FindList. AddFindList no busca, transporta artículos ni agrega serial a Ignore.

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.AddFindList");
UO.AddFindList("simple_loot", 0x0EED);

1. Prepare su propio conjunto de botín y obtenga resultados: guión directo

Parámetros y flujo de ejecución:

  • 0x0EED es oro, 0x0F7A es el segundo graphic del conjunto. Para otros datos del servidor, reemplace los gráficos. El procedimiento BuildLoot completo se proporciona arriba.
  • FindCount(elemento) lee el número de unidades de una pila en particular; GetFoundItems contiene serial distinto. Este ejemplo no realiza ninguna transferencia.
BuildLoot();
var first = UO.FindList("loot", "ground", 2, -1, false, 5, false);
if (Truth(first == ""))
{
    UO.Print("No matching loot nearby");
    return null;
}
var items = UO.GetFoundItems();
foreach (var item in items)
{
    UO.Print(UO.GetName(item) + " | stack: " + Convert.ToString(UO.FindCount(item)));
}

void BuildLoot()
{
    UO.ClearFindList("loot");
    UO.AddFindList("loot", 0x0EED, -1);
    UO.AddFindList("loot", 0x0F7A, -1);
}

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

2. Busque solo un artículo del color deseado en la mochila - función de script

Parámetros y flujo de ejecución:

  • 0x0044 filtra hue; esto no es serial. backpack busca el contenido directo de la mochila. AddObject guarda el objeto seleccionado con un nombre en este tiempo de ejecución.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearFindList("colored");
    UO.AddFindList("colored", 0x0EED, 0x0044);
    var first = UO.FindList("colored", "backpack");
    if (Truth(first != ""))
    {
        UO.AddObject("colored_item", first);
    }

    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. Tipos de cuerpo y múltiples valores de notoriedad: clase de script

Parámetros y flujo de ejecución:

  • En cada entrada, el color que falta significa cualquier hue. La línea "5|6" permite dos códigos de notoriedad; este filtro excluye artículos regulares. La búsqueda no ataca ni inicia Follow.
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.ClearFindList("watch");
        UO.AddFindList("watch", 0x0190);
        UO.AddFindList("watch", 0x0191);
        var nearby = UO.FindList("watch", "ground", 12, "5|6", true, 10);
        if (Truth(nearby != ""))
        {
            UO.AddObject("watched_mobile", nearby);
        }

        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.AddFindList(list, type) — UO.AddFindList(Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "adddir":

                case "addfindlist":

                case "addgate":

                case "addrecall":

                case "addstep":

                    LegacyList(name).Add(string.Join("|", arguments.Select(value => value.ToString())));

                    break;

UO.AddFindList(list, type, color) — UO.AddFindList(Any,Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "adddir":

                case "addfindlist":

                case "addgate":

                case "addrecall":

                case "addstep":

                    LegacyList(name).Add(string.Join("|", arguments.Select(value => value.ToString())));

                    break;

UO.AddIgnoreList

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

Firmas de C#

void UO.AddIgnoreList(object? list, object? @type);
void UO.AddIgnoreList(object? list, object? @type, object? color);

Prepara un conjunto con nombre de cosas que deben omitirse al buscar: por ejemplo, no seleccione oro o no seleccione cosas de un determinado color. La regla está especificada por type y hue, por lo tanto se aplica a todos los objetos adecuados, incluidos los que aparecieron después. Después de la configuración, habilite la marcación mediante SelectIgnoreList.

Parámetros

  • list — Nombre arbitrario no vacío, por ejemplo "loot_skip". El nombre no distingue entre mayúsculas y minúsculas. Este no es el nombre del artículo, ni el contenedor serial, ni el nombre de FindList.
  • type - Gráfico/type de un artículo o body mobile. Por ejemplo, 0x0EED es oro, 0x0191 es un cuerpo humano femenino. Número o cadena numérica ("0x0EED", "3821"); -1/otro negativo/0xFFFF - cualquier type. No se permiten valores mayores a 65535. Para múltiples type agregue múltiples reglas.
  • color - Tono: 0 - solo sin color, 0x0044 - ejemplo de color exacto; negativo o 0xFFFF - cualquiera. No se permiten valores mayores a 65535. En Agregar, el valor predeterminado es 1. El tipo y hue dentro de una regla están conectados por una condición Y; reglas diferentes - O.

Valor devuelto

void - sin valor. Úselo en una línea separada sin var resultado = y sin marcar =true. El comando cambia el filtro local; no devuelve el número de elementos y no envía nada al servidor.

Comportamiento

  • Se agrega a la lista especificada por el PRIMER argumento, independientemente de la lista seleccionada actualmente. Los pares numéricamente idénticos repetidos no se duplican.
  • La lista nombrada contiene las reglas graphic/type + hue, y la Ignore normal contiene la serial específica. Son filtros diferentes: se combinan cuando la búsqueda los admite. Los objetos permanecen visibles y accesibles para dirigir UseObject/MoveItem; esto no es Hide ni prohibición de acciones.
  • El nombre de la lista no distingue entre mayúsculas y minúsculas; Se eliminan los espacios de los bordes. Una lista con nombre está activa, inicialmente predeterminada. AddIgnoreList no lo selecciona automáticamente. SelectIgnoreList("") deshabilita solo el filtro con nombre.
  • Las reglas se aplican a nuevas búsquedas, incluidos los elementos cargados DESPUÉS de haber sido agregados. La matriz ya recibida y el resultado anterior FindCount no se recalculan hasta una nueva búsqueda. No seleccione una lista con la regla -1,-1 a menos que desee excluir todo.
  • El filtro tiene en cuenta FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx y selecciones extendidas GetMobiles, GetWorldItems, UseType, WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true, cuando esté incluido, omite tanto serial como type/hue. La enumeración completa GetContent/GetEquipment, GetWorldItems() sin argumentos, y la verbal FindMobile(humano,cerca,...) no utilizan estas reglas.
  • GetIgnoreList devuelve solo serial agregado explícitamente; las filas de la lista nombrada no están incluidas en esta matriz. IgnoreReset borra todo el filtro serial, IgnoreOff(serial) elimina una excepción serial; las reglas nombradas se conservan. ClearIgnoreList() sin argumentos borra ambas vistas.
  • El estado pertenece al estado general de los scripts del perfil del cliente; el cambio afecta a otros scripts con este estado. La configuración se incluye en la instantánea guardada. Después de cambiar las reglas, otro script ya puede realizar una búsqueda con la instantánea tomada anteriormente; la próxima búsqueda verá la actualización.

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.AddIgnoreList");
UO.AddIgnoreList("simple_skip", 0x0EED);

1. Omita todas las pilas de oro cuando busque en el suelo: guión directo

Parámetros y flujo de ejecución:

  • loot_skip: establece el nombre. El color que falta significa cualquier hue. FindType devuelve la cadena hexadecimal ID o la cadena vacía; aquí el resultado se almacena en next_loot y el elemento no se mueve. Buscando terreno también puede encontrar mobile.
UO.AddIgnoreList("loot_skip", 0x0EED);
UO.SelectIgnoreList("loot_skip");
var item = UO.FindType(-1, -1, "ground");
if (Truth(item == ""))
{
    UO.Print("No unignored ground object found");
    return null;
}
UO.AddObject("next_loot", item);

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

2. Excluir solo un color de la bata - función de script

Parámetros y flujo de ejecución:

  • 0x1F03 - graphic túnicas; 0x0044 es un ejemplo de color protegido. Robu de otra búsqueda hue permite. Esta es una protección contra la selección mediante búsqueda por filtrado, no contra la MoveItem directa por la conocida ID.
return  RunScenario();
 object? RunScenario()
{
    UO.AddIgnoreList("keep_colored", 0x1F03, 0x0044);
    UO.SelectIgnoreList("keep_colored");
    var robe = UO.FindType(0x1F03, -1, "backpack");
    if (Truth(robe != ""))
    {
        UO.AddObject("candidate_robe", robe);
    }

    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. Cree dos conjuntos independientes e incluya uno: la clase de script

Parámetros y flujo de ejecución:

  • Las reglas se almacenan en ambas listas. Para excluir tanto el oro como las túnicas al mismo tiempo, agregue ambos type a la misma lista.
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.AddIgnoreList("skip_gold", 0x0EED);
        UO.AddIgnoreList("skip_robes", 0x1F03);
        UO.SelectIgnoreList("skip_gold");
        UO.SelectIgnoreList("skip_robes");
        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.AddIgnoreList(list, type) — UO.AddIgnoreList(Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "addignorelist":

                    state.IgnoreTypeLists.Add(Text(0), ResolveType(arguments[1]),

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : -1);

                    break;

UO.AddIgnoreList(list, type, color) — UO.AddIgnoreList(Any,Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "addignorelist":

                    state.IgnoreTypeLists.Add(Text(0), ResolveType(arguments[1]),

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : -1);

                    break;

UO.ClearBadLocationList

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

Firmas de C#

void UO.ClearBadLocationList();

Elimina todos los pares guardados por SetBadLocation.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno. Llame en una línea separada; no es true/false ni el número de pasos.

Comportamiento

  • No cambia el mapa, los personajes ni los obstáculos en el servidor. Sólo se borra la lista de tiempo de ejecución de la aplicación.
  • La matriz de ruta ya recibida y la instantánea de las prohibiciones de la ruta en ejecución no se modifican. Para obtener un nuevo resultado, repita la solicitud de trayectoria o inicie el movimiento nuevamente. La lista SetBadObject se borra por separado.

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

1. Lista clara - guión directo

Parámetros y flujo de ejecución:

  • No hay parámetros.
  • No hay valor de retorno.
UO.ClearBadLocationList();

2. Iniciar un nuevo conjunto de prohibiciones: función de script

Parámetros y flujo de ejecución:

  • Primero se eliminan los pares anteriores y luego se agrega uno nuevo.
  • No se trata de un obstáculo físico ni de un cambio en la tarjeta de cliente.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearBadLocationList();
    UO.SetBadLocation(1445, 1690);
    return null;
}

3. Repetir el cálculo después de la limpieza - clase de escenario

Parámetros y flujo de ejecución:

  • El objetivo está cuatro celdas al este, Optimizado=true, Precisión=0.
  • Una matriz vacía después de la limpieza puede deberse a una obstrucción común o a un límite de búsqueda.
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.ClearBadLocationList();
        var path = UO.GetPathArray(UO.GetX() + 4, UO.GetY(), true, 0);
        if (Truth(ArrayLength(path) == 0))
        {
            UO.Print("No complete path under current constraints");
        }

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

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearbadlocationlist": state.BadLocations.Clear(); return InjectionValue.Unit;

UO.ClearBadObjectList

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

Firmas de C#

void UO.ClearBadObjectList();

Elimina todas las reglas type/hue/radius agregadas por SetBadObject en el tiempo de ejecución actual.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno. Llame en una línea separada; no es true/false ni el número de pasos.

Comportamiento

  • No hay parámetros. Llamar nuevamente cuando la lista está vacía es seguro.
  • No limpia SetBadLocation ni elimina obstrucciones naturales. Una nueva solicitud de movimiento o ruta utiliza la lista borrada; la ruta iniciada anteriormente guarda su propia instantánea.

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

1. Restablecer reglas de elementos: secuencia de comandos directa

Parámetros y flujo de ejecución:

  • No hay argumentos; la llamada se graba en una línea separada.
  • No hay ningún resultado true/false y no hay ningún número de reglas eliminadas.
UO.ClearBadObjectList();

2. Reemplazar conjunto de reglas: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Después de borrar, solo se agrega type=0x398C de cualquier color.
  • Radio=2 excluye un cuadrado 5×5 alrededor de elementos adecuados en la siguiente ruta.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearBadObjectList();
    UO.SetBadObject(0x398C, -1, 2);
    return null;
}

3. Volver a calcular la ruta después del restablecimiento completo de las prohibiciones de la aplicación: clase de script

Parámetros y flujo de ejecución:

  • Las dos listas son independientes: ambos comandos se llaman para restablecer ambos.
  • Los tres cuadrados al este son un ejemplo de objetivo. Se conservan la transitabilidad, la altitud y el límite de búsqueda del mapa; una matriz vacía sigue siendo un resultado válido.
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.ClearBadObjectList();
        UO.ClearBadLocationList();
        var path = UO.GetPathArray(UO.GetX() + 3, UO.GetY(), true, 0);
        UO.Print(Convert.ToString(ArrayLength(path)));
        return null;
    }

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

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearbadobjectlist": state.BadObjects.Clear(); return InjectionValue.Unit;

UO.ClearFindList

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

Firmas de C#

void UO.ClearFindList();
void UO.ClearFindList(object? list);

Elimina las definiciones de un conjunto de búsqueda con nombre o de todos los conjuntos AddFindList del tiempo de ejecución actual. Se utiliza antes de reconfigurar los filtros para evitar que se acumulen reglas.

Parámetros

  • list: el nombre del conjunto de reglas, por ejemplo, "botín". Pase la cadena sin |: este carácter se utiliza como separador dentro del registro. El nombre no distingue entre mayúsculas y minúsculas. Este no es un contenedor serial ni una serie de elementos encontrados. Si falta el argumento, se eliminan TODAS las definiciones de AddFindList en este tiempo de ejecución.

Valor devuelto

void: Sin valor de retorno. No asigne la llamada a una variable y no la pruebe en true/1. Se puede inferir el estado de las definiciones UO.InfoFindList(); la búsqueda en sí se inicia por separado a través de UO.FindList().

Comportamiento

  • Las definiciones están en el estado del tiempo de ejecución del script dado. Un otro tiempo de ejecución independiente tiene su propio conjunto; cerrar la ventana IDE no borra estas reglas. Este no es un archivo de configuración ni una lista de objetos globales del juego.
  • AddFindList agrega la entrada al final; las repeticiones no se eliminan. Para reaprovisionar su kit, primero llame a ClearFindList("nombre"). Cambiar las definiciones no borra FindItem/FindCount/GetFoundItems que ya se han recibido.
  • El registro almacena campos de texto. El literal numérico 0x0EED se almacena como "3821", la cadena "0x0EED" se almacena como "0x0EED". La búsqueda convierte ambas opciones en un número y DeleteFindList compara el texto almacenado. Utilice el mismo formulario al agregar y eliminar.
  • El nombre desconocido en FindList no es un conjunto registrado vacío: el motor intenta analizarlo como una lista de tipos numéricos. Un nombre no numérico provoca un error de conversión. Después de eliminar la última entrada, cree un nuevo conjunto antes de buscar ese nombre.
  • Un nombre inexistente es seguro: no se elimina nada. El comando no elimina elementos del juego, no borra Ignore ni cancela el movimiento.

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

1. Reconfigurar un conjunto - script directo

Parámetros y flujo de ejecución:

  • Dentro de BuildLoot solo se elimina el botín. Se conservan otros conjuntos con nombre de esta escritura.
BuildLoot();
BuildLoot();
UO.InfoFindList();

void BuildLoot()
{
    UO.ClearFindList("loot");
    UO.AddFindList("loot", 0x0EED, -1);
    UO.AddFindList("loot", 0x0F7A, -1);
}

2. Reemplace el conjunto estacional, conserve repuesto: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • El registro SEASON no es importante. restos de reserva; En temporada ahora solo hay el nuevo type/hue. Después de la limpieza, primero se agrega el registro y luego se permite la búsqueda por nombre.
return  RunScenario();
 object? RunScenario()
{
    UO.AddFindList("reserve", 0x0EED);
    UO.AddFindList("season", 0x0F7A);
    UO.ClearFindList("SEASON");
    UO.AddFindList("season", 0x0EED, 0x0044);
    UO.InfoFindList();
    return null;
}

3. Restablecimiento completo antes del nuevo modo de script: clase de script

Parámetros y flujo de ejecución:

  • ClearFindList() afecta todas las definiciones del tiempo de ejecución actual, por lo que un formulario con nombre propio suele ser mejor para un procedimiento de biblioteca.
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.AddFindList("old_loot", 0x0EED);
        UO.AddFindList("old_watch", 0x0190);
        UO.AddFindList("old_watch", 0x0191);
        UO.ClearFindList();
        UO.AddFindList("current", 0x0F7A, -1);
        var found = UO.FindList("current", "backpack");
        if (Truth(found != ""))
        {
            UO.AddObject("current_supply", 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;
}

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

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearfindlist":

                    if (arguments.Length == 0) LegacyList("AddFindList").Clear();

                    else LegacyList("AddFindList").RemoveAll(value => value.Split('|')[0]

                        .Equals(Text(0), StringComparison.OrdinalIgnoreCase));

                    break;

UO.ClearFindList(list) — UO.ClearFindList(Any)

Parámetros: list (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "clearfindlist":

                    if (arguments.Length == 0) LegacyList("AddFindList").Clear();

                    else LegacyList("AddFindList").RemoveAll(value => value.Split('|')[0]

                        .Equals(Text(0), StringComparison.OrdinalIgnoreCase));

                    break;

UO.ClearIgnoreList

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

Firmas de C#

void UO.ClearIgnoreList();
void UO.ClearIgnoreList(object? list);

Restablece las excepciones de búsqueda. Con un nombre, solo un conjunto type/hue. Sin argumentos: todos los conjuntos con nombre y todos los serial agregados hasta Ignore. Es útil empezar una nueva clasificación con reglas claras.

Parámetros

  • list — Nombre arbitrario no vacío, por ejemplo "loot_skip". El nombre no distingue entre mayúsculas y minúsculas. Este no es el nombre del artículo, ni el contenedor serial, ni el nombre de FindList. Opcional. Su ausencia supone un reseteo general, no sólo de la lista de activos.

Valor devuelto

void - sin valor. Úselo en una línea separada sin var resultado = y sin marcar =true. El comando cambia el filtro local; no devuelve el número de elementos y no envía nada al servidor.

Comportamiento

  • ClearIgnoreList("nombre") es equivalente en resultado a DeleteIgnoreList("nombre"). Aquí no se permite una cadena vacía; para deshabilitar sin eliminar use SelectIgnoreList("").
  • La lista nombrada contiene las reglas graphic/type + hue, y la Ignore normal contiene la serial específica. Son filtros diferentes: se combinan cuando la búsqueda los admite. Los objetos permanecen visibles y accesibles para dirigir UseObject/MoveItem; esto no es Hide ni prohibición de acciones.
  • El nombre de la lista no distingue entre mayúsculas y minúsculas; Se eliminan los espacios de los bordes. Una lista con nombre está activa, inicialmente predeterminada. AddIgnoreList no lo selecciona automáticamente. SelectIgnoreList("") deshabilita solo el filtro con nombre.
  • Las reglas se aplican a nuevas búsquedas, incluidos los elementos cargados DESPUÉS de haber sido agregados. La matriz ya recibida y el resultado anterior FindCount no se recalculan hasta una nueva búsqueda. No seleccione una lista con la regla -1,-1 a menos que desee excluir todo.
  • El filtro tiene en cuenta FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx y selecciones extendidas GetMobiles, GetWorldItems, UseType, WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true, cuando esté incluido, omite tanto serial como type/hue. La enumeración completa GetContent/GetEquipment, GetWorldItems() sin argumentos, y la verbal FindMobile(humano,cerca,...) no utilizan estas reglas.
  • GetIgnoreList devuelve solo serial agregado explícitamente; las filas de la lista nombrada no están incluidas en esta matriz. IgnoreReset borra todo el filtro serial, IgnoreOff(serial) elimina una excepción serial; las reglas nombradas se conservan. ClearIgnoreList() sin argumentos borra ambas vistas.
  • El estado pertenece al estado general de los scripts del perfil del cliente; el cambio afecta a otros scripts con este estado. La configuración se incluye en la instantánea guardada. Después de cambiar las reglas, otro script ya puede realizar una búsqueda con la instantánea tomada anteriormente; la próxima búsqueda verá la actualización.

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

1. Borrar conjunto temporal y conservar el resto: guión directo

Parámetros y flujo de ejecución:

  • Eliminado temporalmente, la conservación continúa excluyendo las batas. La lista normal serial no se borra.
UO.AddIgnoreList("temporary", 0x0EED);
UO.AddIgnoreList("keep", 0x1F03);
UO.ClearIgnoreList("temporary");
UO.SelectIgnoreList("keep");

2. Iniciar búsqueda sin excepciones previas - función script

Parámetros y flujo de ejecución:

  • Sin argumentos, se lanzan ambos tipos de excepciones. Las variables/matrices antiguas no se borran. El nuevo FindType regenera el resultado.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearIgnoreList();
    var item = UO.FindType(0x0EED, -1, "ground");
    if (Truth(item != ""))
    {
        UO.AddObject("fresh_gold", item);
    }

    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. Reemplazar el contenido del conjunto: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Se eliminaron las antiguas reglas de clasificación antes de agregar otras nuevas: todo dorado y solo el color 0x0044 en la túnica. Entre comandos separados, otro script puede ver un estado intermedio.
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.ClearIgnoreList("sorting");
        UO.AddIgnoreList("sorting", 0x0EED);
        UO.AddIgnoreList("sorting", 0x1F03, 0x0044);
        UO.SelectIgnoreList("sorting");
        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.ClearIgnoreList() — UO.ClearIgnoreList()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearignorelist":

                    if (arguments.Length == 0)

                    {

                        IgnoreReset();

                        state.IgnoreTypeLists.Clear();

                    }

                    else

                        state.IgnoreTypeLists.Remove(Text(0));

                    break;

UO.ClearIgnoreList(list) — UO.ClearIgnoreList(Any)

Parámetros: list (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "clearignorelist":

                    if (arguments.Length == 0)

                    {

                        IgnoreReset();

                        state.IgnoreTypeLists.Clear();

                    }

                    else

                        state.IgnoreTypeLists.Remove(Text(0));

                    break;

UO.Count

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

Firmas de C#

int UO.Count(object? @type);
int UO.Count(object? @type, object? color);
int UO.Count(object? @type, object? color, object? container);

Realiza una búsqueda y resume las unidades de los elementos encontrados.

Parámetros

  • type: Gráfico/type de un elemento (por ejemplo, 0x0EED), no serial. -1 o 0xFFFF - cualquier type.
  • color — Tono del artículo; -1 o 0xFFFF - cualquier color. En Count(type) y CountGround(type), el valor predeterminado es 1.
  • container - En Count(type,color,contenedor): my o numérico -1 - todos los elementos cuyo propietario raíz es self (incluidos equipos y bolsas anidadas); backpack/serial — el contenido del contenedor especificado es recursivo; UO.Ground(), explícito 0/"0", ground o 1 - elementos y móviles en tierra. En CountEx los numéricos -1 y 0xFFFFFFFF también significan terreno, pero el serial concreto solo significa contenido directo. CountEx toma backpack y nombra AddObject; El nombre desconocido provoca un error en el script. Verifique el serial resultante antes de llamar: un nulo explícito selecciona el terreno en lugar del contenedor que falta.

Valor devuelto

int — suma máxima(1, Cantidad) de elementos encontrados; Cada móvil agrega 1. 0 no hay coincidencias. Este es el número de unidades, no el número de pilas. FindItem, FindCount, FindFullQuantity y GetFoundItems se actualizan al mismo tiempo.

Comportamiento

  • Count, con uno o dos argumentos, busca artículos propiedad de self, incluidos equipos y bolsas anidadas. CountGround siempre busca terrenos, incluidos los móviles coincidentes, pero excluyendo a self.
  • Count(type,color,serial) omite las bolsas anidadas, CountEx(type,color,serial) - solo contenido directo. Las restricciones FindDistance/FindVertical se aplican a la tierra; Ignore se aplica a los objetos encontrados.
  • El resultado depende del contenido de los contenedores ya recibidos. No hay apertura automática ni solicitud del servidor para el inventario 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 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.Count(0x0EED, -1, "backpack");
UO.Print("Count: " + Convert.ToString(result));

1. Calcular unidades de oro - guión directo

Parámetros y flujo de ejecución:

  • type=0x0EED, color=-1. Área - mochila; considere la diferencia de recursividad Count/CountEx.
  • Un pie de 1000 dos unidades = 1000, no 1.
var units = UO.Count(0x0EED, -1, "backpack");
UO.Print("Units: " + Convert.ToString(units));

2. Mostrar unidades y número de objetos por separado: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • FindCount se lee inmediatamente después de Count, antes de otra búsqueda.
  • Dos pilas de 50 producen 2 artículos y 100 unidades.
return  RunScenario();
 object? RunScenario()
{
    var units = UO.Count(0x0EED, -1, "backpack");
    var items = UO.FindCount();
    UO.Print(Convert.ToString(items) + " items, " + Convert.ToString(units) + " units");
    return null;
}

3. Continuar sólo si hay suficiente cantidad - clase de escenario

Parámetros y flujo de ejecución:

  • 100 es el umbral de unidades en este ejemplo.
  • Esta es una verificación instantánea, no una reserva de artículos. Las cantidades pueden cambiar entre revisión y transferencia.
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 units = UO.Count(0x0EED, -1, "backpack");
        if (Truth(units >= 100))
        {
            UO.Print("Enough units known to the client");
        }
        else
        {
            UO.Print("Not enough known units");
        }

        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.Count(type) — UO.Count(Any)

Parámetros: type (Any)

Resultado: int / Integer.

Durante la llamada:

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

public int Count(InjectionValue type) 

            => Count(ResolveType(type), -1, -1);

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

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

Resultado: int / Integer.

Durante la llamada:

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

public int Count(InjectionValue type, InjectionValue color) 

            => Count(ResolveType(type), NumberConversions.ToInt(color), 0);

UO.Count(type, color, container) — UO.Count(Any,Any,Any)

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

Resultado: int / Integer.

Durante la llamada:

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

public int Count(InjectionValue type, InjectionValue color, InjectionValue container)

            => Count(ResolveType(type), NumberConversions.ToInt(color), ConvertContainer(container));

UO.CountEx

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

UO.CountEx

int UO.CountEx(object? objType, object? color, object? container);

Cuenta las unidades directamente en el contenedor, sin recorrer bolsas anidadas. En el suelo también cuenta los personajes/NPC coincidentes, una unidad cada uno. FindDistance, FindVertical e Ignore siguen activos. No modifica FindItem, FindCount, FindFullQuantity ni GetFoundItems.

objType es el gráfico/type, no el número de serie; color es el tono. -1 o 0xFFFF acepta cualquier tipo/tono. container es el ID del contenedor: UO.Backpack() para la mochila, UO.Ground() para el suelo. Devuelve int: suma de max(1, Amount), 0 sin coincidencias. Solo cuenta contenidos ya recibidos; no abre bolsas automáticamente.

Ejemplos

int goldUnits = UO.CountEx(0x0EED, -1, UO.Backpack());
UO.Print(goldUnits.ToString());
UO.FindTypeEx(0x0EED, -1, UO.Backpack(), false);
int previousFoundItem = UO.FindItem();
int bandages = UO.CountEx(0x0E21, -1, UO.Backpack());
bool searchPreserved = UO.FindItem() == previousFoundItem;
UO.Print($"{bandages}; {searchPreserved}");
int units = CountBackpackUnits(0x0EED);
UO.Print(units.ToString());

int CountBackpackUnits(int graphic)
{
    return UO.CountEx(graphic, -1, UO.Backpack());
}
var counter = new InventoryCounter(UO);
UO.Print(counter.CountGold().ToString());

class InventoryCounter(ClassicUO.CSharp.CSharpGameApi api)
{
    public int CountGold() => api.CountEx(0x0EED, -1, api.Backpack());
}

Implementación

ClassicUOInjectionApiBridge.CountDirectItems → MatchesFindIdentity / MatchesFindContainer / MatchesFindMobile.

UO.CountGround

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

Firmas de C#

int UO.CountGround(object? @type);
int UO.CountGround(object? @type, object? color);

Realiza una búsqueda y resume las unidades de los elementos encontrados.

Parámetros

  • type: Gráfico/type de un elemento (por ejemplo, 0x0EED), no serial. -1 o 0xFFFF - cualquier type.
  • color — Tono del artículo; -1 o 0xFFFF - cualquier color. En Count(type) y CountGround(type), el valor predeterminado es 1.

Valor devuelto

int — suma máxima(1, Cantidad) de elementos encontrados; Cada móvil agrega 1. 0 no hay coincidencias. Este es el número de unidades, no el número de pilas. FindItem, FindCount, FindFullQuantity y GetFoundItems se actualizan al mismo tiempo.

Comportamiento

  • Count, con uno o dos argumentos, busca artículos propiedad de self, incluidos equipos y bolsas anidadas. CountGround siempre busca terrenos, incluidos los móviles coincidentes, pero excluyendo a self.
  • Count(type,color,serial) omite las bolsas anidadas, CountEx(type,color,serial) - solo contenido directo. Las restricciones FindDistance/FindVertical se aplican a la tierra; Ignore se aplica a los objetos encontrados.
  • El resultado depende del contenido de los contenedores ya recibidos. No hay apertura automática ni solicitud del servidor para el inventario 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 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.CountGround(0x0EED, -1);
UO.Print("CountGround: " + Convert.ToString(result));

1. Calcular unidades de oro - guión directo

Parámetros y flujo de ejecución:

  • type=0x0EED, color=-1. El área es el terreno al lado del personaje.
  • Un pie de 1000 dos unidades = 1000, no 1.
var units = UO.CountGround(0x0EED, -1);
UO.Print("Units: " + Convert.ToString(units));

2. Mostrar unidades y número de objetos por separado: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • FindCount se lee inmediatamente después de Count, antes de otra búsqueda.
  • Dos pilas de 50 producen 2 artículos y 100 unidades.
return  RunScenario();
 object? RunScenario()
{
    var units = UO.CountGround(0x0EED, -1);
    var items = UO.FindCount();
    UO.Print(Convert.ToString(items) + " items, " + Convert.ToString(units) + " units");
    return null;
}

3. Continuar sólo si hay suficiente cantidad - clase de escenario

Parámetros y flujo de ejecución:

  • 100 es el umbral de unidades en este ejemplo.
  • Esta es una verificación instantánea, no una reserva de artículos. Las cantidades pueden cambiar entre revisión y transferencia.
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 units = UO.CountGround(0x0EED, -1);
        if (Truth(units >= 100))
        {
            UO.Print("Enough units known to the client");
        }
        else
        {
            UO.Print("Not enough known units");
        }

        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.CountGround(type) — UO.CountGround(Any)

Parámetros: type (Any)

Resultado: int / Integer.

Durante la llamada:

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

public int CountGround(InjectionValue type)

            => CountGround(type, new InjectionValue(-1));

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

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

Resultado: int / Integer.

Durante la llamada:

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

public int CountGround(InjectionValue type, InjectionValue color)

            => bridge.Count(ResolveType(type), NumberConversions.ToInt(color), 1);

UO.DeleteFindList

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

Firmas de C#

void UO.DeleteFindList(object? list);
void UO.DeleteFindList(object? list, object? @type);
void UO.DeleteFindList(object? list, object? @type, object? color);

Elimina todas las definiciones que coinciden con la lista especificada, lista/type o lista/type/prefijo de color. Permite eliminar un tipo de elemento o un hue específico, manteniendo el resto de reglas establecidas.

Parámetros

  • list: el nombre del conjunto de reglas, por ejemplo, "botín". Pase la cadena sin |: este carácter se utiliza como separador dentro del registro. El nombre no distingue entre mayúsculas y minúsculas. Este no es un contenedor serial ni una serie de elementos encontrados.
  • type - Gráfico/type de un elemento o body mobile, no su serial. Normalmente int 0...65535, incluido 0x0EED; -1 o 0xFFFF significa cualquier type al buscar. Proporcione un valor por entrada. Se agregan varios tipos mediante llamadas separadas. Para eliminar, se compara el texto del campo; omitir elimina todas las entradas de nombres.
  • color — Tono de un objeto/cuerpo, no RGB. int 0..65535; 0 - regular hue 0, -1 o 0xFFFF - cualquiera. En AddFindList, omitir color significa cualquier hue al realizar la búsqueda. Para eliminar, este es un campo literal, no un comodín: -1 solo elimina entradas con -1 almacenadas explícitamente. Omitir el color elimina todas las entradas de la lista/type independientemente de hue.

Valor devuelto

void: Sin valor de retorno. No asigne la llamada a una variable y no la pruebe en true/1. Se puede inferir el estado de las definiciones UO.InfoFindList(); la búsqueda en sí se inicia por separado a través de UO.FindList().

Comportamiento

  • Las definiciones están en el estado del tiempo de ejecución del script dado. Un otro tiempo de ejecución independiente tiene su propio conjunto; cerrar la ventana IDE no borra estas reglas. Este no es un archivo de configuración ni una lista de objetos globales del juego.
  • AddFindList agrega la entrada al final; las repeticiones no se eliminan. Para reaprovisionar su kit, primero llame a ClearFindList("nombre"). Cambiar las definiciones no borra FindItem/FindCount/GetFoundItems que ya se han recibido.
  • El registro almacena campos de texto. El literal numérico 0x0EED se almacena como "3821", la cadena "0x0EED" se almacena como "0x0EED". La búsqueda convierte ambas opciones en un número y DeleteFindList compara el texto almacenado. Utilice el mismo formulario al agregar y eliminar.
  • El nombre desconocido en FindList no es un conjunto registrado vacío: el motor intenta analizarlo como una lista de tipos numéricos. Un nombre no numérico provoca un error de conversión. Después de eliminar la última entrada, cree un nuevo conjunto antes de buscar ese nombre.
  • DeleteFindList(lista,type,-1) no elimina la entrada de dos parámetros AddFindList(lista,type): no tiene un tercer campo. Todos los duplicados coincidentes se eliminan; una coincidencia inexistente no cambia nada.

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.AddFindList("simple_loot", 0x0EED);
UO.Print("Calling UO.DeleteFindList");
UO.DeleteFindList("simple_loot");

1. Excluir todos los colores del mismo tipo: escritura directa

Parámetros y flujo de ejecución:

  • Dos argumentos eliminan ambas entradas de oro: tanto hue como hue 0x0044.
UO.ClearFindList("loot");
UO.AddFindList("loot", 0x0EED, -1);
UO.AddFindList("loot", 0x0EED, 0x0044);
UO.AddFindList("loot", 0x0F7A);
UO.DeleteFindList("loot", 0x0EED);
var found = UO.FindList("loot", "backpack");
if (Truth(found != ""))
{
    UO.AddObject("remaining_supply", found);
}

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

2. Eliminar solo uno hue - función de script

Parámetros y flujo de ejecución:

  • Tres argumentos: colores, graphic dorado, específico hue. Todo lo que queda es hue 0. En otros conjuntos, este graphic no se elimina.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearFindList("colors");
    UO.AddFindList("colors", 0x0EED, 0);
    UO.AddFindList("colors", 0x0EED, 0x0044);
    UO.DeleteFindList("colors", 0x0EED, 0x0044);
    UO.InfoFindList();
    return null;
}

3. Eliminar todo el conjunto y crear un reemplazo - Clase de script

Parámetros y flujo de ejecución:

  • Un argumento elimina todas las entradas antiguas. Si las reglas fueron especificadas por la línea "0x0190", elimínelas con la misma línea o elimine el conjunto por nombre.
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.AddFindList("old", 0x0190);
        UO.AddFindList("old", 0x0191);
        UO.DeleteFindList("OLD");
        UO.AddFindList("new_watch", 0x0190, -1);
        UO.AddFindList("new_watch", 0x0191, -1);
        UO.InfoFindList();
        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.DeleteFindList(list) — UO.DeleteFindList(Any)

Parámetros: list (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "deletefindlist":

                    LegacyList("AddFindList").RemoveAll(value => LegacyListEntryMatches(value,

                        arguments));

                    break;

UO.DeleteFindList(list, type) — UO.DeleteFindList(Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "deletefindlist":

                    LegacyList("AddFindList").RemoveAll(value => LegacyListEntryMatches(value,

                        arguments));

                    break;

UO.DeleteFindList(list, type, color) — UO.DeleteFindList(Any,Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "deletefindlist":

                    LegacyList("AddFindList").RemoveAll(value => LegacyListEntryMatches(value,

                        arguments));

                    break;

UO.DeleteIgnoreList

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

Firmas de C#

void UO.DeleteIgnoreList(object? list);
void UO.DeleteIgnoreList(object? list, object? @type);
void UO.DeleteIgnoreList(object? list, object? @type, object? color);

Elimina todo el filtro con nombre o las reglas seleccionadas dentro de él. Utilícelo cuando sea necesario volver a incluir un type o hue en particular en la búsqueda, manteniendo otras excepciones.

Parámetros

  • list — Nombre arbitrario no vacío, por ejemplo "loot_skip". El nombre no distingue entre mayúsculas y minúsculas. Este no es el nombre del artículo, ni el contenedor serial, ni el nombre de FindList.
  • type - Gráfico/type de un artículo o body mobile. Por ejemplo, 0x0EED es oro, 0x0191 es un cuerpo humano femenino. Número o cadena numérica ("0x0EED", "3821"); -1/otro negativo/0xFFFF - cualquier type. No se permiten valores mayores a 65535. Para múltiples type agregue múltiples reglas. Si no se transfiere, elimine la lista completa; si se aprueba sin color, todas las reglas son exactamente esta type.
  • color - Tono: 0 - solo sin color, 0x0044 - ejemplo de color exacto; negativo o 0xFFFF - cualquiera. No se permiten valores mayores a 65535. En Agregar, el valor predeterminado es 1. El tipo y hue dentro de una regla están conectados por una condición Y; reglas diferentes - O. Al eliminar, establece la máscara de regla exacta; -1 elimina la regla de "cualquier color" en lugar de todos los colores individuales.

Valor devuelto

void - sin valor. Úselo en una línea separada sin var resultado = y sin marcar =true. El comando cambia el filtro local; no devuelve el número de elementos y no envía nada al servidor.

Comportamiento

  • El número 3821 y la cadena "0x0EED" representan uno type. Eliminar una regla inexistente no cambia nada. El nombre de la lista seleccionada se conserva incluso si se elimina la lista misma; se vuelve vacío.
  • La lista nombrada contiene las reglas graphic/type + hue, y la Ignore normal contiene la serial específica. Son filtros diferentes: se combinan cuando la búsqueda los admite. Los objetos permanecen visibles y accesibles para dirigir UseObject/MoveItem; esto no es Hide ni prohibición de acciones.
  • El nombre de la lista no distingue entre mayúsculas y minúsculas; Se eliminan los espacios de los bordes. Una lista con nombre está activa, inicialmente predeterminada. AddIgnoreList no lo selecciona automáticamente. SelectIgnoreList("") deshabilita solo el filtro con nombre.
  • Las reglas se aplican a nuevas búsquedas, incluidos los elementos cargados DESPUÉS de haber sido agregados. La matriz ya recibida y el resultado anterior FindCount no se recalculan hasta una nueva búsqueda. No seleccione una lista con la regla -1,-1 a menos que desee excluir todo.
  • El filtro tiene en cuenta FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx y selecciones extendidas GetMobiles, GetWorldItems, UseType, WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true, cuando esté incluido, omite tanto serial como type/hue. La enumeración completa GetContent/GetEquipment, GetWorldItems() sin argumentos, y la verbal FindMobile(humano,cerca,...) no utilizan estas reglas.
  • GetIgnoreList devuelve solo serial agregado explícitamente; las filas de la lista nombrada no están incluidas en esta matriz. IgnoreReset borra todo el filtro serial, IgnoreOff(serial) elimina una excepción serial; las reglas nombradas se conservan. ClearIgnoreList() sin argumentos borra ambas vistas.
  • El estado pertenece al estado general de los scripts del perfil del cliente; el cambio afecta a otros scripts con este estado. La configuración se incluye en la instantánea guardada. Después de cambiar las reglas, otro script ya puede realizar una búsqueda con la instantánea tomada anteriormente; la próxima búsqueda verá la actualización.

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.AddIgnoreList("simple_skip", 0x0EED);
UO.Print("Calling UO.DeleteIgnoreList");
UO.DeleteIgnoreList("simple_skip");

1. Eliminar conjunto completo - script directo

Parámetros y flujo de ejecución:

  • Sólo se elimina lo temporal. Se conservan otras listas y Ignore(serial).
UO.AddIgnoreList("temporary", 0x0EED);
UO.SelectIgnoreList("temporary");
UO.DeleteIgnoreList("temporary");
var gold = UO.FindType(0x0EED, -1, "ground");

2. Permitir todos los colores de uno type - función de script

Parámetros y flujo de ejecución:

  • Se han eliminado ambas reglas de la túnica, pero la regla del oro permanece. La regla general -1,type-cualquiera de otro tipo, si se agrega, no se elimina.
return  RunScenario();
 object? RunScenario()
{
    UO.AddIgnoreList("sort", 0x1F03, 0);
    UO.AddIgnoreList("sort", 0x1F03, 0x0044);
    UO.AddIgnoreList("sort", 0x0EED);
    UO.DeleteIgnoreList("sort", 0x1F03);
    UO.SelectIgnoreList("sort");
    return null;
}

3. Eliminar solo la regla de color exacto: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • 68 = 0x0044: las formas numéricas son las mismas. Las túnicas sin teñir quedan excluidas. Si también hay una regla para este type con hue=-1, seguirá excluyendo el color 68.
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.AddIgnoreList("robes", 0x1F03, 0);
        UO.AddIgnoreList("robes", 0x1F03, 0x0044);
        UO.DeleteIgnoreList("robes", "0x1F03", 68);
        UO.SelectIgnoreList("robes");
        var robe = UO.FindType(0x1F03, 0x0044, "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.DeleteIgnoreList(list) — UO.DeleteIgnoreList(Any)

Parámetros: list (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "deleteignorelist":

                    state.IgnoreTypeLists.Remove(Text(0), arguments.Length > 1 ? ResolveType(arguments[1]) : (int?)null,

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : (int?)null);

                    break;

UO.DeleteIgnoreList(list, type) — UO.DeleteIgnoreList(Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "deleteignorelist":

                    state.IgnoreTypeLists.Remove(Text(0), arguments.Length > 1 ? ResolveType(arguments[1]) : (int?)null,

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : (int?)null);

                    break;

UO.DeleteIgnoreList(list, type, color) — UO.DeleteIgnoreList(Any,Any,Any)

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

Resultado: void / Unit.

Durante la llamada:

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

case "deleteignorelist":

                    state.IgnoreTypeLists.Remove(Text(0), arguments.Length > 1 ? ResolveType(arguments[1]) : (int?)null,

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : (int?)null);

                    break;

UO.FindAnyType

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

Firmas de C#

int UO.FindAnyType(object? distance, object? @type);
int UO.FindAnyType(object? distance, object? @type, object? type2);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28, object? type29);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28, object? type29, object? type30);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28, object? type29, object? type30, object? type31);

Encuentra el mobile cargado más cercano a uno de los cuerpos graphic dados. Se utiliza para buscar un tipo específico de criatura. Este equipo no busca elementos en el cofre ni en el suelo: requieren FindType/FindList.

Parámetros

  • distance — Radio horizontal en celdas inclusive: 5 permite la distancia 0..5. La distancia es máxima (abs (dx), abs (dy)), por lo que la diagonal adyacente también es 1. De forma predeterminada o si el número es negativo, se toma UO.FindDistance() en lugar de una búsqueda ilimitada. 0 sale de la misma celda X/Y. No la longitud de la ruta; Los obstáculos y los suelos no se controlan con este parámetro.
  • type: gráfico del cuerpo mobile, no del objeto serial ni del graphic. Número 0..65534 o cadena hexadecimal, por ejemplo 0x003B. Se combinan varios valores como OR: el número 5, la cadena "5|6" o una matriz plana de números/cadenas numéricas. Puede combinar una matriz plana y argumentos individuales. El orden de los valores no establece prioridad. Se excluyen los tokens no numéricos; una máscara completamente errónea no encuentra nada. Las matrices anidadas no son números y se ignoran como elementos no válidos; No se admiten máscaras multidimensionales.
  • type2 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type3 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type4 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type5 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type6 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type7 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type8 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type9 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type10 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type11 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type12 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type13 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type14 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type15 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type16 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type17 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type18 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type19 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type20 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type21 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type22 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type23 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type24 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type25 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type26 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type27 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type28 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type29 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type30 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • type31 — Máscara adicional opcional type; mismas formas que type. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.

Valor devuelto

int - serial del mobile seleccionado o 0 si no hay ninguno adecuado. Esto es ID, no graphic/type, el número de objetos encontrados o true/false: use if (found!= 0) {...}, not found == true. Un ID encontrado se puede pasar a UO.AddObject, UO.Attack o UO.Follow, pero cada acción del juego se llama por separado.

Comportamiento

  • La búsqueda sólo lee móviles ya descargados por el cliente; Se excluyen los registros destruidos y Ignore. La llamada en sí no abre el objetivo, no ataca, no va al objetivo y no solicita objetos remotos del servidor.
  • La distancia es máxima geométrica (abs(dx),abs(dy)), no la longitud de la ruta. La proximidad no garantiza la ausencia de una pared ni la accesibilidad de otro piso. La condición puede cambiar al regresar.
  • La vida, el sigilo y la línea de visión no se comprueban automáticamente. Si son importantes, use GetMobiles con aliveOnly/visibleOnly o sus propios controles. Tener un servidor con estado Enemigo no hace que ningún NPC sea elegible.
  • No cambia FindItem, FindCount o GetFoundItems. Estos campos pueden contener los resultados de otro comando anterior: use el ID devuelto directamente.
  • De 2 a 32 argumentos: distancia y a 31 máscara type. Una matriz plana le permite pasar más valores. Cada valor posterior después de type sigue siendo body/type, no hue ni notoriedad.
  • No hay ningún filtro de Z, notoriedad, raza de jugador o clase de vestimenta para este comando. Self NO está excluido: si tu propio graphic está incluido en la máscara y self no está en Ignore, puedes obtener tu serial a una distancia de 0.
  • Selecciona el más cercano; La misma distancia está permitida por un serial más pequeño. -1/any/0xFFFF/máscara vacía sin tipos concretos da 0: el comando requiere al menos un type explícito. Se ignoran los comodines type casi específicos.

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.FindAnyType(10, 0x003B);
UO.Print("FindAnyType: " + Convert.ToString(result));

1. Guarde la criatura más cercana del tipo deseado: guión directo

Parámetros y flujo de ejecución:

  • 0x003B - body, no ID. Criatura devuelta: ID del mobile específico encontrado. El equipo no comprueba Z, salud ni agresividad.
var creature = UO.FindAnyType(10, 0x003B);
if (Truth(creature != 0))
{
    UO.AddObject("creature", creature);
    UO.Print("Distance: " + Convert.ToString(UO.GetDistance(creature)));
}

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

2. Matriz de vistas y vista adicional: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Se combinan cuerpos y 0x000C separados. Si se encuentra self, este ejemplo simplemente omitirá la acción; No está buscando al próximo candidato. Para excluir self en la consulta misma, utilice el filtro correspondiente GetMobiles.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] bodies = new dynamic[checked((int)(0) + 1)];
    bodies[0] = 0x003B;
    var creature = UO.FindAnyType(18, bodies, 0x000C);
    if (Truth(creature != 0) && Truth(creature != Asc(UO.GetSerial("self"), 0)))
    {
        UO.AddObject("observed_creature", creature);
    }

    return null;
}

int Asc(object? value, int fallback = 0)
{
    string text = Convert.ToString(value) ?? "";
    if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
        return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
    return int.TryParse(text, out int number) ? number : fallback;
}

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

3. Distancia de retorno a la vista deseada más cercana: clase de script

Parámetros y flujo de ejecución:

  • body - graphic, radio - límite de búsqueda X/Y. El ayudante devuelve la distancia o su propio código -1; UO.FindAnyType mismo devuelve serial o 0.
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 distance = DistanceToBody(0x003B, 8);
        if (Truth(distance >= 0) && Truth(distance <= 3))
        {
            UO.Print("Creature is within three cells");
        }

        return null;
    }

    dynamic DistanceToBody(dynamic body, dynamic radius)
    {
        var found = UO.FindAnyType(radius, body);
        if (Truth(found == 0))
        {
            return -1;
        }

        return UO.GetDistance(found);
    }

    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.FindAnyType(distance, type) — UO.FindAnyType(Any,Any)

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

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2) — UO.FindAnyType(Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3) — UO.FindAnyType(Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4) — UO.FindAnyType(Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5) — UO.FindAnyType(Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28, type29) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any), type29 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28, type29, type30) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any), type29 (Any), type30 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28, type29, type30, type31) — UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any), type29 (Any), type30 (Any), type31 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAtCoord

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

Firmas de C#

int UO.FindAtCoord(object? x, object? y);

Busca objetos del mundo cargados en un mosaico X/Y exacto del mapa actual.

Parámetros

  • x — coordenada mundial horizontal, int 0...65535. Obligatorio; Estos no son píxeles de ventana contenedora.
  • y es la coordenada mundial vertical, int 0...65535. Requerido. No hay opciones adicionales para Z, mapa, type o radio.

Valor devuelto

int - serial el primer elemento coincidente en la lista de resultados de ese cliente. 0: no hay coincidencias, carácter faltante/eliminado o coordenadas fuera de 0...65535. Este es el ID del objeto, no el type, cantidad o bool. Se guardan todos los bits 32; marque != 0, no == true y no > 0. El mismo ID se escribe en FindItem().

Comportamiento

  • Comprueba los elementos no eliminados en el terreno y en el móvil, incluido el propio personaje en esta celda. Se excluyen los contenidos de contenedores y artículos desgastados: sus X/Y no pueden considerarse coordenadas mundiales. Las series están excluidas de la lista Ignore.
  • Todas las alturas Z en X/Y dado son adecuadas. FindDistance y FindVertical no limitan esta búsqueda a la celda exacta. Sólo son visibles los objetos cargados del mundo actual; Los mapas horizontales, estáticos y otros no se cargan. Los paquetes no se envían, el destino no se abre, los elementos no se mueven.
  • Cada llamada borra primero la búsqueda anterior. FindCount() cuenta objetos, FindFullQuantity() suma unidades en pilas (Mobile agrega uno), GetFoundItems() devuelve las encontradas serial. Primero se busca el artículo y luego el móvil; dentro de las colecciones, se aplica el orden de enumeración actual. Guarde la lista para la próxima búsqueda que reemplace los resultados.
  • El orden de selección y los filtros anteriores describen la implementación de 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.FindAtCoord(1445, 1690);
UO.Print("FindAtCoord: " + Convert.ToString(result));

1. Consigue uno ID - guión directo

Parámetros y flujo de ejecución:

  • 1445 y 1690 son ejemplos de X/Y del mundo: reemplázalos con tu celular. id guarda uno serial; HEX lo genera en hexadecimal. != 0 comprueba la presencia del resultado, no la cantidad.
var id = UO.FindAtCoord(1445, 1690);
if (Truth(id != 0))
{
    UO.Print(Hex(id));
}
else
{
    UO.Print("No loaded object");
}

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

2. Ver todos los objetos en un cuadrado de carácter - función de script

Parámetros y flujo de ejecución:

  • x/y se leen del carácter; ids guarda la lista de búsquedas actuales. Cada identificación representa un objeto, incluida la pila completa. GetType(id) lee graphic/body. Los artículos no se seleccionan ni se utilizan.
return  RunScenario();
 object? RunScenario()
{
    var x = UO.GetX("self");
    var y = UO.GetY("self");
    UO.FindAtCoord(x, y);
    var ids = UO.GetFoundItems();
    foreach (var id in ids)
    {
        UO.Print(Hex(id) + " type=" + Hex(UO.GetType(id)));
    }

    return null;
}

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

3. Función completa CountGraphicAt - clase de script

Parámetros y flujo de ejecución:

  • CountGraphicAt(x, y, graphic) busca una celda una vez, recorre en iteración el ID guardado y cuenta los objetos con los gráficos deseados. graphic=0x0EED – oro. Se devuelve el número de objetos/pilas, no la suma de unos ni true/false; una pila hace una. La función está completamente definida después de Main.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var count = CountGraphicAt(1445, 1690, 0x0EED);
        UO.Print("Objects/stacks: " + Convert.ToString(count));
        return null;
    }

    dynamic CountGraphicAt(dynamic x, dynamic y, dynamic graphic)
    {
        UO.FindAtCoord(x, y);
        var ids = UO.GetFoundItems();
        var count = 0;
        foreach (var id in ids)
        {
            if (Truth(UO.GetType(id) == graphic))
            {
                count += 1;
            }
        }

        return count;
    }

    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.FindAtCoord(x, y) — UO.FindAtCoord(Any,Any)

Parámetros: x (Any), y (Any)

Resultado: int / Integer.

Durante la llamada:

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

case "findatcoord": return new InjectionValue(bridge.FindAtCoord(Arg(0), Arg(1)));

UO.FindByNotoriety

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

Firmas de C#

int UO.FindByNotoriety(object? distance, object? notoriety);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28, object? notoriety29);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28, object? notoriety29, object? notoriety30);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28, object? notoriety29, object? notoriety30, object? notoriety31);

Encuentra el otro personaje más cercano/NPC con uno de los estados de notoriedad especificados. Útil cuando primero necesitas seleccionar un enemigo, aliado u objetivo observado, y solo entonces decidir por separado si atacarlo o seguirlo.

Parámetros

  • distance — Radio horizontal en celdas inclusive: 5 permite la distancia 0..5. La distancia es máxima (abs (dx), abs (dy)), por lo que la diagonal adyacente también es 1. De forma predeterminada o si el número es negativo, se toma UO.FindDistance() en lugar de una búsqueda ilimitada. 0 sale de la misma celda X/Y. No la longitud de la ruta; Los obstáculos y los suelos no se controlan con este parámetro.
  • notoriety — Estado de relación con el personaje recibido del servidor: 0 — desconocido, 1 — Inocente, 2 — Aliado, 3 — Gris, 4 — Criminal, 5 — Enemigo, 6 — Asesino, 7 - Invulnerable. El número significa un estado; "5|6" o una serie de números: cualquiera de los anteriores. No es el color de la ropa ni la clase. Un número negativo (normalmente -1), 0xFFFF, "cualquiera", una cadena vacía o una matriz vacía desactivan este filtro por separado. Una cadena no válida sin números válidos no encuentra a nadie. El orden de los estados no establece prioridad. El filtro 5 selecciona Enemigo en lugar de seleccionar automáticamente cualquier NPC/monstruo; los valores reales dependen del servidor. Se combinan varios valores como OR: el número 5, la cadena "5|6" o una matriz plana de números/cadenas numéricas. Puede combinar una matriz plana y argumentos individuales. El orden de valores no da prioridad. Se excluyen los tokens no numéricos; una máscara completamente errónea no encuentra nada. Las matrices anidadas no son números y se ignoran como elementos no válidos; No se admiten máscaras multidimensionales.
  • notoriety2 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety3 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety4 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety5 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety6 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety7 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety8 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety9 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety10 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety11 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety12 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety13 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety14 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety15 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety16 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety17 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety18 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety19 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety20 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety21 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety22 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety23 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety24 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety25 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety26 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety27 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety28 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety29 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety30 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.
  • notoriety31 - Máscara de notoriedad adicional opcional; las mismas formas que la notoriedad. Combina con los anteriores mediante OR, no establece un radio separado, hue, Z ni prioridad.

Valor devuelto

int - serial del mobile seleccionado o 0 si no hay ninguno adecuado. Esto es ID, no graphic/type, el número de objetos encontrados o true/false: use if (found!= 0) {...}, not found == true. Un ID encontrado se puede pasar a UO.AddObject, UO.Attack o UO.Follow, pero cada acción del juego se llama por separado.

Comportamiento

  • La búsqueda sólo lee móviles ya descargados por el cliente; Se excluyen los registros destruidos y Ignore. La llamada en sí no abre el objetivo, no ataca, no va al objetivo y no solicita objetos remotos del servidor.
  • La distancia es máxima geométrica (abs(dx),abs(dy)), no la longitud de la ruta. La proximidad no garantiza la ausencia de una pared ni la accesibilidad de otro piso. La condición puede cambiar al regresar.
  • La vida, el sigilo y la línea de visión no se comprueban automáticamente. Si son importantes, use GetMobiles con aliveOnly/visibleOnly o sus propios controles. Tener un servidor con estado Enemigo no hace que ningún NPC sea elegible.
  • No cambia FindItem, FindCount o GetFoundItems. Estos campos pueden contener los resultados de otro comando anterior: use el ID devuelto directamente.
  • Al menos dos argumentos: distancia, notoriedad. Máximo 32: radio y hasta máscara 31. Para obtener más valores, pase la matriz plana como un argumento. Eliminando filtro: -1/any/0xFFFF/cadena vacía o matriz vacía por separado. Si los códigos específicos aparecen uno al lado del otro, conservan la restricción.
  • Excluye self. Cumple con UO.FindVertical() como límite de la diferencia Z; no hay ningún parámetro maxZ en este comando. Siempre elige el más cercano, en caso de igualdad, el más pequeño serial. El argumento después de la notoriedad sigue siendo notoriedad, no más cercano y no body.

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.FindByNotoriety(12, "5|6");
UO.Print("FindByNotoriety: " + Convert.ToString(result));

1. Seleccione el objetivo más cercano y guarde su nombre - script directo

Parámetros y flujo de ejecución:

  • El oponente salvado se puede utilizar más tarde; este ejemplo no ataca. El FindVertical actual también se aplica incluso si el objetivo está cerca en X/Y.
var found = UO.FindByNotoriety(12, "5|6");
if (Truth(found != 0))
{
    UO.AddObject("opponent", found);
    UO.Print("Selected: " + UO.GetName(found));
}

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

2. Lista de estados de una matriz más código separado: función de script

Parámetros y flujo de ejecución:

  • permitido contiene Enemigo, un 6 separado agrega Asesino. Los estados se combinan en lugar de ordenarse por prioridad. El ejemplo solicita un ataque a uno encontrado vivo mobile; Las reglas del servidor determinan lo que es aceptable.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] allowed = new dynamic[checked((int)(0) + 1)];
    allowed[0] = 5;
    var found = UO.FindByNotoriety(8, allowed, 6);
    if (Truth(found != 0) && !(Truth(UO.IsDead(found))))
    {
        UO.Attack(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. Función de búsqueda completa de alturas iguales: clase de script

Parámetros y flujo de ejecución:

  • radio: radio X/Y en celdas. FindVertical(0) requiere la misma Z; Esta no es una inspección de pisos o paredes. La función devuelve ID/0 y finalmente guarda la configuración para otras partes del script.
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 found = FindOpponentAtSameLevel(10);
        if (Truth(found != 0))
        {
            UO.AddObject("same_level", found);
        }

        return null;
    }

    dynamic FindOpponentAtSameLevel(dynamic radius)
    {
        var previous = UO.FindVertical();
        try
        {
            UO.FindVertical(0);
            return UO.FindByNotoriety(radius, "5|6");
        }
        finally
        {
            UO.FindVertical(previous);
        }
    }

    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.FindByNotoriety(distance, notoriety) — UO.FindByNotoriety(Any,Any)

Parámetros: distance (Any), notoriety (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2) — UO.FindByNotoriety(Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3) — UO.FindByNotoriety(Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4) — UO.FindByNotoriety(Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28, notoriety29) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any), notoriety29 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28, notoriety29, notoriety30) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any), notoriety29 (Any), notoriety30 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28, notoriety29, notoriety30, notoriety31) — UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

Parámetros: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any), notoriety29 (Any), notoriety30 (Any), notoriety31 (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindCount

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

Firmas de C#

int UO.FindCount();
int UO.FindCount(object? id);

Lee el número de unos en la pila especificada si se pasa ID. La forma sin argumentos conserva un significado separado: el número de objetos de la última búsqueda.

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. Argumento opcional. Cuando se pasa ID, se lee la cantidad actual de este artículo en particular. El alias finditem selecciona explícitamente el primer resultado de la búsqueda. Sin argumento, se devuelve el número de objetos encontrados.

Valor devuelto

int: FindCount(id) — número de unidades en la pila especificada (Cantidad); un elemento único normal da 1, un elemento desconocido/eliminado, un alias erróneo o un móvil da 0. FindCount() sin ID es el número de objetos en la última búsqueda: una pila se considera un objeto independientemente de la Cantidad. Por ejemplo, tres pilas de 20, 50 y 100: FindCount()=3, FindCount(ID de la segunda pila)=50, FindFullQuantity()=170.

Comportamiento

  • FindCount(id) equivale a leer GetQuantity(id), no activa una búsqueda y no modifica FindItem/FindCount()/FindFullQuantity/GetFoundItems.
  • ID significa serial de un artículo en particular, no type. El cambio en la cantidad se refleja la próxima vez que se llame a FindCount(id). La cantidad del artículo eliminado es 0; no busca automáticamente otra pila.
  • Se conserva la compatibilidad original sin argumentos: FindCount() cuenta objetos. FindQuantity() lee una pila encontrada, FindFullQuantity() suma las unidades de la última búsqueda.
  • Los datos pertenecen a la última búsqueda normal de este script. FindType con argumentos 1–5, FindTypeEx, Count/CountEx/CountGround reemplaza los resultados. No se requieren comandos avanzados de caracteres filtrados para cambiar esta instantánea.
  • Una nueva búsqueda sin coincidencias borra FindItem, FindCount y FindFullQuantity y borra GetFoundItems. La lectura de un resultado por sí sola no desencadena una nueva búsqueda.

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.

UO.FindType(0x0EED, -1, "backpack");
var result = UO.FindCount();
UO.Print("FindCount: " + Convert.ToString(result));

1. Cantidad en una pila específica por ID - script directo

Parámetros y flujo de ejecución:

  • id=0x40001234 es un ejemplo de una pila serial. Reemplace el ID del artículo con el suyo.
  • Una pila de unidades 50 devolverá 50; artículo único - 1; desconocido ID - 0.
var amount = UO.FindCount("0x40001234");
UO.Print("Units: " + Convert.ToString(amount));

2. Encuentre un artículo y lea su cantidad - función de script

Parámetros y flujo de ejecución:

  • FindType recibe type oro 0x0EED, cualquier hue=-1, área backpack y devuelve serial.
  • El artículo serial devuelto se pasa a FindCount. type 0x0EED en sí no se puede transferir aquí.
return  RunScenario();
 object? RunScenario()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item != ""))
    {
        var units = UO.FindCount(item);
        UO.Print(Convert.ToString(units));
    }

    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. La cantidad en el último objetivo y en el nombre guardado es la clase de escenario.

Parámetros y flujo de ejecución:

  • lasttarget debe indicar un objeto. AddObject almacena este serial bajo el nombre selected_stack.
  • FindCount resuelve el nombre en ID y lee el Monto. Si se selecciona un personaje objetivo, se devuelve 0.
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 item = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(item)))
        {
            UO.AddObject("selected_stack", item);
            UO.Print(Convert.ToString(UO.FindCount("selected_stack")));
        }

        return null;
    }

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

4. Medir los resultados de búsqueda de oro: script directo

Parámetros y flujo de ejecución:

  • type=0x0EED – oro; color=-1 - cualquier hue; backpack - solo el contenido directo de la mochila en este formulario FindType.
  • int: número de elementos/caracteres encontrados, 0 sin coincidencias. Una pila de unidades 1000 cuenta como un objeto. Esta no es una suma de unidades; requiere FindFullQuantity.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindCount();
UO.Print(Convert.ToString(value));

5. Comparar artículos y unidades: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Las cuatro lecturas pertenecen a una búsqueda hasta que se llama a otra búsqueda en el medio.
  • Por ejemplo, dos pilas de 50: Artículos=2, Primera pila=50, Todas las unidades=100; El primero ID contiene el ID único de una pila.
return  RunScenario();
 object? RunScenario()
{
    var found = UO.FindType(0x0EED, -1, "backpack");
    UO.Print("Items: " + Convert.ToString(UO.FindCount()));
    UO.Print("First stack: " + Convert.ToString(UO.FindQuantity()));
    UO.Print("All units: " + Convert.ToString(UO.FindFullQuantity()));
    UO.Print("First ID: 0x" + Hex(UO.FindItem()));
    return null;
}

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

6. Guardar resultado hasta la próxima búsqueda - clase de script

Parámetros y flujo de ejecución:

  • El primer type es oro, el segundo 0x0F7A es un tipo de reactivo independiente. El nuevo equipo cambia el panorama general.
  • guardado sigue siendo el número de la primera búsqueda. La segunda lectura se aplica al reactivo incluso si no hay coincidencia.
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 found = UO.FindType(0x0EED, -1, "backpack");
        var saved = UO.FindCount();
        found = UO.FindType(0x0F7A, -1, "backpack");
        UO.Print("Saved: " + Convert.ToString(saved));
        UO.Print("Current: " + Convert.ToString(UO.FindCount()));
        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.FindCount() — UO.FindCount()

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

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

public int FindCount() => bridge.FindCount();

UO.FindCount(id) — UO.FindCount(Any)

Parámetros: id (Any)

Resultado: int / Integer.

Durante la llamada:

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

public int FindCount(InjectionValue id) => bridge.GetQuantity(GetObject(id));

UO.FindDistance

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

Firmas de C#

int UO.FindDistance();
void UO.FindDistance(object? value);

Lee o modifica el radio de búsqueda horizontal predeterminado.

Parámetros

  • value - Opcional int. Sin argumento - lectura; valor - configuración. El valor está limitado al rango 0..255; el negativo se convierte en 0 en lugar de sin límite. En el nuevo tiempo de ejecución: 18; el estado restaurado puede contener un valor diferente. El número fraccionario se trunca a cero; Las cadenas numéricas double/0x también son aceptables. Utilice int para evitar la conversión implícita.

Valor devuelto

Sin argumentos: int es el límite actual (distancia en celdas), no encontrado ID, número de objetos o bool. 0 significa límite cero, no falla. Con valor: void - sin valor; esta no es true/false ni la configuración anterior. Una vez instalado, lea FindDistance() para averiguar el valor almacenado.

Comportamiento

  • Distancia: max(abs(dx), abs(dy)) desde el punto de referencia actual del rango del cliente; un cuadrado diagonal cuenta como uno. La frontera está encendida. Para 0 solo son adecuados los objetos en el mismo X/Y. Para mover Mobile, la distancia tiene en cuenta la posición final de la cola de pasos.
  • La configuración se almacena en el tiempo de ejecución del script actual; sus procedimientos utilizan un solo valor. Los tiempos de ejecución independientes tienen configuraciones separadas. La lectura y la escritura no activan una búsqueda, no borran FindItem/FindCount/GetFoundItems, envían un paquete, mueven un carácter ni cargan objetos distantes.
  • FindTypeEx y FindTypesArrayEx utilizan estos límites cuando buscan en el suelo, pero no dentro del contenedor. Los filtros restantes son type, hue, Ignore y la presencia de un objeto cargado. FindAtCoord ignora ambos límites. En comandos extendidos, la distancia explícita/maxZ puede anular la configuración; -1 en dichos parámetros significa tomar la configuración, en lugar de establecer la configuración en sí en -1. FindList también filtra Z cuando busca contenedores; la excepción de contenedor especificada no se aplica a él.
  • Antes de buscar temporalmente, guarde el valor y restáurelo en Finalmente. La instalación no se cancela automáticamente. Finalmente funciona con finalización normal y se detecta un error de script; La parada de emergencia no se puede utilizar como mecanismo de limpieza.

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.FindDistance();
UO.Print("FindDistance: " + Convert.ToString(result));

1. Lectura, configuración y límite de rango: secuencia de comandos directa

Parámetros y flujo de ejecución:

  • anterior guarda la configuración actual. value:=5 establece el límite normal; 1000 muestra el límite de 255. Print lee el resultado como una llamada separada sin argumento. Finalmente restaura lo anterior.
var previous = UO.FindDistance();
try
{
    UO.FindDistance(5);
    UO.Print(Convert.ToString(UO.FindDistance()));
    UO.FindDistance(1000);
    UO.Print(Convert.ToString(UO.FindDistance()));
}
finally
{
    UO.FindDistance(previous);
}

2. Búsqueda temporal en el terreno: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • anterior guarda la configuración del código de llamada. 5 cambia solo FindDistance; el segundo límite sigue siendo el mismo. 0x0EED - gráficos dorados, -1 - cualquiera hue, Container=-1 - mundo, false - sin recursividad de contenedor. identificación - uno serial; != 0 comprueba la disponibilidad. FindCount cuenta objetos/pilas enteras. Finalmente restaura la configuración, no la lista de resultados.
return  RunScenario();
 object? RunScenario()
{
    var previous = UO.FindDistance();
    try
    {
        UO.FindDistance(5);
        var id = UO.FindTypeEx(0x0EED, -1, -1, false);
        if (Truth(id != 0))
        {
            UO.Print(Hex(id) + ":" + Convert.ToString(UO.FindCount()));
        }
        else
        {
            UO.Print("0");
        }
    }
    finally
    {
        UO.FindDistance(previous);
    }

    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 CountGroundInRange - clase de script

Parámetros y flujo de ejecución:

  • CountGroundInRange(graphic, radio, altura) almacena ambos límites, establece radio=5 y altura=10, busca graphic=0x0EED y devuelve FindCount(). Una pila se considera un objeto. La función completa se proporciona después de Main. Finalmente restablece ambos límites incluso al salir por retorno; el resultado de la búsqueda permanece disponible.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var count = CountGroundInRange(0x0EED, 5, 10);
        UO.Print(Convert.ToString(count));
        return null;
    }

    dynamic CountGroundInRange(dynamic graphic, dynamic radius, dynamic height)
    {
        var oldDistance = UO.FindDistance();
        var oldVertical = UO.FindVertical();
        try
        {
            UO.FindDistance(radius);
            UO.FindVertical(height);
            UO.FindTypeEx(graphic, -1, -1, false);
            return UO.FindCount();
        }
        finally
        {
            UO.FindDistance(oldDistance);
            UO.FindVertical(oldVertical);
        }
    }
}

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

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

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

case "finddistance":

                    if (arguments.Length > 0) { bridge.SetFindDistance(Arg(0)); return InjectionValue.Unit; }

                    return new InjectionValue(bridge.GetFindDistance());

UO.FindDistance(value) — UO.FindDistance(Any)

Parámetros: value (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "finddistance":

                    if (arguments.Length > 0) { bridge.SetFindDistance(Arg(0)); return InjectionValue.Unit; }

                    return new InjectionValue(bridge.GetFindDistance());

UO.FindFullQuantity

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

Firmas de C#

dynamic UO.FindFullQuantity();

Lee el número total de unidades en la última instantánea de búsqueda.

Parámetros

No hay parámetros.

Valor devuelto

int — suma máxima(1, Cantidad) de elementos encontrados; Cada carácter encontrado agrega 1. 0 no hay coincidencias. Dos pilas de 50 producen 100 y FindCount producen 2. Esta es una instantánea del momento de la búsqueda, no una cantidad actualizada constantemente.

Comportamiento

  • Los datos pertenecen a la última búsqueda normal de este script. FindType con argumentos 1–5, FindTypeEx, Count/CountEx/CountGround reemplaza los resultados. No se requieren comandos avanzados de caracteres filtrados para cambiar esta instantánea.
  • Una nueva búsqueda sin coincidencias borra FindItem, FindCount y FindFullQuantity y borra GetFoundItems. La lectura de un resultado por sí sola no desencadena una nueva búsqueda.

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.

UO.FindType(0x0EED, -1, "backpack");
object? result = UO.FindFullQuantity();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Medir los resultados de búsqueda de oro: script directo

Parámetros y flujo de ejecución:

  • type=0x0EED – oro; color=-1 - cualquier hue; backpack - solo el contenido directo de la mochila en este formulario FindType.
  • int — suma máxima(1, Cantidad) de elementos encontrados; Cada carácter encontrado agrega 1. 0 no hay coincidencias. Dos pilas de 50 producen 100 y FindCount producen 2. Esta es una instantánea del momento de la búsqueda, no una cantidad actualizada constantemente.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindFullQuantity();
UO.Print(Convert.ToString(value));

2. Comparar artículos y unidades: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Las cuatro lecturas pertenecen a una búsqueda hasta que se llama a otra búsqueda en el medio.
  • Por ejemplo, dos pilas de 50: Artículos=2, Primera pila=50, Todas las unidades=100; El primero ID contiene el ID único de una pila.
return  RunScenario();
 object? RunScenario()
{
    var found = UO.FindType(0x0EED, -1, "backpack");
    UO.Print("Items: " + Convert.ToString(UO.FindCount()));
    UO.Print("First stack: " + Convert.ToString(UO.FindQuantity()));
    UO.Print("All units: " + Convert.ToString(UO.FindFullQuantity()));
    UO.Print("First ID: 0x" + Hex(UO.FindItem()));
    return null;
}

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

3. Guardar resultado hasta la próxima búsqueda - clase de script

Parámetros y flujo de ejecución:

  • El primer type es oro, el segundo 0x0F7A es un tipo de reactivo independiente. El nuevo equipo cambia el panorama general.
  • guardado sigue siendo el número de la primera búsqueda. La segunda lectura se aplica al reactivo incluso si no hay coincidencia.
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 found = UO.FindType(0x0EED, -1, "backpack");
        var saved = UO.FindFullQuantity();
        found = UO.FindType(0x0F7A, -1, "backpack");
        UO.Print("Saved: " + Convert.ToString(saved));
        UO.Print("Current: " + Convert.ToString(UO.FindFullQuantity()));
        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.FindFullQuantity() — UO.FindFullQuantity()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "findfullquantity": return new InjectionValue(bridge.FindFullQuantity());

UO.FindItem

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

Firmas de C#

dynamic UO.FindItem();

Lee el serial del primer resultado de la última búsqueda regular.

Parámetros

No hay parámetros.

Valor devuelto

int - serial/ID del primer objeto encontrado, 0 si no hay resultado. Esto es numérico serial, mientras que FindType devuelve una cadena hexadecimal o una cadena vacía. No devuelve type.

Comportamiento

  • Los datos pertenecen a la última búsqueda normal de este script. FindType con argumentos 1–5, FindTypeEx, Count/CountEx/CountGround reemplaza los resultados. No se requieren comandos avanzados de caracteres filtrados para cambiar esta instantánea.
  • Una nueva búsqueda sin coincidencias borra FindItem, FindCount y FindFullQuantity y borra GetFoundItems. La lectura de un resultado por sí sola no desencadena una nueva búsqueda.

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.

UO.FindType(0x0EED, -1, "backpack");
object? result = UO.FindItem();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Medir los resultados de búsqueda de oro: script directo

Parámetros y flujo de ejecución:

  • type=0x0EED – oro; color=-1 - cualquier hue; backpack - solo el contenido directo de la mochila en este formulario FindType.
  • int - serial/ID del primer objeto encontrado, 0 si no hay resultado. Esto es numérico serial, mientras que FindType devuelve una cadena hexadecimal o una cadena vacía. No devuelve type.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindItem();
UO.Print(Convert.ToString(value));

2. Comparar artículos y unidades: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Las cuatro lecturas pertenecen a una búsqueda hasta que se llama a otra búsqueda en el medio.
  • Por ejemplo, dos pilas de 50: Artículos=2, Primera pila=50, Todas las unidades=100; El primero ID contiene el ID único de una pila.
return  RunScenario();
 object? RunScenario()
{
    var found = UO.FindType(0x0EED, -1, "backpack");
    UO.Print("Items: " + Convert.ToString(UO.FindCount()));
    UO.Print("First stack: " + Convert.ToString(UO.FindQuantity()));
    UO.Print("All units: " + Convert.ToString(UO.FindFullQuantity()));
    UO.Print("First ID: 0x" + Hex(UO.FindItem()));
    return null;
}

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

3. Guardar resultado hasta la próxima búsqueda - clase de script

Parámetros y flujo de ejecución:

  • El primer type es oro, el segundo 0x0F7A es un tipo de reactivo independiente. El nuevo equipo cambia el panorama general.
  • guardado sigue siendo el número de la primera búsqueda. La segunda lectura se aplica al reactivo incluso si no hay coincidencia.
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 found = UO.FindType(0x0EED, -1, "backpack");
        var saved = UO.FindItem();
        found = UO.FindType(0x0F7A, -1, "backpack");
        UO.Print("Saved: " + Convert.ToString(saved));
        UO.Print("Current: " + Convert.ToString(UO.FindItem()));
        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.FindItem() — UO.FindItem()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "finditem": return new InjectionValue(bridge.FindItem);

UO.FindList

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

Firmas de C#

string UO.FindList(object? list);
string UO.FindList(object? list, object? container);
string UO.FindList(object? list, object? container, object? distance);
string UO.FindList(object? list, object? container, object? distance, object? notoriety);
string UO.FindList(object? list, object? container, object? distance, object? notoriety, object? nearest);
string UO.FindList(object? list, object? container, object? distance, object? notoriety, object? nearest, object? maxZ);
string UO.FindList(object? list, object? container, object? distance, object? notoriety, object? nearest, object? maxZ, object? includeIgnored);

Busca elementos descargados o móviles en múltiples type/hue. Devuelve el primer serial como una cadena y almacena el resultado ordenado completo para FindItem, FindCount y GetFoundItems.

Parámetros

  • list — Nombre del conjunto no vacío AddFindList; o una matriz plana de números type; o una cadena de tipos delimitados por |, coma, punto y coma o espacio, como "0x0EED|0x0F7A". Los tipos de matriz/cadena utilizan cualquier hue. No se admiten pares [type,hue] dentro de una matriz; para hue, cree un conjunto con nombre. El orden de las entradas determina la prioridad. Gráfico/type del artículo ya sea body mobile en lugar de su serial. Normalmente int 0..65535, incluido 0x0EED; -1 o 0xFFFF significa cualquier type al buscar. Proporcione un valor por entrada. Se agregan varios tipos mediante llamadas separadas.
  • container — Predeterminado -1: elementos cuyo contenedor raíz es un carácter (incluidas bolsas y equipos anidados). "my" = -1. ground, "ground", UO.Ground(), numérico 0 o 1 seleccionan el mundo: elementos en el suelo y móviles, excepto self. "backpack" o serial del contenedor >1 busca solo contenido directo, sin recursividad. El alias del objeto se resuelve en serial; un alias incorrecto puede dar 0, así que verifíquelo con GetSerial de antemano.
  • distance — Radio no negativo de celdas por max(abs(dx),abs(dy)); diagonal - una celda. Válido para búsqueda ground; el contenido directo del contenedor no está limitado por la distancia. Por defecto y con argumento negativo se toma UO.FindDistance(). 0 - lo mismo X/Y.
  • notoriety — Predeterminado - 1, cualquier código. Un solo número, la cadena "5|6" o una matriz plana de números especifica los códigos de móviles permitidos; Con este filtro, los artículos quedan excluidos. Códigos: 0 desconocido, 1 inocente, 2 aliado, 3 gris, 4 criminal, 5 enemigo, 6 asesino, 7 invulnerable; el significado de la relación lo determina el servidor. Una máscara vacía /cualquiera/-1 sin códigos específicos no es restrictiva. Al mezclar comodines y códigos, los códigos específicos siguen siendo una limitación. Los tokens no numéricos se ignoran junto a los válidos; una máscara de sólo tokens erróneos no encuentra nada.
  • nearest — Predeterminado false. false/0: enumera la prioridad de entrada primero, luego baja la prioridad serial. true/1: Distancia primero, luego prioridad de grabación, luego serial. Esta es una orden, no un filtro adicional.
  • maxZ — Diferencia absoluta aceptable entre Z y el carácter, inclusive. El argumento predeterminado o negativo es UO.FindVertical(); 0 permite sólo la misma Z. Para un contenedor serial explícito >1 se toma la Z del contenedor cargado (si no hay ninguno, Z de la cosa); para otros modos: candidato Z. Las coordenadas de una cosa en gump no son la altura del mundo.
  • includeIgnored: de forma predeterminada, false: serial de Ignore de este tiempo de ejecución están excluidos. true/1 solo los incluye en esta búsqueda y no borra Ignore.

Valor devuelto

string: hexadecimal-serial del primer resultado (por ejemplo "0x40000011") o la cadena vacía "" si no hay coincidencias. Esto es ID, no type, cantidad y no bool: verifique el resultado != "", no el resultado == true. Con una consulta normal no vacía, FindItem almacena el mismo número ID, FindCount() - el número de objetos distintos, GetFoundItems() - una matriz de sus serial numéricos.

Comportamiento

  • 1 a 7 argumentos posicionales; Solo puedes saltarte la cola. Para especificar maxZ, pase los argumentos anteriores explícitamente. La búsqueda es sincrónica según el estado de carga local: no abre el contenedor, no carga contenido, no verifica la línea de visión/disponibilidad y no ataca.
  • Cada objeto se incluye una vez, incluso si cumple varias reglas. Su prioridad es la primera entrada coincidente. El nombre desconocido intenta analizarse como una cadena de tipo; ilegible type/hue provoca un error de conversión.
  • Una consulta no vacía borra el FindItem/FindCount/GetFoundItems anterior antes de la selección; ninguna coincidencia deja resultados vacíos. Excepción: una matriz vacía o una lista de cadenas vacías devuelve "" ANTES de buscar y mantiene los resultados anteriores. No cuente FindCount como un nuevo resultado después de dicha decisión.
  • Cambiar las definiciones de AddFindList/ClearFindList/DeleteFindList no cambia el conjunto ya encontrado. La otra búsqueda en este tiempo de ejecución reemplaza FindItem y la matriz general, así que guarde GetFoundItems antes de la búsqueda anidada.
  • Las definiciones están en el estado del tiempo de ejecución del script dado. Un otro tiempo de ejecución independiente tiene su propio conjunto; cerrar la ventana IDE no borra estas reglas. Este no es un archivo de configuración ni una lista de objetos globales del juego.
  • AddFindList agrega la entrada al final; las repeticiones no se eliminan. Para reaprovisionar su kit, primero llame a ClearFindList("nombre"). Cambiar las definiciones no borra FindItem/FindCount/GetFoundItems que ya se han recibido.
  • El registro almacena campos de texto. El literal numérico 0x0EED se almacena como "3821", la cadena "0x0EED" se almacena como "0x0EED". La búsqueda convierte ambas opciones en un número y DeleteFindList compara el texto almacenado. Utilice el mismo formulario al agregar y eliminar.
  • El nombre desconocido en FindList no es un conjunto registrado vacío: el motor intenta analizarlo como una lista de tipos numéricos. Un nombre no numérico provoca un error de conversión. Después de eliminar la última entrada, cree un nuevo conjunto antes de buscar ese nombre.

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.FindList(new[] { 0x0EED }, "backpack");
UO.Print("FindList: " + Convert.ToString(result));

1. Seleccione un recurso por prioridad y transfiera una pila: script directo

Parámetros y flujo de ejecución:

  • En false el oro tiene prioridad sobre el segundo type incluso a distancias mayores. El radio 2 y maxZ=5 limitan a los candidatos; no garantizan el derecho a recoger la cosa.
  • Esta es una acción de juego real: solo se transfiere el primer objeto encontrado. El resultado MoveItem no significa que el servidor haya confirmado todo el movimiento.
BuildLoot();
var item = UO.FindList("loot", "ground", 2, -1, false, 5);
if (Truth(item == ""))
{
    return null;
}
var accepted = UO.MoveItem(item, 0, "backpack");
if (Truth(accepted == 0))
{
    UO.Print("Move was not accepted");
}

void BuildLoot()
{
    UO.ClearFindList("loot");
    UO.AddFindList("loot", 0x0EED, -1);
    UO.AddFindList("loot", 0x0F7A, -1);
}

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

2. Guarde el mobile más cercano de dos notoriedad: función de script

Parámetros y flujo de ejecución:

  • Siete parámetros: dos body, mundo, radio 12, códigos 5 o 6, el más cercano primero, la diferencia Z no más de 10, ignorado y excluido. Sólo hay selección y ahorro; el script de ataque debe comprobar por separado las condiciones adecuadas.
return  RunScenario();
 object? RunScenario()
{
    var target = UO.FindList("0x0190|0x0191", "ground", 12, "5|6", true, 10, false);
    if (Truth(target != ""))
    {
        UO.AddObject("candidate", target);
        UO.Print("Candidate: " + UO.GetName(target));
    }

    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. Cuente acciones de varios tipos a partir de una matriz: clase de script

Parámetros y flujo de ejecución:

  • declarar los tipos de variables [1] crea índices 0 y 1 en este motor. Se suman las unidades de los dos tipos, no el número de pilas. backpack limitado a contenido directo; Las bolsas insertadas no están incluidas aquí.
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()
    {
        dynamic[] types = new dynamic[checked((int)(1) + 1)];
        types[0] = 0x0EED;
        types[1] = 0x0F7A;
        var first = UO.FindList(types, "backpack");
        var total = 0;
        if (Truth(first != ""))
        {
            var items = UO.GetFoundItems();
            foreach (var item in items)
            {
                total += UO.FindCount(item);
            }
        }

        if (Truth(total < 100))
        {
            UO.Print("Stock below limit: " + Convert.ToString(total));
        }

        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.FindList(list) — UO.FindList(Any)

Parámetros: list (Any)

Resultado: string / String.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container) — UO.FindList(Any,Any)

Parámetros: list (Any), container (Any)

Resultado: string / String.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance) — UO.FindList(Any,Any,Any)

Parámetros: list (Any), container (Any), distance (Any)

Resultado: string / String.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety) — UO.FindList(Any,Any,Any,Any)

Parámetros: list (Any), container (Any), distance (Any), notoriety (Any)

Resultado: string / String.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety, nearest) — UO.FindList(Any,Any,Any,Any,Any)

Parámetros: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any)

Resultado: string / String.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety, nearest, maxZ) — UO.FindList(Any,Any,Any,Any,Any,Any)

Parámetros: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any)

Resultado: string / String.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety, nearest, maxZ, includeIgnored) — UO.FindList(Any,Any,Any,Any,Any,Any,Any)

Parámetros: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any), includeIgnored (Any)

Resultado: string / String.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(CompactFindList(values))

Clone this wiki locally