Junior Member
Join Date: Jul 2017
Location: Hungary
|
01-29-2023
, 22:44
[ZP] Health Bar problem / Please Help
|
#1
|
Hy guys!
Im using the [ZP] Health Bar plugin on my ZM server, like this:
https://www.youtube.com/watch?v=7X-h...Ufuk%C3%96ZALP
...but i have a little problem.
I have a zombie class on my server, when he crouches he becomes invisible. But the Health bar remains above her head, so revealing her.
I am attaching the zombie class .sma file. Can someone rewrite it for me so that the Health bar is not above the head?!
zombie class .sma:
PHP Code:
/*
[ZP] Class : [A]dvanced [I]nvisible Zombie
( special Zombie class )
by Fry!
Description :
AI zombie in full name ( Advanced Invisible ) have ability when you duck you will be invisible.
Zombie has a weird feature when you will duck you will breathe out some sounds. Invisible can change by cvar.
Cvars :
zp_ai_zombie_invisibility "0" - Amount of invisibility (0 max invisible - 255 max visible)
Changelog :
16/06/2009 - v1.0 - First release
28/06/2009 - v1.0.5 - removed if player is connected or disconnected, dropped death event, fixed minor bug, removed player flag if he is on ground, optimized code.
12/07/2009 - v1.0.8 - changing else instead of if in second flag check, removed stock, added 2 sounds while zombie is ducking to know if he is near you.
*/
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>
#define PLUGIN "[ZP] Class : [A]dvanced [I]nvisible Zombie"
#define VERSION "1.0.8"
#define AUTHOR "Fry!"
new const zclass_name[] = "Demon"
new const zclass_info[] = "Guggolva lathatatlan"
new const zclass_model[] = "zombie_source"
new const zclass_clawmodel[] = "v_knife_zombie.mdl"
const zclass_health = 1600
const zclass_speed = 190
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.35
new const zombie_idle_sound1[] = "zz/ghost.wav"
new const zombie_idle_sound2[] = "zz/ghost.wav"
new zisA, zisB
new g_zclass_ai_zombie, g_ai_zombie_invisible
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("zp_zclass_advanced_invisble_zombie",VERSION,FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
g_ai_zombie_invisible = register_cvar("zp_ai_zombie_invisibility", "0")
register_forward(FM_PlayerPreThink, "fm_PlayerPreThink")
}
public plugin_precache()
{
g_zclass_ai_zombie = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
zisA = engfunc(EngFunc_PrecacheSound, zombie_idle_sound1)
zisB = engfunc(EngFunc_PrecacheSound, zombie_idle_sound2)
}
public zp_user_infected_post(player, infector)
{
if (zp_get_user_zombie_class(player) == g_zclass_ai_zombie)
{
if ((pev(player, pev_flags) & FL_DUCKING))
{
set_pev(player, pev_renderfx, kRenderFxGlowShell)
set_pev(player, pev_rendermode, kRenderTransAlpha)
set_pev(player, pev_renderamt, get_pcvar_float(g_ai_zombie_invisible))
}
}
return PLUGIN_CONTINUE
}
public fm_PlayerPreThink(id)
{
if (!is_user_alive(id) || !zp_get_user_zombie(id))
return FMRES_IGNORED
if (zp_get_user_zombie_class(id) != g_zclass_ai_zombie)
return FMRES_IGNORED
if (!(pev(id, pev_flags) & FL_DUCKING))
{
set_pev(id, pev_renderfx, kRenderFxNone)
set_pev(id, pev_rendermode, kRenderNormal)
set_pev(id, pev_renderamt, 255.0)
new iRandomNum = random_num(zisA, zisB)
if (iRandomNum == zisA)
{
emit_sound(id, CHAN_VOICE, zombie_idle_sound1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
else if (iRandomNum == zisB)
{
emit_sound(id, CHAN_VOICE, zombie_idle_sound2, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
}
else
{
set_pev(id, pev_renderfx, kRenderFxGlowShell)
set_pev(id, pev_rendermode, kRenderTransAlpha)
set_pev(id, pev_renderamt, get_pcvar_float(g_ai_zombie_invisible))
}
return FMRES_IGNORED
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
...and the health bar .sma:
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#define PLUGIN "[ZP] Addon: Show Zombie Health"
#define VERSION "1.0"
#define AUTHOR "Dias : BlackCat (bug fix)"
new const healthbar_spr[] = "sprites/zb_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.25)
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 zp_user_infected_post(id)
{
g_playerMaxHealth[id] = get_user_health(id)
}
public zp_user_humanized_post(id)
{
set_pev(g_playerbar[id], pev_effects, pev(g_playerbar[id], pev_effects) | EF_NODRAW)
}
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))
return FMRES_IGNORED
if(!zp_get_user_zombie(user))
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
}
Thank you very much guys if somebody can help me!
|
|