Skip to content

UO Topic speech chat

Codex edited this page Oct 12, 2026 · 6 revisions

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

Розмова та чат

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

Повідомлення персонажа в грі, жести, канали чату й фільтри. Для локального повідомлення, яке бачить лише користувач клієнта, відкрийте розділ «Інтерфейс клієнта».

Розділи

Тема Команди та пояснення
Повідомлення персонажа UO.Say
Повідомлення Unicode UO.SayU
Мовлення персонажа UO.UOSay
Жести UO.EmoteAction · UO.Bow · UO.Salute
Фільтри мовлення UO.FilterSpeech
Загальний чат UO.GlobalChatSendMsg · UO.GlobalChatActiveChannel
Канали UO.GlobalChatChannelsList · UO.GlobalChatJoinChannel · UO.GlobalChatLeaveChannel
Ігнорування користувачів UO.AddChatUserIgnore · UO.ClearChatUserIgnore

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

Мовлення персонажа

UO.Say · UO.SayU · UO.UOSay · UO.UOSayColor · UO.Msg · UO.UOAMessage · UO.FixTalk

Емоції

UO.Bow · UO.Salute · UO.EmoteAction

Фільтри та канали

UO.FilterSpeech · UO.AddChatUserIgnore · UO.ClearChatUserIgnore · UO.GlobalChatActiveChannel · UO.GlobalChatChannelsList · UO.GlobalChatJoinChannel · UO.GlobalChatLeaveChannel · UO.GlobalChatSendMsg

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

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

UO.Say

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

if (Truth(UO.Connected()))
{
    UO.Say("bank");
}

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

UO.GlobalChatSendMsg

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

UO.GlobalChatSendMsg("Hello");

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


UO.AddChatUserIgnore

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

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

void UO.AddChatUserIgnore(object? userName);

Додає ім'я відправника до локального списку фільтрації повідомлень журналу. Фільтр діє у цьому клієнті і не надсилає запит на сервер.

Параметри

  • userName - ім'я відправника журналу. Порожнє або пробілів, що складається, значення ігнорується; пробіли по краях віддаляються.

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

void. Команда не повертає ознаку успішного додавання.

Поведінка

  • Порівняння імені відправника виконується без урахування регістру. Повідомлення від імені, що збіглося, приховуються локальним фільтром журналу; це не блокування гравця на сервері. UO.ClearChatUserIgnore() очищає весь локальний список імен. Очищення фільтра не відновлює записи, які вже виключені з відображення.

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

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

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

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

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

UO.Print("Calling UO.AddChatUserIgnore");
UO.AddChatUserIgnore("ExampleVendor");

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

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

  • Приховувати нові записи журналу від імені в поточному клієнті.
UO.AddChatUserIgnore("ExampleVendor");

2. Надіслати ім'я через рядкову змінну. - Функція сценарію

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

  • Надіслати ім'я через рядкову змінну.
return  RunScenario();
 object? RunScenario()
{
    var sender = "ExampleVendor";
    UO.AddChatUserIgnore(sender);
    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.AddChatUserIgnore("ExampleVendor");
        UO.AddChatUserIgnore("ExamplePlayer");
        return null;
    }
}

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

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

UO.AddChatUserIgnore(userName) — UO.AddChatUserIgnore(Any)

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

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

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

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

case "addchatuserignore": bridge.AddChatUserIgnore(Text(0)); return InjectionValue.Unit;

UO.Bow

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

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

void UO.Bow();

Відправляє дію персонажа bow через GameActions.EmoteAction.

Параметри

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

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

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

Поведінка

  • Це анімація/дія персонажа. Команда не повертає підтвердження сервера і не чекає на закінчення анімації.

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

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

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

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

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

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

1. Уклін - прямий скрипт

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

  • Надіслати один уклін.
UO.Bow();

2. Лук при підключенні - функція скрипта

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

  • Перевірка з'єднання передує надсилання дії.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Connected()))
    {
        UO.Bow();
    }

    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()
    {
        Greet();
        return null;
    }

    void Greet()
    {
        UO.Bow();
    }
}

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

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

UO.Bow() — UO.Bow()

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

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

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

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

case "bow": bridge.Bow(); return InjectionValue.Unit;

UO.ClearChatUserIgnore

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

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

void UO.ClearChatUserIgnore();

Видаляє всі реєстронезалежні фільтри імен відправників JournalManager.

Параметри

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

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

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

Поведінка

  • Видалення фільтрів не видаляє записи історії та не скасовує текстові фільтри AddJournalIgnore.

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

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

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

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

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

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

1. Очистити стан - прямий скрипт

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

  • Видаляє всі реєстронезалежні фільтри імен відправників JournalManager.
UO.ClearChatUserIgnore();

2. Очистити після налаштування – функція сценарію

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

  • Знову дозволити відображення повідомлень від імені Vendor.
return  RunScenario();
 object? RunScenario()
{
    UO.AddChatUserIgnore("Vendor");
    UO.ClearChatUserIgnore();
    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.ClearChatUserIgnore();
        UO.ClearChatUserIgnore();
        return null;
    }
}

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

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

UO.ClearChatUserIgnore() — UO.ClearChatUserIgnore()

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

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

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

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

case "clearchatuserignore": bridge.ClearChatUserIgnore(); return InjectionValue.Unit;

UO.EmoteAction

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

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

void UO.EmoteAction(object? action);

Відправляє рядкове ім'я дії/анімації персонажа в GameActions.EmoteAction.

Параметри

  • action - Ім'я дії, наприклад bow або salute; перетворюється на string. Розпізнавання дії виконує GameActions.

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

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

Поведінка

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

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

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

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

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

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

UO.Print("Calling UO.EmoteAction");
UO.EmoteAction("bow");

1. Уклін - прямий скрипт

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

  • Передається ім'я дії bow.
UO.EmoteAction("bow");

2. Ласкаво просимо — функція скрипта

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

  • Передається ім'я дії salute.
return  RunScenario();
 object? RunScenario()
{
    UO.EmoteAction("salute");
    return null;
}

3. Ім'я зі змінної – клас сценарію

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

  • Рядок action передається без призначення об'єктної мети.
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 action = "bow";
        UO.EmoteAction(action);
        return null;
    }
}

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

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

UO.EmoteAction(action) — UO.EmoteAction(Any)

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

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

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

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

case "emoteaction": bridge.EmoteAction(Text(0)); break;

UO.FilterSpeech

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

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

void UO.FilterSpeech();
void UO.FilterSpeech(object? enabled);

Вмикає або вимикає клієнтський мовний фільтр.

Параметри

  • enabled — Необов'язкове значення: без аргументу фільтр вмикається; 0 вимикає, ненульове int включає.

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

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

Поведінка

  • Записує нормалізований прапор у runtime state та передає його менеджеру. Фільтр впливає обробку клієнтом; серверні події та інші налаштування журналу залишаються окремими.

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

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

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

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

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

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

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

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

  • Нульова кількість аргументів означає включення, а чи не читання.
UO.FilterSpeech();

2. Вимкнути – функція сценарію

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

  • Явний 0 вимикає клієнтський фільтр.
return  RunScenario();
 object? RunScenario()
{
    UO.FilterSpeech(0);
    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.FilterSpeech(1);
        UO.FilterSpeech(0);
        return null;
    }
}

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

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

UO.FilterSpeech() — UO.FilterSpeech()

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

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

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

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

case "filterspeech": state.SpeechFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetSpeechFilter(state.SpeechFilter); break;

UO.FilterSpeech(enabled) — UO.FilterSpeech(Any)

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

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

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

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

case "filterspeech": state.SpeechFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetSpeechFilter(state.SpeechFilter); break;

UO.FixTalk

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

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

void UO.FixTalk();

Друкує повідомлення, що застарілий патч нативного клієнта FixTalk не потрібний ClassicUO.

Параметри

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

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

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

Поведінка

  • Гілка ExecuteLegacyManualAlias тільки викликає SystemMessage. Вона не виправляє рух, мовлення, контейнери чи мережевий протокол.

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

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

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

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

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

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

1. Сповіщення про сумісність — прямий скрипт

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

  • Повідомлення описує відсутність потреби у старому патчі.
UO.FixTalk();

2. Виклик у процедурі – функція сценарію

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

  • Процедура сумісності не змінює світ ігор.
return  RunScenario();
 object? RunScenario()
{
    CompatibilityNotice();
    return null;
}

void CompatibilityNotice()
{
    UO.FixTalk();
}

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.FixTalk();
        UO.Print("continued");
        return null;
    }
}

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

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

UO.FixTalk() — UO.FixTalk()

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

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

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

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

case "boxhack":

                case "fixtalk":

                case "fixwalk":

                    SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.");

                    break;

UO.GlobalChatActiveChannel

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

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

dynamic UO.GlobalChatActiveChannel();

Читає ChatManager.CurrentChannelName.

Параметри

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

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

string - CurrentChannelName або порожній рядок, якщо канал не обраний.

Поведінка

  • Читає ChatManager.CurrentChannelName. Порожній рядок - відсутність імені, не код помилки; вхід у канал сам не виконується.
  • Читає поточний локальний стан. Пакету, target та автоматичного оновлення немає; окремі читання можуть бачити різні стани.

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

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

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

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

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

object? result = UO.GlobalChatActiveChannel();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

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

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

  • Читає ChatManager.CurrentChannelName.
UO.Print(UO.GlobalChatActiveChannel());

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

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

  • Читає ChatManager.CurrentChannelName. Порожній рядок - відсутність імені, не код помилки; вхід у канал сам не виконується.
return  RunScenario();
 object? RunScenario()
{
    var channel = UO.GlobalChatActiveChannel();
    if (Truth(Len(channel) > 0))
    {
        UO.Print(channel);
    }

    return null;
}

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

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

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

  • Читає поточний локальний стан. Пакету, target та автоматичного оновлення немає; окремі читання можуть бачити різні стани.
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 before = UO.GlobalChatActiveChannel();
        UO.Wait(500);
        var after = UO.GlobalChatActiveChannel();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

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

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

UO.GlobalChatActiveChannel() — UO.GlobalChatActiveChannel()

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

Результат: dynamic / Any.

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

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

case "globalchatactivechannel": return new InjectionValue(bridge.GlobalChatActiveChannel());

UO.GlobalChatChannelsList

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

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

dynamic UO.GlobalChatChannelsList();

Bridge повертає ChatManager.Channels.Keys.OrderBy(name => name).

Параметри

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

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

Array рядків імен каналів, відсортований на ім'я. Порожня локальна таблиця дає порожній масив.

Поведінка

  • Bridge повертає ChatManager.Channels.Keys.OrderBy(name => name). Список відомий клієнту та може бути неповним до серверного оновлення.
  • Читає поточний локальний стан. Пакету, target та автоматичного оновлення немає; окремі читання можуть бачити різні стани.

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

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

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

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

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

object? result = UO.GlobalChatChannelsList();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

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

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

  • Bridge повертає ChatManager.Channels.Keys.OrderBy(name => name).
var channels = UO.GlobalChatChannelsList();
UO.Print(UO.GetArrayLength(channels));

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

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

  • Bridge повертає ChatManager.Channels.Keys.OrderBy(name => name). Список відомий клієнту та може бути неповним до серверного оновлення.
return  RunScenario();
 object? RunScenario()
{
    var channels = UO.GlobalChatChannelsList();
    if (Truth(UO.GetArrayLength(channels) > 0))
    {
        UO.Print(channels[0]);
    }

    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. Повна допоміжна функція – клас сценарію

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

  • Читає поточний локальний стан. Пакету, target та автоматичного оновлення немає; окремі читання можуть бачити різні стани.
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 before = UO.GlobalChatChannelsList();
        UO.Wait(500);
        var after = UO.GlobalChatChannelsList();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

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

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

UO.GlobalChatChannelsList() — UO.GlobalChatChannelsList()

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

Результат: dynamic / Any.

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

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

case "globalchatchannelslist": return StringArray(bridge.GlobalChatChannels());

UO.GlobalChatJoinChannel

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

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

void UO.GlobalChatJoinChannel(object? chName);

Запитує вхід до каналу глобального чату.

Параметри

  • chName — Текст через ToString; зберігається як переданий.

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

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

Поведінка

  • Відправляє Send_ChatJoinCommand із переданим ім'ям каналу. Наявність каналу та роздільна здатність входу визначає сервер. Ім'я локального активного каналу читається окремо.
  • Bridge надсилає запит на ігровому потоці. Діють правила сервера; вбудованого очікування підтвердження немає.

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

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

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

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

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

UO.Print("Calling UO.GlobalChatJoinChannel");
UO.GlobalChatJoinChannel("General");

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

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

  • Запитує вхід до каналу глобального чату.
UO.GlobalChatJoinChannel("General");

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

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

  • Відправляє Send_ChatJoinCommand із переданим ім'ям каналу. Наявність каналу та роздільна здатність входу визначає сервер. Ім'я локального активного каналу читається окремо.
return  RunScenario();
 object? RunScenario()
{
    var message = "General";
    if (Truth(UO.IsOnline()))
    {
        UO.GlobalChatJoinChannel(message);
    }

    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. Повна допоміжна функція – клас сценарію

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

  • Bridge надсилає запит на ігровому потоці. Діють правила сервера; вбудованого очікування підтвердження немає.
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()
    {
        SendText("General");
        return null;
    }

    void SendText(dynamic message)
    {
        if (Truth(Len(message) > 0))
        {
            UO.GlobalChatJoinChannel(message);
        }
    }

    int Len(object? value) => Convert.ToString(value)?.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.GlobalChatJoinChannel(chName) — UO.GlobalChatJoinChannel(Any)

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

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

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

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

case "globalchatjoinchannel": bridge.GlobalChatJoin(Text(0)); return InjectionValue.Unit;

UO.GlobalChatLeaveChannel

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

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

void UO.GlobalChatLeaveChannel();

Запитує вихід із каналу глобального чату.

Параметри

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

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

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

Поведінка

  • GlobalChatLeave відправляє Send_ChatLeaveChannelCommand. Локальна назва каналу зміниться після обробки даних чату.
  • У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.

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

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

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

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

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

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

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

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

  • Запитує вихід із каналу глобального чату.
UO.GlobalChatLeaveChannel();

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

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

  • GlobalChatLeave відправляє Send_ChatLeaveChannelCommand. Локальна назва каналу зміниться після обробки даних чату.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.GlobalChatActiveChannel());
    UO.GlobalChatLeaveChannel();
    return null;
}

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

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

  • У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.
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.GlobalChatLeaveChannel();
        UO.Wait(500);
        UO.Print(UO.GlobalChatActiveChannel());
        return null;
    }
}

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

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

UO.GlobalChatLeaveChannel() — UO.GlobalChatLeaveChannel()

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

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

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

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

case "globalchatleavechannel": bridge.GlobalChatLeave(); return InjectionValue.Unit;

UO.GlobalChatSendMsg

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

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

void UO.GlobalChatSendMsg(object? msgText);

Надсилає повідомлення до глобального чату.

Параметри

  • msgText — Текст через ToString; зберігається як переданий.

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

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

Поведінка

  • Надсилає Send_ChatMessageCommand з переданим текстом. Канал використовує стан чату клієнта/сервера; команда не вибирає канал сама.
  • Bridge надсилає запит на ігровому потоці. Діють правила сервера; вбудованого очікування підтвердження немає.

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

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

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

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

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

UO.Print("Calling UO.GlobalChatSendMsg");
UO.GlobalChatSendMsg("Hello");

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

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

  • Надсилає повідомлення до глобального чату.
UO.GlobalChatSendMsg("Hello");

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

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

  • Надсилає Send_ChatMessageCommand з переданим текстом. Канал використовує стан чату клієнта/сервера; команда не вибирає канал сама.
return  RunScenario();
 object? RunScenario()
{
    var message = "Hello";
    if (Truth(UO.IsOnline()))
    {
        UO.GlobalChatSendMsg(message);
    }

    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. Повна допоміжна функція – клас сценарію

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

  • Bridge надсилає запит на ігровому потоці. Діють правила сервера; вбудованого очікування підтвердження немає.
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()
    {
        SendText("Hello");
        return null;
    }

    void SendText(dynamic message)
    {
        if (Truth(Len(message) > 0))
        {
            UO.GlobalChatSendMsg(message);
        }
    }

    int Len(object? value) => Convert.ToString(value)?.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.GlobalChatSendMsg(msgText) — UO.GlobalChatSendMsg(Any)

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

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

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

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

case "globalchatsendmsg": bridge.GlobalChatSend(Text(0)); return InjectionValue.Unit;

UO.Msg

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

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

void UO.Msg(object? message);

Показує локальне повідомлення про хід скрипта або умову зупинки. Його бачите ви, а чи не інші гравці.

Параметри

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

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

Поведінка

  • Повідомлення йде в нижню ліву область ігрового вікна та локальний журнал. Копія доступна у виведенні IDE. У загальному журналі менеджера увімкніть фільтр повідомлень скриптів (script): запис доступний і без вікна. Фільтр серверних системних повідомлень (system) такі записи не вибирає. Мережевий пакет мови не надсилається. Для напису над головою є UO.CharPrint.
  • UO.Print додає новий запис до журналу ігрових повідомлень: спочатку прочитайте або збережіть потрібний рядок/результат пошуку, а потім запишіть діагностичне повідомлення. У швидкому циклі записуйте повідомлення за змін, а не на кожній ітерації.
  • Без кольору використовується hue 0x03B2. UO.Print(text, color) приймає текст першим; UO.ColorPrint(color, text) - колір першим.
  • Незважаючи на Server в імені або подібність до мережного повідомлення, команда тільки друкує локальний текст. Щоб говорити у світ, використовуйте UO.Say.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

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

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

Команда викликається окремим рядком і не повертає значення (void). Текст повідомлення наведено безпосередньо у виклику.

UO.Msg("Hello from C#");

1. Короткий звіт - прямий скрипт

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

  • processed = 12 - демонстраційне число вже оброблених предметів. Convert.ToString перетворює його на рядок. Цей приклад лише повідомляє число, що сам предмети не переносить.
var processed = 12;
UO.Msg("Processed item entries: " + Convert.ToString(processed));

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

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

  • Читаються вага та максимум персонажа. Нульовий/невідомий максимум не вважається перевантаженням. При weight >= maximum друкується один рядок та Main завершується; предмети не викидаються.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.Msg("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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. Повідомляти лише про зміну ваги – клас сценарію

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

  • Main запам'ятовує вагу, чекає 1000 мілісекунд і викликає повністю оголошений ReportWeight. Помічник друкує лише якщо вага змінилася і повертає нову вагу для наступної перевірки. Він не створює нескінченний цикл.
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.Msg("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.Msg(message) — UO.Msg(String)

Параметри: message (String)

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

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

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

public void Msg(string message) => bridge.ServerPrint(message);

UO.Salute

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

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

void UO.Salute();

Запитує анімацію привітання.

Параметри

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

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

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

Поведінка

  • Salute викликає GameActions.EmoteAction("salute") через Invoke. Це дія персонажа, не текст UO.Say.
  • У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.

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

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

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

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

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

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

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

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

  • Запитує анімацію привітання.
UO.Salute();

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

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

  • Salute викликає GameActions.EmoteAction("salute") через Invoke. Це дія персонажа, не текст UO.Say.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.Salute();
    }

    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  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.Salute();
        UO.Wait(1000);
        UO.Print("Salute requested");
        return null;
    }
}

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

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

UO.Salute() — UO.Salute()

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

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

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

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

case "salute": bridge.Salute(); return InjectionValue.Unit;

UO.Say

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

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

void UO.Say(object? message);

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

Параметри

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

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

Поведінка

  • Для версії протоколу 2.0.0 та новіше клієнт відправляє Unicode speech; для старішої - ASCII speech. Назва SayU не змушує старий протокол до Unicode. Без явного кольору береться SpeechHue профілю; 0xFFFF у UO.UOSayColor також вибирає цей колір. Текст на сервер надсилається, але скрипт не виконує його як код.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

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

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

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

UO.Print("Calling UO.Say");
UO.Say("bank");

1. Звернутися до банкіра - прямий скрипт

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

  • Connected перевіряється до відправлення. bank - один рядок промови, а не ім'я API. Для відкриття банку зазвичай потрібен підходящий NPC поблизу; Якщо сервер використовує іншу фразу, замініть її.
if (Truth(UO.Connected()))
{
    UO.Say("bank");
}

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

2. Команда обраному на ім'я вихованця - функція сценарію

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

  • petName - ім'я вашого вихованця, тут Shadow. З нього складається один рядок Shadow follow me. Це наказ вихованцю слідувати за вами, а не UO.Follow, яка рухає вашого персонажа.
return  RunScenario();
 object? RunScenario()
{
    var petName = "Shadow";
    if (Truth(UO.Connected()))
    {
        UO.Say(petName + " follow me");
    }

    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. Попросити банк лише за перевантаження — клас сценарію

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

  • RequestBankIfHeavy перевіряє підключення та достовірний позитивний максимум ваги. Тільки при перевантаженні відправляє bank та повертає 1 як ознаку відправленого запиту. 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()
    {
        return RequestBankIfHeavy();
        return null;
    }

    dynamic RequestBankIfHeavy()
    {
        if (!(Truth(UO.Connected())))
        {
            return 0;
        }

        var maximum = UO.MaxWeight();
        if (Truth(maximum <= 0) || Truth(UO.Weight() < maximum))
        {
            return 0;
        }

        UO.Say("bank");
        return 1;
    }

    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.Say(message) — UO.Say(String)

Параметри: message (String)

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

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

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

public void Say(string message) => bridge.Say(message);

UO.SayU

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

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

void UO.SayU(object? text);

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

Параметри

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

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

Поведінка

  • Для версії протоколу 2.0.0 та новіше клієнт відправляє Unicode speech; для старішої - ASCII speech. Назва SayU не змушує старий протокол до Unicode. Без явного кольору береться SpeechHue профілю; 0xFFFF у UO.UOSayColor також вибирає цей колір. Текст на сервер надсилається, але скрипт не виконує його як код.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

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

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

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

UO.Print("Calling UO.SayU");
UO.SayU("bank");

1. Звернутися до банкіра - прямий скрипт

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

  • Connected перевіряється до відправлення. bank - один рядок промови, а не ім'я API. Для відкриття банку зазвичай потрібен підходящий NPC поблизу; Якщо сервер використовує іншу фразу, замініть її.
if (Truth(UO.Connected()))
{
    UO.SayU("bank");
}

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

2. Команда обраному на ім'я вихованця - функція сценарію

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

  • petName - ім'я вашого вихованця, тут Shadow. З нього складається один рядок Shadow follow me. Це наказ вихованцю слідувати за вами, а не UO.Follow, яка рухає вашого персонажа.
return  RunScenario();
 object? RunScenario()
{
    var petName = "Shadow";
    if (Truth(UO.Connected()))
    {
        UO.SayU(petName + " follow me");
    }

    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. Попросити банк лише за перевантаження — клас сценарію

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

  • RequestBankIfHeavy перевіряє підключення та достовірний позитивний максимум ваги. Тільки при перевантаженні відправляє bank та повертає 1 як ознаку відправленого запиту. 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()
    {
        return RequestBankIfHeavy();
        return null;
    }

    dynamic RequestBankIfHeavy()
    {
        if (!(Truth(UO.Connected())))
        {
            return 0;
        }

        var maximum = UO.MaxWeight();
        if (Truth(maximum <= 0) || Truth(UO.Weight() < maximum))
        {
            return 0;
        }

        UO.SayU("bank");
        return 1;
    }

    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.SayU(text) — UO.SayU(Any)

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

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

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

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

case "sayu": Say(arguments.Length > 0 ? arguments[0].ToString() : string.Empty); break;

UO.UOAMessage

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

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

void UO.UOAMessage(object? text);

Друкує локальне повідомлення ClassicUO з ​​hue, встановленим UO.FontColor. Підходить для повідомлень скрипту про запаси, стан маршруту або завершення етапу.

Параметри

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

void: не повертає текст, індекс журналу або true/false. Виклик здійснює локальний висновок; підтвердження відображення, що повертається, немає.

Поведінка

  • Використовує state.FontColor поточного runtime, спочатку 0x03B2. Запис проходить через нижню область повідомлень та журнал клієнта, а також виведення IDE.
  • Не надсилає промову на сервер, не викликає спливаюче вікно, не надсилає повідомлення іншому гравцю. Звичайний UO.Print має власний колір.
  • Для кольору одного повідомлення без зміни state.FontColor можна використовувати UO.Print(text,color).

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

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

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

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

Команда викликається окремим рядком і не повертає значення (void). Текст повідомлення наведено безпосередньо у виклику.

UO.UOAMessage("Hello from C#");

1. Виділити попередження про запаси – прямий скрипт

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

  • 0x0021 - індекс hue; підсумковий відтінок залежить від файлів hues клієнта. Повідомлення видно локально; його не вимовляє персонаж.
UO.FontColor(0x0021);
var first = UO.FindList("0x0EED", "backpack");
if (Truth(first == ""))
{
    UO.UOAMessage("No gold in the loaded backpack");
}
else
{
    UO.UOAMessage("Gold units: " + Convert.ToString(UO.FindFullQuantity()));
}

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

2. Загальна процедура кольорового повідомлення – функція сценарію

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

  • Повна Notice приймає текст та hue. Останній встановлений hue залишається для наступного UOAMessage цього runtime. Вбудованого FontColor() для читання тут немає.
return  RunScenario();
 object? RunScenario()
{
    Notice("Supplies checked", 0x0044);
    Notice("Restock needed", 0x0021);
    return null;
}

void Notice(dynamic text, dynamic hue)
{
    UO.FontColor(hue);
    UO.UOAMessage(text);
}

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

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

  • 0x03B2 - початкове значення FontColor нового runtime. 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 baseHue = 0x03B2;
        try
        {
            UO.FontColor(0x0021);
            UO.UOAMessage("Check the route before moving");
        }
        finally
        {
            UO.FontColor(baseHue);
        }

        UO.UOAMessage("Ready");
        UO.Print("Regular Print keeps its own color");
        return null;
    }
}

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

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

UO.UOAMessage(text) — UO.UOAMessage(Any)

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

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

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

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

case "uoamessage": bridge.Print(state.FontColor, Text(0)); break;

UO.UOSay

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

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

void UO.UOSay(object? text);

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

Параметри

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

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

Поведінка

  • Для версії протоколу 2.0.0 та новіше клієнт відправляє Unicode speech; для старішої - ASCII speech. Назва SayU не змушує старий протокол до Unicode. Без явного кольору береться SpeechHue профілю; 0xFFFF у UO.UOSayColor також вибирає цей колір. Текст на сервер надсилається, але скрипт не виконує його як код.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

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

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

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

UO.Print("Calling UO.UOSay");
UO.UOSay("bank");

1. Звернутися до банкіра - прямий скрипт

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

  • Connected перевіряється до відправлення. bank - один рядок промови, а не ім'я API. Для відкриття банку зазвичай потрібен підходящий NPC поблизу; Якщо сервер використовує іншу фразу, замініть її.
if (Truth(UO.Connected()))
{
    UO.UOSay("bank");
}

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

2. Команда обраному на ім'я вихованця - функція сценарію

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

  • petName - ім'я вашого вихованця, тут Shadow. З нього складається один рядок Shadow follow me. Це наказ вихованцю слідувати за вами, а не UO.Follow, яка рухає вашого персонажа.
return  RunScenario();
 object? RunScenario()
{
    var petName = "Shadow";
    if (Truth(UO.Connected()))
    {
        UO.UOSay(petName + " follow me");
    }

    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. Попросити банк лише за перевантаження — клас сценарію

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

  • RequestBankIfHeavy перевіряє підключення та достовірний позитивний максимум ваги. Тільки при перевантаженні відправляє bank та повертає 1 як ознаку відправленого запиту. 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()
    {
        return RequestBankIfHeavy();
        return null;
    }

    dynamic RequestBankIfHeavy()
    {
        if (!(Truth(UO.Connected())))
        {
            return 0;
        }

        var maximum = UO.MaxWeight();
        if (Truth(maximum <= 0) || Truth(UO.Weight() < maximum))
        {
            return 0;
        }

        UO.UOSay("bank");
        return 1;
    }

    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.UOSay(text) — UO.UOSay(Any)

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

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

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

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

case "uosay": Say(Text(0)); return InjectionValue.Unit;

UO.UOSayColor

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

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

void UO.UOSayColor(object? text, object? color);

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

Параметри

  • color — UO hue, не RGB. Число або hex-рядок; міст використовує молодші 16 біт. Чи не плутайте з graphic/type. 0x0044 у прикладі - вибраний hue. Для версії протоколу 2.0.0 та новіше клієнт відправляє Unicode speech; для більш старої - ASCII speech. Назва SayU не змушує старий протокол до Unicode. Без явного кольору береться SpeechHue профілю; 0xFFFF у UO.UOSayColor також вибирає цей колір. Текст на сервер надсилається, але скрипт не виконує його як код.

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

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

Поведінка

  • Для версії протоколу 2.0.0 та новіше клієнт відправляє Unicode speech; для старішої - ASCII speech. Назва SayU не змушує старий протокол до Unicode. Без явного кольору береться SpeechHue профілю; 0xFFFF у UO.UOSayColor також вибирає цей колір. Текст на сервер надсилається, але скрипт не виконує його як код.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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

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

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

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

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

UO.Print("Calling UO.UOSayColor");
UO.UOSayColor("bank", 0x0044);

1. Звернутися до банкіра - прямий скрипт

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

  • Connected перевіряється до відправлення. bank - один рядок промови, а не ім'я API. Для відкриття банку зазвичай потрібен підходящий NPC поблизу; Якщо сервер використовує іншу фразу, замініть її.
if (Truth(UO.Connected()))
{
    UO.UOSayColor("bank", 0x0044);
}

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

2. Команда обраному на ім'я вихованця - функція сценарію

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

  • petName - ім'я вашого вихованця, тут Shadow. З нього складається один рядок Shadow follow me. Це наказ вихованцю слідувати за вами, а не UO.Follow, яка рухає вашого персонажа.
return  RunScenario();
 object? RunScenario()
{
    var petName = "Shadow";
    if (Truth(UO.Connected()))
    {
        UO.UOSayColor(petName + " follow me", 0x0044);
    }

    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. Попросити банк лише за перевантаження — клас сценарію

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

  • RequestBankIfHeavy перевіряє підключення та достовірний позитивний максимум ваги. Тільки при перевантаженні відправляє bank та повертає 1 як ознаку відправленого запиту. 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()
    {
        return RequestBankIfHeavy();
        return null;
    }

    dynamic RequestBankIfHeavy()
    {
        if (!(Truth(UO.Connected())))
        {
            return 0;
        }

        var maximum = UO.MaxWeight();
        if (Truth(maximum <= 0) || Truth(UO.Weight() < maximum))
        {
            return 0;
        }

        UO.UOSayColor("bank", 0x0044);
        return 1;
    }

    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.UOSayColor(text, color) — UO.UOSayColor(Any,Any)

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

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

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

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

case "uosaycolor": bridge.Say(Text(0), Arg(1)); return InjectionValue.Unit;

Clone this wiki locally