Try this one. If it works, I'll make this a sub-plugin for Zombie Plague.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>
#define TASK_REGENERATION 1024
new g_Status, g_Time, g_Amount, g_ZombiePlague;
public plugin_init()
{
register_plugin("ZP Regeneration", "1.0", "hleV");
g_Status = register_cvar("zp_regeneration", "1");
g_Time = register_cvar("zp_regen_time", "1");
g_Amount = register_cvar("zp_regen_amount", "10");
register_event("Damage", "SetRegeneration", "be", "2>0");
g_ZombiePlague = get_cvar_pointer("zp_on");
}
public SetRegeneration(Client)
{
if (!g_ZombiePlague || !get_pcvar_num(g_Status) || !is_user_connected(Client) || !is_user_alive(Client) || !zp_get_user_zombie(Client))
return;
if (get_user_health(Client) < zp_get_zombie_maxhealth(Client))
set_task(get_pcvar_float(g_Time), "Regenerate", Client + TASK_REGENERATION, _, _, "b");
}
public Regenerate(Task)
{
if (!g_ZombiePlague || !get_pcvar_num(g_Status))
return;
new Client = Task - TASK_REGENERATION;
new Health = get_user_health(Client);
if (!is_user_connected(Client) || !is_user_alive(Client))
return;
new NeededHealth = zp_get_zombie_maxhealth(Client) - Health;
if (NeededHealth <= get_pcvar_num(g_Amount))
{
set_pev(Client, pev_health, Health + float(NeededHealth));
remove_task(Client + TASK_REGENERATION);
return;
}
set_pev(Client, pev_health, Health + get_pcvar_float(g_Amount));
}
__________________