這是我參考 zdt 大的回血插件的
第一次發教學 對amxx又不怎麼認識
可能會有錯 但是我做出來是可以回血的...
==========================================================
1. 打開想要增加回復效果殭屍的 sma 檔
2. 在最上加入:
#include <fakemeta_util>
#include <fun>
3. 在 public plugin_init() 上面加入:
new cvar_regain_hp
new stay[33]
new const zombie_heal[] = "zombie_plague/zombi_heal.wav" // 殭屍回復音效
4. 在 public plugin_init() 中加入:
cvar_regain_hp = register_cvar("zp_regain_hp", "200") // 每秒回復的血量
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
5. 在 public plugin_precache() 中加入:
precache_sound(zombie_heal)
6. 在SMA底部加入:
public fw_PlayerPreThink(id)
{
if (!is_user_alive(id) || !zp_get_user_zombie(id))
return FMRES_IGNORED;
static speed
speed = fm_get_speed(id)
if (speed == 0.0)
{
if (!stay[id])
{
stay[id] = true
set_task(5.0, "regain", id) // 停止多少秒開始回復
}
}
else
{
if (stay[id])
{
stay[id] = false
remove_task(id)
}
}
return FMRES_IGNORED;
}
public regain(id)
{
if (zp_get_user_zombie(id) && is_user_alive(id) && stay[id] && (pev(id, pev_health) < zp_get_zombie_maxhealth(id)) && (pev(id, pev_health) <= (zp_get_zombie_maxhealth(id) - get_pcvar_num(cvar_regain_hp))))
{
set_pev(id, pev_health, (pev(id, pev_health) * 1.0 + get_pcvar_num(cvar_regain_hp)))
engfunc(EngFunc_EmitSound, id, CHAN_ITEM, zombie_heal, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
set_task(1.0, "regain", id)
}
else if (zp_get_user_zombie(id) && is_user_alive(id) && stay[id] && (pev(id, pev_health) >= (zp_get_zombie_maxhealth(id) - get_pcvar_num(cvar_regain_hp)) && (pev(id, pev_health) < zp_get_zombie_maxhealth(id))))
{
set_user_health(id, zp_get_zombie_maxhealth(id))
engfunc(EngFunc_EmitSound, id, CHAN_ITEM, zombie_heal, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
}
回復音效是 C$O 的就不發了
如想回復者附近的人也聽到他回血的音效就更改
CHAN_ITEM 為 CHAN_VOICE)
如沒有 fakemeta_util.inc 就下載附件... 放到 amxmodx/scripting/include