Skip to content

UO Topic mouse keyboard

Codex edited this page Oct 12, 2026 · 6 revisions

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

Миша та клавіатура

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

Натискання кнопок миші та клавіш. Екранні координати, координати в ігровому вікні й координати світу вимірюються по-різному; потрібну систему вказано в параметрах команди.

Розділи

Тема Команди та пояснення
Натискання миші UO.Click
Ліва кнопка миші UO.LClick
Права кнопка миші UO.RClick
Подвійне натискання UO.LDblClick · UO.RDblClick
Натискання клавіші UO.KeyPress
Імітація натискання UO.Press

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

Введення

UO.Click · UO.LClick · UO.RClick · UO.LDblClick · UO.RDblClick · UO.KeyPress · UO.Press

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

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

UO.LClick

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

UO.LClick(100, 100);

UO.KeyPress

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

UO.KeyPress(0x70);

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


UO.Click

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

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

void UO.Click(object? name);

Відправляє одиночне клацання по об'єкту через GameActions.SingleClick.

Параметри

  • name — Serial об'єкта або підтримуване ім'я self/backpack/lasttarget/збереженого об'єкта; числові рядки та 0x-рядки дозволяються runtime.

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

void - значення, що повертається немає.

Поведінка

  • Click дозволяє посилання через ObjectChecked. ClickOnObject спочатку використовує Arg для serial і викликає Click(int). Це запит підпису/інформації об'єкта, а не DoubleClick та не використання предмета. Серверна відповідь надходить асинхронно.

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

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

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

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

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

UO.Print("Calling UO.Click");
UO.Click("self");

1. Клацнути по персонажу - прямий скрипт

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

  • Одиночне клацання вирушає self.
UO.Click("self");

2. Натиснути на останню мету — функція сценарію

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

  • Перед відправкою перевіряється локальне існування цілі.
return  RunScenario();
 object? RunScenario()
{
    var target = UO.LastTarget();
    if (Truth(UO.Exists(target)))
    {
        UO.Click(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. Натиснути на рюкзак — клас сценарію

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

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

     public object? RunScenario()
    {
        var bag = UO.Backpack();
        if (Truth(bag != 0))
        {
            UO.Click(bag);
        }

        return null;
    }

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

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

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

UO.Click(name) — UO.Click(Any)

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

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

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

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

public void Click(InjectionValue name) => ObjectChecked(name, id => Click(id));

UO.KeyPress

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

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

void UO.KeyPress(object? key);
void UO.KeyPress(object? key, object? count);
void UO.KeyPress(object? key, object? count, object? delay);

Синтезує одне чи кілька натискань virtual-key.

Параметри

  • key - int virtual-key Windows, наводиться до byte. Це не рядок символу та не ID target.
  • count — Необов'язкова кількість повторів за промовчанням 1. 0/негативне — жодного натискання та очікування.
  • delay — Необов'язкова пауза мілісекунд після кожного натискання, включаючи останнє; за замовчуванням 105. Надсилається bridge.Wait без додаткового обмеження цією функцією.

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

void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.

Поведінка

  • Press пересилає всі форми KeyPress. KeyPress виконує цикл count>0: bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge відправляє user32 keybd_event вниз/вгору.
  • Потрібен відкритий графічний ClassicUO з ​​фокусом введення; інакше RequireGameInput кидає помилку. Натискання обробляє поточний інтерфейс/макро, результат серверної команди не повертається.

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

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

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

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

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

UO.Print("Calling UO.KeyPress");
UO.KeyPress(0x70);

1. Прямий виклик – прямий скрипт

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

  • Синтезує одне чи кілька натискань virtual-key.
UO.KeyPress(0x70);

2. Явний варіант – функція сценарію

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

  • Press пересилає всі форми KeyPress. KeyPress виконує цикл count>0: bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge відправляє user32 keybd_event вниз/вгору.
return  RunScenario();
 object? RunScenario()
{
    UO.KeyPress(0x70, 2, 250);
    return null;
}

3. Повна допоміжна функція – клас сценарію

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

  • Потрібен відкритий графічний ClassicUO з ​​фокусом введення; інакше RequireGameInput кидає помилку. Натискання обробляє поточний інтерфейс/макро, результат серверної команди не повертається.
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.KeyPress(0x70, 0);
        UO.Print("Zero count sends no key");
        return null;
    }
}

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

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

UO.KeyPress(key) — UO.KeyPress(Integer)

Параметри: key (Integer)

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

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

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

public void KeyPress(int key) => KeyPress(key, 1);

UO.KeyPress(key, count) — UO.KeyPress(Integer,Integer)

Параметри: key (Integer), count (Integer)

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

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

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

public void KeyPress(int key, int count) => KeyPress(key, count, 105);

UO.KeyPress(key, count, delay) — UO.KeyPress(Integer,Integer,Integer)

Параметри: key (Integer), count (Integer), delay (Integer)

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

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

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

public void KeyPress(int key, int count, int delay)

        {

            while (count > 0)

            {

                bridge.KeyPress(key);

                bridge.Wait(delay);

                count--;

            }

        }

UO.LClick

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

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

void UO.LClick(object? x, object? y);

Синтезує поодиноке натискання миші: ліва кнопка.

Параметри

  • x — int X у пікселях вікна ClassicUO, не світова координата.
  • y — int Y у пікселях вікна ClassicUO, не світова координата.

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

void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.

Поведінка

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім один раз MouseButton down/up. Пауза між подвійними кліками не додається.
  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.

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

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

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

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

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

UO.Print("Calling UO.LClick");
UO.LClick(100, 100);

1. Прямий виклик – прямий скрипт

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

  • Синтезує поодиноке натискання миші: ліва кнопка.
UO.LClick(100, 100);

2. Явний варіант – функція сценарію

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

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім один раз MouseButton down/up. Пауза між подвійними кліками не додається.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.LClick(x, y);
    return null;
}

3. Повна допоміжна функція – клас сценарію

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

  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.LClick(x, y);
    }
}

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

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

UO.LClick(x, y) — UO.LClick(Integer,Integer)

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

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

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

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

public void LClick(int x, int y) => bridge.LClick(x, y);

UO.LDblClick

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

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

void UO.LDblClick(object? x, object? y);

Синтезує подвійне натискання миші: ліва кнопка.

Параметри

  • x — int X у пікселях вікна ClassicUO, не світова координата.
  • y — int Y у пікселях вікна ClassicUO, не світова координата.

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

void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.

Поведінка

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім двічі MouseButton down/up. Пауза між подвійними кліками не додається.
  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.

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

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

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

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

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

UO.Print("Calling UO.LDblClick");
UO.LDblClick(100, 100);

1. Прямий виклик – прямий скрипт

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

  • Синтезує подвійне натискання миші: ліва кнопка.
UO.LDblClick(100, 100);

2. Явний варіант – функція сценарію

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

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім двічі MouseButton down/up. Пауза між подвійними кліками не додається.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.LDblClick(x, y);
    return null;
}

3. Повна допоміжна функція – клас сценарію

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

  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.LDblClick(x, y);
    }
}

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

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

UO.LDblClick(x, y) — UO.LDblClick(Integer,Integer)

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

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

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

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

public void LDblClick(int x, int y) => bridge.LDblClick(x, y);

UO.Press

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

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

void UO.Press(object? key);
void UO.Press(object? key, object? count);
void UO.Press(object? key, object? count, object? delay);

Синтезує одне чи кілька натискань virtual-key.

Параметри

  • key - int virtual-key Windows, наводиться до byte. Це не рядок символу та не ID target.
  • count — Необов'язкова кількість повторів за промовчанням 1. 0/негативне — жодного натискання та очікування.
  • delay — Необов'язкова пауза мілісекунд після кожного натискання, включаючи останнє; за замовчуванням 105. Надсилається bridge.Wait без додаткового обмеження цією функцією.

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

void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.

Поведінка

  • Press пересилає всі форми KeyPress. KeyPress виконує цикл count>0: bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge відправляє user32 keybd_event вниз/вгору.
  • Потрібен відкритий графічний ClassicUO з ​​фокусом введення; інакше RequireGameInput кидає помилку. Натискання обробляє поточний інтерфейс/макро, результат серверної команди не повертається.

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

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

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

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

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

UO.Print("Calling UO.Press");
UO.Press(0x70);

1. Прямий виклик – прямий скрипт

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

  • Синтезує одне чи кілька натискань virtual-key.
UO.Press(0x70);

2. Явний варіант – функція сценарію

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

  • Press пересилає всі форми KeyPress. KeyPress виконує цикл count>0: bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge відправляє user32 keybd_event вниз/вгору.
return  RunScenario();
 object? RunScenario()
{
    UO.Press(0x70, 2, 250);
    return null;
}

3. Повна допоміжна функція – клас сценарію

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

  • Потрібен відкритий графічний ClassicUO з ​​фокусом введення; інакше RequireGameInput кидає помилку. Натискання обробляє поточний інтерфейс/макро, результат серверної команди не повертається.
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.Press(0x70, 0);
        UO.Print("Zero count sends no key");
        return null;
    }
}

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

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

UO.Press(key) — UO.Press(Integer)

Параметри: key (Integer)

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

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

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

public void Press(int key) => KeyPress(key);

UO.Press(key, count) — UO.Press(Integer,Integer)

Параметри: key (Integer), count (Integer)

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

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

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

public void Press(int key, int count) => KeyPress(key, count);

UO.Press(key, count, delay) — UO.Press(Integer,Integer,Integer)

Параметри: key (Integer), count (Integer), delay (Integer)

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

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

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

public void Press(int key, int count, int delay) => KeyPress(key, count, delay);

UO.RClick

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

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

void UO.RClick(object? x, object? y);

Синтезує одиночний натиск миші: права кнопка.

Параметри

  • x — int X у пікселях вікна ClassicUO, не світова координата.
  • y — int Y у пікселях вікна ClassicUO, не світова координата.

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

void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.

Поведінка

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім один раз MouseButton down/up. Пауза між подвійними кліками не додається.
  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.

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

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

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

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

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

UO.Print("Calling UO.RClick");
UO.RClick(100, 100);

1. Прямий виклик – прямий скрипт

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

  • Синтезує одиночний натиск миші: права кнопка.
UO.RClick(100, 100);

2. Явний варіант – функція сценарію

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

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім один раз MouseButton down/up. Пауза між подвійними кліками не додається.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.RClick(x, y);
    return null;
}

3. Повна допоміжна функція – клас сценарію

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

  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.RClick(x, y);
    }
}

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

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

UO.RClick(x, y) — UO.RClick(Integer,Integer)

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

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

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

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

public void RClick(int x, int y) => bridge.RClick(x, y);

UO.RDblClick

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

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

void UO.RDblClick(object? x, object? y);

Синтезує подвійне натискання миші: права кнопка.

Параметри

  • x — int X у пікселях вікна ClassicUO, не світова координата.
  • y — int Y у пікселях вікна ClassicUO, не світова координата.

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

void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.

Поведінка

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім двічі MouseButton down/up. Пауза між подвійними кліками не додається.
  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.

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

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

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

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

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

UO.Print("Calling UO.RDblClick");
UO.RDblClick(100, 100);

1. Прямий виклик – прямий скрипт

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

  • Синтезує подвійне натискання миші: права кнопка.
UO.RDblClick(100, 100);

2. Явний варіант – функція сценарію

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

  • Bridge викликає WarpMouse(x,y), оновлює Mouse.Position та SDL_WarpMouseInWindow, потім двічі MouseButton down/up. Пауза між подвійними кліками не додається.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.RDblClick(x, y);
    return null;
}

3. Повна допоміжна функція – клас сценарію

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

  • Потрібне відкрите графічне вікно ClassicUO із фокусом введення; інакше RequireGameInput кидає InvalidOperationException. user32 mouse_event доступний на Windows. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.RDblClick(x, y);
    }
}

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

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

UO.RDblClick(x, y) — UO.RDblClick(Integer,Integer)

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

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

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

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

public void RDblClick(int x, int y) => bridge.RDblClick(x, y);

Clone this wiki locally