←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

czas w set_task

  • +
  • -
mlekovita - zdjęcie mlekovita 01.06.2022

Siema chce zrobic zeby czas sie uruchamial po wpisaniu komendy i go odliczało na hudzie jak dojdzie do 0 to usuwa ten hud i resetuje czas do stanu poczatkowego. Jak moglbym to zrobic?

public wyswietlwszystkim()
{
 set_task(1.0, "showHud");
}

public showHud()
{
if(czas > 0) {
ShowSyncHudMsg(0, syncHud, "Koniec za: %d", czas);
czas--
}
}

Problem w tym ze czasem sie to buguje i szybko mijaja te sekundy jakby task sie odpalal 2 razy albo 3


Użytkownik mlekovita edytował ten post 01.06.2022 17:44
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 01.06.2022

Może coś takiego?

#define TASK_ID 1337
public wyswietlwszystkim()
{
    if(task_exists(TASK_ID)){
        //co chcesz zrobic gdy task juz istnieje?
    }else{
        czas = 60; // ustaw na co chcesz przed wywolaniem taska
        set_task(1.0, "showHud", TASK_ID, _, _, "b");
    }
}

public showHud()
{
    if(czas > 0) {
        ShowSyncHudMsg(0, syncHud, "Koniec za: %d", czas);
        czas--
    }else{
        remove_task(TASK_ID)
    }
}

Generalnie takie coś nie jest przystosowane do używania przez wielu graczy, ale jako że nie zaznaczyłeś tego w pytaniu to założyłem, że nie trzeba.

 

Druga możliwość to - set_task ma taki parametr jak flagi i tam można podać flagę "a", dzięki której możesz określić ile razy się ma task wykonać, więc jak chcesz np wyswietlac cos co sekundę przez 10sekund to czas taska dajesz na 1.0 i flagą "a" sterujesz, żeby task się wykonał 10 razy.

 

Wszystko zależy od tego co Ci potrzeba :)

Odpowiedz