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