Главная » Статьи » Скриптинг/ Статьи/ Мануалы |
Работа с HUD и DHUD сообщениями
Источник: JustServer.Ru Для начала рассмотрим аргументы функции set_hudmessage: Quote 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, кроме последнего аргумента: Quote reliable - При false может не дойти до игрока, но не будет вызывать лаги у игрока как при true. Также у HUD сообщений существует SyncHud это замена каналов, рассмотрим функции SyncHud'a: Code 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 минус количество отсылаемых) Code for (new iDHUD = 0; iDHUD < 7; iDHUD++) show_dhudmessage(pId /*Или 0 если всем*/, ""); Чтобы очистить все сообщения посылаем 8 пустых DHUD сообщений Code for (new iDHUD = 0; iDHUD < 8; iDHUD++) show_dhudmessage(pId /*Или 0 если всем*/, ""); Можно получить такую функцию: Code stock ClearDHUDMessages(pId, iClear = 8) for (new iDHUD = 0; iDHUD < iClear; iDHUD++) show_dhudmessage(pId, ""); Примечания: fxtime не работает в DHUD сообщениях. Нельзя одновременно показать больше 8 DHUD сообщений. Примеры использования: С использованием обычных каналов в HUD сообщениях. Code #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, "Вы отослали игроку сообщение :D"); } С использованием SyncHud. Code #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, "Вы отослали игроку сообщение :D"); } public ClCmdClear(pId) ClearSyncHud(pId, g_syncHudMessage); С использованием DHUD сообщения. Code #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, "Вы отослали игроку сообщение :D"); } C использованием очистки DHUD сообщения и "Анти-накладки". Code #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, "Вы отослали игроку сообщение :D"); } public ClCmdClear(pId) ClearDHUDMessages(pId); stock ClearDHUDMessages(pId, iClear = 8) for (new iDHUD = 0; iDHUD < iClear; iDHUD++) show_dhudmessage(pId, ""); | |
Просмотров: 1992 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |