Timers czyli funkcje czasowe cz. 1 - CreateTimer()
Wprowadzenie
Timer pozwala na wykonywanie funkcji po jakimś czasie. Jest to odpowiednik set_task z amxx.
Teraz zajmiemy się jedną podstawową funkcją.
CreateTimer() - Tworzy timer
native Handle:CreateTimer(Float:interval, Timer:func, any:data=INVALID_HANDLE, flags=0);
interval - Czas podany w sekundach. np. 1.0 czyli 1 sekunda.
func - Nazwa funkcji która ma być wywołana po upływie czasu
data - wartość albo uchwyt
flags - Czyli poprostu flaga w tej części będziemy używać
- TIMER_REPEAT - Timer będzie się powtarzał aż nie zostanie zwrócone Plugin_Stop
Jednorazowy timer
Jak sama nazwa wskazuje timer jednorazowy wykona funkcję jeden raz po określonym czasie. Tutaj macie przykład:
public OnPluginStart()
{
CreateTimer(5.0, DawajInfo) // tworzymy timer
}
public Action:DawajInfo(Handle:timer)
{
PrintToServer("Testowa informacja w konsoli serwera wywolana przez timer")
}
W tym przykładzie gdy plugin zostanie uruchomiony to po 5 sekundach zostanie napisana informacja w konsoli serwera.Powtarzający się timer
W tym przykładzie co 3 sekundy będzie powtarzana funkcja PrintMsg (dzięki flagi TIMER_REPEAT) aż do momentu gdy NumPrinted będzie miało wartość 5 i zwrócone zostanie Plugin_Stop a przy okazji wyświetli wiadomość w konsoli serwera
DajWiadomosc()
{
CreateTimer(3.0, PrintMsg, _, TIMER_REPEAT)
}
public Action:PrintMsg(Handle:timer)
{
static NumPrinted = 0
if (NumPrinted++ >= 5)
{
PrintToServer("Wiadomosc!!!")
NumPrinted = 0
return Plugin_Stop
}
return Plugin_Continue
}
Nie jest to nic trudnego ale mam nadzieję że pomogłem
Użytkownik Harsay edytował ten post 23.08.2011 20:43


Dodatki SourceMod















