Ten artykuł został stworzony dla starszych wersji GameMakera i może nie być aktualny.

Triggery (wyzwalacze) w GM8

Piątek, 03 Lipca 2009, 17:42
Czas czytania 1 minuta, 59 sekund
Zgodne z GM: gm8
W GM8 udostępniono Triggery. Na podstawie wersji beta, opiszę pokrótce jak ich używać
Wymaga wersji GM8 PRO do działania.


Triggery są niczym innym, jak kolejnym zdarzeniem obok Create, Alarm czy Step, które może nastąpić w naszym obiekcie. Tak naprawdę, jest to zwykły warunek który można by dać w step, ale jeżeli kilka różnych obiektów ma te same warunki, to można by z nich zrobić osobne zdarzenie.

Za przykład niech posłuży energia przeciwników. Załóżmy, że mamy trzy jednostki: objRycerz, objLucznik, objCzarownik. Każdy z tych obiektów posiada zmienną energia = 100;. Gdy energia spada poniżej zera, to obiekt powinien zostać zniszczony.

Dodajemy zatem nowy Trigger (Add Event > Trigger > Add/Modify Triggers). W pole Name wpisujemy Koniec energii. Teraz wypełniamy pole Condition. Tutaj wpiszemy warunek, który musi zaistnieć, aby nasz trigger zadziałał. Konieczne jest, aby wystąpiło słowo return zwracające wartość true lub false. Nasz kod będzie wyglądał tak:
kodif energia<1 then return true else return false;Teraz gdy energia będzie wynosiła 0 i mniej, nastąpi wywołanie naszego triggera.
Można też zapisać krócej:
kodreturn energia<1;Pozostałe dwa pola edycji omówię dalej, teraz je pomijamy i zatwierdzamy zmiany.

Ostatnia rzecz, to dodanie go do listy zdarzeń. Wybieramy Add Event > Trigger > Koniec Energii, i przeciągamy klocek Destroy Instance, lub wpisujemy ręcznie kod.

Teraz możemy nasz wyzwalacz dodawać do wszystkich obiektów, w których będzie zmienna energia aby sprawdzać, czy można już zniszczyć obiekt czy nie.


Pozostałe opcje

W formularzu edycji Triggera są jeszcze dwie opcje.
Moment of checking oznacza, kiedy warunek triggera ma być spełniony. Działa to tak samo jak Begin Step, Normal Step i End of Step z listy zdarzeń.

Constant name - nazwa stałej (nie moze być zdefiniowana w oknie Constans), którą w kodzie można użyć do sprawdzenia, czy trigger zaistniał. Dla przykładu ustawiając za constans nie_ma_energii, w zdarzeniu step możemy sprawdzić wystąpienie triggera tak:
kodif nie_ma_energii then instance_destroy();Efekt będzie taki sam, jak dodanie zdarzenia Trigger Koniec energii omówionego powyżej.
Komentarze (łącznie 22, wyświetlam 1 - 15):
P
giermek (Pią., 03 Lip. 09, 17:56)
#1

Super, 10 / 10.

Nikas (Pią., 03 Lip. 09, 18:22)
#2

oh oh!
gnysek już szpan że ma gm8 pro ;p

gnysek (Pią., 03 Lip. 09, 18:31)
#3

przecież Beta jest PRO nawet jak nie kupiłeś xD

Nikas (Pią., 03 Lip. 09, 18:34)
#4

LOL?
a ja nie mogę ściągnąć bo mi wyskakuje że złe dane :(

Mimek (Pią., 03 Lip. 09, 18:39)
#5

Bo trzeba się zarejestrować... :P

Misiek999 (Pią., 03 Lip. 09, 19:10)
#6

o, dzieki że tak konkretnie, bo w helpie mi się nie chciało siedzieć. :]

Kargul (Pią., 03 Lip. 09, 20:55)
#7

Myślę że ta opcja się przyda. (Nareszcie kolejny event :P)

4
47xxxxxxxx (Pią., 03 Lip. 09, 21:27)
#8

Chyba Eventy :P

Korodzik (Sob., 04 Lip. 09, 09:05)
#9

Czasem mi tego brakowało.

E
Egzekutor (Sob., 04 Lip. 09, 11:57)
#10

Przyda się :D. 9/10

Jaklub (Sob., 04 Lip. 09, 12:22)
#11

na skryptach też to można bardzo podobnie zrobić.
skrypt nie_ma_energii
if energia<1 then return true else return false;
a później
if nie_ma_energii() then instance_destroy();
i można to dać wszędzie.
też mi nowość. artykuł jest ok

gnysek (Sob., 04 Lip. 09, 12:29)
#12

Jaklub - dokładnie, można, w sumie Triggery to taka ciekawostka tylko.

mailosz (Sob., 04 Lip. 09, 12:46)
#13

Fajnie, ale jeśli oni siedzieli nad tymi trigerami przez te kilka lat i im zabrakło czasu na inne funkcje to ja mógłbym się bez nich obejść.

eltix (Sob., 04 Lip. 09, 14:19)
#14

w sumie to ubogo ulepszony program

Pablo-GM (Sob., 04 Lip. 09, 16:29)
#15

Wg mnie te triggery bardzo sie przydadza :)

Najnowsze wersje GameMakera:

Stabilna
2024.2.0.132 • 2024.2.0.163
wydana 24 dni temu
LTS
2022.0.2.51 • 2022.0.2.49
wydana 163 dni temu
Beta
2024.400.0.526 • 2024.400.0.547
wydana  wczoraj
= IDE, = Runtime
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
45 użytkowników online na discordzie:
MKP, s..., Alice, Nitro Slav, Carl-bot, Sporek, p..., GibkiKaktus, SuperEnduro, 21Lancz, Kowu, Kuzyn, m..., YoungKrystian, Sevitaus, Radek Ignatów, PhysX ᴺⱽᴵᴰᴵᴬ, r..., antek, 🧁Cupcake🧁, Uzjel, PokojowyPatrol, lethian, HappyOrange, Moldis, Arrekin, yazaa, Dyno, 🆅🅸🆃🅾74🅼, Korodzik, ZYGZAK, debil debilowski, 𝕳𝖚𝖌𝖔 𝕲𝖔𝖓𝖝𝖆𝖑𝖊𝖝, LeD, Ulti, LadyLush, bagno, Tidżi, g..., Alkapivo, Nikas, Krzysiek1250, Shockah, Cosplyfanka, xVANiLL
Shoutbox
I am Lord (19:15, 17.03.24)
6h mam na to hmmm
I am Lord (19:06, 17.03.24)
Ale temat fajny
gnysek (01:33, 13.03.24)
Powinno działać, jest w kodzie sortowanie wg. najbliższego startu :)
Uzjel (21:59, 11.03.24)
Nie, ale za pierwszym razem zrobiłem fuckup, że było "Tura testowa" X_X
I am Lord (16:58, 11.03.24)
A co Uzjel już masz nawymyślane 100 tematów? 😅
Uzjel (20:08, 10.03.24)
@gnysek a jak bym dodał kilka lig na raz to walnie?
Uzjel (20:08, 10.03.24)
Liga będzie zawsze od piątku 16:00 do poniedziałku 23:59, zawsze w środku miesiąca.
gnysek (08:48, 10.03.24)
Tak, to też jest do poprawy X_X
Adriann (18:22, 09.03.24)
Tylko myślę czy nie leiej gdyby mówiło że zostało tyle i tyle dni i ileś godzin a nie tylko w godzinach ;d Albo konkretna data obok, byłoby czytelniej
I am Lord (15:08, 08.03.24)
o super z tą ligą :)
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?