#define PLUGIN "[ZP] Extra cucc : Sátáni élet"
#define AUTHOR "Leon McVeran"
#define VERSION "v0.0"
#define PDATE "24th April 2010"
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#define TASK_REGENERATION 134000
#define REGEN_FREQ 2.5
new bool:g_bHasExtraItem[33]
new g_iExtraItem
new CVAR_regen_max
new CVAR_regen_add
new gMsgScreenFade
public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)
g_iExtraItem = zp_register_extra_item("Sátáni élet", 4, ZP_TEAM_ZOMBIE)
CVAR_regen_max = register_cvar("zp_regen_max", "0.50")//Akkor kezdjen el regenerálódni a zombi élete amikor a HP-ja 50%-on vagy alatta van.
CVAR_regen_add = register_cvar("zp_regen_add", "25")//Mennyi HP-t adjon az életéhez 2.5 másodpercenként
}
public plugin_cfg(){
gMsgScreenFade = get_user_msgid("ScreenFade")
set_task(REGEN_FREQ, "func_regeneration", TASK_REGENERATION, _, _, "b")
}
public zp_extra_item_selected(iPlayer, iExtraItem){
if (iExtraItem == g_iExtraItem) g_bHasExtraItem[iPlayer] = true
}
public func_regeneration(){
new iPlayers[32], pNum
get_players(iPlayers, pNum,"")
for (new p = 0; p < pNum; p++){
// Spieler hat das Extra Item gekauft
if (g_bHasExtraItem[iPlayers[p]]){
// Spieler ist tot oder kein Zombie
if (!is_user_alive(iPlayers[p]) || !zp_get_user_zombie(iPlayers[p])){
g_bHasExtraItem[iPlayers[p]] = false
}
else{
// Wenn max. Gesundheit -1 ist dann handelt es sich um einen Nemesis
new iMaxHealth = zp_get_zombie_maxhealth(iPlayers[p])
if (iMaxHealth != -1){
new iMaxRegen = floatround(iMaxHealth * get_pcvar_float(CVAR_regen_max))
new iCurHealth = fm_get_user_health(iPlayers[p])
if (iCurHealth < iMaxRegen){
new iNewHealth = iCurHealth + get_pcvar_num(CVAR_regen_add)
if (iNewHealth > iMaxRegen){
fm_set_user_health(iPlayers[p], iMaxRegen)
}
else{
fm_set_user_health(iPlayers[p], iNewHealth)
}
message_begin(MSG_ONE_UNRELIABLE, gMsgScreenFade, {0, 0, 0}, iPlayers[p])
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(200)
write_byte(0)
write_byte(0)
write_byte(50)
message_end()
}
}
}
}
}
}
stock fm_set_user_health(index, health){
health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index)
return 1
}
stock fm_get_user_health(index){
return pev(index, pev_health)
}