1. Вступление. Для
отображения цветов в WarCraft III, мы пишем перед нужным словом
специальный текст, который движок WarCraft преобразует в цвет. Чтобы
полностью понять, как нужно поставить цвет, надо знать, как это
работает, чтобы не обраoаться к программам, когда этого нельзя сделать.
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, так как это самые востребованные значения. Автор: [DUOS]
Источник: http://warcraft3ft.info/board/podrobno_o_cvetakh_v_warcraft_iii/14-1-0-1224 |