Repository navigation
UO Topic speech chat
Українська · Русский · 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
Нижче наведено короткі приклади. У повному описі кожної команди є параметри, результат, обмеження та кілька самостійних скриптів: прямий код, варіант із функцією та варіант із класом.
Параметри, результат та всі сценарії
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("Hello");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddChatUserIgnore(object? userName);Додає ім'я відправника до локального списку фільтрації повідомлень журналу. Фільтр діє у цьому клієнті і не надсилає запит на сервер.
-
userName- ім'я відправника журналу. Порожнє або пробілів, що складається, значення ігнорується; пробіли по краях віддаляються.
void. Команда не повертає ознаку успішного додавання.
- Порівняння імені відправника виконується без урахування регістру. Повідомлення від імені, що збіглося, приховуються локальним фільтром журналу; це не блокування гравця на сервері.
UO.ClearChatUserIgnore()очищає весь локальний список імен. Очищення фільтра не відновлює записи, які вже виключені з відображення.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.AddChatUserIgnore");
UO.AddChatUserIgnore("ExampleVendor");Параметри та порядок виконання:
- Приховувати нові записи журналу від імені в поточному клієнті.
UO.AddChatUserIgnore("ExampleVendor");Параметри та порядок виконання:
- Надіслати ім'я через рядкову змінну.
return RunScenario();
object? RunScenario()
{
var sender = "ExampleVendor";
UO.AddChatUserIgnore(sender);
return null;
}Параметри та порядок виконання:
- Додати два імені у локальний фільтр; дзвінок не блокує їх на сервері.
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.
Параметри: userName (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AddChatUserIgnore:bridge.AddChatUserIgnore(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Внутрішній код реалізації, не самостійний скрипт.
case "addchatuserignore": bridge.AddChatUserIgnore(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Bow();Відправляє дію персонажа bow через GameActions.EmoteAction.
Параметрів немає.
void - значення, що повертається немає.
- Це анімація/дія персонажа. Команда не повертає підтвердження сервера і не чекає на закінчення анімації.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.Bow");
UO.Bow();Параметри та порядок виконання:
- Надіслати один уклін.
UO.Bow();Параметри та порядок виконання:
- Перевірка з'єднання передує надсилання дії.
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;Параметри та порядок виконання:
- Повністю оголошена процедура відправляє ту ж дію.
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.
Параметри: Немає параметрів.
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Bow:bridge.Bow().
Внутрішній код реалізації, не самостійний скрипт.
case "bow": bridge.Bow(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearChatUserIgnore();Видаляє всі реєстронезалежні фільтри імен відправників JournalManager.
Параметрів немає.
void - значення, що повертається немає.
- Видалення фільтрів не видаляє записи історії та не скасовує текстові фільтри AddJournalIgnore.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.ClearChatUserIgnore");
UO.ClearChatUserIgnore();Параметри та порядок виконання:
- Видаляє всі реєстронезалежні фільтри імен відправників JournalManager.
UO.ClearChatUserIgnore();Параметри та порядок виконання:
- Знову дозволити відображення повідомлень від імені Vendor.
return RunScenario();
object? RunScenario()
{
UO.AddChatUserIgnore("Vendor");
UO.ClearChatUserIgnore();
return null;
}Параметри та порядок виконання:
- Очищення порожнього набору є прийнятним і не створює нового параметра.
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.
Параметри: Немає параметрів.
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClearChatUserIgnore:bridge.ClearChatUserIgnore().
Внутрішній код реалізації, не самостійний скрипт.
case "clearchatuserignore": bridge.ClearChatUserIgnore(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.EmoteAction(object? action);Відправляє рядкове ім'я дії/анімації персонажа в GameActions.EmoteAction.
-
action- Ім'я дії, наприклад bow або salute; перетворюється на string. Розпізнавання дії виконує GameActions.
void - значення, що повертається немає.
- Це дія персонажа, не друкування фрази в журнал. Команда не повертає підтвердження сервера і не чекає на анімацію.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.EmoteAction");
UO.EmoteAction("bow");Параметри та порядок виконання:
- Передається ім'я дії bow.
UO.EmoteAction("bow");Параметри та порядок виконання:
- Передається ім'я дії salute.
return RunScenario();
object? RunScenario()
{
UO.EmoteAction("salute");
return null;
}Параметри та порядок виконання:
- Рядок 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.
Параметри: action (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.EmoteAction:bridge.EmoteAction(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(0).
Внутрішній код реалізації, не самостійний скрипт.
case "emoteaction": bridge.EmoteAction(Text(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FilterSpeech();
void UO.FilterSpeech(object? enabled);Вмикає або вимикає клієнтський мовний фільтр.
-
enabled— Необов'язкове значення: без аргументу фільтр вмикається; 0 вимикає, ненульове int включає.
void - значення, що повертається немає.
- Записує нормалізований прапор у runtime state та передає його менеджеру. Фільтр впливає обробку клієнтом; серверні події та інші налаштування журналу залишаються окремими.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.FilterSpeech");
UO.FilterSpeech();Параметри та порядок виконання:
- Нульова кількість аргументів означає включення, а чи не читання.
UO.FilterSpeech();Параметри та порядок виконання:
- Явний 0 вимикає клієнтський фільтр.
return RunScenario();
object? RunScenario()
{
UO.FilterSpeech(0);
return null;
}Параметри та порядок виконання:
- Фільтр вмикається і явно повертається у вимкнений стан.
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.
Параметри: Немає параметрів.
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetSpeechFilter:bridge.SetSpeechFilter(state.SpeechFilter).
Внутрішній код реалізації, не самостійний скрипт.
case "filterspeech": state.SpeechFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetSpeechFilter(state.SpeechFilter); break;Параметри: enabled (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetSpeechFilter:bridge.SetSpeechFilter(state.SpeechFilter).
Внутрішній код реалізації, не самостійний скрипт.
case "filterspeech": state.SpeechFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetSpeechFilter(state.SpeechFilter); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FixTalk();Друкує повідомлення, що застарілий патч нативного клієнта FixTalk не потрібний ClassicUO.
Параметрів немає.
void - значення, що повертається немає.
- Гілка ExecuteLegacyManualAlias тільки викликає SystemMessage. Вона не виправляє рух, мовлення, контейнери чи мережевий протокол.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.FixTalk");
UO.FixTalk();Параметри та порядок виконання:
- Повідомлення описує відсутність потреби у старому патчі.
UO.FixTalk();Параметри та порядок виконання:
- Процедура сумісності не змінює світ ігор.
return RunScenario();
object? RunScenario()
{
CompatibilityNotice();
return null;
}
void CompatibilityNotice()
{
UO.FixTalk();
}Параметри та порядок виконання:
- Після діагностичного повідомлення виконання продовжується.
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.
Параметри: Немає параметрів.
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.").
Внутрішній код реалізації, не самостійний скрипт.
case "boxhack":
case "fixtalk":
case "fixwalk":
SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.");
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GlobalChatActiveChannel();Читає ChatManager.CurrentChannelName.
Параметрів немає.
string - CurrentChannelName або порожній рядок, якщо канал не обраний.
- Читає ChatManager.CurrentChannelName. Порожній рядок - відсутність імені, не код помилки; вхід у канал сам не виконується.
- Читає поточний локальний стан. Пакету, target та автоматичного оновлення немає; окремі читання можуть бачити різні стани.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.
object? result = UO.GlobalChatActiveChannel();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Параметри та порядок виконання:
- Читає ChatManager.CurrentChannelName.
UO.Print(UO.GlobalChatActiveChannel());Параметри та порядок виконання:
- Читає 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;Параметри та порядок виконання:
- Читає поточний локальний стан. Пакету, 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.
Параметри: Немає параметрів.
Результат: dynamic / Any.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GlobalChatActiveChannel:bridge.GlobalChatActiveChannel().
Внутрішній код реалізації, не самостійний скрипт.
case "globalchatactivechannel": return new InjectionValue(bridge.GlobalChatActiveChannel());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GlobalChatChannelsList();Bridge повертає ChatManager.Channels.Keys.OrderBy(name => name).
Параметрів немає.
Array рядків імен каналів, відсортований на ім'я. Порожня локальна таблиця дає порожній масив.
- Bridge повертає ChatManager.Channels.Keys.OrderBy(name => name). Список відомий клієнту та може бути неповним до серверного оновлення.
- Читає поточний локальний стан. Пакету, target та автоматичного оновлення немає; окремі читання можуть бачити різні стани.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.
object? result = UO.GlobalChatChannelsList();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Параметри та порядок виконання:
- Bridge повертає ChatManager.Channels.Keys.OrderBy(name => name).
var channels = UO.GlobalChatChannelsList();
UO.Print(UO.GetArrayLength(channels));Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- Читає поточний локальний стан. Пакету, 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.
Параметри: Немає параметрів.
Результат: dynamic / Any.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.StringArray:StringArray(bridge.GlobalChatChannels()). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GlobalChatChannels:bridge.GlobalChatChannels().
Внутрішній код реалізації, не самостійний скрипт.
case "globalchatchannelslist": return StringArray(bridge.GlobalChatChannels());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GlobalChatJoinChannel(object? chName);Запитує вхід до каналу глобального чату.
-
chName— Текст через ToString; зберігається як переданий.
void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.
- Відправляє Send_ChatJoinCommand із переданим ім'ям каналу. Наявність каналу та роздільна здатність входу визначає сервер. Ім'я локального активного каналу читається окремо.
- Bridge надсилає запит на ігровому потоці. Діють правила сервера; вбудованого очікування підтвердження немає.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.GlobalChatJoinChannel");
UO.GlobalChatJoinChannel("General");Параметри та порядок виконання:
- Запитує вхід до каналу глобального чату.
UO.GlobalChatJoinChannel("General");Параметри та порядок виконання:
- Відправляє 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;Параметри та порядок виконання:
- 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.
Параметри: chName (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GlobalChatJoin:bridge.GlobalChatJoin(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Внутрішній код реалізації, не самостійний скрипт.
case "globalchatjoinchannel": bridge.GlobalChatJoin(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GlobalChatLeaveChannel();Запитує вихід із каналу глобального чату.
Параметрів немає.
void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.
- GlobalChatLeave відправляє Send_ChatLeaveChannelCommand. Локальна назва каналу зміниться після обробки даних чату.
- У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.GlobalChatLeaveChannel");
UO.GlobalChatLeaveChannel();Параметри та порядок виконання:
- Запитує вихід із каналу глобального чату.
UO.GlobalChatLeaveChannel();Параметри та порядок виконання:
- GlobalChatLeave відправляє Send_ChatLeaveChannelCommand. Локальна назва каналу зміниться після обробки даних чату.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.GlobalChatActiveChannel());
UO.GlobalChatLeaveChannel();
return null;
}Параметри та порядок виконання:
- У прикладах 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.
Параметри: Немає параметрів.
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GlobalChatLeave:bridge.GlobalChatLeave().
Внутрішній код реалізації, не самостійний скрипт.
case "globalchatleavechannel": bridge.GlobalChatLeave(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GlobalChatSendMsg(object? msgText);Надсилає повідомлення до глобального чату.
-
msgText— Текст через ToString; зберігається як переданий.
void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.
- Надсилає Send_ChatMessageCommand з переданим текстом. Канал використовує стан чату клієнта/сервера; команда не вибирає канал сама.
- Bridge надсилає запит на ігровому потоці. Діють правила сервера; вбудованого очікування підтвердження немає.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.GlobalChatSendMsg");
UO.GlobalChatSendMsg("Hello");Параметри та порядок виконання:
- Надсилає повідомлення до глобального чату.
UO.GlobalChatSendMsg("Hello");Параметри та порядок виконання:
- Надсилає 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;Параметри та порядок виконання:
- 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.
Параметри: msgText (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GlobalChatSend:bridge.GlobalChatSend(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Внутрішній код реалізації, не самостійний скрипт.
case "globalchatsendmsg": bridge.GlobalChatSend(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком і не повертає значення (void). Текст повідомлення наведено безпосередньо у виклику.
UO.Msg("Hello from C#");Параметри та порядок виконання:
- processed = 12 - демонстраційне число вже оброблених предметів. Convert.ToString перетворює його на рядок. Цей приклад лише повідомляє число, що сам предмети не переносить.
var processed = 12;
UO.Msg("Processed item entries: " + Convert.ToString(processed));Параметри та порядок виконання:
- Читаються вага та максимум персонажа. Нульовий/невідомий максимум не вважається перевантаженням. При 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;Параметри та порядок виконання:
- 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.
Параметри: message (String)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.Msg. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ServerPrint:bridge.ServerPrint(message).
Внутрішній код реалізації, не самостійний скрипт.
public void Msg(string message) => bridge.ServerPrint(message);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Salute();Запитує анімацію привітання.
Параметрів немає.
void - значення немає. Викликайте окремим рядком; завершення не підтверджує дію сервера.
- Salute викликає GameActions.EmoteAction("salute") через Invoke. Це дія персонажа, не текст UO.Say.
- У прикладах UO.Wait задає лише паузу скрипта; закінчення паузи не доводить виконання запиту сервером.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.Salute");
UO.Salute();Параметри та порядок виконання:
- Запитує анімацію привітання.
UO.Salute();Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- У прикладах 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.
Параметри: Немає параметрів.
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Salute:bridge.Salute().
Внутрішній код реалізації, не самостійний скрипт.
case "salute": bridge.Salute(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.Say");
UO.Say("bank");Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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.
Параметри: message (String)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.Say. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Say:bridge.Say(message).
Внутрішній код реалізації, не самостійний скрипт.
public void Say(string message) => bridge.Say(message);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.SayU");
UO.SayU("bank");Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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.
Параметри: text (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.Say:Say(arguments.Length > 0 ? arguments[0].ToString() : string.Empty). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString().
Внутрішній код реалізації, не самостійний скрипт.
case "sayu": Say(arguments.Length > 0 ? arguments[0].ToString() : string.Empty); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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).
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком і не повертає значення (void). Текст повідомлення наведено безпосередньо у виклику.
UO.UOAMessage("Hello from C#");Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- Повна 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);
}Параметри та порядок виконання:
- 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.
Параметри: text (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(state.FontColor, Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(0).
Внутрішній код реалізації, не самостійний скрипт.
case "uoamessage": bridge.Print(state.FontColor, Text(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.UOSay");
UO.UOSay("bank");Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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.
Параметри: text (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.Say:Say(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Внутрішній код реалізації, не самостійний скрипт.
case "uosay": Say(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Команда викликається окремим рядком. Повідомлення перед нею показує початок виклику, а не підтвердження дії сервера.
UO.Print("Calling UO.UOSayColor");
UO.UOSayColor("bank", 0x0044);Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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;Параметри та порядок виконання:
- 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.
Параметри: text (Any), color (Any)
Результат: void / Unit.
Під час виклику:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Say:bridge.Say(Text(0), Arg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1).
Внутрішній код реалізації, не самостійний скрипт.
case "uosaycolor": bridge.Say(Text(0), Arg(1)); return InjectionValue.Unit;ClassicUO — Bad Newbie & C# Scripts IDE