Skip to content

UO Topic buffs effects

Codex edited this page Oct 12, 2026 · 6 revisions

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

Ефекти та стани персонажа

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

Перевірка отруєння, паралічу, польоту та інших станів, а також читання панелі ефектів. Кожна перевірка описує конкретний стан: результат «ні» не означає відсутності всіх інших ефектів.

Розділи

Тема Команди та пояснення
Панель ефектів UO.GetBuffBarInfo
Отруєння UO.Poisoned
Параліч UO.Paralyzed
Знерухомлення UO.Frozen
Політ UO.Flying
Опір UO.GetResist · UO.GetPhysicalResist · UO.GetFireResist · UO.GetColdResist · UO.GetPoisonResist · UO.GetEnergyResist

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

Панель ефектів

UO.GetBuffBarInfo

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

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

UO.GetBuffBarInfo

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

var buffs = UO.GetBuffBarInfo();
for (int i = (int)(0); i <= ArrayLength(buffs)-1; i += (int)(1))
{
    UO.Print(buffs[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

UO.Paralyzed

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

var state = UO.Paralyzed();
if (Truth(Truth(state) == true))
{
    UO.Print("Paralysis flag is set");
}
else
{
    UO.Print("Paralysis flag is absent or unavailable");
}

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

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


UO.GetBuffBarInfo

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

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

dynamic UO.GetBuffBarInfo();

Повертає знімок buff icons поточного персонажа.

Параметри

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

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

Array рядків формату type|graphic|remainingMilliseconds|text. remainingMilliseconds=-1 для Timer=uint.MaxValue; інакше max(0,Timer-Time.Ticks). Немає персонажа/іконок – порожній масив.

Поведінка

  • Дані беруться з Player.BuffIcons.Values, без запиту на сервер. Значення remainingMilliseconds відноситься до клієнтського таймера і може бути застарілим; -1 означає необмежений таймер, а не помилку. Text може містити символи |, тому передбачається рівно чотири простих слова.

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

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

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

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

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

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

1. Вивести знімок buff bar — прямий скрипт

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

  • Кожен рядок містить type, graphic, залишок таймера та текст.
var buffs = UO.GetBuffBarInfo();
for (int i = (int)(0); i <= ArrayLength(buffs)-1; i += (int)(1))
{
    UO.Print(buffs[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Число відомих buffs - функція сценарію

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

  • Розмір відбиває поточні клієнтські іконки.
return  RunScenario();
 object? RunScenario()
{
    var buffs = UO.GetBuffBarInfo();
    UO.Print(Convert.ToString(ArrayLength(buffs)));
    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

3. Свіжий знімок після паузи – клас сценарію

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

  • Новий дзвінок перечитує поточний набір; Старий масив залишається знімком.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var before = UO.GetBuffBarInfo();
        await Delay(1000);
        var after = UO.GetBuffBarInfo();
        UO.Print(Convert.ToString(ArrayLength(before)) + " " + Convert.ToString(ArrayLength(after)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

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

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

UO.GetBuffBarInfo() — UO.GetBuffBarInfo()

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

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

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

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

case "getbuffbarinfo": return StringArray(bridge.GetBuffBarInfo());

Clone this wiki locally