Ну, что-ж статья посвящена следующему:
* Научиться изменять цвет шрифта в меню
* Научиться изменять цвет шрифта в игре
Результаты :
Для достижения результата на 1 картинке мы открываем наш проект GameMP и ищем в нем файл SEColors.h
Далее видим..
#ifndef __SECOLORS_H
#define __SECOLORS_H 1
#define SE_COL_ORANGE_LIGHT 0xffd70000
#define SE_COL_ORANGE_NEUTRAL 0xee9c0000
#define SE_COL_ORANGE_DARK 0x9b4b0000
#define SE_COL_ORANGE_DARK_LT 0xbc6a0000
#define SE_COL_BLUE_DARK_HV 0x151c2300
#define SE_COL_BLUE_DARK 0x2a384600
#define SE_COL_BLUE_DARK_LT 0x43596f00
#define SE_COL_BLUE_NEUTRAL 0x5c7a9900
#define SE_COL_BLUE_NEUTRAL_LT 0x6097cc00
#define SE_COL_BLUE_LIGHT 0x64b4ff00
#define SE_COL_BLUEGREEN_LT 0x6cff6c00
#define SE_COL_PURPLE 0x6a556000
#define SE_COL_BLACK 0x00000000
#define SE_COL_WHITE 0xffffffff
#endif
Вы наверное заметили, что трех последних параметров у вас нет. Так и должно быть. Просто добавьте их в свой SEColors.h, после чего сохраните.
Итак, мы добавили 3 цвета - Фиолетовый, черный и белый. Добавлять цвета можно с помощью NameEditor.
Теперь мы как-то должны их использовать.
Для этого мы открываем файл Game.cpp в проекте GameMP.
Обратим внимание на следующие строки кода:
if (!strcmp(strName, "thumbnail border")) {
colDefault = SE_COL_BLUE_NEUTRAL|255;
} else if (!strcmp(strName, "no thumbnail")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "popup box")) {
colDefault = SE_COL_BLUE_NEUTRAL|255;
} else if (!strcmp(strName, "tool tip")) {
colDefault = SE_COL_ORANGE_LIGHT|255;
} else if (!strcmp(strName, "unselected")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "selected")) {
colDefault = SE_COL_ORANGE_LIGHT|255;
} else if (!strcmp(strName, "disabled selected")) {
colDefault = SE_COL_ORANGE_DARK_LT |255;
} else if (!strcmp(strName, "disabled unselected")) {
colDefault = SE_COL_ORANGE_DARK|255;
} else if (!strcmp(strName, "label")) {
colDefault = C_WHITE|255;
} else if (!strcmp(strName, "title")) {
colDefault = C_WHITE|255;
} else if (!strcmp(strName, "editing")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "hilited")) {
colDefault = SE_COL_ORANGE_LIGHT|255;
} else if (!strcmp(strName, "hilited rectangle")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "edit fill")) {
colDefault = SE_COL_BLUE_DARK_LT|75;
} else if (!strcmp(strName, "editing cursor")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "model box")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "hiscore header")) {
colDefault = SE_COL_ORANGE_LIGHT|255;
} else if (!strcmp(strName, "hiscore data")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "hiscore last set")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "slider box")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "file info")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "display mode")) {
colDefault = SE_COL_ORANGE_NEUTRAL|255;
} else if (!strcmp(strName, "bcg fill")) {
colDefault = SE_COL_BLUE_DARK|255;
}
В этих строках содержатся цвета букв, а именно
if (!strcmp(strName, "thumbnail border")) {
Этот параметр означает, какой цвет будет в границе .Tbn файла при выборе уровня в меню.Я поменял его на SE_COL_WHITE. Компилируем и тестируем.
Собственно, вот, появилась белая рамочка.
Полный размер :
Следующий параметр называется..
} else if (!strcmp(strName, "no thumbnail")) {
Что же означает этот параметр? Этот параметр регулирует цвет текста " фото отсутствует " при выборе уровня, если автор карты забыл выложить .tbn файл вместе со своей картой.
Третий параметр :
} else if (!strcmp(strName, "popup box")) {
Popup box - Насколько translate.google.ru говорит правильно, "всплывающее окно". Я долго искал значение и наконец, не нашел его :-(
Возможно, он заменяет цвет чего-либо в всплывающем окне, когда вы нажимаете "Выйти из игры" или "Завершение игры".
Четвертый параметр :
} else if (!strcmp(strName, "tool tip")) {
Tool Tip - подсказка, показываемая внизу экрана при наведении на параметр меню.
Скажем..
Пятый параметр :
} else if (!strcmp(strName, "unselected")) {
Unselected - не выбранное. То есть...
Шестой параметр:
} else if (!strcmp(strName, "selected")) {
Selected - это выбранное. Оно обозначено оранжевым.
Здесь все ясно.
Следующий параметр:
} else if (!strcmp(strName, "editing")) {
Он регулирует цвет букв тогда, когда вы что-либо редактируете.
Например, никнейм.
} else if (!strcmp(strName, "hilited")) {
Он регулирует цвет цифры в так называемой "коробочке" для номера игрока.
У меня белым цветом цифра 6.
Этот параметр регулирует цвет в самой "коробочке" :)
} else if (!strcmp(strName, "edit fill")) {
} else if (!strcmp(strName, "editing cursor")) {
Первый регулирует цвет в поле для изменения ника игрока:
Ладно, думаю этого пока будет достаточно.
Переходим ко второму файлу - HUD.cpp
Мы хотим добиться вот этого результата.
Или какого-либо другого, тут уже на ваш вкус.
Найдем строки в которых упоминается "SE_COL". Так мы сразу обнаружим цвет.
Первое, что попадается на глаза - это : ..
_pDP->Fill( fSizeI-fBlackStrip-1, 0, fBlackStrip+1, fSizeJ, C_BLACK|CT_OPAQUE);
colMask = LerpColor(SE_COL_BLUE_NEUTRAL_LT, C_WHITE, 0.25f); // здесь я изменил цвет.
FLOAT _fYResolutionScaling = (FLOAT)_pixDPHeight/480.0f;
Как-то так. Параметр регулирует цвет в снайперском прицеле. Нам это не понадобится, поэтому ищем далее.
_colHUD = 0x4C80BB00;
_colHUDText = SE_COL_BLUE_NEUTRAL_LT; /* а эта штука регулирует цвет патронов в правом нижнем углу экрана. */
_ulAlphaHUD = NormFloatToByte(hud_fOpacity);
_tmNow = _pTimer->CurrentTick();
Тут я тоже поменял. Но можно сделать и покрасивее, но тут уже как вы хотите.
Ищем далее.
COLOR colMax = SE_COL_BLUE_NEUTRAL_LT; // Здесь происходит колоризация
COLOR colTop = SE_COL_BLUE_NEUTRAL_LT; // например, когда полоска жизней наверху, при Enemy Counter'e
COLOR colMid = LerpColor(colTop, C_WHITE, 0.5f); // или здоровья, когда его много, средне и мало.
© Heming Hitrowski.
Комментарии
В своем моде тоже разбирался как изменять цвет шрифта =)
Нашел. =)
Была бы тогда эта статья - время на поиск значительно меньше бы ушло. Молодец! Классно написал. Даже очень классно!!