- Dokumentacja
- Funkcje wspólne
- addEvent
Funkcja
addEvent
Rejestruje własne zdarzenie o podanej nazwie, żeby można było je wywoływać (triggerEvent, triggerClientEvent, triggerServerEvent) i obsługiwać (addEventHandler). Z allowRemoteTrigger = true zdarzenie może przyjść z drugiej strony sieci: na serwerze - od klienta przez triggerServerEvent, na kliencie - od serwera przez triggerClientEvent. Bez tego zdarzenia przychodzące z sieci są odrzucane, co chroni serwer przed podrabianiem zdarzeń przez klientów.
Składnia
bool addEvent(string eventName [, bool allowRemoteTrigger = false, bool isPrivate = false])Argumenty
eventNamestring- Nazwa zdarzenia (np.
"onPlayerBuyCar"). allowRemoteTriggerbool, opcjonalny = falsetrue= można je wywołać z drugiej strony sieci.isPrivatebool, opcjonalny = falsetrue= zdarzenie prywatne:triggerEventdziała tylko z zasobu, który je zarejestrował; wywołanie z innego zasobu zwracafalsei wypisuje błąd, a inny zasób nie może zarejestrować go ponownie.Nie ma go w MTA:SA
Różnice względem MTA:SA
- Argumenty zaznaczone innym kolorem różnią się od MTA:SA.
W MTA:SA
addEvent(string eventName, bool allowRemoteTrigger = false)Zwraca
true przy powodzeniu, false, gdy inny zasób próbuje przejąć zdarzenie prywatne.
Przykład
addEvent("onPlayerBuyCar", true)
addEventHandler("onPlayerBuyCar", root, function(model)
if client ~= source then return end
if getPlayerMoney(client) < 10000 then return end
takePlayerMoney(client, 10000)
local x, y, z = getElementPosition(client)
createVehicle(model, x + 3, y, z)
end)
-- zdarzenie tylko dla tego zasobu: inne zasoby nie wyplaca sobie pieniedzy
addEvent("bank:payout", false, true)
addEventHandler("bank:payout", resourceRoot, function(player, amount)
givePlayerMoney(player, amount)
end)
triggerEvent("bank:payout", resourceRoot, getRandomPlayer(), 100)
Uwagi
W obsłudze zdarzenia wywołanego przez triggerEvent zmienne sourceResource i sourceResourceRoot wskazują zasób, który je wywołał (przy zdarzeniach od gry i od klienta są nil). Prywatność nie blokuje klienta: o nim decyduje allowRemoteTrigger.
Na serwerze zawsze sprawdzaj w obsłudze zdarzenia z sieci zmienną client (gracz, który je wysłał), a nie tylko source, bo klient może podać dowolny element jako źródło.
Zobacz też
addEventHandlerPodpina funkcję pod zdarzenie. Tak reagujesz na wejście gracza, śmierć, klawisz, każdą klatkę i własne zdarzenia.triggerServerEventWysyła zdarzenie od gracza do serwera, np. kliknięcie przycisku albo wybór w menu.triggerClientEventWysyła zdarzenie z serwera do jednego gracza, kilku graczy albo wszystkich naraz.isEventAddedSprawdza, czy zdarzenie o tej nazwie istnieje (jest wbudowane albo dodane przezaddEvent).