C++ 6.0 желательно
Некоторое знание языка C++
HL SDK 2.3
Время и терпение! (Важно)
Заходим в папку исходников в Single Player Source или в Multiplayer Source(смотря какого типа вашь мод). Далее, идём в папку cl_dll и открываем hud.cpp .
В районе 306 строки находим это:
CVAR_CREATE( "hud_classautokill", "1", FCVAR_ARCHIVE | FCVAR_USERINFO );
CVAR_CREATE( "hud_takesshots", "0", FCVAR_ARCHIVE );
Добовляем посли этих значений ещё 3 значения:
CVAR_CREATE( "hud_red","0", FCVAR_ARCHIVE );
CVAR_CREATE( "hud_green", "200", FCVAR_ARCHIVE );
CVAR_CREATE( "hud_blue", "0", FCVAR_ARCHIVE );
Значение высчитывается по цветам RGB, первый красный, второй зелёный и соответственно третий синий.
Теперь открываем файл cl_util.h. В районе сточки 153 и заменяем этот код:
inline void UnpackRGB(int &r, int &g, int &b, unsigned long ulRGB)
{
r = (ulRGB & 0xFF0000) >>16;
g = (ulRGB & 0xFF00) >> 8;
b = ulRGB & 0xFF;
}
inline void UnpackRGB(int &r, int &g, int &b, unsigned long ulRGB)
{
if ( ulRGB == RGB_YELLOWISH )
{
r = CVAR_GET_FLOAT( "hud_red" );
g = CVAR_GET_FLOAT( "hud_green" );
b = CVAR_GET_FLOAT( "hud_blue" );
}
else
{
r = (ulRGB & 0xFF0000) >>16;
g = (ulRGB & 0xFF00) >> 8;
b = ulRGB & 0xFF;
}
}
Таким образом мод говорит движку какой цвет будет по умолчянию. Цвета пока не работают, можете проверить! Откройте health.cpp и перейдите в район строки 233.
FillRGBA(x, y, iWidth, iHeight, 255, 160, 0, a);
FillRGBA(x, y, iWidth, iHeight, r, g, b, a);
This will tell the engine to read the health color from our CVARs.
ПРЕДУПРЕЖДЕНИЕ: Если при компиляции будут ошибки в файле hud_spectator.cpp, откройте его и перейдите в район сточки 1079 и заменим эту строку:
ПРЕДУПРЕЖДЕНИЕ: Я тестировал это в сингплеере, но в мултиплеере тоже должно работать!
Я надеюсь это поможет вам в создании ваших модов! Рекомендуйте этот урок тем, кто нуждается в помощи по смену цвета HUD'а.