TUT Робота з HUD та DHUD повідомленнями - українська спільнота зі скриптингу AMXX
Модератор: Chuvi
- Список форумів‹ AMX Mod X‹ Статті / фрагменти коду
У цьому розділі форуму можна створювати теми, що стосуються лише навчального матеріалу по AMX Mod X.
[TUT] Робота з HUD та DHUD повідомленнями
[email protected] » 14 Сер 2011, 23:47
Автор: WPMG [email protected] Джерело: JustServer.Ru
У цій статті ми розглянемо використання HUD та DHUD повідомлень.
Для початку розглянемо аргументи функції set_hudmessage: Код: Виділити все red - Кількість червоного кольору; green - Кількість зеленого кольору; blue - Кількість синього кольору; x - Координата X, йде зліва направо, 0.0 зліва, 1.0 праворуч, -1.0 по центру; y - Координата Y, йде зверху вниз, 0.0 зверху, 1.0 знизу, -1.0 по центру; ; Простий -> Пропадання (Загасання), 1 - (Поява -> Простий -> Пропадання (Загасання)) + Миготіння, 2 - Друкування літер -> Простий -> Пропадання (Згасання); ефект швидкості друкування (1 буква в % секунд); бути більше 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 всім, 10>syncObj - ID SyncHud'а, fmt - Повідомлення, далі аргументи до повідомлення; ClearSyncHud(target, syncObj) - Видаляє всі повідомлення викликані syncObj'ом, аргументи: target - Гравець, 0 всім , syncObj - ID SyncHud'а;
Тепер ми розглянемо як подолати накладання повідомлень у повідомленнях DHUD.
Для цього потрібно надіслати 8 порожніх повідомлень або 7, 6 в залежності від кількості повідомлень, що відсилаються (9 мінус кількість посилаються) Код: Виділити все for (new iDHUD = 0 ; iDHUD
Щоб очистити всі повідомлення надсилаємо 8 порожніх DHUD повідомлень Код: Виділити все for (new iDHUD = 0 ; iDHUD
Можна отримати таку функцію: Код: Виділити все stock ClearDHUDMessages ( pId , iClear = 8 ) for (new iDHUD = 0 ; iDHUD
Примітки: fxtime не працює в DHUD повідомленнях. Не можна одночасно показати більше 8 DHUD повідомлень.
Приклади використання: З використанням звичайних каналів у повідомленнях HUD. Код: Виділити все #include
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. Код: Виділити все #include
public plugin_init () register_clcmd ("say /test", "ClCmdTest"); register_clcmd ("say /clear", "ClCmdClear");
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 повідомлення. Код: Виділити все #include #include
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" ); > З використанням очищення DHUD повідомлення та "Анти-накладки". Код: Виділити все #include #include
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