- Dokumentacja
- Funkcje wspólne
- waitForEvent
Funkcja
waitForEvent
Wstrzymuje zadanie async do chwili, gdy zajdzie zdarzenie. Zwraca element source zdarzenia i jego argumenty. Z limitem czasu zwraca false, gdy zdarzenie nie zaszło na czas. Uchwyt i timer limitu są usuwane po zakończeniu czekania.
Składnia
element, ... waitForEvent(string eventName [, element attachedTo = root, int timeoutMs = nil])Argumenty
eventNamestring- Nazwa zdarzenia.
attachedToelement, opcjonalny = root- Element, na którym słuchać (z dziećmi).
timeoutMsint, opcjonalny = nil- Limit czasu w ms; bez niego czeka bez końca.
Zwraca
source i argumenty zdarzenia, albo false po czasie.
Przykład
addCommandHandler("wyzwanie", function(player)
async(function()
outputChatBox("Masz 10 sekund, żeby wejść do auta!", player)
local who = waitForEvent("onPlayerVehicleEnter", player, 10000)
if who then
outputChatBox("Udało się!", player)
else
outputChatBox("Za późno.", player)
end
end)
end)
Zobacz też
asyncUruchamia funkcję jako zadanie (korutynę). Kod w zadaniu biegnie od razu, aż do pierwszego czekania (sleep,await,waitForEvent). Wtedy oddaje sterowanie, a serwer i gra działają dalej. Gdy czekanie się skończy, zadanie rusza od miejsca, w którym stanęło. Dzięki temu kroki rozłożone w czasie (odliczanie, zapytanie do bazy, odpowiedź HTTP, czekanie na gracza) piszesz po kolei, bez zagnieżdżonych callbacków i timerów.addEventHandlerPodpina funkcję pod zdarzenie. Tak reagujesz na wejście gracza, śmierć, klawisz, każdą klatkę i własne zdarzenia.triggerEventWywołuje zdarzenie na elemencie po tej samej stronie (serwer → serwer, klient → klient). Obsługi wywołują się od razu, zanim funkcja zwróci wynik. Zdarzenie musi być zarejestrowane przezaddEventalbo być wbudowane.