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

Иконка статуса

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

Модератор: Chuvi

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

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

Иконка статуса

Сообщение DJ_WEST » 02 окт 2009, 08:35

Автор: SAMURAI16
Перевод и редактирование: DJ_WEST

Иконка статуса - это HUD иконка, которая располагается на экране игрока и используется в определенных случаях для определения статуса игрока. В данной статье мы рассмотрим способ создания такой иконки. За данную иконку отвечает сообщение с названием StatusIcon.
Структура данного сообщения:
Status byte Статус сообщения
SpriteName string Название спрайта
ColorR byte Цвет R (красный)
ColorG byte Цвет G (зеленый)
ColorB byte Цвет B (синий)

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

Итак, начнем:
1. Прежде всего нам необходимо создать глобальную переменную для хранения ID сообщения, которое отвечает за такого рода иконку:
Код: Выделить всё

new g_IconStatus 

2. В plugin_init мы получаем ID сообщения и сохраняем его в переменную g_IconStatus :
Код: Выделить всё

g_IconStatus  
= get_user_msgid("StatusIcon")
 

3. Для того чтобы отобразить иконку статуса, нам необходимо создать сообщение следующим образом:
Код: Выделить всё

message_begin
(MSG_ONE_UNRELIABLE, g_IconStatus, {0,0,0}, id) 
 

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>

new g_IconStatus

public plugin_init
() 
{
    register_plugin("Status Icon", "0.1", "SAMURAI")
    
    register_forward
(FM_PlayerPreThink, "Pre_Think")
    
    g_IconStatus 
= get_user_msgid("StatusIcon")   
}

public Pre_Think(id)
{
    if (!(pev(id,pev_button) & FL_ONGROUND))
    {    
        message_begin
(MSG_ONE_UNRELIABLE, g_IconStatus, {0,0,0}, id)
        write_byte(1)
        write_string("dmg_poison")
        write_byte(0)
        write_byte(255)
        write_byte(0)
        message_end()
    }   
}  


[align=center]
item_longjump.jpg
item_battery.jpg
dmg_shock.jpg
dmg_rad.jpg
dmg_heat.jpg
dmg_gas.jpg
dmg_drown.jpg
dmg_cold.jpg
dmg_bio.jpg
[/align]


Список названий спрайтов, которые могут быть использованы:
Код: Выделить всё

selection           
bucket1               
bucket2               
bucket3               
bucket4               
bucket5               
bucket0               
dmg_bio               
dmg_poison           
dmg_chem           
dmg_cold       
dmg_drown           
dmg_heat           
dmg_gas               
dmg_rad               
dmg_shock           
number_0           
number_1           
number_2         
number_3           
number_4           
number_5           
number_6           
number_7           
number_8           
number_9           
divider               
cross               
dollar               
minus               
plus               
c4               
defuser             
stopwatch           
smallskull             
smallc4             
smallvip               
buyzone               
rescue               
escape           
vipsafety           
suit_full           
suit_empty           
suithelmet_full           
suithelmet_empty     
flash_full           
flash_empty           
flash_beam           
train_back         
train_stop           
train_forward1           
train_forward2           
train_forward3         
autoaim_c           
title_half           
title_life           
d_knife                   
d_ak47                 
d_awp                     
d_deagle           
d_flashbang           
d_fiveseven           
d_g3sg1               
d_glock18           
d_grenade           
d_m249               
d_m3               
d_m4a1               
d_mp5navy           
d_p228               
d_p90               
d_scout               
d_sg550               
d_sg552               
d_ump45         
d_usp               
d_tmp               
d_xm1014           
d_skull               
d_tracktrain           
d_aug                   
d_mac10               
d_elite               
d_headshot               
item_battery           
item_healthkit           
item_longjump           
radar
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Иконка статуса

Сообщение fl0wer » 20 авг 2011, 18:35

isioa писал(а):А координаты иконки можно настраивать?

нет :( .
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: Иконка статуса

Сообщение isioa » 20 авг 2011, 18:37

Я в печали :zzz:
Аватара пользователя
isioa
 
Сообщения: 129
Зарегистрирован: 10 апр 2011, 12:18
Благодарил (а): 91 раз.
Поблагодарили: 30 раз.

Re: Иконка статуса

Сообщение PRoSToTeM@ » 20 авг 2011, 18:53

Только разве metahook.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Иконка статуса

Сообщение isioa » 20 авг 2011, 19:04

Спасиб тём, но мне это ничего не говорит :crazy:
Аватара пользователя
isioa
 
Сообщения: 129
Зарегистрирован: 10 апр 2011, 12:18
Благодарил (а): 91 раз.
Поблагодарили: 30 раз.

Re: Иконка статуса

Сообщение PRoSToTeM@ » 20 авг 2011, 19:05

Погугли.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Иконка статуса

Сообщение isioa » 20 авг 2011, 19:21

Погуглил, нашел, ничего не понял, смирился :-D
Аватара пользователя
isioa
 
Сообщения: 129
Зарегистрирован: 10 апр 2011, 12:18
Благодарил (а): 91 раз.
Поблагодарили: 30 раз.

Re: Иконка статуса

Сообщение KORD_12.7 » 30 янв 2012, 08:36

Lt.RAT писал(а):
DJ_WEST писал(а):Через ItemStatus.

KORD_12.7 писал(а):А как в Half-Life 1 иконку вывести?
Описанный здесь способ не подходит =(

Совершенно верно, сообщения StatusIcon, не существует в ХЛ...

Все таки в Half-Life можно Вы должны зарегистрироваться, чтобы видеть ссылки.

_http://aghl.ru/ - Half-Life и Adrenaline Gamer: за пределами возможного
Аватара пользователя
KORD_12.7
Скриптер
 
Сообщения: 298
Зарегистрирован: 28 сен 2009, 10:14
Откуда: Владивосток
Благодарил (а): 142 раз.
Поблагодарили: 257 раз.
Опыт программирования: Больше трех лет
Языки программирования: Half-Life
Opposing Force
Adrenaline Gamer
Counter-Strike

Re: Иконка статуса

Сообщение noo00oob » 30 янв 2012, 09:26

Да, сообщение менюшки в хл тоже не используется, но оно регестрируется через дллку, какая проблема была регистрировать и эту. :-)
Один фрукт, страдающий недостачей времени, нашел его ради меня любимого и писал(а):
noo00oob, зачем родился на свет вообще? срать на форумах это понятно.. больше изъеба не найти как бэ? а то, что ты недоношенная скотина, сдерживайся, детка.
noo00oob
 
Сообщения: 1061
Зарегистрирован: 09 янв 2010, 21:52
Благодарил (а): 258 раз.
Поблагодарили: 394 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Иконка статуса

Сообщение KORD_12.7 » 30 янв 2012, 09:49

Я почему-то думал что StatusIcon только в КС есть (надо было мне раньше на сорцы поглазеть) :-)

_http://aghl.ru/ - Half-Life и Adrenaline Gamer: за пределами возможного
Аватара пользователя
KORD_12.7
Скриптер
 
Сообщения: 298
Зарегистрирован: 28 сен 2009, 10:14
Откуда: Владивосток
Благодарил (а): 142 раз.
Поблагодарили: 257 раз.
Опыт программирования: Больше трех лет
Языки программирования: Half-Life
Opposing Force
Adrenaline Gamer
Counter-Strike

Re: Иконка статуса

Сообщение Trickz » 18 июл 2012, 19:03

Почему после того как я вызвал иконку она не пропадает?
1. Отловил определенный момент игрока, с определенным оружием в руках - Иконка появилась
2. Отловил противоположное действие игрока - Иконка не пропадает
Аватара пользователя
Trickz
 
Сообщения: 208
Зарегистрирован: 22 дек 2010, 22:05
Откуда: Запорожье
Благодарил (а): 55 раз.
Поблагодарили: 12 раз.
Опыт программирования: Меньше месяца
Языки программирования: [AMXX/PAWN]

Пред.След.

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

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

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

cron