Repository navigation
UO Topic mouse keyboard
Українська · Русский · 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(100, 100);Параметри, результат та всі сценарії
UO.KeyPress(0x70);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Click(object? name);Відправляє одиночне клацання по об'єкту через GameActions.SingleClick.
-
name— Serial об'єкта або підтримуване ім'я self/backpack/lasttarget/збереженого об'єкта; числові рядки та 0x-рядки дозволяються runtime.
void - значення, що повертається немає.
- Click дозволяє посилання через ObjectChecked. ClickOnObject спочатку використовує Arg для serial і викликає Click(int). Це запит підпису/інформації об'єкта, а не DoubleClick та не використання предмета. Серверна відповідь надходить асинхронно.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.Click");
UO.Click("self");Параметри та порядок виконання:
- Одиночне клацання вирушає self.
UO.Click("self");Параметри та порядок виконання:
- Перед відправкою перевіряється локальне існування цілі.
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;Параметри та порядок виконання:
- Одиночне клацання по рюкзаку не відкриває його як подвійне клацання.
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.
Параметри: name (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.Click. -
InjectionScript.Runtime.InjectionApiUO.ObjectChecked:ObjectChecked(name, id => Click(id)). -
InjectionScript.Runtime.InjectionApiUO.Click:Click(id).
Внутрішній код реалізації, не самостійний скрипт.
public void Click(InjectionValue name) => ObjectChecked(name, id => Click(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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 кидає помилку. Натискання обробляє поточний інтерфейс/макро, результат серверної команди не повертається.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.KeyPress");
UO.KeyPress(0x70);Параметри та порядок виконання:
- Синтезує одне чи кілька натискань virtual-key.
UO.KeyPress(0x70);Параметри та порядок виконання:
- 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;
}Параметри та порядок виконання:
- Потрібен відкритий графічний 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.
Параметри: key (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, 1).
Внутрішній код реалізації, не самостійний скрипт.
public void KeyPress(int key) => KeyPress(key, 1);Параметри: key (Integer), count (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count, 105).
Внутрішній код реалізації, не самостійний скрипт.
public void KeyPress(int key, int count) => KeyPress(key, count, 105);Параметри: key (Integer), count (Integer), delay (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.KeyPress:bridge.KeyPress(key). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Wait:bridge.Wait(delay).
Внутрішній код реалізації, не самостійний скрипт.
public void KeyPress(int key, int count, int delay)
{
while (count > 0)
{
bridge.KeyPress(key);
bridge.Wait(delay);
count--;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.LClick");
UO.LClick(100, 100);Параметри та порядок виконання:
- Синтезує поодиноке натискання миші: ліва кнопка.
UO.LClick(100, 100);Параметри та порядок виконання:
- 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;
}Параметри та порядок виконання:
- Потрібне відкрите графічне вікно 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.
Параметри: x (Integer), y (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.LClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LClick:bridge.LClick(x, y).
Внутрішній код реалізації, не самостійний скрипт.
public void LClick(int x, int y) => bridge.LClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.LDblClick");
UO.LDblClick(100, 100);Параметри та порядок виконання:
- Синтезує подвійне натискання миші: ліва кнопка.
UO.LDblClick(100, 100);Параметри та порядок виконання:
- 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;
}Параметри та порядок виконання:
- Потрібне відкрите графічне вікно 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.
Параметри: x (Integer), y (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.LDblClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LDblClick:bridge.LDblClick(x, y).
Внутрішній код реалізації, не самостійний скрипт.
public void LDblClick(int x, int y) => bridge.LDblClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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 кидає помилку. Натискання обробляє поточний інтерфейс/макро, результат серверної команди не повертається.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.Press");
UO.Press(0x70);Параметри та порядок виконання:
- Синтезує одне чи кілька натискань virtual-key.
UO.Press(0x70);Параметри та порядок виконання:
- 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;
}Параметри та порядок виконання:
- Потрібен відкритий графічний 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.
Параметри: key (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key).
Внутрішній код реалізації, не самостійний скрипт.
public void Press(int key) => KeyPress(key);Параметри: key (Integer), count (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count).
Внутрішній код реалізації, не самостійний скрипт.
public void Press(int key, int count) => KeyPress(key, count);Параметри: key (Integer), count (Integer), delay (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count, delay).
Внутрішній код реалізації, не самостійний скрипт.
public void Press(int key, int count, int delay) => KeyPress(key, count, delay);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.RClick");
UO.RClick(100, 100);Параметри та порядок виконання:
- Синтезує одиночний натиск миші: права кнопка.
UO.RClick(100, 100);Параметри та порядок виконання:
- 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;
}Параметри та порядок виконання:
- Потрібне відкрите графічне вікно 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.
Параметри: x (Integer), y (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.RClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RClick:bridge.RClick(x, y).
Внутрішній код реалізації, не самостійний скрипт.
public void RClick(int x, int y) => bridge.RClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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. Кнопка/об'єкт під точкою залежить від поточного інтерфейсу.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.RDblClick");
UO.RDblClick(100, 100);Параметри та порядок виконання:
- Синтезує подвійне натискання миші: права кнопка.
UO.RDblClick(100, 100);Параметри та порядок виконання:
- 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;
}Параметри та порядок виконання:
- Потрібне відкрите графічне вікно 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.
Параметри: x (Integer), y (Integer)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.RDblClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RDblClick:bridge.RDblClick(x, y).
Внутрішній код реалізації, не самостійний скрипт.
public void RDblClick(int x, int y) => bridge.RDblClick(x, y);ClassicUO — Bad Newbie & C# Scripts IDE