Po pierwsze, wbij sobie na zawsze do głowy jeśli chcesz pisać pluginy, czy programować w jakimkolwiek innym języku programowania 2 zasady:/
1. WCIĘCIA W KODZIE - to podstawa podstaw! Poprawia znacząco czytelność kodu, nie tylko Tobie jako autorowi, ale też innym, do których się zwracasz o pomoc.
2. CZYTELNOŚĆ KODU - zawsze dbaj o to, żeby kod był czytelny i zrozumiały, opatrzony komentarzami w odpowiednich miejscach...
A teraz do rzeczy. Widzę skleiłeś 2 pluginy ze sobą, nie do końca rozumiejąc chyba co robisz...
for(new i=2; i<=maxpl; i++)
Co tu robi ta dwójka? Widzę, że nie do końca rozumiesz jak działają pętle. Tą dwójką spowodowałeś, że gracze będą sprawdzani począwszy od tego z id=2, czyli jeden zostanie pominięty (z id=1).
if(task_exists(999)) remove_task(999);
Ta linia powinna być poza pętlą, ABSOLUTNIE! Po co dla każdego terrorysty ten task usuwać?
return FMRES_HANDLED;
Tu właśnie leży główny problem... return powoduje wyjście z aktualnie wykonywanej funkcji, zwracając to co po słówku return stoi. Czyli w tym przypadku szukasz terrorysty, zaczynając od id=2, gdy go znajdziesz to zabierasz mu wszystko, dajesz nóż i sobie z funkcji wychodzisz, więc następnego terrorysty raczej ta funkcja nie znajdzie, nie sądzisz? Wystarczy usunąć tą linię i będzie OK.
Poza tym takie pytanie, gdzie Ty wykonujesz tą funkcję? Co ją wywołuje? Bo z jednego returna wynika, że fakemeta, a z drugiego że to zwykły event z
AMX...