複製程式
public NeedRecovery(id)
{
if (!is_user_alive(id) || !zp_get_user_zombie(id))
return PLUGIN_CONTINUE;
if (cumulative[id] >= 1)
return PLUGIN_CONTINUE;
new max_health
max_health = zp_get_zombie_health(id)
if (get_user_health(id) < max_health)
{
cumulative[id] += 1
new param[2]
param[0] = id
if (cumulative[id] == 1)
{
param[1] = 0
set_task(get_pcvar_float(g_Time), "RecoveryRate", id, param, 2, "b")
}
else
{
param[1] = 1
set_task(get_pcvar_float(g_Time), "RecoveryRate", Task_ID, param, 2)
}
}
return PLUGIN_CONTINUE;
}
public RecoveryRate(param[2])
{
new id = param[0]
new deduct_times = param[1]
if (!is_user_alive(id) || !zp_get_user_zombie(id))
return PLUGIN_CONTINUE;
new health = get_user_health(id)
new max_health
max_health = zp_get_zombie_health(id)
new need_health = max_health - health
if (need_health <= get_pcvar_num(g_Amount))
{
engfunc(EngFunc_EmitSound, id, CHAN_VOICE, "mychat/memberid_604597/post_in_mychat.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
set_user_health(id, max_health)
remove_task(id)
remove_task(Task_ID)
cumulative[id] = 0
}
else
{
set_user_health(id, health + get_pcvar_num(g_Amount))
if (deduct_times == 1)
cumulative[id] = max(cumulative[id] - 1, 0)
}
return PLUGIN_CONTINUE;
}
public client_PreThink(id)
{
if (!is_user_alive(id) || !zp_get_user_zombie(id))
return PLUGIN_CONTINUE;
if (get_gametime() - get_attack_time[id] < 0.5)
{
if (task_exists(id)) remove_task(id)
if (task_exists(Task_ID)) remove_task(Task_ID)
cumulative[id] = 0
return PLUGIN_CONTINUE;
}
new speed = fm_get_speed(id)
if (speed > floatround(240 * 0.1))
{
if (task_exists(id)) remove_task(id)
if (task_exists(Task_ID)) remove_task(Task_ID)
cumulative[id] = 0
return PLUGIN_CONTINUE;
}
if (!task_exists(id))
cumulative[id] = 0
new health = get_user_health(id);
if (health >= 1)
{
new max_health
max_health = zp_get_zombie_health(id)
if (health < max_health && cumulative[id] == 0)
NeedRecovery(id)
}
return PLUGIN_CONTINUE;
}
我的方法就是這了
話說 可是樓主不是會寫插件的嗎?