Приветствую Вас Гость | RSS

Молодёжный Игровой Проект CS 1.6

Пятница, 10.05.2024, 22:32
Главная » Статьи » CS 1.6

[ZM] Работа с HUD и DHUD сообщениями
Рассмотрим аргументы функции set_hudmessage:

red - Количество красного цвета;
green - Количество зелёного цвета;
blue - Количество синего цвета;
x - Координата X, идёт слева направо, 0.0 слева, 1.0 справа, -1.0 по центру;
y - Координата Y, идёт сверху вниз, 0.0 сверху, 1.0 снизу, -1.0 по центру;
effects - Эффект сообщения:
0 - Появление -> Простой -> Пропадание (Затухание),
1 - (Появление -> Простой -> Пропадание (Затухание)) + Мигание,
2 - Печатание букв -> Простой -> Пропадание (Затухание);
fxtime - Время отставания блеска от печатания букв во 2-ом эффекте ("Скользящий блеск");
holdtime - Время простоя сообщения;
fadeintime - Время появления сообщения, во 2-ом эффекте скорость печатания (1 буква в % секунд);
fadeouttime - Время пропадания сообщения (Затухание);
channel - канал сообщения, при -1 ищет следующий канал (Существует ограничение в 4 канала, т.е. не может быть больше 4 сообщений одновременно

Аргументы функции set_dhudmessage неотличаются от set_hudmessage, кроме последнего агрумента

reliable - При false может не дойти до игрока, но не будет вызывать лаги у игрока как при true

Также у HUD сообщений существует SyncHud это замена каналов, рассмотрим функции SyncHud'a:

CreateHudSyncObj() - Создаёт SyncHud;
ShowSyncHudMsg(target, syncObj, const fmt[], any:...) - Показывает HUD сообщение (SyncHud) использовать вместо show_hudmessage, аргументы:
target - Игрок, 0 всем,
syncObj - ID SyncHud'а,
fmt - Сообщение, дальше аргументы к сообщению;
ClearSyncHud(target, syncObj) - Удаляет все сообщения вызванные syncObj'ом, аргументы:
target - Игрок, 0 всем,
syncObj - ID SyncHud'а;

Теперь мы рассмотрим как побороть накладывание сообщений в DHUD сообщениях.

Для этого нужно отослать 8 пустых сообщений или 7, 6 в зависимости от количества отсылаемых сообщений (9 минус количество отсылаемых)

for (new iDHUD = 0; iDHUD < 7; iDHUD++)
show_dhudmessage(pId /*Или 0 если всем*/, "");

Чтобы очистить все сообщения посылаем 8 пустых DHUD сообщений

for (new iDHUD = 0; iDHUD < 8; iDHUD++)
show_dhudmessage(pId /*Или 0 если всем*/, "");

Можно получить такую функцию:

stock ClearDHUDMessages(pId, iClear = 8)
for (new iDHUD = 0; iDHUD < iClear; iDHUD++)
show_dhudmessage(pId, "");

Примечания:
fxtime не работает в DHUD сообщениях.
Нельзя одновременно показать больше 8 DHUD сообщений

Примеры использования:
С использованием обычных каналов в HUD сообщениях

#include amxmodx

public plugin_init()
register_clcmd("say /test", "ClCmdTest");

public ClCmdTest(pId)
{
set_hudmessage(0, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, -1);
show_hudmessage(pId, "Сообщение");
}

С использованием SyncHud

#include amxmodx

new g_syncHudMessage;

public plugin_init()
{
register_clcmd("say /test", "ClCmdTest");
register_clcmd("say /clear", "ClCmdClear");

g_syncHudMessage = CreateHudSyncObj();
}

public ClCmdTest(pId)
{
set_hudmessage(0, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, -1);
ShowSyncHudMsg(pId, g_syncHudMessage, "Сообщение");
}

public ClCmdClear(pId)
ClearSyncHud(pId, g_syncHudMessage);

С использованием DHUD сообщения

#include amxmodx
#include dhudmessage

public plugin_init()
register_clcmd("say /test", "ClCmdTest");

public ClCmdTest(pId)
{
set_dhudmessage(0, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, false);
show_dhudmessage(pId, "Сообщение");
}

C использованием очистки DHUD сообщения и "Анти-накладки"

#include amxmodx
#include dhudmessage

public plugin_init()
{
register_clcmd("say /test", "ClCmdTest");
register_clcmd("say /clear", "ClCmdClear");
}

public ClCmdTest(pId)
{
ClearDHUDMessages(pId);

set_dhudmessage(0, 255, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.1, 1.0, false);
show_dhudmessage(pId, "Сообщение");
}

public ClCmdClear(pId)
ClearDHUDMessages(pId);

stock ClearDHUDMessages(pId, iClear = 8)
for (new iDHUD = 0; iDHUD < iClear; iDHUD++)
show_dhudmessage(pId, "");

Ну вот на этом и все)
Категория: CS 1.6 | Добавил: Evstifeev (12.06.2014)
Просмотров: 3605 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]