Skip to content

UO Topic boats

Codex edited this page Oct 11, 2026 · 5 revisions

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

Човни

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

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

Розділи

Тема Команди та пояснення
Рух човна UO.MoveBoat
Зупинка човна UO.StopBoat

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

Керування човном

UO.MoveBoat · UO.StopBoat

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

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

UO.MoveBoat

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

UO.MoveBoat(0, 1);

UO.StopBoat

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

UO.StopBoat();

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


UO.MoveBoat

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

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

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, не чекає кроку і не повертає координати човна. Сервер може відхилити запит.

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

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

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

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

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

UO.Print("Calling UO.MoveBoat");
UO.MoveBoat(0, 1);

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

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

  • Запитує напрямок та швидкість руху човна.
UO.MoveBoat(0, 1);

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

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

  • 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;
}

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

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

  • Не переміщає персонажа 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;
    }
}

UO.StopBoat

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

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

void UO.StopBoat();

Запитує зупинку руху човна.

Параметри

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

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

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

Поведінка

  • StopBoat викликає BoatMovingManager.MoveRequest з напрямком Player.Direction (або North без Player) та speed=0. Запит не повертає серверне положення човна.
  • У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.

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

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

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

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

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

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

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

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

  • Запитує зупинку руху човна.
UO.StopBoat();

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

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

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

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

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

  • У прикладах 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;
    }
}

Clone this wiki locally