Код за потвърждение: Избери целия код
L 07/19/2022 - 11:02:02: [AMXX] Player not a normal zombie (11)
L 07/19/2022 - 11:02:02: [AMXX] Displaying debug trace (plugin "zombie_regenerate.amxx", version "1.0.0")
L 07/19/2022 - 11:02:02: [AMXX] Run time error 10: native error (native "zp_get_zombie_maxhealth")
L 07/19/2022 - 11:02:02: [AMXX] [0] test.sma::Regenerate_Health (line 58)
L 07/19/2022 - 11:02:02: [zombie_regenerate.amxx] performance issue. Function Regenerate_Health executed more than 3.3ms.
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <reapi>
new const PLUGIN_VERSION[] = "1.0.0"
native zp_get_user_zombie(id)
native zp_get_zombie_maxhealth(id)
const TASKID_REGENERATION = 2022
enum fVars
{
Float:REGENERATION_AMOUNT,
Float:REGENERATION_TIME
}
new g_eCvars[fVars]
public plugin_init()
{
register_plugin("ZP: Zombie Regeneration", PLUGIN_VERSION, "Huehue @ AMXX-BG.INFO")
register_cvar("ReZombieRegeneration", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED|FCVAR_PROTECTED)
RegisterHookChain(RG_CBasePlayer_TakeDamage, "RG__CBasePlayer_TakeDamage", true)
bind_pcvar_float(register_cvar("zp_zombie_regeneration_amount", "10.0"), g_eCvars[REGENERATION_AMOUNT])
bind_pcvar_float(register_cvar("zp_zombie_regeneration_time", "1.0"), g_eCvars[REGENERATION_TIME])
}
public RG__CBasePlayer_TakeDamage(iVictim, Inflictor, iAttacker, Float:fDamage, iDamageBit)
{
#pragma unused Inflictor, iAttacker, fDamage, iDamageBit
if (is_user_alive(iVictim) && zp_get_user_zombie(iVictim) && !task_exists(iVictim + TASKID_REGENERATION))
{
set_task(g_eCvars[REGENERATION_TIME], "Regenerate_Health", iVictim + TASKID_REGENERATION, .flags = "b")
}
}
public Regenerate_Health(iTaskID)
{
static id
id = iTaskID - TASKID_REGENERATION
if (is_user_alive(id))
{
if (task_exists(id + TASKID_REGENERATION) && !zp_get_user_zombie(id))
{
remove_task(id + TASKID_REGENERATION)
return PLUGIN_CONTINUE
}
static Float:flHealth
flHealth = get_entvar(id, var_health)
if (flHealth >= float(zp_get_zombie_maxhealth(id)))
{
remove_task(id + TASKID_REGENERATION)
return PLUGIN_CONTINUE
}
set_entvar(id, var_health, floatclamp(flHealth + g_eCvars[REGENERATION_AMOUNT], flHealth, float(zp_get_zombie_maxhealth(id))))
}
return PLUGIN_CONTINUE
}