Главная » Статьи » Скриптинг/ Статьи/ Мануалы

Работа с HUD и DHUD сообщениями
Автор: WPMG PRoSToTeM@
Источник: 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, "");
Категория: Скриптинг/ Статьи/ Мануалы | Добавил: Administrator(ZO) (28.01.2012)
Просмотров: 1992 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вверх