Nasze strony: gmclan.org gameonly.pl ps-plus.pl gameswithgold.pl n-switch.pl hmt.pl
Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Akademia GMCLANu
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy dla początkujących
Treść artykułu
Alarmy - jak działają, jak unikać błędów
autor: gnysek (17.06.09) | czas czytania: 3 minuty, 14 sekund
Alarm to jeden z ważniejszych eventów (zdarzeń) w GM. Czym są alarmy? To tak naprawdę po prostu zmienne pomocnicze, które oznaczają dla nas upływający czas, dzięki czemu możemy wykonać jakiś kod co pewien przedział czasu.
Przykładowo, wystrzał ze strzelby - naboje nie mogą wyskakiwać bez przerwy, bo przecież chwilę trwa "przeładowanie". Zatem najlepiej aby wylatywały co np. sekundę, lub półtorej. Właśnie do tego przyda się alarm.

Jak działa alarm?

Alarm jak już wspomniałem to po prostu taka pomocnicza zmienna. Domyślnie, alarmów jest 12 (zmienne alarm[0] - alarm[11]). Wartość ustawiona w alarmie oznacza liczbę kroków (eventów step), za które nastąpi ich wywołanie ( w trakcie jednej sekundy event step jest wykonywany dokładnie tyle razy ile wynosi wartość room_speed danej planszy - domyślnie 30 eventów na sekundę, co równa się też 30 klatkom na sekundę obrazu). Gdy dochodzi do zera, wykonuje się kod eventu alarm, a on sam ustawiany jest na -1. Gdy równa się -1 nie jest już zmniejszany.

alarm[X] > 0 - w każdym kolejnym kroku alarm jest zmniejszany o 1 aż do zera
alarm[X] = 0 - następuje wywołanie zdarzenia / eventu AlarmX, alarm[X] ustawiamy na -1, przestajemy go zmniejszać
alarm[X] = -1 - nie dzieje się nic, alarm jest nieaktywny

Zatem, jeżeli chcemy aby jakieś zdarzenie następowało co sekundę, nalezy ustawić alarm[0] na room_speed, lub 30 (jeżeli tyle wynosi room_speed danej planszy).

Najczęściej popełniane błędy

Najczęściej popełniany błąd, to wywołanie alarmów w zdarzeniach (eventach) step, lub kolizji.
Przykładowo, jeżeli obj_bohater jest blisko obj_przeciwnik, to przeciwnik ma strzelać.
Pierwszy kod jaki przychodzi do głowy wygląda tak (kod dla obj_przeciwnik, event step - sprawdzany w każdym kroku):

gml:if distance_to_object(obj_bohater)<100
{
alarm[0] = 10;
}

Oczywiście kod jest BŁĘDNY! Dlaczego? Zastanówmy się. Jak wcześniej powiedziałem, w każdym stepie alarm zmniejszany jest o 1 aż dojdzie do 0.
Wykonujemy pierwszy krok. Odejmujemy 1 i nasz alarm[0] = 9. Następnie sprawdzany jest kod podany w step. Bohater stoi nadal blisko przeciwnika, zatem warunek jest spełniony i alarm[0] ustawiamy na 10.
W kolejnym kroku alarm znów sam zmniejsza się o 1, ale my znów ustawiamy go na 10. W ten sposób zatrzymaliśmy alarm w miejscu! Zacznie odliczać się dopiero, gdy bohater odsunie się od przeciwnika - i dopiero wtedy przeciwnik zacznie strzelać. Tego przecież nie chcemy.
Jak wspomniałem, alarm jest nieaktywny gdy jest równy -1. Wykorzystajmy ten fakt do poprawienia naszego kodu. Można to zrobić w dowolny sposób, ja podam dwa.

gml:if distance_to_object(obj_bohater)<100 and alarm[0] = -1
{
alarm[0] = 10;
}

gml:if distance_to_object(obj_bohater)<100
{
if alarm[0] = -1 then alarm[0] = 10;
}

Oczywiście zakładam, że w zdarzeniu Alarm0 mamy kod tworzenia pocisku.

Mam nadzieję, że wyjaśniłem wystarczająco działanie alarmów.

Własny alarm

Na podstawie wiedzy którą masz, powinieneś być w stanie stworzyć nieskończenie wiele alarmów na własne potrzeby. Przykładowy kod własnego alarmu (w Create obiektu definiujemy zmienną moj_alarm = -1;), umieszczony w zdarzeniu Step.

gml:if moj_alarm>0
{
moj_alarm -= 1;
}
else if moj_alarm = 0
{
moj_alarm = -1;
// kod do wykonania naszego alarmu, np. instance_create(x,y,obj_bullet);
}

Ustawienie zmiennej moj_alarm na większą od zera spowoduje wykonanie się kodu za podaną ilość kroków.

Tak właśnie działają alarmy - ale w przypadku wbudowanych zmiennych alarm[0] - alarm[11] powyższy kod Game Maker wykonuje za nas.
głosów: 7 | ocena: 8.14 oceń zasób | dodał: gnysek
Komentarze
stron: 1

1


av

baca (14:21, 17.06.2009)

Początkującym może się przydać, a reszcie raczej nie

av

gnysek (14:22, 17.06.2009)

Artykuły -> Game Maker -> Kursy dla początkujących - czy to Ci coś mówi ?

av

baca (14:47, 17.06.2009)

Sory nie spojżałem na to

av

PoxiPol (21:18, 17.06.2009)

Przyznam, ja w cholere pisalem alarmy wlasne na zmiennych. A teraz dopiero rozumiem po co sa. :/ Platyna ma racje, glupieje.

av

Egzekutor (21:27, 17.06.2009)

Poxi wstydź się No fajny art. 9/10

av

Platyna (22:17, 17.06.2009)

Takie małe sprostowanie: Nigdy nie powiedziałem, że on głupieje. Sam to sobie dopowiedział. Poza tym to było dawno i nieprawda

I takie skromne pytanko, bo mnie ciekawi w sumie. W którym momencie konkretnie jest wykonywane zmniejszenie wartości alarmu o 1? Przed wszystkimi zdarzeniami? A może po nich?
W sumie wiele to nie zmienia, ale czasem może.

av

Paqoo (23:31, 17.06.2009)

Bardzo ciekawe - nie wiedziałem, że można robić własny alarm ;d

av

David Dark (0:02, 18.06.2009)

Tez nie wiedzialem Bede musial na to spojrzec

av

borubarartur (9:07, 18.06.2009)

ja też zwykle nie łapałem alarmów choć widziałem że powtarzają się w wielu przykładach.zastępowałem je, jak tu już zostało powiedziane-własnymi alarmami, bo tak naprawdę to alarmy są dla użytkowników GM'a mniej zaawansowanych w GML'u.
to jest tak samo jak z klockami, na początku używasz ich jednak gdy znasz ich odpowiednika w GML'u-zastępujesz go nim, choć przyznam że używanie alarmów napewno jest bardziej wygodne niż pisanie własnego alarmu w skrypcie.co do pytania Platyny o to kiedy wykonywane jest zmniejszenie alarmu- mi osobiście sie wydaje że po wszystkich akcjach choć i przed wszystkimi akcjami wiele nie zmienia.a artykuł naprawdę dobry bo dopiero po nim zrozumiałem jak to ustrojstwo działa

av

Ghost (13:59, 18.06.2009)

Własny alarm... Ja wiedziałem, nawet sam na to wpadłem ;p

av

Platyna (16:59, 18.06.2009)

A no co tu było wpadać? Toż alarmy są tak oczywiste że nie mogę

av

gnysek (21:08, 18.06.2009)

Jak wiesz jak działają, to wiesz, jak zrobić je samemu xD

av

PoxiPol (22:18, 18.06.2009)

lol, ja wiedzialem jak je zrobic samemu, ale nie wiedzialem jak dzialaja. Woop woop.

av

geralt100 (21:23, 21.06.2009)

ja nie łapałem alarmów szczeże mówiąc

av

Roki (9:45, 22.06.2009)

A ja załapałem alarmy od razu, ale nie myślałem o własnych.

av

boom (14:56, 22.06.2009)

mi po prostu niektóre alarmy prościej było definiować zmiennymi niż dawać w evencie alarm0 np alarm[0] = 30.

av

Dżamper (0:29, 23.06.2009)

@Platyna: Zgodnie z kolejnością eventów w obiektcie. Chyba w helpie nawet o tym pisze

av

Kubx (12:04, 26.06.2009)

Warto wspomnieć o tym, że w alarmach musi być jakaś akcja (chociażby komentarz), aby on się wykonał!

av

gnysek (13:36, 26.06.2009)

jak będzie komentarz, to się nie wykona, chyba logiczne.

btw. można użyć stepa zamiast eventu Alarm i też zadziała.

av

Kubx (22:20, 27.06.2009)

gnysek -> jak korzystałem z GMa (wersja 6.1) to aby alarm był ODLICZANY musiał posiadać jakąś akcje w swoim evencie, a to co wykona po odliczeniu to swoją drogą.

stron: 1

1



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
1 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 0, ukrytych: 0
Użytkownicy na czacie discord
Shoutbox
gnysekgnysek (17:02, 5.06.21):
Lista zmian w newsie.
gnysekgnysek (23:39, 3.06.21):
2.3.3 wyszło w becie
ThreefThreef (12:17, 1.06.21):
Muszę sobie w końcu ustawić avatar na forum, ale nie chce mi się odpalać prywatnego kompa gdzie mam grafiki
gnysekgnysek (23:34, 27.05.21):
O, Laravel to też takie Ruby on Rails dla php
SutikkuSutikku (15:16, 27.05.21):
trzymajcie kciuki to może dołącze to #team_backend przy użyciu Laravel
gnysekgnysek (9:30, 21.05.21):
Wordpress jest do zaorania, są znacznie lepsze systemy pluginów dziś (np. interceptory), a oni dalej jakby na php4
adam014adam014 (18:50, 20.05.21):
Wordpress nadrabia popularnością A kodowo wygląda tak jak mój cms sprzed 10 lat xD
Konrad-GMKonrad-GM (14:49, 20.05.21):
A gdzie nie spojrzę na Wordpressa, to co najmniej jeden zainstalowany plugin to jest a'la hindus dizaj
Konrad-GMKonrad-GM (14:48, 20.05.21):
Mnie Wordpress straszy własną, dziwaczną architekturą, robi się niezły burdel przy najmniejszych zmianach, dodatkowo pluginy pisane przez hindusów wcale tego nie ułatwiają.
Konrad-GMKonrad-GM (14:47, 20.05.21):
Jeżeli wszystko ma działać bez potrzeby konfiguracji, out of the box, to IMO jeszcze nie Wordpress, bo może i jest "opinionated" ale to niekoniecznie śmietnik
gnysekgnysek (13:26, 20.05.21):
Nie, RoR jest jak wordpress, też tam dociągasz paczki i out of box wszystko ma działać.
Konrad-GMKonrad-GM (11:56, 20.05.21):
No to trudno, gościu z poprzedniej pracy szuka zastępstwa a też nie znam tak RoR devów Nigdy sam nie interesowałem się Ruby, ale czy RoR to nie framework, coś jak Symfony, Laravel etc. dla PHPa?
ChellChell (10:31, 20.05.21):
że frameworki są jak pluginy do wordpressa?
gnysekgnysek (10:14, 20.05.21):
Nie, nie lubię tej ideii w ogóle, to tak jak pluginy do wordpressa
Konrad-GMKonrad-GM (15:42, 19.05.21):
Pytanko, ktoś może zna i umie w Ruby on Rails?
gnysekgnysek (0:17, 19.05.21):
Jest i nowy przykład
gnysekgnysek (16:14, 18.05.21):
proxy czy VPN ?
LolikZabójcaLolikZabójca (14:52, 18.05.21):
Potrzebuję od 30 do 50 adresów proxy po https które są szybkie. Darmowe nie potrafią wczytać prostej strony w ciągu 60 sekund w selenium. Wiecie gdzie można takie znaleźć płatne bądź nie?
gnysekgnysek (11:41, 18.05.21):
Ale mam świetny pomysł na nowy przykład, chyba githubowe konto gmclanowe trzeba założyć.
gnysekgnysek (11:42, 17.05.21):
Tak, wciąż jest najlepszy
pablo1517pablo1517 (17:13, 16.05.21):
Wow, a GMClan jaki był taki jest
nowy_usernowy_user (16:24, 13.05.21):
Rzeczywiście, brzmi to jak uczciwa propozycja. Ja niestety nie mogę pomóc, słabo znam się na selenium. Może @Threef jest w stanie pomóc, on zdaje się, że jest senior testerem (automatycznym).
LolikZabójcaLolikZabójca (16:18, 13.05.21):
Po prostu może symboliczna flaszka kogoś przekona żeby mi pomógł. Dla kogoś to chwila bo ja coś po prostu źle robię, tu nie ma kodu do analizowania za bardzo. A dla mnie to koniec trwającej czwarty dzień bariery nie do rpzejścia
LolikZabójcaLolikZabójca (16:17, 13.05.21):
Jest praca, jest pieniądź. Praca prosta bo kod zawiera jedynie odpalenie przeglądarki i wejście na google w selenium. Jest płaca myślę że kwota bardziej za wiedzę niż poświęcony czas nawet
nowy_usernowy_user (16:15, 13.05.21):
oj na Gmclanie tak to nie działa, tutaj ludzie nie dadzą się przekupić za pieniądze, nawet jakbyś proponował milion złotych. Tu walutą jest reputacja i szacunek innych gmclanowiczów.
LolikZabójcaLolikZabójca (16:03, 13.05.21):
Płacę 40zł przelewem jeśli ktoś mi pomoże uruchomić Selenium Firefox w C# Mono na Ubuntu. Ktoś chętny?
gnysekgnysek (11:19, 6.05.21):
Gradient to jest minuta zmiany, zresztą gdyby miały być ikonami SVN na stronie to i tak pewnie trzeba by to spłaszczyć, więc pewnie tak zrobię.
nowy_usernowy_user (11:00, 6.05.21):
nie są złe, ale może rzeczywiście ten gradient niepotrzebny
adam014adam014 (6:02, 6.05.21):
Brzydkie. Biały nie pasuje bo bije po oczach, a rozpiętość tonalna gradientu jest za duża przez co widać jakby ikonki były robione 10 lat temu.
SimianVirus7SimianVirus7 (19:26, 4.05.21):
ładne są
gnysekgnysek (15:32, 4.05.21):
byłyby jako SVG, więc można by tego używać w tekście i zmieniać kolory dynamicznie
gnysekgnysek (15:31, 4.05.21):
Logo / Uploader / Kursy / Liga 24 / Forum / FAQ
gnysekgnysek (18:41, 2.05.21):
Mam nadzieję, ze Czesława to nie jest jakaś zombie wersja Violetty Villas (Czesława Gospodarek)
RanmusRanmus (1:09, 1.05.21):
Poważny biznes i przewijające się pejoratywne określenie "dewiant"? No, no. Ale w sumie rzeczywiście w grę mogą wchodzić zaburzenia.
SutikkuSutikku (0:56, 1.05.21):
fajnie wygląda jego patronite
nowy_usernowy_user (22:49, 30.04.21):
W ofercie sklepu Grodzki Studio jest jeszcze pakiet inwestycyjny zawierający m.in. jakieś stare płyty oraz 2 duże domki Barbie. Spoko opcja na ulokowanie nadwyżek budżetu domowego, ale niestety pakiet jest poza moim zasięgiem, bo cena to 52 000 zł.
nowy_usernowy_user (22:32, 30.04.21):
Ja się waham. Grafika co prawda nie powala, ale skoro jest na promocji -50% to może warto się skusić? Jak ktoś grał to dajcie znać, czy ta produkcja warta jest tych dwóch dych.
I am LordI am Lord (22:12, 30.04.21):
Ktoś kupił jego grę? XD
gnysekgnysek (16:15, 30.04.21):
bierz franczyzę
UzjelUzjel (15:18, 30.04.21):
co do...
expexp (13:01, 30.04.21):
akurat ostatnio przypomniałem sobie jego utwory rapowe. prawdziwy szczyt awangardy
gnysekgnysek (10:40, 30.04.21):
W ramach cyklicznych przypomnień co tam słychać u biznesmenów: www.grodzkistudio.pl
gnysekgnysek (23:37, 28.04.21):
@SimianVirus7 dlatego w konsultacjach zalecono uwypuklenie kształtu młotka
gnysekgnysek (13:33, 27.04.21):
po prostu przestawienie akurat robiłem parę godzin wcześniej, więc to był pierwszy pomysł
gnysekgnysek (13:33, 27.04.21):
@adam014 właśnie testowałem i mnie zdziwiło, ostatecznie to nie była wina PHP, a wgranie częściowo pewniej innej zmiany, której wrzuciłem o linijkę kodu za mało
ChellChell (11:22, 27.04.21):
ah, pokolenie gm8
SimianVirus7SimianVirus7 (9:28, 27.04.21):
Po przeczytaniu znaczenia młotka w logo zrozumiałem, że w dotychczasowym logo to nie literka T tylko młotek Tyle lat w błędzie
adam014adam014 (6:30, 27.04.21):
Nie testowałeś przed zmianami?
gnysekgnysek (11:03, 26.04.21):
O, zepsuły się ankiety na nowej wersji PHP, za chwilę naprawię. Update: naprawione
Ankieta
» Co robi Tymon?
Zaszył się w szuwarach
Został cyborgiem
Dubluje Toma Cruise'a w filmach
Tworzy gry
Wiedzie spokojne życie poza GMCLANem

GMCLAN to serwis o programie Game Maker i nie tylko.
[ Polityka prywatności ]
Copyright © 2002-2021. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus, © 2017-2021 {=|=} fable_inside();

[ Czas generowania strony: 0.28349 sekund ] [ Liczba zapytań MySQL: 13 ]