Skip to content

API UO FontColor

Codex edited this page Sep 22, 2026 · 5 revisions

UO.FontColor

ClassicUO / Basic IDE

Оглавление · Алфавитный указатель · Client UI

Устанавливает hue последующих локальных UO.UOAMessage данного скрипта. Не меняет цвет речи персонажа, обычного UO.Print, InfoFindList или тему IDE.

Точный синтаксис

UO.FontColor(color:Any) -> Unit

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

  • color — Обязательный числовой индекс hue 0..65535, например 0x0044. Это не RGB. Внутри хранится Integer, при выводе приводится к ushort; -1 НЕ означает сброс и превращается в 65535. Начальное значение нового runtime — 0x03B2. Формы без аргумента нет.

Возвращает

Unit: нет результата, старого цвета или признака успеха. Чтобы позже вернуть свою настройку, храните выбранный hue в переменной скрипта.

Поведение

  • Изменяет только state.FontColor, не печатает сообщение и не отправляет сетевой пакет.
  • Действует до следующего FontColor в том же runtime. Другой самостоятельный скрипт имеет своё состояние. UO.Print(text,color) задаёт цвет непосредственно и не читает FontColor.

Внутренние функции: последовательность выполнения

Ниже описана реализация этого движка. Имена внутренних методов не являются дополнительными командами BASIC.

1. ExecuteLegacyManualAlias

FontColor сохраняет числовое значение в state.FontColor; UOAMessage читает его и передаёт текст в bridge.Print.

Настройка принадлежит текущему runtime; результат обеих команд Unit.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ExecuteLegacyManualAlias.

2. Print

Перегрузка Print(color,msg) приводит цвет к 16-битному hue.

Это локальный вывод клиента, не серверная речь персонажа.

Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция Print.

3. PrintClientMessage

Передаёт текст в штатную нижнюю строку/журнал и дублирует сообщение в вывод IDE.

Наличие записи в IDE само по себе не проверяет фактический цвет отрисовки.

Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция PrintClientMessage.

Для одного сообщения без изменения состояния можно использовать UO.Print(text,color).

Примеры

Пример 1. Выделить предупреждение о запасах

SUB Main()
    # Hue используется следующими UOAMessage только в этом скрипте.
    UO.FontColor(0x0021)
    VAR first = UO.FindList("0x0EED", "backpack")
    IF first = "" THEN
        UO.UOAMessage("No gold in the loaded backpack")
    ELSE
        UO.UOAMessage("Gold units: " + CStr(UO.FindFullQuantity()))
    END IF
END SUB

Разбор параметров и выполнения:

  • 0x0021 — индекс hue; итоговый оттенок зависит от файлов hues клиента. Сообщение видно локально; его не произносит персонаж.

Пример 2. Общая процедура цветного уведомления

SUB Main()
    Notice("Supplies checked", 0x0044)
    Notice("Restock needed", 0x0021)
END SUB

SUB Notice(text, hue)
    # hueиндекс цвета, textлокальное сообщение, не речь на сервере.
    UO.FontColor(hue)
    UO.UOAMessage(text)
END SUB

Разбор параметров и выполнения:

  • Полная Notice принимает текст и hue. Последний установленный hue остаётся для следующего UOAMessage этого runtime. Встроенного FontColor() для чтения здесь нет.

Пример 3. Вернуться к известному базовому цвету

SUB Main()
    VAR baseHue = 0x03B2
    TRY
        UO.FontColor(0x0021)
        UO.UOAMessage("Check the route before moving")
    FINALLY
        # Это заданная базовая настройка, а не чтение предыдущего цвета.
        UO.FontColor(baseHue)
    END TRY
    UO.UOAMessage("Ready")
    UO.Print("Regular Print keeps its own color")
END SUB

Разбор параметров и выполнения:

  • 0x03B2 — начальное значение FontColor нового runtime. Finally возвращает именно выбранную базу при обычном завершении/обрабатываемой ошибке; оно не восстанавливает неизвестное прежнее значение.

Clone this wiki locally