give_item w pętli dla wszystkich graczy -...
Best Answer
grankee
09.01.2015 11:58
Po co pobierasz players do tablicy jak z niego dalej nie korzystasz?
public giveKnifeSpeed()//po co Ci tu bylo id w tasku skoro go nie przekazujesz { new num=get_maxplayers(); for(new a = 1;a<=num;a++) { if(is_user_alive(a)) give_item(a, "weapon_knife"); } }
tylko , że to jest bez sensu, bo po każdym spawnie gracza wykonujesz to na wszytkich graczach, czyli na kazdym wykonasz to tyle razy ilu jest graczy na serwie. Lepiej przekazać id w tasku i robic to osobno dla kazdego czyli:
public fwHamPlayerSpawnPost(id){ if (is_user_alive(id) && get_pcvar_num(KnifeRaceStrip) || knifeArena == true){ StripWeapons(id, Primary); StripWeapons(id, Secondary); StripWeapons(id, Grenades); StripWeapons(id, Knife); if (is_user_alive(id) && !is_user_bot(id)){ set_task(3.0, "giveKnifeSpeed",id); } } }
public giveKnifeSpeed(id){ if(is_user_alive(id)) give_item(id, "weapon_knife"); }Go to the full post

psilocybe
09.01.2015
Witam, mam problem z <fun> give_item.
Mianowicie przy spawnie gracza zabieram wszystkie bronie
public fwHamPlayerSpawnPost(id){ if (is_user_alive(id) && get_pcvar_num(KnifeRaceStrip) || knifeArena == true){ StripWeapons(id, Primary); StripWeapons(id, Secondary); StripWeapons(id, Grenades); StripWeapons(id, Knife); if (is_user_alive(id) && !is_user_bot(id)){ set_task(3.0, "giveKnifeSpeed"); } } }
Task giveKnifeSpeed jest ustawiony na 3 sekundy ponieważ mp_freezetime wynosi 2.5s, więc task wykona się 0.5 sekundy po zakończeniu freezetime.
No i tutaj mam problem.
public giveKnifeSpeed(id){ new Players[32],num; get_players(Players,num) for(new id = 1;id<num;id++) { give_item(id, "weapon_knife"); } }
Nie działa, w error_log jest po prostu 'Invalid Player X' gdzie X to liczba np. 1 lub 2
Chcę po prostu 0.5 sekundy po freezetime dać każdemu żywemu graczowi nóż.
Best Answer
grankee
09.01.2015
Po co pobierasz players do tablicy jak z niego dalej nie korzystasz?
public giveKnifeSpeed()//po co Ci tu bylo id w tasku skoro go nie przekazujesz { new num=get_maxplayers(); for(new a = 1;a<=num;a++) { if(is_user_alive(a)) give_item(a, "weapon_knife"); } }
tylko , że to jest bez sensu, bo po każdym spawnie gracza wykonujesz to na wszytkich graczach, czyli na kazdym wykonasz to tyle razy ilu jest graczy na serwie. Lepiej przekazać id w tasku i robic to osobno dla kazdego czyli:
public fwHamPlayerSpawnPost(id){ if (is_user_alive(id) && get_pcvar_num(KnifeRaceStrip) || knifeArena == true){ StripWeapons(id, Primary); StripWeapons(id, Secondary); StripWeapons(id, Grenades); StripWeapons(id, Knife); if (is_user_alive(id) && !is_user_bot(id)){ set_task(3.0, "giveKnifeSpeed",id); } } }
public giveKnifeSpeed(id){ if(is_user_alive(id)) give_item(id, "weapon_knife"); }
Edited by grankee, 09.01.2015 12:04.
psilocybe
09.01.2015
is_psilocybe_bot return true
całą noc siedzę nad pluginem i trochę spaliłem, za dużo najwidoczniej
jak dawałem give_item(id, "weapon_knife"); to error kompilatora Undefined symbol (id), myślę sobie pewnie nie można tego tak zrobić trzeba w pętli, tylko najpierw to trzeba wiedzieć co to jest pętla
Dzięki grankee, leci