Skip to main content

ui

Цвет и всё, что связано с выводом текста на клиент. Один и тот же цвет пишется одинаково во всех каналах, а канал берёт ближайшее, что умеет нарисовать: HUD — как есть, меню — из четырёх кодов, чат — из трёх тегов.

Теги цвета в чате

Внутри строки чата действует своя разметка — это не то же самое, что поле color.
{team} берёт цвет от отправителя. По умолчанию отправитель — сам получатель, поэтому каждый видит {team} в цвете своей команды; задаётся через opts.from у p:chat.
Синий и красный доступны только через живого игрока из нужной команды: своего выбора цвета в протоколе чата нет.

Длина строки

Каждый канал заканчивается фиксированным буфером и обрезает лишнее молча.
#s не показывает реальную длину: тег {green} занимает 7 байт в Lua и 1 на проводе, кириллическая буква — 2 и 1 соответственно.
Считает lib/text.lua:

Кириллица

.lua обычно лежат в UTF-8, и современный клиент CS 1.6 так их и рисует. По умолчанию модуль ничего не конвертирует. Старые клиенты ждут однобайтовый CP1251. Для них есть cvar cslua_cp1251 1: с ним валидный UTF-8 переводится в CP1251, а строка, которая UTF-8 не является, уходит нетронутой. Символы, которых в CP1251 нет, заменяются на ?. Конвертация касается только сообщений игрокам, включая текст меню. print пишет в лог сервера как есть, всегда.

ui.color

Разбирает цвет в \{ r, g, b \}.

Аргументы

Возвращает

Пример

Нужен, когда цвет вычисляется, а не пишется руками. В поля color значение можно передавать и без разбора — их читает сам модуль.

Палитра

ui.palette — таблица имя → { r, g, b }.
Неизвестное значение — ошибка со списком известных имён, а не тихий чёрный цвет.

Смотри также