Code: Select all
public reset_score(id)
{
if(task_exists(id + TASK_ID))
{
set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.7, 0, 6.0, 3.0, 0.1, 3.4, false )
show_dhudmessage( id, "(%s) Vse oshte ne mojesh da izpolzvash Reset Score ", prefix)
}
else
{
set_user_frags( id, 0 ); cs_set_user_deaths( id, 0 )
new name[33]
get_user_name(id, name, 32)
client_cmd( id, "spk events/enemy_died" )
set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.8, 0, 6.0, 3.0, 0.1, 3.4, false )
show_dhudmessage( id, "^n(%s) %s - reset score^nKills: 0 | Deaths: 0", prefix, name )
ass = get_pcvar_num(gCvarRsDelay)
banica(id)
set_task(1.0, "banica", 652450, _, _, "a", ass);
set_task( get_pcvar_float( gCvarRsDelay ), "delay", id + TASK_ID)
}
return PLUGIN_HANDLED
}
Интересно ми е къде си дефинирал "ass" променливата и от какъв тип е. Ползваш имена каквито ти паднат, а това не е никак добра практика. Имената на функциите и променливите трябва да указват тяхното предназначение
Code: Select all
set_task(1.0, "banica", 652450, _, _, "a", ass);
Не мога да ти схавана смисъла на този ред. За мен е напълно излишен, при условие, че викаш функцията banica(). Горния код може да се промени така:
Code: Select all
public reset_score(id)
{
if(task_exists(id + TASK_ID))
{
set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.7, 0, 6.0, 3.0, 0.1, 3.4, false )
show_dhudmessage( id, "(%s) Vse oshte ne mojesh da izpolzvash Reset Score ", prefix)
}
else
{
set_user_frags( id, 0 ); cs_set_user_deaths( id, 0 )
new name[33]
get_user_name(id, name, 32)
client_cmd( id, "spk events/enemy_died" )
set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.8, 0, 6.0, 3.0, 0.1, 3.4, false )
show_dhudmessage( id, "^n(%s) %s - reset score^nKills: 0 | Deaths: 0", prefix, name )
ass = get_pcvar_num(gCvarRsDelay)
banica(id)
set_task(ass, "delay", id + TASK_ID)
}
return PLUGIN_HANDLED
}
И не е хубава практика да ползваш таск за delay. Правиш си една променлива
iDelay, която по подразбиране я нулираш. При всяко изпълнение на командата /rs инкрементираш iDelay и правиш проверка ако iDelay е по-голямо от зададено време чрез cvar да вади съобщение и PLUGIN_HANDLED. Това ти е най-простия и най-добър вариант. Варианта ти с таск води до намаляване на performance. Правиш един таск, който взима времето от cvar и ти нулира iDelay, само ако iDelay е > 0. Този таск, за който говоря ти играе роля на CronJob