Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 29 мар 2024, 03:14

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: [TUT] User Icon Status - Иконка статуса
СообщениеДобавлено: 30 янв 2012, 10:16 
Не в сети
Аватара пользователя
Зарегистрирован:
06 июн 2010, 16:53
Последнее посещение:
26 мар 2024, 14:36
Сообщения: 1143
Откуда: Владивосток
[TUT] User Icon Status - Иконка статуса

Автор: SAMURAI16
Перевод и редактирование: DJ_WEST
Адаптация для Half-Life: KORD_12.7

Источники:
http://forums.alliedmods.net/showthread.php?t=52529
http://amx-x.ru/viewtopic.php?f=9&t=103

Иконка статуса - это HUD иконка, которая располагается на экране игрока и используется в определенных случаях для определения статуса игрока. В данной статье мы рассмотрим способ создания такой иконки. За данную иконку отвечает сообщение с названием StatusIcon. Показать можно любой спрайт, который объявлен у клиента в sprites/hud.txt. Одновременно можно отобразить четыре иконки.

Структура данного сообщения:
Цитата:
Status - byte - Статус сообщения
SpriteName - string - Название спрайта
ColorR - byte - Цвет R (красный)
ColorG - byte - Цвет G (зеленый)
ColorB - byte - Цвет B (синий)

    Статус сообщения может быть следующим:
  • 0 - спрятать иконку
  • 1 - показать иконку
  • 2 - обновить иконку

Если статус равен 0, то посылать цвет не нужно.

Итак, начнем:
1. Прежде всего нам необходимо создать глобальную переменную для хранения ID сообщения, которое отвечает за такого рода иконку:
Код:
new g_msgStatusIcon
2. По умолчанию, в Half-Life (в отличии от Counter-Strike) сообщение StatusIcon на сервере не зарегистрировано, поэтому в plugin_precache нам необходимо его зарегистрировать и получить ID. (В Bugfixed and improved HL release данное собщение регистрируется, поэтому надо сначала попробовать получить его ID, и если оно 0, то тогда зарегистрировать самим):
Код:
public plugin_precache() 
{
   g_msgStatusIcon = get_user_msgid("StatusIcon")
   if (!g_msgStatusIcon)
      g_msgStatusIcon = engfunc(EngFunc_RegUserMsg,"StatusIcon",-1)
}
3. Для того чтобы отобразить иконку статуса, нам необходимо создать сообщение следующим образом:
Код:
engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, g_msgStatusIcon, {0.0, 0.0, 0.0}, iPlayer)
4. Дальше нам необходимо передать байт, отвечающий за статус сообщения:
Код:
write_byte(1) // 1 - означает показ иконки.
5. Затем необходимо передать название спрайта:
Код:
write_string("имя спрайта")
6. Теперь нам нужно передать цвет иконки:
Код:
write_byte(r)
write_byte(g)
write_byte(b)
7. Завершаем сообщение следующим образом:
Код:
message_end()

Примерный плагин:
Код:
#include <amxmodx>
#include <fakemeta>

public plugin_precache()
{
   g_msgStatusIcon = engfunc(EngFunc_RegUserMsg, "StatusIcon", -1)

   register_clcmd("say /show_icon", "ShowStatusIcon")
   register_clcmd("say /hide_icon", "HideStatusIcon");
}

public ShowStatusIcon(iPlayer)
{
   engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, g_msgStatusIcon, {0.0, 0.0, 0.0}, iPlayer)
   write_byte(1)
   write_string("item_longjump")
   write_byte(0);
   write_byte(255);
   write_byte(0);
   message_end
}

public HideStatusIcon(iPlayer)
{
   engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, g_msgStatusIcon, {0.0, 0.0, 0.0}, iPlayer)
   write_byte(0)
   write_string("item_longjump")
   message_end
}

 Список стандартно доступных спрайтов

_________________
Изображение
Vi Veri Veniversum Vivus Vici


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB