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, так как это самые востребованные значения.
Спасибо за прочтение! Искренне надеюсь, что вы почерпнули для себя много нового.