i tried to edit a zp zombie class to base builder and the hp does not regenerate, any idea why?
PHP Code:
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <basebuilder>
#define TASK_REGENERATION 134926
#define TASK_BLOCK_REGEN 151718
#define ID_REGEN (taskid - TASK_REGENERATION)
#define ID_BLOCK_REGEN (taskid - TASK_BLOCK_REGEN)
new g_endround, g_maxplayers, g_connected[33], g_alive[33], g_zombie[33], g_blockregen[33], g_maxhealth[33]
new cvar_regen_max, cvar_regen_add, cvar_regen_interval, cvar_regen_dmgdelay
new chaceRegenAdd, Float:chaceRegenMax, Float:chaceRegenInterval, Float:chaceRegenDmgDelay
new gMsgScreenFade, g_hamczbots, cvar_botquota
new const sound_regen[] = "zombie_plague/zombi_heal.wav"
#define is_user_valid_connected(%1) (1 <= %1 <= g_maxplayers && g_connected[%1])
#define is_user_valid_alive(%1) (1 <= %1 <= g_maxplayers && g_alive[%1])
#define is_user_valid_zombie(%1) (1 <= %1 <= g_maxplayers && g_zombie[%1])
#define is_user_valid_blockregen(%1) (1 <= %1 <= g_maxplayers && g_blockregen[%1])
new const zclass_name[] = { "Witch Zombie" }
new const zclass_info[] = { "\y[Regeneration]" }
new const zclass_model[] = { "hs_witch" }
new const zclass_clawmodel[] = { "hs_v_witch" }
const zclass_health = 3000
const zclass_speed = 285
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 0.25
public plugin_precache()
{
precache_sound(sound_regen)
}
public plugin_init()
{
register_plugin("[BB] Zombie Class: Witch", "1.0", "witch.")
zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
RegisterHam(Ham_Spawn, "player", "ham_spawn_post", 1)
RegisterHam(Ham_Killed, "player", "ham_player_killed")
RegisterHam(Ham_TakeDamage, "player", "ham_take_damage")
cvar_regen_max = register_cvar("zp_regen_max", "1.0")
cvar_regen_add = register_cvar("zp_regen_add", "250")
cvar_regen_interval = register_cvar("zp_regen_interval", "1.0")
cvar_regen_dmgdelay = register_cvar("zp_regen_dmg_delay", "5")
cvar_botquota = get_cvar_pointer("bot_quota")
g_maxplayers = get_maxplayers()
gMsgScreenFade = get_user_msgid("ScreenFade")
}
public client_putinserver(id)
{
g_connected[id] = true
g_zombie[id] = false
if (is_user_bot(id) && !g_hamczbots && cvar_botquota) set_task(0.1, "register_ham_czbots", id);
}
public register_ham_czbots(id)
{
if (g_hamczbots || !is_user_connected(id) || !get_pcvar_num(cvar_botquota))
return;
RegisterHamFromEntity(Ham_Spawn, id, "ham_spawn_post", 1)
RegisterHamFromEntity(Ham_Killed, id, "ham_player_killed")
RegisterHamFromEntity(Ham_TakeDamage, id, "ham_take_damage")
g_hamczbots = true
if (is_user_alive(id)) ham_spawn_post(id);
}
public client_disconnect(id)
{
g_connected[id] = false
g_alive[id] = false
}
public event_round_start()
{
g_endround = false
chaceRegenMax = get_pcvar_float(cvar_regen_max)
chaceRegenAdd = get_pcvar_num(cvar_regen_add)
chaceRegenInterval = get_pcvar_float(cvar_regen_interval)
chaceRegenDmgDelay = get_pcvar_float(cvar_regen_dmgdelay)
}
public zp_round_ended()
{
g_endround = true
}
public ham_spawn_post(id)
{
if(!is_user_alive(id)) return;
g_alive[id] = true
if(zp_get_user_zombie(id))
{
g_zombie[id] = true
}
else g_zombie[id] = false
}
public ham_player_killed(victim, attacker, shouldgib)
{
g_alive[victim] = false
}
public ham_take_damage(iVictim, iInflictor, iAttacker, Float:fDamage, iDmgBits)
{
if(is_user_valid_connected(iVictim) && is_user_valid_alive(iVictim) && is_user_valid_zombie(iVictim))
{
g_blockregen[iVictim] = true
remove_task(iVictim+TASK_BLOCK_REGEN)
set_task(chaceRegenDmgDelay, "RemoveBlockRegen", iVictim+TASK_BLOCK_REGEN)
}
}
public zp_user_humanized_post(id)
{
g_zombie[id] = false
}
public RemoveBlockRegen(taskid)
{
g_blockregen[ID_BLOCK_REGEN] = false
remove_task(ID_BLOCK_REGEN+TASK_REGENERATION)
set_task(chaceRegenInterval, "RegenHpProcess", ID_BLOCK_REGEN+TASK_REGENERATION)
}
public RegenHpProcess(taskid)
{
if(g_endround) return;
if(!is_user_valid_blockregen(ID_REGEN) && is_user_valid_alive(ID_REGEN) && is_user_valid_zombie(ID_REGEN))
{
if(g_maxhealth[ID_REGEN] != -1)
{
new iMaxRegen = floatround(g_maxhealth[ID_REGEN] * chaceRegenMax)
new iCurHealth = get_user_health(ID_REGEN)
if (iCurHealth < iMaxRegen)
{
new iNewHealth = iCurHealth + chaceRegenAdd
if(iNewHealth > iMaxRegen) set_user_health(ID_REGEN, iMaxRegen);
else set_user_health(ID_REGEN, iNewHealth);
message_begin(MSG_ONE_UNRELIABLE, gMsgScreenFade, {0, 0, 0}, ID_REGEN)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(200)
write_byte(0)
write_byte(50)
message_end()
client_cmd(ID_REGEN, "spk %s", sound_regen);
set_task(chaceRegenInterval, "RegenHpProcess", ID_REGEN+TASK_REGENERATION)
}
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/