Иконка ресурса

Health Display 1.1

Нет прав для скачивания
Статус
В этой теме нельзя размещать новые ответы.

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
I think, it will be better to use RG_CBasePlayer_TakeDamage hook and update health/armor victim's bar instead of constantly using of set_task
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,176
Помог
10 раз(а)
PurposeLess, just hide HUD on spawn a player, it’s not necessary to catch msg. Use member m_iHideHUD, example.
Код:
@message_hideweapon()
{
    set_msg_arg_int(1, ARG_BYTE,  get_msg_arg_int(1) | (1<<3));
}
Код:
/**
* Player HUD
* CBasePlayer::m_iHideHUD
*/
#define HIDEHUD_WEAPONS                 (1<<0)
#define HIDEHUD_FLASHLIGHT              (1<<1)
#define HIDEHUD_ALL                     (1<<2)
#define HIDEHUD_HEALTH                  (1<<3)
#define HIDEHUD_TIMER                   (1<<4)
#define HIDEHUD_MONEY                   (1<<5)
#define HIDEHUD_CROSSHAIR               (1<<6)
#define HIDEHUD_OBSERVER_CROSSHAIR      (1<<7)
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
Get real health by var_health or analog, arg in health msg limited by byte size 255 max.
Say in description about losing radar and damage direction marks.
 
Сообщения
278
Реакции
137
Mistrick,
Is there any method better? I couldn't do better.
Код:
#include <amxmodx>
#include <reapi>

public plugin_init() {
    register_plugin("Health Display", "1.2", "PurposeLess");

    RegisterHookChain(RG_CBasePlayer_Spawn, "@CBasePlayer_Spawn", .post=true);
    RegisterHookChain(RG_CBasePlayer_Killed, "@CBasePlayer_Killed", .post=true);
}

public client_disconnected(id)
{
    remove_task(id);
}

@CBasePlayer_Spawn(const id)
{
    if(!is_user_alive(id))
    {
        return;
    }

    set_member(id, m_iHideHUD, (1<<3));

    if(!task_exists(id))
    {
        set_task(0.1, "@task_healtharmor", id, .flags = "b");
    }
}

@CBasePlayer_Killed(const victim, const attacker)
{
    #pragma unused attacker

    remove_task(victim);
}

@task_healtharmor(const id)
{
    static Float:health; health = get_entvar(id, var_health);
    static Float:armor; armor = get_entvar(id, var_armorvalue);

    set_dhudmessage(0, 255, 0, 0.01, 0.96, 0, 0.0, 0.2, 0.0, 0.0);
    show_dhudmessage(id, "¤ HP:  %0.f         |         ARMOR:  %0.f", health, armor);
}
 
Последнее редактирование модератором:

d3m37r4

111111
Сообщения
1,451
Реакции
1,176
Помог
10 раз(а)
PurposeLess, in any case, frequent DHUD display will cause a buffer overflow on client.
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,176
Помог
10 раз(а)
PurposeLess, at least this can reduce the frequency of messages to client.
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
d3m37r4, у худа же вроде 4 канала всего, а у дхуда 8 кажется
мне кажется в любом случае это оба проигрышных варианта, особенно еще и с вечным апдейтом таска у каждого игрока
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,176
Помог
10 раз(а)
ifx, у худа есть возможность слать мессаги без наложения, у dhud очищение только засыланием пустых мессаг.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу