Skip to content

UO Topic search

Codex edited this page Oct 12, 2026 · 6 revisions

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

Пошук об’єктів

Головна · C# · IDE · Команди UO · За абеткою · Приклади · Мови

Пошук предметів і істот за типом, відстанню, координатами та іншими умовами. Результатом може бути ідентифікатор, кількість або список. Значення «не знайдено» потрібно перевіряти за описом конкретної команди.

Розділи

Тема Команди та пояснення
Пошук предметів UO.FindType · UO.FindTypeEx · UO.FindTypesArrayEx · UO.FindAnyType
Пошук істот UO.FindMobile · UO.FindType
Пошук гравців UO.FindMobile · UO.FindType
Пошук NPC UO.FindMobile · UO.FindType
Пошук монстрів UO.FindMobile · UO.FindType
Пошук за ідентифікатором UO.Exists · UO.GetSerial
Пошук за типом UO.FindType · UO.FindTypeEx · UO.FindTypesArrayEx
Пошук за репутацією UO.FindByNotoriety · UO.FindNotoriety
Пошук за відстанню UO.FindDistance · UO.FindType
Пошук за координатами UO.FindAtCoord
Пошук за висотою UO.FindVertical · UO.FindType
Пошук на землі UO.FindType · UO.CountGround
Пошук у контейнерах UO.FindTypeEx · UO.OpenContainer
Списки пошуку та результати UO.AddFindList · UO.FindList · UO.GetFindedList · UO.GetFoundItems · UO.FindItem · UO.FindCount · UO.FindQuantity · UO.FindFullQuantity
Списки ігнорування UO.Ignore · UO.IgnoreOff · UO.IgnoreReset · UO.AddIgnoreList · UO.SelectIgnoreList
Виключені об’єкти UO.SetBadObject · UO.ClearBadObjectList
Виключені точки UO.SetBadLocation · UO.ClearBadLocationList

Усі команди теми

Пошук предметів

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

Пошук істот

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

Пошук за відстанню та висотою

UO.FindDistance · UO.FindVertical

Списки пошуку та результати

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

Списки ігнорування

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

Виключені об’єкти

UO.SetBadObject · UO.ClearBadObjectList

Виключені точки

UO.SetBadLocation · UO.ClearBadLocationList

Приклади на тему

Нижче наведено короткі приклади. У повному описі кожної команди є параметри, результат, обмеження та кілька самостійних скриптів: прямий код, варіант із функцією та варіант із класом.

UO.FindType

Параметри, результат та всі сценарії

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

Параметри, результат та всі сценарії

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

Частини довідника

1 · 2

Повний опис команд


UO.AddFindList

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

C#-сигнатури

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

Додає правило type/hue до іменованого набору для UO.FindList. Набір дозволяє повторно шукати кілька видів предметів або тіл mobiles і задавати пріоритет типів порядку додавання.

Параметри

  • list - Ім'я набору правил, наприклад "loot". Передавайте рядок без |: цей знак використовується всередині запису як роздільник. Реєстр імені не враховується. Це не serial контейнер та не масив знайдених предметів.
  • type — Graphic/type предмета або body mobile, а не його serial. Зазвичай int 0..65535, включаючи 0x0EED; -1 або 0xFFFF означають будь-який type при пошуку. Вказуйте значення на запис. Декілька типів додаються окремими дзвінками.
  • color — Hue предмета/тіла, не RGB. int 0..65535; 0 - звичайний hue 0, -1 або 0xFFFF - будь-який. У AddFindList пропуск color означає будь-який hue при пошуку.

Повернене значення

void: значення, що повертається, немає. Не привласнюйте виклик змінною та не перевіряйте його на true/1. Стан визначень можна вивести UO.InfoFindList(); сам пошук запускається окремо через UO.FindList().

Поведінка

  • Визначення перебувають у стані даного скриптового runtime. Самостійний інший runtime має свій набір; закриття вікна IDE не є очищенням цих правил. Це не файл налаштувань та не список глобальних об'єктів гри.
  • AddFindList дописує запис до кінця; повторення не видаляються. Для повторної підготовки свого набору спершу викликайте ClearFindList("ім'я"). Зміна визначень не очищає вже отримані FindItem/FindCount/GetFoundItems.
  • Запис зберігає текстові поля. Числовий літерал "0x0EED" зберігається як "3821", рядок "0x0EED" - як "0x0EED". Пошук перетворює обидва варіанти на число, а DeleteFindList порівнює саме збережений текст. Використовуйте однакову форму при додаванні та видаленні.
  • Невідоме ім'я в FindList не є порожнім зареєстрованим набором: двигун намагається розібрати його як список числових типів. Число ім'я викликає помилку перетворення. Після видалення останнього запису створіть новий набір до пошуку цього імені.
  • Аргументи зберігаються одночасно; перевірка числового type/hue виконується при FindList. AddFindList не шукає, не переносить предмети і не додає serial у Ignore.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.Print("Calling UO.AddFindList");
UO.AddFindList("simple_loot", 0x0EED);

1. Підготувати власний набір видобутку та отримати результати – прямий скрипт

Параметри та порядок виконання:

  • 0x0EED - золото, 0x0F7A - другий graphic набору. За інших даних сервера замініть graphics. Повна процедура BuildLoot наведена вище.
  • FindCount(item) читає кількість одиниць конкретного стека; GetFoundItems містить distinct serial. Жодного перенесення цей приклад не виконує.
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. Шукати тільки предмет потрібного забарвлення у рюкзаку – функція сценарію

Параметри та порядок виконання:

  • 0x0044 фільтрує hue; це не serial. backpack шукає прямий вміст рюкзака. AddObject зберігає вибраний об'єкт під ім'ям у цьому runtime.
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. Типи тіл та кілька значень notoriety – клас сценарію

Параметри та порядок виконання:

  • У кожному записі відсутній color означає будь-який hue. Рядок "5|6" дозволяє два коди notoriety; цей фільтр виключає звичайні Item. Пошук не атакує та не запускає 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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: list (Any), type (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: list (Any), type (Any), color (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

C#-сигнатури

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

Готує іменований набір речей, які треба пропускати під час пошуку: наприклад, не підбирати золото або не вибирати речі певного кольору. Правило задається за type і hue, тому поширюється на всі відповідні об’єкти, включно з тими, що з’являться пізніше. Після налаштування ввімкніть набір через SelectIgnoreList.

Параметри

  • list - Довільне непусте ім'я, наприклад "loot_skip". Ім'я не враховує регістру. Це не назва предмета, не serial контейнера і не назва FindList.
  • type - Graphic/type предмета або body mobile. Наприклад 0x0EED — золото, 0x0191 — жіноче людське тіло. Число або числовий рядок ("0x0EED", "3821"); -1/інше негативне/0xFFFF - будь-який type. Значення більше 65535 неприпустимі. Для кількох type додайте кілька правил.
  • color - Hue: 0 - тільки незабарвлені, 0x0044 - приклад точного кольору; негативне або 0xFFFF - будь-який. Значення більше 65535 неприпустимі. У Add за замовчуванням - 1. Type і hue всередині одного правила з'єднуються умовою І; різні правила - АБО.

Повернене значення

void - значення немає. Використовуйте окремий рядок без var result = і без перевірки = true. Команда змінює локальний фільтр; не повертає кількість предметів і не надсилає серверу.

Поведінка

  • Додає до списку, вказаного ПЕРШИМ аргументом, незалежно від обраного списку. Повторна чисельно однакова пара не дублюється.
  • Іменований список містить правила graphic/type + hue, а звичайний Ignore містить конкретні serial. Це різні фільтри: вони об'єднуються при підтримуючому їх пошуку. Об'єкти залишаються видимими та доступними прямому UseObject/MoveItem; це не Hide і не заборона дій.
  • Ім'я списку не враховує регістр; пробіли з обох боків видаляються. Активний один іменований список, спочатку default. AddIgnoreList не вибирає його автоматично. SelectIgnoreList("") вимикає лише іменований фільтр.
  • Правила діють нові пошуки, включаючи предмети, завантажені ПІСЛЯ їх додавання. Вже отриманий масив та попередній результат FindCount не перераховуються до нового пошуку. Не вибирайте список із правилом -1, -1, якщо не хочете виключити все.
  • Фільтр враховують FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx та розширені вибірки GetMobiles, GetWorldItems, UseType, WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true, де його передбачено, обходить і serial, і type/hue. Повний перелік GetContent/GetEquipment, GetWorldItems() без аргументів та словесний FindMobile(Human, near, ...) не використовують ці правила.
  • GetIgnoreList повертає тільки явно додані serial; рядки іменованого списку до цього масиву не входять. IgnoreReset очищає весь serial-фільтр, IgnoreOff(serial) знімає одне serial-виключення; іменовані правила зберігаються. ClearIgnoreList() без аргументів очищає обидва види.
  • Стан належить загальному стану скриптів профілю клієнта; зміна впливає інші скрипти з цим станом. Установки входять у знімок, що зберігається. Після зміни правил інший скрипт може вже виконувати пошук зі знятим раніше знімком наступний пошук побачить оновлення.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.Print("Calling UO.AddIgnoreList");
UO.AddIgnoreList("simple_skip", 0x0EED);

1. Пропускати всі чарки золота при пошуку на землі - прямий скрипт

Параметри та порядок виконання:

  • loot_skip – назва набору. Пропущений color означає будь-який hue. FindType повертає hex-рядок ID або порожній рядок; тут результат зберігається під next_loot, а предмет не переміщується. Пошук землі може знайти і 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. Виключити лише одне забарвлення роби – функція сценарію

Параметри та порядок виконання:

  • 0x1F03 - graphic роби; 0x0044 — приклад забарвлення, що захищається. Робу іншого hue пошук допускає. Це захист від вибору фільтруючим пошуком, не від прямого MoveItem за відомим 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. Створити два незалежні набори та включити один – клас сценарію

Параметри та порядок виконання:

  • Правила зберігаються у обох списках. Щоб виключати і золото, і роби одночасно, додайте обидва type в один список.
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;
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: list (Any), type (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: list (Any), type (Any), color (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

C#-сигнатури

void UO.ClearBadLocationList();

Видаляє всі пари, збережені SetBadLocation.

Параметри

Параметрів немає.

Повернене значення

void - значення, що повертається немає. Викликайте окремим рядком; це не true/false та не число кроків.

Поведінка

  • Не змінює карту, персонажів чи перешкоди на сервері. Очищається лише прикладний список runtime.
  • Вже отриманий масив шляху і знімок заборони маршруту, що йде, не змінюються. Для нового результату повторіть запит шляху або запустіть рух знову. Список SetBadObject очищається окремо.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.Print("Calling UO.ClearBadLocationList");
UO.ClearBadLocationList();

1. Очистити список – прямий скрипт

Параметри та порядок виконання:

  • Параметрів немає.
  • Значення, що повертається, немає.
UO.ClearBadLocationList();

2. Почати новий набір заборон - функція сценарію

Параметри та порядок виконання:

  • Спочатку видаляються попередні пари, потім додається нова.
  • Це не фізична перешкода та не зміна клієнтської картки.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearBadLocationList();
    UO.SetBadLocation(1445, 1690);
    return null;
}

3. Повторити розрахунок після очищення – клас сценарію

Параметри та порядок виконання:

  • Мета - чотири клітини на схід, Optimized = true, Accuracy = 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()
    {
        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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.ClearBadLocationList() — UO.ClearBadLocationList()

Параметри: Немає параметрів.

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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

UO.ClearBadObjectList

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

C#-сигнатури

void UO.ClearBadObjectList();

Видаляє всі правила type/hue/radius, додані SetBadObject у поточному runtime.

Параметри

Параметрів немає.

Повернене значення

void - значення, що повертається немає. Викликайте окремим рядком; це не true/false та не число кроків.

Поведінка

  • Параметрів немає. Повторний дзвінок при порожньому списку є безпечним.
  • Не очищає SetBadLocation і не прибирає природних перешкод. Новий рух або запит на шляху використовує очищений список; Раніше запущений маршрут зберігає власний знімок.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.Print("Calling UO.ClearBadObjectList");
UO.ClearBadObjectList();

1. Скинути правила предметів – прямий скрипт

Параметри та порядок виконання:

  • Аргументів немає; дзвінок записується окремим рядком.
  • Немає результату true/false та немає кількості віддалених правил.
UO.ClearBadObjectList();

2. Замінити набір правил – функція сценарію

Параметри та порядок виконання:

  • Після очищення додається лише type=0x398C будь-якого кольору.
  • Radius=2 виключає квадрат 5×5 навколо відповідних предметів при наступному маршруті.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearBadObjectList();
    UO.SetBadObject(0x398C, -1, 2);
    return null;
}

3. Перерахувати шлях після повного скидання прикладних заборон – клас сценарію

Параметри та порядок виконання:

  • Два списки є незалежними: для скидання обох викликаються обидві команди.
  • Три клітини на схід — приклад мети. Прохідність картки, висота та ліміт пошуку зберігаються; порожній масив залишається допустимим результатом.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.ClearBadObjectList() — UO.ClearBadObjectList()

Параметри: Немає параметрів.

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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

UO.ClearFindList

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

C#-сигнатури

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

Видаляє визначення одного найменованого набору пошуку або всіх наборів AddFindList поточного runtime. Використовується перед повторним налаштуванням фільтрів, щоб правила не накопичувалися.

Параметри

  • list - Ім'я набору правил, наприклад "loot". Передавайте рядок без |: цей знак використовується всередині запису як роздільник. Реєстр імені не враховується. Це не serial контейнер та не масив знайдених предметів. Якщо аргумент відсутній, видаляються ВСІ визначення AddFindList у цьому runtime.

Повернене значення

void: значення, що повертається, немає. Не привласнюйте виклик змінною та не перевіряйте його на true/1. Стан визначень можна вивести UO.InfoFindList(); сам пошук запускається окремо через UO.FindList().

Поведінка

  • Визначення перебувають у стані даного скриптового runtime. Самостійний інший runtime має свій набір; закриття вікна IDE не є очищенням цих правил. Це не файл налаштувань та не список глобальних об'єктів гри.
  • AddFindList дописує запис до кінця; повторення не видаляються. Для повторної підготовки свого набору спершу викликайте ClearFindList("ім'я"). Зміна визначень не очищає вже отримані FindItem/FindCount/GetFoundItems.
  • Запис зберігає текстові поля. Числовий літерал "0x0EED" зберігається як "3821", рядок "0x0EED" - як "0x0EED". Пошук перетворює обидва варіанти на число, а DeleteFindList порівнює саме збережений текст. Використовуйте однакову форму при додаванні та видаленні.
  • Невідоме ім'я в FindList не є порожнім зареєстрованим набором: двигун намагається розібрати його як список числових типів. Число ім'я викликає помилку перетворення. Після видалення останнього запису створіть новий набір до пошуку цього імені.
  • Неіснуюче ім'я є безпечним: нічого не видаляється. Команда не видаляє ігрові предмети, не очищає Ignore та не скасовує рух.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.Print("Calling UO.ClearFindList");
UO.ClearFindList();

1. Повторне налаштування одного набору – прямий скрипт

Параметри та порядок виконання:

  • Усередині BuildLoot очищається лише loot. Інші іменовані набори цього сценарію зберігаються.
BuildLoot();
BuildLoot();
UO.InfoFindList();

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

2. Замінити сезонний набір, зберегти запасний - функція сценарію

Параметри та порядок виконання:

  • Реєстр SEASON не важливий. reserve залишається; у season тепер тільки новий type/hue. Після очищення спочатку додається запис, потім дозволено пошук на ім'я.
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. Повне скидання перед новим режимом скрипта – клас сценарію

Параметри та порядок виконання:

  • ClearFindList() діє на всі визначення поточного runtime, тому для бібліотечної процедури зазвичай краще форма з власним ім'ям.
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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.ClearFindList() — UO.ClearFindList()

Параметри: Немає параметрів.

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: list (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

C#-сигнатури

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

Скидає винятки пошуку. З ім'ям лише один набір type/hue. Без аргументів — усі іменовані набори та всі serial, додані через Ignore. Корисно розпочати нове сортування із чистими правилами.

Параметри

  • list — Довільне непусте ім'я, наприклад "loot_skip". Ім'я не враховує регістру. Це не назва предмета, не serial контейнера і не назва FindList. Необов'язковий. Його відсутність означає загальне скидання, а не лише активний список.

Повернене значення

void - значення немає. Використовуйте окремий рядок без var result = і без перевірки = true. Команда змінює локальний фільтр; не повертає кількість предметів і не надсилає серверу.

Поведінка

  • ClearIgnoreList("name") за результатом рівнозначний DeleteIgnoreList("name"). Порожній рядок тут неприпустимий; для вимкнення без видалення використовуйте SelectIgnoreList("").
  • Іменований список містить правила graphic/type + hue, а звичайний Ignore містить конкретні serial. Це різні фільтри: вони об'єднуються при підтримуючому їх пошуку. Об'єкти залишаються видимими та доступними прямому UseObject/MoveItem; це не Hide і не заборона дій.
  • Ім'я списку не враховує регістр; пробіли з обох боків видаляються. Активний один іменований список, спочатку default. AddIgnoreList не вибирає його автоматично. SelectIgnoreList("") вимикає лише іменований фільтр.
  • Правила діють нові пошуки, включаючи предмети, завантажені ПІСЛЯ їх додавання. Вже отриманий масив та попередній результат FindCount не перераховуються до нового пошуку. Не вибирайте список із правилом -1, -1, якщо не хочете виключити все.
  • Фільтр враховують FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx та розширені вибірки GetMobiles, GetWorldItems, UseType, WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true, де його передбачено, обходить і serial, і type/hue. Повний перелік GetContent/GetEquipment, GetWorldItems() без аргументів та словесний FindMobile(Human, near, ...) не використовують ці правила.
  • GetIgnoreList повертає тільки явно додані serial; рядки іменованого списку до цього масиву не входять. IgnoreReset очищає весь serial-фільтр, IgnoreOff(serial) знімає одне serial-виключення; іменовані правила зберігаються. ClearIgnoreList() без аргументів очищає обидва види.
  • Стан належить загальному стану скриптів профілю клієнта; зміна впливає інші скрипти з цим станом. Установки входять у знімок, що зберігається. Після зміни правил інший скрипт може вже виконувати пошук зі знятим раніше знімком наступний пошук побачить оновлення.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.Print("Calling UO.ClearIgnoreList");
UO.ClearIgnoreList();

1. Очистити тимчасовий набір, зберігши решту — прямий скрипт

Параметри та порядок виконання:

  • Видалений temporary, keep продовжує виключати роби. Звичайний список serial не очищається.
UO.AddIgnoreList("temporary", 0x0EED);
UO.AddIgnoreList("keep", 0x1F03);
UO.ClearIgnoreList("temporary");
UO.SelectIgnoreList("keep");

2. Почніть пошук без попередніх винятків - функція скрипта

Параметри та порядок виконання:

  • Без аргументів знімаються обидва види винятків. Старі змінні/масиви не очищаються. Новий FindType наново формує результат.
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. Замінити вміст набору – клас сценарію

Параметри та порядок виконання:

  • Старі правила sorting видалені до додавання нових: все золото і лише забарвлення 0x0044 у роби. Між окремими командами інший скрипт може бачити проміжний стан.
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;
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.ClearIgnoreList() — UO.ClearIgnoreList()

Параметри: Немає параметрів.

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

case "clearignorelist":

                    if (arguments.Length == 0)

                    {

                        IgnoreReset();

                        state.IgnoreTypeLists.Clear();

                    }

                    else

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

                    break;

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

Параметри: list (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

C#-сигнатури

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

Виконує пошук та підсумовує одиниці знайдених предметів.

Параметри

  • type — Graphic/type предмета (наприклад 0x0EED), не serial. -1 або 0xFFFF - будь-який type.
  • color - Hue предмета; -1 або 0xFFFF - будь-який колір. У Count(type) і CountGround(type) за замовчуванням -1.
  • container — В Count(type,color,container): my або числовий -1 — всі предмети, кореневий власник яких self (включаючи екіпірування та вкладені сумки); backpack/serial — вміст зазначеного контейнера рекурсивно; "UO.Ground()", явні "0"/"0", "ground" або "1" - предмети і Mobile на землі. У CountEx числовий -1 і 0xFFFFFFFF теж означають землю, а конкретний serial — лише прямий вміст. CountEx приймає backpack та імена AddObject; невідоме ім'я спричиняє помилку скрипта. Перевіряйте отриманий serial до виклику: явний нуль вибирає землю, а не відсутній контейнер.

Повернене значення

int - сума max (1, Amount) знайдених предметів; кожен Mobile додає 1. 0 без збігів. Це число одиниць, не число стопок. Одночасно оновлюються "FindItem", "FindCount", "FindFullQuantity" і "GetFoundItems".

Поведінка

  • Count з одним або двома аргументами шукає належать self предмети, включаючи екіпірування та вкладені сумки. CountGround завжди шукає землю, включаючи відповідні Mobile, але виключаючи self.
  • Count(type,color,serial) обходить вкладені сумки, CountEx(type,color,serial) — лише прямий вміст. Обмеження FindDistance/FindVertical застосовуються до землі; Ignore застосовується до знайдених об'єктів.
  • Результат залежить від отриманого вмісту контейнерів. Автоматичного відкриття та серверного запиту повного інвентарю немає.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

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

1. Порахувати одиниці золота - прямий скрипт

Параметри та порядок виконання:

  • type=0x0EED, color=-1. Область – рюкзак; враховуйте відмінність рекурсивності Count/CountEx.
  • Один фут від 1000 dast одиниць=1000, а не 1.
var units = UO.Count(0x0EED, -1, "backpack");
UO.Print("Units: " + Convert.ToString(units));

2. Показати одиниці та кількість об'єктів окремо — функція сценарію

Параметри та порядок виконання:

  • FindCount читається відразу після Count, до іншого пошуку.
  • Дві стоси по 50 дають 2 items і 100 units.
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. Продовжувати лише за достатньої кількості — клас сценарію

Параметри та порядок виконання:

  • 100 - поріг одиниць у цьому прикладі.
  • Це перевірка знімка даних, не резервування предметів. Між перевіркою та перенесенням кількість може змінитися.
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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: type (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

public int Count(InjectionValue type) 

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

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

Параметри: type (Any), color (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

public int Count(InjectionValue type, InjectionValue color) 

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

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

Параметри: type (Any), color (Any), container (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

C#-сигнатури

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

Виконує пошук та підсумовує одиниці знайдених предметів.

Параметри

  • objType — Graphic/type предмета (наприклад 0x0EED), не serial. -1 або 0xFFFF - будь-який type.
  • color - Hue предмета; -1 або 0xFFFF - будь-який колір. У Count(type) і CountGround(type) за замовчуванням -1.
  • container — В Count(type,color,container): my або числовий -1 — всі предмети, кореневий власник яких self (включаючи екіпірування та вкладені сумки); backpack/serial — вміст зазначеного контейнера рекурсивно; "UO.Ground()", явні "0"/"0", "ground" або "1" - предмети і Mobile на землі. У CountEx числовий -1 і 0xFFFFFFFF теж означають землю, а конкретний serial — лише прямий вміст. CountEx приймає backpack та імена AddObject; невідоме ім'я спричиняє помилку скрипта. Перевіряйте отриманий serial до виклику: явний нуль вибирає землю, а не відсутній контейнер.

Повернене значення

int - сума max (1, Amount) знайдених предметів; кожен Mobile додає 1. 0 без збігів. Це число одиниць, не число стопок. Одночасно оновлюються "FindItem", "FindCount", "FindFullQuantity" і "GetFoundItems".

Поведінка

  • Count з одним або двома аргументами шукає належать self предмети, включаючи екіпірування та вкладені сумки. CountGround завжди шукає землю, включаючи відповідні Mobile, але виключаючи self.
  • Count(type,color,serial) обходить вкладені сумки, CountEx(type,color,serial) — лише прямий вміст. Обмеження FindDistance/FindVertical застосовуються до землі; Ignore застосовується до знайдених об'єктів.
  • Результат залежить від отриманого вмісту контейнерів. Автоматичного відкриття та серверного запиту повного інвентарю немає.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

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

1. Порахувати одиниці золота - прямий скрипт

Параметри та порядок виконання:

  • type=0x0EED, color=-1. Область – рюкзак; враховуйте відмінність рекурсивності Count/CountEx.
  • Один фут від 1000 dast одиниць=1000, а не 1.
var units = UO.CountEx(0x0EED, -1, "backpack");
UO.Print("Units: " + Convert.ToString(units));

2. Показати одиниці та кількість об'єктів окремо — функція сценарію

Параметри та порядок виконання:

  • FindCount читається відразу після Count, до іншого пошуку.
  • Дві стоси по 50 дають 2 items і 100 units.
return  RunScenario();
 object? RunScenario()
{
    var units = UO.CountEx(0x0EED, -1, "backpack");
    var items = UO.FindCount();
    UO.Print(Convert.ToString(items) + " items, " + Convert.ToString(units) + " units");
    return null;
}

3. Продовжувати лише за достатньої кількості — клас сценарію

Параметри та порядок виконання:

  • 100 - поріг одиниць у цьому прикладі.
  • Це перевірка знімка даних, не резервування предметів. Між перевіркою та перенесенням кількість може змінитися.
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.CountEx(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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.CountEx(objType, color, container) — UO.CountEx(Any,Any,Any)

Параметри: objType (Any), color (Any), container (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

case "countex":

                    bridge.FindType(ResolveType(arguments[0]), Arg(1), StealthContainer(2), -1, false);

                    return new InjectionValue(bridge.FindFullQuantity());

UO.CountGround

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

C#-сигнатури

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

Виконує пошук та підсумовує одиниці знайдених предметів.

Параметри

  • type — Graphic/type предмета (наприклад 0x0EED), не serial. -1 або 0xFFFF - будь-який type.
  • color - Hue предмета; -1 або 0xFFFF - будь-який колір. У Count(type) і CountGround(type) за замовчуванням -1.

Повернене значення

int - сума max (1, Amount) знайдених предметів; кожен Mobile додає 1. 0 без збігів. Це число одиниць, не число стопок. Одночасно оновлюються "FindItem", "FindCount", "FindFullQuantity" і "GetFoundItems".

Поведінка

  • Count з одним або двома аргументами шукає належать self предмети, включаючи екіпірування та вкладені сумки. CountGround завжди шукає землю, включаючи відповідні Mobile, але виключаючи self.
  • Count(type,color,serial) обходить вкладені сумки, CountEx(type,color,serial) — лише прямий вміст. Обмеження FindDistance/FindVertical застосовуються до землі; Ignore застосовується до знайдених об'єктів.
  • Результат залежить від отриманого вмісту контейнерів. Автоматичного відкриття та серверного запиту повного інвентарю немає.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

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

1. Порахувати одиниці золота - прямий скрипт

Параметри та порядок виконання:

  • type=0x0EED, color=-1. Область - земля поруч із персонажем.
  • Один фут від 1000 dast одиниць=1000, а не 1.
var units = UO.CountGround(0x0EED, -1);
UO.Print("Units: " + Convert.ToString(units));

2. Показати одиниці та кількість об'єктів окремо — функція сценарію

Параметри та порядок виконання:

  • FindCount читається відразу після Count, до іншого пошуку.
  • Дві стоси по 50 дають 2 items і 100 units.
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. Продовжувати лише за достатньої кількості — клас сценарію

Параметри та порядок виконання:

  • 100 - поріг одиниць у цьому прикладі.
  • Це перевірка знімка даних, не резервування предметів. Між перевіркою та перенесенням кількість може змінитися.
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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: type (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

public int CountGround(InjectionValue type)

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

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

Параметри: type (Any), color (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

public int CountGround(InjectionValue type, InjectionValue color)

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

UO.DeleteFindList

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

C#-сигнатури

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

Видаляє всі визначення, що збігаються із зазначеним префіксом list, list/type або list/type/color. Дозволяє усунути один вид предметів або конкретний hue, зберігши інші правила набору.

Параметри

  • list - Ім'я набору правил, наприклад "loot". Передавайте рядок без |: цей знак використовується всередині запису як роздільник. Реєстр імені не враховується. Це не serial контейнер та не масив знайдених предметів.
  • type — Graphic/type предмета або body mobile, а не його serial. Зазвичай int 0..65535, включаючи 0x0EED; -1 або 0xFFFF означають будь-який type при пошуку. Вказуйте значення на запис. Декілька типів додаються окремими дзвінками. Для видалення порівнюється текст поля; пропуск видаляє всі записи імені.
  • color — Hue предмета/тіла, не RGB. int 0..65535; 0 - звичайний hue 0, -1 або 0xFFFF - будь-який. У AddFindList пропуск color означає будь-який hue при пошуку. Для видалення це буквальне поле, не wildcard: -1 видаляє тільки записи з явно збереженим -1. Пропускання color видаляє всі записи list/type незалежно від hue.

Повернене значення

void: значення, що повертається, немає. Не привласнюйте виклик змінною та не перевіряйте його на true/1. Стан визначень можна вивести UO.InfoFindList(); сам пошук запускається окремо через UO.FindList().

Поведінка

  • Визначення перебувають у стані даного скриптового runtime. Самостійний інший runtime має свій набір; закриття вікна IDE не є очищенням цих правил. Це не файл налаштувань та не список глобальних об'єктів гри.
  • AddFindList дописує запис до кінця; повторення не видаляються. Для повторної підготовки свого набору спершу викликайте ClearFindList("ім'я"). Зміна визначень не очищає вже отримані FindItem/FindCount/GetFoundItems.
  • Запис зберігає текстові поля. Числовий літерал "0x0EED" зберігається як "3821", рядок "0x0EED" - як "0x0EED". Пошук перетворює обидва варіанти на число, а DeleteFindList порівнює саме збережений текст. Використовуйте однакову форму при додаванні та видаленні.
  • Невідоме ім'я в FindList не є порожнім зареєстрованим набором: двигун намагається розібрати його як список числових типів. Число ім'я викликає помилку перетворення. Після видалення останнього запису створіть новий набір до пошуку цього імені.
  • DeleteFindList(list,type,-1) не видаляє двопараметричний запис AddFindList(list,type): вона не має третього поля. Дублікати, що збіглися, видаляються всі; неіснуючий збіг нічого не змінює.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.AddFindList("simple_loot", 0x0EED);
UO.Print("Calling UO.DeleteFindList");
UO.DeleteFindList("simple_loot");

1. Виключити всі забарвлення одного типу – прямий скрипт

Параметри та порядок виконання:

  • Два аргументи видаляють обидві записи золота: і будь-який hue, і 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. Прибрати лише один hue - функція сценарію

Параметри та порядок виконання:

  • Три аргументи: кольори, graphic золото, конкретний hue. Залишається тільки hue 0. В інших наборах такий graphic не видаляється.
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. Видалити набір і створити заміну — клас сценарію

Параметри та порядок виконання:

  • Один аргумент видаляє всі записи old. Якщо правила задаються рядком "0x0190", видаляйте тим же рядком або видаліть набір по імені.
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;
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: list (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

case "deletefindlist":

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

                        arguments));

                    break;

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

Параметри: list (Any), type (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

case "deletefindlist":

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

                        arguments));

                    break;

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

Параметри: list (Any), type (Any), color (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

case "deletefindlist":

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

                        arguments));

                    break;

UO.DeleteIgnoreList

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

C#-сигнатури

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

Видаляє весь іменований фільтр чи вибрані правила усередині нього. Використовуйте, коли певний type або hue знову потрібно допускати до пошуку, зберігши решту винятків.

Параметри

  • list - Довільне непусте ім'я, наприклад "loot_skip". Ім'я не враховує регістру. Це не назва предмета, не serial контейнера і не назва FindList.
  • type - Graphic/type предмета або body mobile. Наприклад 0x0EED — золото, 0x0191 — жіноче людське тіло. Число або числовий рядок ("0x0EED", "3821"); -1/інше негативне/0xFFFF - будь-який type. Значення більше 65535 неприпустимі. Для кількох type додайте кілька правил. Якщо не передано – видалити весь список; якщо переданий без color — усі правила саме цього type.
  • color - Hue: 0 - тільки незабарвлені, 0x0044 - приклад точного кольору; негативне або 0xFFFF - будь-який. Значення більше 65535 неприпустимі. У Add за замовчуванням - 1. Type і hue всередині одного правила з'єднуються умовою І; різні правила - АБО. При видаленні задає точну маску правила; -1 видаляє правило «будь-який колір», а не всі окремі кольори.

Повернене значення

void - значення немає. Використовуйте окремий рядок без var result = і без перевірки = true. Команда змінює локальний фільтр; не повертає кількість предметів і не надсилає серверу.

Поведінка

  • Число 3821 та рядок "0x0EED" позначають один type. Вилучення неіснуючого правила нічого не змінює. Ім'я вибраного списку зберігається, навіть якщо список видалений; він стає порожнім.
  • Іменований список містить правила graphic/type + hue, а звичайний Ignore містить конкретні serial. Це різні фільтри: вони об'єднуються при підтримуючому їх пошуку. Об'єкти залишаються видимими та доступними прямому UseObject/MoveItem; це не Hide і не заборона дій.
  • Ім'я списку не враховує регістр; пробіли з обох боків видаляються. Активний один іменований список, спочатку default. AddIgnoreList не вибирає його автоматично. SelectIgnoreList("") вимикає лише іменований фільтр.
  • Правила діють нові пошуки, включаючи предмети, завантажені ПІСЛЯ їх додавання. Вже отриманий масив та попередній результат FindCount не перераховуються до нового пошуку. Не вибирайте список із правилом -1, -1, якщо не хочете виключити все.
  • Фільтр враховують FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx та розширені вибірки GetMobiles, GetWorldItems, UseType, WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true, де його передбачено, обходить і serial, і type/hue. Повний перелік GetContent/GetEquipment, GetWorldItems() без аргументів та словесний FindMobile(Human, near, ...) не використовують ці правила.
  • GetIgnoreList повертає тільки явно додані serial; рядки іменованого списку до цього масиву не входять. IgnoreReset очищає весь serial-фільтр, IgnoreOff(serial) знімає одне serial-виключення; іменовані правила зберігаються. ClearIgnoreList() без аргументів очищає обидва види.
  • Стан належить загальному стану скриптів профілю клієнта; зміна впливає інші скрипти з цим станом. Установки входять у знімок, що зберігається. Після зміни правил інший скрипт може вже виконувати пошук зі знятим раніше знімком наступний пошук побачить оновлення.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.

UO.AddIgnoreList("simple_skip", 0x0EED);
UO.Print("Calling UO.DeleteIgnoreList");
UO.DeleteIgnoreList("simple_skip");

1. Видалити весь набір – прямий скрипт

Параметри та порядок виконання:

  • Видаляється тільки temporary. Інші списки та Ignore(serial) зберігаються.
UO.AddIgnoreList("temporary", 0x0EED);
UO.SelectIgnoreList("temporary");
UO.DeleteIgnoreList("temporary");
var gold = UO.FindType(0x0EED, -1, "ground");

2. Дозволити всі забарвлення одного type – функція сценарію

Параметри та порядок виконання:

  • Видалено обидва правила роби, правило золота залишилося. Загальне правило -1,type-any іншого виду, якщо було додано, саме не видаляється.
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. Видалити тільки правило точного кольору – клас сценарію

Параметри та порядок виконання:

  • 68 = 0x0044: числові форми збігаються. Незабарвлені роби залишаються виключеними. Якщо існує ще правило цього type з hue = - 1, воно продовжить виключати і колір 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;
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: list (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: list (Any), type (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: list (Any), type (Any), color (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

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

Знаходить найближчого завантаженого mobile з одним із заданих graphic тіла. Застосовується для пошуку певного виду істоти. Предмети в скрині чи землі ця команда не шукає: їм потрібні FindType/FindList.

Параметри

  • distance — Горизонтальний радіус у клітинах включно: 5 допускає відстань 0..5. Відстань — max(abs(dx),abs(dy)), тому сусідня діагональ теж 1. За замовчуванням або за негативного числа береться UO.FindDistance(), а не безлімітний пошук. 0 залишає ту ж клітину X/Y. Чи не довжина маршруту; перешкоди та поверхи цим параметром не перевіряються.
  • type — graphic тіла mobile, не serial і не graphic предмета. Число 0..65534 або hex-рядок, наприклад 0x003B. Кілька значень об’єднуються як OR: число 5, рядок "5|6" або плоский масив чисел/числових рядків. Можна поєднати плоский масив та окремі аргументи. Порядок значень не визначає пріоритет. Нечислові токени виключаються; повністю помилкова маска не знаходить нічого. Вкладені масиви не є числами й ігноруються як помилкові елементи; багатовимірні маски не підтримуються.
  • type2 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type3 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type4 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type5 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type6 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type7 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type8 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type9 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type10 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type11 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type12 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type13 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type14 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type15 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type16 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type17 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type18 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type19 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type20 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type21 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type22 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type23 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type24 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type25 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type26 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type27 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type28 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type29 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type30 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • type31 — Додаткова необов'язкова маска type; самі форми, що з type. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.

Повернене значення

int — serial обраного mobile або 0, якщо потрібного немає. Це ID, і ні graphic/type, кількість знайдених об'єктів або true/false: використовуйте if (found != 0) { ... }, не знайдено == true. Знайдений ID можна передати UO.AddObject, UO.Attack або UO.Follow, але кожна ігрова дія викликається окремо.

Поведінка

  • Пошук читає тільки мобільні, вже завантажені клієнтом; знищені записи та Ignore виключені. Сам виклик не відкриває target, не атакує, не йде до мети і не просить сервера віддалені об'єкти.
  • Відстань - геометрична max (abs (dx), abs (dy)), не довжина маршруту. Близькість не гарантує відсутність стіни чи доступність іншого поверху. Стан може змінитися після повернення.
  • Життя, скритність та лінія огляду автоматично не перевіряються. Якщо вони важливі, використовуйте GetMobiles з aliveOnly/visibleOnly або свої перевірки. Наявність сервера статусу Enemy не робить будь-якого NPC відповідним.
  • Не змінює FindItem, FindCount або GetFoundItems. Ці поля можуть містити результати попередньої команди: використовуйте безпосередньо повернутий ID.
  • Від 2 до 32 аргументів: distance і до 31 маски type. Плоский масив дозволяє передати більше значень. Кожне наступне значення після type ще body/type, не hue або notoriety.
  • У цій команді немає фільтра Z, notoriety, раси гравця або класу одягу. Self НЕ виключається: якщо власний graphic входить в маску і self не в Ignore, можна отримати свій serial на відстані 0.
  • Вибирає найближчого; однакова відстань дозволяється меншим serial. -1/any/0xFFFF/порожня маска без конкретних типів дають 0: команда вимагає хоча б один явний type. Поруч із конкретними type wildcard ігнорується.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

var result = UO.FindAnyType(10, 0x003B);
UO.Print("FindAnyType: " + Convert.ToString(result));

1. Зберегти найближчу істоту потрібного вигляду – прямий скрипт

Параметри та порядок виконання:

  • 0x003B - body, не ID. Повернення creature - ID конкретного знайденого mobile. Команда не перевіряє Z, здоров'я чи агресивність.
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. Масив видів та додатковий вид - функція сценарію

Параметри та порядок виконання:

  • bodies та окремий 0x000C об'єднані. Якщо знайдено self, цей приклад просто пропустить дію; він шукає наступного кандидата. Для виключення self у самому запиті використовуйте відповідний фільтр 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. Повернути відстань до найближчого виду — клас сценарію

Параметри та порядок виконання:

  • body - graphic, radius - межа пошуку X/Y. Помічник повертає відстань або власний код - 1; сама UO.FindAnyType повертає serial або 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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: distance (Any), type (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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

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

Параметри: distance (Any), type (Any), type2 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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

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

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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

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

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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

UO.FindAtCoord

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

C#-сигнатури

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

Шукає завантажені об'єкти світу на одній точній клітинці X/Y поточної картки.

Параметри

  • x — світова координата по горизонталі, int 0..65535. Обов'язкова; це не пікселі вікна контейнера.
  • y — світова координата по вертикалі, int 0..65535. Обов'язкова. Додаткових параметрів Z, карти, type або радіусу немає.

Повернене значення

int — serial першого відповідного об'єкта у списку результатів цього клієнта. 0: збігів немає, персонаж відсутній/віддалений або координати поза 0..65535. Це ID об'єкта, не type, кількість або bool. Зберігаються всі 32 біта; перевіряйте != 0, не == true і не > 0. Той самий ID записується в FindItem().

Поведінка

  • Перевіряє невіддалені Item на землі та Mobile, включаючи самого персонажа на цій клітці. Вміст контейнерів та одягнені речі виключені: їх X/Y не можна вважати координатами світу. Serial зі списку Ignore виключаються.
  • Підходять усі висоти Z на заданих X/Y. FindDistance та FindVertical не обмежують цей пошук точної клітини. Видно лише завантажені об'єкти поточного світу; ландшафт, статика та інша карта не завантажуються. Пакети не надсилаються, target не відкривається, предмети не переміщуються.
  • Кожен дзвінок спочатку очищає попередній пошук. FindCount() вважає об'єкти, FindFullQuantity() підсумовує одиниці в стопках (Mobile додає одну), GetFoundItems() повертає знайдені serial. Спочатку обходяться Item, потім Mobile; всередині колекцій діє поточний порядок перерахування. Збережіть список до наступного пошуку, який замінить результати.
  • Порядок вибору та фільтри вище описують реалізацію цього клієнта.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

var result = UO.FindAtCoord(1445, 1690);
UO.Print("FindAtCoord: " + Convert.ToString(result));

1. Отримати один ID - прямий скрипт

Параметри та порядок виконання:

  • 1445 та 1690 — приклад світових X/Y: замініть їх своєю клітиною. id зберігає один serial; HEX виводить його у шістнадцятковому вигляді. != 0 перевіряє наявність результату, не кількість.
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. Переглянути всі об'єкти на клітці персонажа – функція сценарію

Параметри та порядок виконання:

  • x/y читаються у персонажа; ids зберігає список поточного пошуку. Кожен id означає один об'єкт, включаючи цілу стопку. GetType(id) читає graphic/body. Предмети не вибираються та не використовуються.
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. Повна функція CountGraphicAt - клас сценарію

Параметри та порядок виконання:

  • CountGraphicAt(x, y, graphic) один раз шукає клітинку, перебирає збережені ID і рахує об'єкти з потрібною графікою. graphic = 0x0EED - золото. Повертається кількість об'єктів/стопок, не сума одиниць та не true/false; один стос дає один. Функція повністю визначена після 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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.FindAtCoord(x, y) — UO.FindAtCoord(Any,Any)

Параметри: x (Any), y (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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

UO.FindByNotoriety

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

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

Знаходить найближчого іншого персонажа/NPC з одним із зазначених статусів notoriety. Корисна, коли потрібно спочатку вибрати супротивника, союзника або мету, що спостерігається, а вже потім окремо вирішувати, атакувати її чи слідувати за нею.

Параметри

  • distance — Горизонтальний радіус у клітинах включно: 5 допускає відстань 0..5. Відстань — max(abs(dx),abs(dy)), тому сусідня діагональ теж 1. За замовчуванням або за негативного числа береться UO.FindDistance(), а не безлімітний пошук. 0 залишає ту ж клітину X/Y. Чи не довжина маршруту; перешкоди та поверхи цим параметром не перевіряються.
  • notoriety — статус ставлення до персонажа, отриманий від сервера: 0 — невідомий, 1 — Innocent, 2 — Ally, 3 — Gray, 4 — Criminal, 5 — Enemy, 6 — Murderer, 7 — Invulnerable. Число означає один статус; "5|6" або масив чисел — будь-який із перелічених. Це не колір одягу й не клас. Від’ємне число (зазвичай -1), 0xFFFF, "any", порожній рядок або окремий порожній масив вимикають цей фільтр. Некоректний рядок без допустимих чисел не знаходить нікого. Порядок статусів не визначає пріоритет. Фільтр 5 вибирає Enemy, а не автоматично будь-якого NPC/монстра; реальні значення залежать від сервера. Кілька значень об’єднуються як OR: число 5, рядок "5|6" або плоский масив чисел/числових рядків. Можна поєднати плоский масив та окремі аргументи. Порядок значень не визначає пріоритет. Нечислові токени виключаються; повністю помилкова маска не знаходить нічого. Вкладені масиви не є числами й ігноруються як помилкові елементи; багатовимірні маски не підтримуються.
  • notoriety2 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety3 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety4 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety5 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety6 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety7 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety8 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety9 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety10 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety11 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety12 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety13 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety14 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety15 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety16 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety17 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety18 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety19 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety20 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety21 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety22 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety23 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety24 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety25 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety26 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety27 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety28 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety29 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety30 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.
  • notoriety31 - Необов'язкова додаткова маска notoriety; ті ж форми, що й у notoriety. Поєднується з попередніми через OR, не задає окремий радіус, hue, Z або пріоритет.

Повернене значення

int — serial обраного mobile або 0, якщо потрібного немає. Це ID, і ні graphic/type, кількість знайдених об'єктів або true/false: використовуйте if (found != 0) { ... }, не знайдено == true. Знайдений ID можна передати UO.AddObject, UO.Attack або UO.Follow, але кожна ігрова дія викликається окремо.

Поведінка

  • Пошук читає тільки мобільні, вже завантажені клієнтом; знищені записи та Ignore виключені. Сам виклик не відкриває target, не атакує, не йде до мети і не просить сервера віддалені об'єкти.
  • Відстань - геометрична max (abs (dx), abs (dy)), не довжина маршруту. Близькість не гарантує відсутність стіни чи доступність іншого поверху. Стан може змінитися після повернення.
  • Життя, скритність та лінія огляду автоматично не перевіряються. Якщо вони важливі, використовуйте GetMobiles з aliveOnly/visibleOnly або свої перевірки. Наявність сервера статусу Enemy не робить будь-якого NPC відповідним.
  • Не змінює FindItem, FindCount або GetFoundItems. Ці поля можуть містити результати попередньої команди: використовуйте безпосередньо повернутий ID.
  • Мінімум два аргументи: distance, notoriety. Максимум 32: радіус і до 31 маски. Для більшої кількості значень передайте плоский масив одним аргументом. Видалення фільтра: -1/any/0xFFFF/порожній рядок або порожній масив окремо. Якщо поряд зазначені конкретні коди, вони зберігають обмеження.
  • Виключає self. Дотримується UO.FindVertical() як межа різниці Z; параметра maxZ у цій команді немає. Завжди вибирає найближчого, за рівності — менший serial. Аргумент після notoriety - ще notoriety, не nearest і body.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

var result = UO.FindByNotoriety(12, "5|6");
UO.Print("FindByNotoriety: " + Convert.ToString(result));

1. Вибрати найближчу мету та зберегти її ім'я — прямий скрипт

Параметри та порядок виконання:

  • Збережений opponent можна використовувати пізніше; цей приклад не атакує. Також діє поточний FindVertical, навіть якщо ціль близька по 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. Список статусів з масиву плюс окремий код – функція сценарію

Параметри та порядок виконання:

  • allowed містить Enemy, окремий 6 додає Murderer. Статуси поєднуються, а не сортуються за пріоритетом. Приклад просить атаку одного знайденого живого mobile; правила сервера визначають допустимість.
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. Повна функція пошуку на однаковій висоті – клас сценарію

Параметри та порядок виконання:

  • radius - радіус X/Y у клітинах. FindVertical(0) вимагає однакову Z; це не перевірка поверху чи стін. Функція повертає ID/0, а Finally зберігає налаштування інших частин скрипту.
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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: distance (Any), notoriety (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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)

Параметри: 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)

Результат: int / Integer.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

C#-сигнатури

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

Читає кількість одиниць у зазначеній стопці, якщо передано ID. Форма без аргументів зберігає окреме значення: кількість об'єктів останнього пошуку.

Параметри

  • id — Serial/ID конкретного об'єкта: int, десятковий/hex-рядок або встановлений аліас self, backpack, lasttarget, lastobject або ім'я AddObject. Це не graphic/type. Необов'язковий аргумент. При переданому ID читається поточний Amount цього предмета. Аліас finditem явно вибирає перший результат пошуку. Без аргументу повертається кількість знайдених об'єктів.

Повернене значення

int: FindCount(id) - кількість одиниць у зазначеній стопці (Amount); звичайний одиночний предмет дає 1, невідомий/віддалений предмет, помилковий аліас або Mobile дають 0. FindCount() без ID - кількість об'єктів в останньому пошуку: один стос вважається одним об'єктом незалежно від Amount. Наприклад, три стоси по 20, 50 і 100: FindCount()=3, FindCount(ID другий стоси) =50, FindFullQuantity()=170.

Поведінка

  • FindCount(id) еквівалентна читання GetQuantity(id), не запускає пошук і не змінює FindItem/FindCount()/FindFullQuantity/GetFoundItems.
  • ID означає serial конкретного предмета, не type. Зміна кількості відображається за наступного виклику FindCount(id). Кількість у віддаленому предметі дорівнює 0; це не автоматичний пошук іншої стопки.
  • Вихідна сумісність без аргументів збережена: FindCount() рахує об'єкти. FindQuantity() читає один знайдений стос, FindFullQuantity() підсумовує одиниці за останнім пошуком.
  • Дані належать до останнього звичайного пошуку цього скрипта. FindType з 1–5 аргументами, FindTypeEx, Count/CountEx/CountGround замінюють результати. Розширені фільтровані команди персонажів не повинні змінювати цей знімок.
  • Новий пошук без збігів обнуляє FindItem, FindCount та FindFullQuantity та очищує GetFoundItems. Читання результату саме собою новий пошук не запускає.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

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

1. Кількість у конкретній стопці по ID — прямий скрипт

Параметри та порядок виконання:

  • id=0x40001234 - приклад serial стоси. Замініть своїм ID предмета.
  • Стопка з 50 одиниць поверне 50; одиночний предмет - 1; невідомий ID - 0.
var amount = UO.FindCount("0x40001234");
UO.Print("Units: " + Convert.ToString(amount));

2. Знайти предмет та прочитати його кількість – функція сценарію

Параметри та порядок виконання:

  • FindType отримує type золота 0x0EED, будь-який hue=-1, область backpack і повертає serial.
  • У FindCount передається повернутий serial item. Сам type 0x0EED сюди передавати не можна.
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. Кількість в останній меті та в збереженому імені – клас сценарію

Параметри та порядок виконання:

  • lasttarget повинен вказувати на предмет. AddObject зберігає цей serial під ім'ям selected_stack.
  • FindCount дозволяє ім'я в ID і читає Amount. Якщо вибрано ціль-персонаж, повертається 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. Виміряти результат пошуку золота – прямий скрипт

Параметри та порядок виконання:

  • type=0x0EED - золото; color=-1 - будь-який hue; backpack — лише прямий вміст рюкзака у цій формі FindType.
  • int — кількість знайдених items/персонажів, 0 без збігів. Одна стопка з 1000 одиниць вважається одним об'єктом. Не сума одиниць, нею потрібен FindFullQuantity.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindCount();
UO.Print(Convert.ToString(value));

5. Порівняти предмети та одиниці - функція сценарію

Параметри та порядок виконання:

  • Усі чотири читання відносяться до одного пошуку, доки між ними не викликано іншого пошуку.
  • Наприклад, дві стопки по 50: Items = 2, First stack = 50, All units = 100; First ID містить унікальний ID однієї стопки.
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. Зберегти результат до наступного пошуку – клас сценарію

Параметри та порядок виконання:

  • Перший type - золото, другий 0x0F7A - окремий тип реагенту. Нова команда змінює спільний знімок.
  • saved залишається числом із першого пошуку. Друге читання відноситься до реагента навіть за відсутності збігів.
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;
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.FindCount() — UO.FindCount()

Параметри: Немає параметрів.

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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

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

Параметри: id (Any)

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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

UO.FindDistance

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

C#-сигнатури

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

Читає або змінює за замовчуванням горизонтальний радіус пошуку.

Параметри

  • value - Необов'язковий int. Без аргументу читання; value - встановлення. Значення обмежується діапазоном 0..255; негативне стає 0, а не безлімітом. У новому runtime: 18; відновлений стан може містити інше значення. Дробова кількість усікається до нуля; допустимі також числові рядки double/0x. Використовуйте int, щоб уникнути неявного перетворення.

Повернене значення

Без аргументів: int — поточна межа (відстань у клітинах), не знайдена ID, кількість об'єктів або bool. 0 означає нульову межу, а не невдачу. З value: void - значення немає; це не true/false і не колишнє налаштування. Після встановлення прочитайте FindDistance(), щоб дізнатися збережене значення.

Поведінка

  • Відстань: max(abs(dx), abs(dy)) від поточної точки відліку дальності клієнта; діагональна клітина вважається однією. Кордон вмикається. При 0 підходять лише об'єкти тих самих X/Y. Для мобільних відстань враховує кінцеву позицію черги кроків.
  • Налаштування зберігається в runtime поточного скрипта; Його процедури використовують одне значення. У незалежних runtime налаштування окремі. Читання та запис не запускають пошук, не очищають FindItem/FindCount/GetFoundItems, не відправляють пакет, не рухають персонажа та не завантажують дальні об'єкти.
  • FindTypeEx та FindTypesArrayEx використовують ці межі при пошуку на землі, але не всередині контейнера. Залишаються фільтри type, hue, Ignore та наявність завантаженого об'єкта. FindAtCoord ігнорує обидві межі. У розширених командах явні distance/maxZ можуть замінити налаштування; -1 у таких параметрах означає взяти налаштування, на відміну від установки самого налаштування -1. FindList також фільтрує Z під час пошуку в контейнерах; зазначений виняток контейнерів на нього не поширюється.
  • Перед тимчасовим пошуком збережіть значення та відновіть його у Finally. Встановлення автоматично не скасовується. Finally працює при звичайному завершенні та перехоплюваній помилці скрипту; аварійну зупинку не можна використовувати як механізм очищення.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

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

1. Читання, встановлення та обмеження діапазону – прямий скрипт

Параметри та порядок виконання:

  • previous зберігає фактичне налаштування. value:=5 задає звичайну межу; 1000 показує обмеження до 255. Print читає результат окремим дзвінком без аргументу. Finally відновлює previous.
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. Тимчасовий пошук на землі – функція сценарію

Параметри та порядок виконання:

  • previous зберігає налаштування коду, що викликає. 5 змінює тільки FindDistance; друга межа залишається незмінною. "0x0EED" - графіка золота, - "1" - будь-який "hue", Container = - "1" - світ, "false" - без рекурсії контейнерів. id - один serial; != 0 перевіряє наявність. FindCount вважає цілі об'єкти/стопки. Finally відновлює налаштування, а не перелік результатів.
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. Повна функція CountGroundInRange - клас сценарію

Параметри та порядок виконання:

  • CountGroundInRange(graphic, radius, height) зберігає обидві межі, задає radius=5 і height=10, шукає graphic=0x0EED і повертає FindCount(). Стопка вважається одним об'єктом. Повна функція наведена після Main. Finally відновлює обидві межі навіть у виході через return; результат пошуку залишається доступним.
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);
        }
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.FindDistance() — UO.FindDistance()

Параметри: Немає параметрів.

Результат: int / Integer.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

case "finddistance":

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

                    return new InjectionValue(bridge.GetFindDistance());

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

Параметри: value (Any)

Результат: void / Unit.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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 · 繁體中文 · 日本語 · 한국어

C#-сигнатури

dynamic UO.FindFullQuantity();

Читає загальну кількість одиниць у знімку останнього пошуку.

Параметри

Параметрів немає.

Повернене значення

int - сума max(1, Amount) знайдених предметів; кожен знайдений персонаж додає 1. 0 без збігів. Дві стоси по 50 дають 100, а FindCount дасть ?2?. Це знімок на момент пошуку, не завжди оновлювана сума.

Поведінка

  • Дані належать до останнього звичайного пошуку цього скрипта. FindType з 1–5 аргументами, FindTypeEx, Count/CountEx/CountGround замінюють результати. Розширені фільтровані команди персонажів не повинні змінювати цей знімок.
  • Новий пошук без збігів обнуляє FindItem, FindCount та FindFullQuantity та очищує GetFoundItems. Читання результату саме собою новий пошук не запускає.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

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

1. Виміряти результат пошуку золота – прямий скрипт

Параметри та порядок виконання:

  • type=0x0EED - золото; color=-1 - будь-який hue; backpack — лише прямий вміст рюкзака у цій формі FindType.
  • int - сума max(1, Amount) знайдених предметів; кожен знайдений персонаж додає 1. 0 без збігів. Дві стоси по 50 дають 100, а FindCount дасть ?2?. Це знімок на момент пошуку, не завжди оновлювана сума.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindFullQuantity();
UO.Print(Convert.ToString(value));

2. Порівняти предмети та одиниці - функція сценарію

Параметри та порядок виконання:

  • Усі чотири читання відносяться до одного пошуку, доки між ними не викликано іншого пошуку.
  • Наприклад, дві стопки по 50: Items = 2, First stack = 50, All units = 100; First ID містить унікальний ID однієї стопки.
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. Зберегти результат до наступного пошуку – клас сценарію

Параметри та порядок виконання:

  • Перший type - золото, другий 0x0F7A - окремий тип реагенту. Нова команда змінює спільний знімок.
  • saved залишається числом із першого пошуку. Друге читання відноситься до реагента навіть за відсутності збігів.
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;
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.FindFullQuantity() — UO.FindFullQuantity()

Параметри: Немає параметрів.

Результат: dynamic / Any.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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

UO.FindItem

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

C#-сигнатури

dynamic UO.FindItem();

Читає serial першого результату останнього звичайного пошуку.

Параметри

Параметрів немає.

Повернене значення

int — serial/ID першого знайденого об'єкта, 0 за відсутності результату. Це числовий serial, тоді як FindType повертає hex-рядок або порожній рядок. Чи не повертає type.

Поведінка

  • Дані належать до останнього звичайного пошуку цього скрипта. FindType з 1–5 аргументами, FindTypeEx, Count/CountEx/CountGround замінюють результати. Розширені фільтровані команди персонажів не повинні змінювати цей знімок.
  • Новий пошук без збігів обнуляє FindItem, FindCount та FindFullQuantity та очищує GetFoundItems. Читання результату саме собою новий пошук не запускає.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

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

1. Виміряти результат пошуку золота – прямий скрипт

Параметри та порядок виконання:

  • type=0x0EED - золото; color=-1 - будь-який hue; backpack — лише прямий вміст рюкзака у цій формі FindType.
  • int — serial/ID першого знайденого об'єкта, 0 за відсутності результату. Це числовий serial, тоді як FindType повертає hex-рядок або порожній рядок. Чи не повертає type.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindItem();
UO.Print(Convert.ToString(value));

2. Порівняти предмети та одиниці - функція сценарію

Параметри та порядок виконання:

  • Усі чотири читання відносяться до одного пошуку, доки між ними не викликано іншого пошуку.
  • Наприклад, дві стопки по 50: Items = 2, First stack = 50, All units = 100; First ID містить унікальний ID однієї стопки.
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. Зберегти результат до наступного пошуку – клас сценарію

Параметри та порядок виконання:

  • Перший type - золото, другий 0x0F7A - окремий тип реагенту. Нова команда змінює спільний знімок.
  • saved залишається числом із першого пошуку. Друге читання відноситься до реагента навіть за відсутності збігів.
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;
    }
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

UO.FindItem() — UO.FindItem()

Параметри: Немає параметрів.

Результат: dynamic / Any.

Під час виклику:

Внутрішній код реалізації, не самостійний скрипт.

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

UO.FindList

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

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

Шукає завантажені предмети або mobiles за декількома type/hue. Повертає перший serial рядком та зберігає весь упорядкований результат для FindItem, FindCount та GetFoundItems.

Параметри

  • list — Ім'я непустого набору AddFindList; або плоский масив числових type; або рядок типів з роздільниками |, кома, точка з комою або пробіл, наприклад "0x0EED|0x0F7A". Масив/рядок типів використовують будь-який hue. Пари [type,hue] всередині масиву не підтримуються; для hue створіть іменований набір. Порядок записів визначає пріоритет. Graphic/type предмета чи body mobile, а чи не його serial. Зазвичай int 0..65535, включаючи 0x0EED; -1 або 0xFFFF означають будь-який type при пошуку. Вказуйте значення на запис. Декілька типів додаються окремими дзвінками.
  • container — За замовчуванням -1: речі, чий кореневий контейнер — персонаж (у тому числі вкладені сумки та екіпірування). "my" = -1. ground, "ground", UO.Ground(), числові 0 або 1 вибирають світ: предмети на землі та mobiles, крім self. "backpack" або serial контейнера > 1 шукають тільки прямий вміст, без рекурсії. Об'єктний аліас дозволяється як serial; невірний аліас може дати 0, тому перевірте його через GetSerial заздалегідь.
  • distance - Невід'ємний радіус клітин по max(abs(dx),abs(dy)); діагональ - одна клітина. Чинить на пошук ground; прямий вміст контейнера на відстані не обмежується. За замовчуванням та за негативного аргументу береться UO.FindDistance(). 0 - ті ж X/Y.
  • notoriety — За замовчуванням1будь-який код. Одне число, рядок "5|6або плоский масив чисел задають дозволені коди mobiles; при такому фільтрі Items виключені. 0 невідомо, 1 innocent, 2 ally, 3 gray, 4 criminal, 5 enemy, 6 murderer, 7 invulnerable; сенс відносин ставить сервер. Порожня маска/any/-1 без конкретних кодів не обмежує. При змішуванні wildcard і кодів конкретні коди залишаються обмеженням. Нечислові токени ігноруються поруч із коректними; маска тільки з помилкових токенів не знаходить нічого.
  • nearest — За замовчуванням false. false/0: спочатку пріоритет запису list, потім менший serial. true/1: спочатку відстань, потім пріоритет запису, потім serial. Це порядок, а чи не додатковий фільтр.
  • maxZ — Допустима абсолютна відмінність Z від персонажа включно. За умовчанням або за негативного аргументу використовується UO.FindVertical(); 0 допускає лише однакову Z. Для явного serial контейнера >1 береться Z завантаженого контейнера (якщо його немає - Z речі); для інших режимів - Z кандидата. Координати речі в Gump не є висотою світу.
  • includeIgnored — За замовчуванням false: serial з Ignore даного runtime виключаються. true/1 включає їх тільки в цей пошук і не очищує Ignore.

Повернене значення

string: hex-serial першого результату (наприклад "0x40000011") або порожній рядок "" за відсутності збігів. Це ID, не type, кількість і не bool: перевіряйте result != "", а не result == true. При нормальному непустому запиті "FindItem" зберігає той же "ID" числом, "FindCount" () - число distinct об'єктів, "GetFoundItems" () - масив їх числових "serial".

Поведінка

  • Від 1 до 7 позиційних аргументів; пропускати можна лише хвіст. Щоб встановити maxZ, явно передайте попередні аргументи. Пошук синхронний за локально завантаженим станом: не відкриває контейнер, не підвантажує вміст, не перевіряє лінію огляду/доступність та не атакує.
  • Кожен об'єкт включається один раз, навіть якщо збігся з кількома правилами. Його пріоритет - перший збіг запис. Невідоме ім'я намагається розбиратися як рядок типів; нечитаний type/hue викликає помилку перетворення.
  • Непустий запит очищає попередні FindItem/FindCount/GetFoundItems до відбору; відсутність збігів залишає порожні результати. Виняток: порожній масив або порожній рядок list повертають до звернення до пошуку і зберігають колишні результати. Не рахуйте FindCount після такого виклику новим результатом.
  • Зміна визначень AddFindList/ClearFindList/DeleteFindList не змінює знайдений набір. Інший пошук у цьому runtime замінює FindItem та загальний масив, тому зберігайте GetFoundItems перед вкладеним пошуком.
  • Визначення перебувають у стані даного скриптового runtime. Самостійний інший runtime має свій набір; закриття вікна IDE не є очищенням цих правил. Це не файл налаштувань та не список глобальних об'єктів гри.
  • AddFindList дописує запис до кінця; повторення не видаляються. Для повторної підготовки свого набору спершу викликайте ClearFindList("ім'я"). Зміна визначень не очищає вже отримані FindItem/FindCount/GetFoundItems.
  • Запис зберігає текстові поля. Числовий літерал "0x0EED" зберігається як "3821", рядок "0x0EED" - як "0x0EED". Пошук перетворює обидва варіанти на число, а DeleteFindList порівнює саме збережений текст. Використовуйте однакову форму при додаванні та видаленні.
  • Невідоме ім'я в FindList не є порожнім зареєстрованим набором: двигун намагається розібрати його як список числових типів. Число ім'я викликає помилку перетворення. Після видалення останнього запису створіть новий набір до пошуку цього імені.

Самостійні C#-скрипти

Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.

Простий приклад

Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.

Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.

var result = UO.FindList(new[] { 0x0EED }, "backpack");
UO.Print("FindList: " + Convert.ToString(result));

1. Вибрати ресурс за пріоритетом і перенести один стос - прямий скрипт

Параметри та порядок виконання:

  • За false золото має пріоритет перед другим type навіть на більшій відстані. Радіус 2 і maxZ=5 обмежують кандидатів; вони не гарантують права підняти річ.
  • Це реальна ігрова дія: переноситься лише перший знайдений об'єкт. Результат MoveItem не означає підтвердження сервером всього переміщення.
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. Зберегти найближчого mobile із двох notoriety — функція сценарію

Параметри та порядок виконання:

  • Сім параметрів: два body, світ, радіус 12, коди 5 або 6, найближчий першим, різниця Z не більше 10, ігноровані виключені. Тут лише вибір та збереження; атакуючий скрипт повинен окремо перевірити відповідні умови.
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. Порахувати запаси кількох типів із масиву – клас сценарію

Параметри та порядок виконання:

  • оголошення змінної types[1] створює індекси 0 і 1 у цьому движку. Підсумовуються одиниці двох видів, а чи не число стосів. backpack обмежений прямим вмістом; вкладені сумки сюди не входять.
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;
}

Реалізація команди

C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.

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

Параметри: list (Any)

Результат: string / String.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindList(values))

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

Параметри: list (Any), container (Any)

Результат: string / String.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindList(values))

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

Параметри: list (Any), container (Any), distance (Any)

Результат: string / String.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindList(values))

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

Параметри: list (Any), container (Any), distance (Any), notoriety (Any)

Результат: string / String.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindList(values))

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

Параметри: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any)

Результат: string / String.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindList(values))

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

Параметри: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any)

Результат: string / String.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindList(values))

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

Параметри: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any), includeIgnored (Any)

Результат: string / String.

Під час виклику:

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindList(values))

Clone this wiki locally