1. Вступление.
Для отображения цветов в WarCraft III, мы пишем перед нужным словом
специальный текст, который движок WarCraft преобразует в цвет. Чтобы
полностью понять, как нужно поставить цвет, надо знать, как это
работает, чтобы не образаться к программам, когда этого нельзя сделать. 2. Что такое цвет.
Все мы, надеюсь, знаем основные цвета:
• Красный
• Зелёный
• Синий
Когда мы ведём речь о них, мы их объединяем в RGB. Есть и другие цветовые схемы (CMYK, к примеру, но сейчас речь не о них).
В цветовой схеме RGB каждый основной цвет может быть назван каналом,
иногда присутствует и четвёртый канал, который назвается Альфа-канал,
который отвечает за прозрачность, так что при соединении их воедино в
цветовую схему, она будет называться "RGBA". Каждый из данных каналов
требует 1 байт для того, чтобы компьютер мог обрабатывать цвет.
1
байт = 8 бит, а когда речь идёт о битах, тогда речь идёт и о двоичной
системе (Binary), которая состоит только из двух символов - 1 и 0.
Компьютер понимает язык такой системы.
Ниже дана таблица, в которой
описан принцип работы двоичной системы и как из неё вычисляют число.
Так как 1 байт = 8 бит, начнём с умножения на 2.
В Binary #2 каждый бит из набора равен единице, это означает, что 8 бит
(1 байт) может хранить максимальное значение до 255. Правда, для того,
чтобы создать 0, не нужно ни одного бита, а это означает, что область
допустимых значений - от 0 до 255, это 256 слотов.
Вы можете
подумать, что существует огромнейшее количество цветов и они ну никак не
могут поместиться в 1 байт, и вы будете абсолютно правы. Мы даём 1 байт
на каждый канал, а это 256 * 256 * 256 = 16777216 различных цветов
(24-битная глубина цветов), причём это без учёта Альфа-канала, который
поднимает число цветов до 4294967296 (32-битная глубина цветов).
И всё же, нам нужен более знакомый человеку путь представления этих
четырёх отдельных байтов, так как для нас представлять цвета в таком
виде трудно, а память компьютера более загружается. Поэтому нам нужно
сжать каждый байт, используя систему счисления, которая уменьшит
требовательность к памяти компьютера и сделает более понятный ввод
цветового кода.
Существует много систем счисления, но чаще всего для цветов используется шестнадцатеричная (Hex).
3. Шестнадцатеричная система счисления.
Эта система называется 16-ричной, так как состоит из 16 уникальных символов. Вот они:
Если кто не знает, Decimal - десятичная система счисения.
Нех (16-ричная система, далее хекс) используется в основном для более
понятного и удобного представления двоичной системы, но мы не будем
работать с WarCraft III через двоичную систему. Всё, что нам надо - это
представить 4 байта, как одно значение, которое будет содержать цветовой
код.
В хексе строки цветового кода будут представлены двумя символами (16 * 16 = 256)
Так как RGBA требует 4 байта, хекс идеально подходит в целях сжатия.
Ваш цветовой код станет длиной в 4 * 2 = 8 символов. Она изменит RGBA на
RRGGBBAA.
Давайте сконвертируем шестнадцатеричное число в десятичное.
Как вы видите сами, мы смогли 3 символа представить в виде двух и
скомбинировать всё в одну строку. RGBA всегда в 8 символов длиной, а так
как мы убрали по одному символу из каждого значения, мы сэкономили себе
байт.
Теперь вам понятно, как работает хекс. Перейдём к следующей части.
4. Цветовой код.
Научившись конвертировать код в строку, вы должны знать, как
использовать то, что мы получили ранее. Мы не работали ни с двоичной, ни
с десятичной системами, но зато изучили шестнадцатеричную систему и
сконвертировали при помощи неё код. Теперь давайте используем полученную
строку.
Везде, где только можно, цветовой код представлен в виде
RRGGBBAA, но программирование за границами WarCraft III довольно
непростое, а некоторые вещи даже не закончены.
В WarCraft III
строка с цветовым кодом представлена в виде AARRGGBB. Но иногда
Альфа-канал движком WarCraft не обрабатывается! Всё равно нам приходится
писать код в полном объёме включая Альфа-канал.
Залить строку или
её часть цветом очень просто - перед словом, с которого надо начать
окрашивание, нужно поставить тег |c , а после последнего слова, которое
требуется окрасить - тег |r . Заметьте, после тега |c тут же, без
пробелов надо написать код цвета в формате AARRGGBB. Похоже на BB-коды
форума, правда?
5. Несколько цветовых кодов.
Ниже даю вам табличку, которая покажет вам, какие цвета у каких игроков в WarCraft, так как это самые востребованные значения.
Спасибо за прочтение! Искренне надеюсь, что вы почерпнули для себя много нового.