Я убрал все для Зомби.
Проблема в том ,что для КТ спрайт показывает и при уроне уменьшает его.
А для Босса Т он стоит на месте при уроне.
Но я еще незнаю ,сколько ХП у Мутанта,т.к исхода нету.
Но я думаю,что можно и без етого обойтись,т.к.для зомби с разным здоровьем все работает.
Что тут нужно добавить?
Спасибо за внимание.
- Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "Boss_HealthBar"
#define VERSION "1.0"
#define AUTHOR "Dias : BlackCat (bug fix)"
new const healthbar_spr[] = "sprites/boss_healthbar/zg_healthbar.spr"
new g_playerbar[33] , g_isAlive[33]
new g_playerMaxHealth[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "ham_spawn_post", 1)
register_forward(FM_AddToFullPack, "fm_addtofullpack_post", 1)
register_event("ResetHUD", "event_resethud", "be")
register_event("DeathMsg", "event_death", "a")
register_event("Health", "event_health", "be")
make_healthbar()
}
public make_healthbar()
{
static playerBar, allocString
allocString = engfunc(EngFunc_AllocString, "env_sprite")
for( new id = 1; id <= get_maxplayers(); id ++ )
{
g_playerbar[id] = engfunc(EngFunc_CreateNamedEntity, allocString)
playerBar = g_playerbar[id]
if(pev_valid(playerBar))
{
set_pev(playerBar, pev_scale, 0.65)
engfunc(EngFunc_SetModel, playerBar, healthbar_spr)
set_pev(playerBar, pev_effects, pev(playerBar, pev_effects ) | EF_NODRAW)
}
}
}
public plugin_precache() engfunc(EngFunc_PrecacheModel, healthbar_spr)
public ham_spawn_post(id)
{
if(is_user_alive(id))
{
g_isAlive[id] = 1
}
}
public client_disconnect(id)
{
set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
}
public event_resethud(id)
{
set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
}
public event_death()
{
new id = read_data(2)
g_isAlive[id] = 0
set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
}
public event_health(id)
{
new hp = get_user_health(id)
if(g_playerMaxHealth[id] < hp)
{
g_playerMaxHealth[id] = hp
set_pev(g_playerbar[id], pev_frame, 99.0)
}
else
{
set_pev(g_playerbar[id], pev_frame, 0.0 + (((hp - 1) * 100) / g_playerMaxHealth[id]))
}
}
public fm_addtofullpack_post(es, e, user, host, host_flags, player, p_set)
{
if(!player)
return FMRES_IGNORED
if(!is_user_alive(host) || !is_user_alive(user) || get_user_team(user) == 2)
return FMRES_IGNORED
if(host == user)
return FMRES_IGNORED
new Float:PlayerOrigin[3]
pev(user, pev_origin, PlayerOrigin)
PlayerOrigin[2] += 60.0
engfunc(EngFunc_SetOrigin, g_playerbar[user], PlayerOrigin)
set_pev(g_playerbar[user], pev_effects, pev(g_playerbar[user], pev_effects) & ~EF_NODRAW)
return FMRES_HANDLED
}