Рассмотрим аргументы функции 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, "");
Ну вот на этом и все)
|