•
kakus002
Nie sprawdzasz co się dzieje z graczem pomiędzy utworzeniem task'a a jego wykonaniem tzn. gracz może sobie wstać zmienić broń pobiegać i znowu kucnąć a hp się mu doda
• CheQ o ile przyjmując że to:
pseudo kod
to całkiem dobry pomysł. I tak ma parę poważnych błędów:
if(get_user_health(id) > 100+cod_get_user_health( id, 1, 1, 1 ))
na
if(get_user_health(id) >= 100+cod_get_user_health( id, 1, 1, 1 ))
bo gracz sobie kucnie (mając full hp) na początku rundy i mu się doda hp
Trzeba też zamienić to:
set_task(1.0,"giveHP");
Na to:
set_task(1.0,"giveHP",id+12334);
Poza tym by twój kod działał musiał by być w thinku a z tym się wiąże że ten kawałek:
else
{
if(task_exsist(id+12334)) remove_task(id+12334);
}
Wykona się tyle razy ile think, gdy nie kucamy z kosą (czyli większość gry)
Ja bym zrobił coś takiego:
const m_flDuckTime = 262
public plugin_init()
{
register_forward(FM_CmdStart,"CmdStart")
}
public CmdStart(id,uchwyt,wtf)
{
if(get_uc(uchwyt, UC_Buttons) & IN_DUCK)
{
static health
health = get_user_health(id)
if(get_pdata_float(id,m_flDuckTime,5) >= 1.0)
{
set_user_health(id,health+1)
set_pdata_float(id,m_flDuckTime,0.0,5)
}
else if(health >= 100+cod_get_user_health( id, 1, 1, 1 ) || get_user_weapon(id) != CSW_KNIFE ) set_pdata_float(id,m_flDuckTime,0.0,5)
}
}