Русское сообщество по скриптингу

[TUT] Работа с HUD и DHUD сообщениями

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

[TUT] Работа с HUD и DHUD сообщениями

Сообщение PRoSToTeM@ » 14 авг 2011, 23:47

Автор: WPMG PRoSToTeM@
Источник: 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 по центру;
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 0iDHUD 7iDHUD++)
        show_dhudmessage(pId /*Или 0 если всем*/""); 


Чтобы очистить все сообщения посылаем 8 пустых DHUD сообщений
Код: Выделить всё
for (new iDHUD 0iDHUD 8iDHUD++)
        show_dhudmessage(pId /*Или 0 если всем*/""); 


Можно получить такую функцию:
Код: Выделить всё
stock ClearDHUDMessages(pIdiClear 8)
        for (new iDHUD 0iDHUD iCleariDHUD++)
                show_dhudmessage(pId""); 


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

Примеры использования:
С использованием обычных каналов в HUD сообщениях.
Код: Выделить всё
#include <amxmodx>
 
public plugin_init()
        register_clcmd("say /test""ClCmdTest");
 
public ClCmdTest(pId)
{
        set_hudmessage(02550, -1.0, -1.021.01.00.11.0, -1);
        show_hudmessage(pId"Вы отослали игроку сообщение :D");

С использованием 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(02550, -1.0, -1.021.01.00.11.0, -1);
        ShowSyncHudMsg(pIdg_syncHudMessage"Вы отослали игроку сообщение :D");
}
 
public ClCmdClear(pId)
        ClearSyncHud(pIdg_syncHudMessage); 

С использованием DHUD сообщения.
Код: Выделить всё
#include <amxmodx>
#include <dhudmessage>
 
public plugin_init()
        register_clcmd("say /test""ClCmdTest");
 
public ClCmdTest(pId)
{
        set_dhudmessage(02550, -1.0, -1.021.01.00.11.0false);
        show_dhudmessage(pId"Вы отослали игроку сообщение :D");

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
(02550, -1.0, -1.021.01.00.11.0false);
        show_dhudmessage(pId"Вы отослали игроку сообщение :D");
}
 
public ClCmdClear(pId)
        ClearDHUDMessages(pId);
 
stock ClearDHUDMessages
(pIdiClear 8)
        for (new iDHUD 0iDHUD iCleariDHUD++)
                show_dhudmessage(pId""); 
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение [Cs-gig]Lenin » 01 ноя 2012, 01:12

кто скажет почему сообщение не дописывается а пропадает недописанным .
Код: Выделить всё
#include <amxmodx>
#include <dhudmessage>

   public client_putinserver(id) {
       new ids[1]
       ids[0] = id
       set_task(10.0,"msg1",0,ids,1)
       set_task(20.0,"msg2",0,ids,1)
       set_task(30.0,"msg3",0,ids,1)
       set_task(40.0,"msg4",0,ids,1)
       set_task(50.0,"msg5",0,ids,1)
       set_task(60.0,"msg6",0,ids,1)
       set_task(70.0,"msg7",0,ids,1)
       set_task(80.0,"msg8",0,ids,1)
       set_task(90.0,"msg9",0,ids,1)
       set_task(100.0,"msg10",0,ids,1)
       return PLUGIN_CONTINUE
   }
   public msg1(ids[]){
       new motm[192],hostname[64],name[32],id = ids[0]
       get_cvar_string("amx_welcome_msg1",motm,191)
       get_cvar_string("hostname",hostname,63)
       replace(motm,191,"%hostname%",hostname)
       get_user_name(id,name,31)
       replace(motm,191,"%name%",name)
       set_dhudmessage(0, 255, 0)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
   public msg2(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg2",motm,191)
       set_dhudmessage(66, 170, 255)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
   public msg3(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(255, 165, 0)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
public msg4(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(0, 255, 0)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
public msg5(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(66, 170, 255)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
public msg6(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(255, 165, 0)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
public msg7(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(0, 255, 0)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
public msg8(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(66, 170, 255)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
public msg9(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(255, 165, 0)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
public msg10(ids[]){
       new motm[192],id = ids[0]
       get_cvar_string("amx_welcome_msg3",motm,191)
       set_dhudmessage(255, 165, 0)
       show_dhudmessage(id,motm)
       return PLUGIN_CONTINUE
   }
   public plugin_init() {
       register_plugin("Welcome HudMsg","1.0","DeSeRt^^")
       register_cvar("amx_welcome_msg1","Здравствуйте %name%, вы играте на %hostname%")
       register_cvar("amx_welcome_msg2","Наш сайт GiG-cs.RU")
       register_cvar("amx_welcome_msg3","Админка стоит 100-200 рублей skype:taraban10.")
       register_cvar("amx_welcome_msg4","Админка стоит 100-200 рублей skype:taraban10.")
       register_cvar("amx_welcome_msg5","Пей пиво ,прыгай мимо")
       register_cvar("amx_welcome_msg6","Играешь ночью?Получи подарок:)")
       register_cvar("amx_welcome_msg7","Тебе 16+ ? Регестрируйся на сайте и получай випку!")
       register_cvar("amx_welcome_msg8","Меню на F3")
       register_cvar("amx_welcome_msg9","Мы рады вам , и вашим друзьям:)")
       register_cvar("amx_welcome_msg10","Удачной игры на нашем сервере :)")
       return PLUGIN_CONTINUE
   }
Помог нажми СПАСИБО
Аватара пользователя
[Cs-gig]Lenin
 
Сообщения: 79
Зарегистрирован: 22 фев 2012, 21:08
Благодарил (а): 7 раз.
Поблагодарили: 15 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение botkA » 01 ноя 2012, 21:44

Наверное потому что, макс худ каналов может быть 4. Иначе накладываться будут один на другой
Аватара пользователя
botkA
 
Сообщения: 11
Зарегистрирован: 29 окт 2012, 13:33
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Языки программирования: Counter-Strike 1.6
Pascal ;)
C++ (чуток)

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение L4D2 » 01 ноя 2012, 21:50

[quote="[Cs-gig]Lenin"][/quote]


[pawn]
  1. new motm[192],hostname[64],name[32],id = ids[0]

  2.        get_cvar_string("amx_welcome_msg1",motm,191)

  3.    

  4.        replace(motm,191,"%name%",name)
[/pawn]

[pawn]
  1. new motm[192]
[/pawn]
Помойму здесь увеличить нужно, не ?

==============================================
|| Пишу не большие плагины под заказ: Заказ онлайн (Кликабельно)
|| Ссылка на официальный топик: заказ плагинов.
|| Желаешь оставить отзыв: тебе сюда(кликни).
==============================================
Аватара пользователя
L4D2
 
Сообщения: 792
Зарегистрирован: 25 июн 2011, 19:26
Благодарил (а): 240 раз.
Поблагодарили: 100 раз.
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение [Cs-gig]Lenin » 01 ноя 2012, 22:26

сколько ?)
Помог нажми СПАСИБО
Аватара пользователя
[Cs-gig]Lenin
 
Сообщения: 79
Зарегистрирован: 22 фев 2012, 21:08
Благодарил (а): 7 раз.
Поблагодарили: 15 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение Plrip » 01 ноя 2012, 22:54

512
:-D

Status:
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2903
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 237 раз.
Поблагодарили: 603 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение Maloy116 » 03 дек 2012, 17:33

Есть такой плагин показывает Hud сообщени, убитым или тем кто сидит в спектрах! Как сделать чтобы сообщение выводилось только тем же убитым и тем к то в спектрах но не на всем протяжении а к примеру только 30 секунд!
[spoiler]#include <amxmodx>
#include <amxmisc>

#define PLUGIN "hudreklama"
#define VERSION ""
#define AUTHOR ""

#define HUD_FORMAT 0, 255, 0, -1.0, 0.14, 1, 6.0, 10.0, 0.1, 2.0

new iMaxplayers

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
set_task(1.0, "function", _, _, _, "b")
iMaxplayers = get_maxplayers()
}

public function()
{
for(new i = 1; i <= iMaxplayers; i++)
{
if(!is_user_alive(i))
{
set_hudmessage(HUD_FORMAT)
show_hudmessage(i, "")
}
}
}[/spoiler]
Аватара пользователя
Maloy116
 
Сообщения: 1
Зарегистрирован: 06 фев 2012, 19:20
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение Серега(ElemenT) » 08 янв 2013, 06:04

set_dhudmessage(238, 0, 0, HUD_EVENT_X, HUD_EVENT_Y, 0, 0.0, 5.0, 1.0, 1.0, -1)
что не так тут? выдает ошибку
Аватара пользователя
Серега(ElemenT)
 
Сообщения: 314
Зарегистрирован: 27 сен 2012, 01:35
Благодарил (а): 81 раз.
Поблагодарили: 9 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение GaMeRs » 08 янв 2013, 06:11

если dhud то в конце вместо -1 поставь false
Аватара пользователя
GaMeRs
 
Сообщения: 1574
Зарегистрирован: 12 мар 2012, 17:25
Благодарил (а): 84 раз.
Поблагодарили: 468 раз.

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение Otstrel » 18 авг 2013, 13:51

Как сделать чтобы Дхуд появился только в начале раунда и все?
Аватара пользователя
Otstrel
 
Сообщения: 138
Зарегистрирован: 25 июн 2013, 15:00
Благодарил (а): 31 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с HUD и DHUD сообщениями

Сообщение Bos93 » 18 авг 2013, 13:59

Otstrel писал(а):Как сделать чтобы Дхуд появился только в начале раунда и все?

Крутой вопрос. Вам бы основы подучить. Логически,отловить начало раунда и показать дхуд. В чем сложность?
Всем добра, любви и осознанности.

Nosce animum tuum.

А осознание и есть, что понял и осмыслил..
А коль не думал ты о том, то кто о том замыслил..?
Аватара пользователя
Bos93
 
Сообщения: 1425
Зарегистрирован: 03 апр 2010, 13:44
Благодарил (а): 149 раз.
Поблагодарили: 514 раз.

Пред.След.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6