Repository navigation
UO Topic boats
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Головна · C# · IDE · Команди UO · За абеткою · Приклади · Мови
Керування рухом і зупинкою човна. Команда діє лише тоді, коли персонаж може керувати відповідним човном і сервер підтримує цю дію.
| Тема | Команди та пояснення |
|---|---|
| Рух човна | UO.MoveBoat |
| Зупинка човна | UO.StopBoat |
Нижче наведено короткі приклади. У повному описі кожної команди є параметри, результат, обмеження та кілька самостійних скриптів: прямий код, варіант із функцією та варіант із класом.
Параметри, результат та всі сценарії
UO.MoveBoat(0, 1);Параметри, результат та всі сценарії
UO.StopBoat();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.MoveBoat(object? arg0, object? arg1);Запитує напрямок та швидкість руху човна.
-
Direction- int, молодші 3 біта задають напрямок 0..7: N,NE,E,SE,S,SW,W,NW. -
Speed— int, обмежується до 0..255 і наводиться до byte; 0 — запит на зупинку. Код протоколу, не швидкість клітинах/секунду.
void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.
- Bridge.MoveBoat викликає BoatMovingManager.MoveRequest((Direction)(direction&7), clamp(speed,0,255)). Поточний човен та право керування визначаються клієнтом/сервером.
- Не переміщає персонажа Pathfinder, не чекає кроку і не повертає координати човна. Сервер може відхилити запит.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.MoveBoat");
UO.MoveBoat(0, 1);Параметри та порядок виконання:
- Запитує напрямок та швидкість руху човна.
UO.MoveBoat(0, 1);Параметри та порядок виконання:
- Bridge.MoveBoat викликає BoatMovingManager.MoveRequest((Direction)(direction&7), clamp(speed,0,255)). Поточний човен та право керування визначаються клієнтом/сервером.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.MoveBoat(2, 1);
UO.Wait(500);
UO.StopBoat();
return null;
}Параметри та порядок виконання:
- Не переміщає персонажа Pathfinder, не чекає кроку і не повертає координати човна. Сервер може відхилити запит.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.MoveBoat(0, 0);
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.StopBoat();Запитує зупинку руху човна.
Параметрів немає.
void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.
- StopBoat викликає BoatMovingManager.MoveRequest з напрямком Player.Direction (або North без Player) та speed=0. Запит не повертає серверне положення човна.
- У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.StopBoat");
UO.StopBoat();Параметри та порядок виконання:
- Запитує зупинку руху човна.
UO.StopBoat();Параметри та порядок виконання:
- StopBoat викликає BoatMovingManager.MoveRequest з напрямком Player.Direction (або North без Player) та speed=0. Запит не повертає серверне положення човна.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
if (Truth(UO.IsOnline()))
{
UO.StopBoat();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Параметри та порядок виконання:
- У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.StopBoat();
UO.Wait(250);
UO.Print(UO.GetX());
return null;
}
}ClassicUO — Bad Newbie & C# Scripts IDE