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
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)
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

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

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.

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
139 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 137, userów: 2, ukrytych: 0
Threef, Frankiekib

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
I am Lord (23:27, 25.05.17):
więc żaden reddit z tego
I am Lord (23:27, 25.05.17):
Te wpisy tam to w 95% jakieś pieprzenie o bitcoinach, spsobach na magiczne bogactwo nie ma nic normalnego :/
Fervi  (23:17, 25.05.17):
Oczywiście te 500zł to taka wartość hmm ... lekka. Są osoby, co zarobiły 16k na jednym poście, albo 1.5k w 2 tygodnie. Natomiast założyłem, że po prostu relanie z 500, może 1000zł / msc będzie
Fervi  (19:37, 25.05.17):
Możesz też wymieniać kryptowalutę z jednej na inną (poloniex)
I am Lord (19:28, 25.05.17):
w jaki sposób kryptowalutę się da wymieniać bo ja nie ogarniam
Fervi  (17:32, 25.05.17):
Każda chyba kryptowaluta jest wymianialna na złotówki. Nawet Dogecoin
Fervi  (17:32, 25.05.17):
Doge się nie wybił, a inne i owszem
Wojo (17:29, 25.05.17):
Tak jak np dogecoin
Wojo (17:28, 25.05.17):
Pomijając te moje śmieszne filozofie to rynek kryptowalut jest juz tak rozwinięty że kolejne kryptowaluty się nie wybijaja bo nie maja nic więcej do zaoferowania
Wojo (17:25, 25.05.17):
I to jest chujowa robota i to. Ale w jednej z nich jesteś w stanie odebrać wynagrodzenie
Wojo (17:22, 25.05.17):
A za pomoc przy osobach starszych dostajesz 2000euro (w realnej walucie). Serio smuci mnie to jak niektórzy kombinują jak koń pod górę zamiast najzwyczajniej w świecie zabrać się do roboty
Fervi  (17:18, 25.05.17):
Oczywiście mechanizm jest bardziej skomplikowany, ale to przykład
Fervi  (17:17, 25.05.17):
Dogecoin to po prostu kolejna waluta. I dobrze. Ale to tak jakbyś na stack overflow za pomoc użytkownikowi zamiast + dostał 10 centów (w kryptowalucie)
Fervi  (17:14, 25.05.17):
Akurat nie moja Od Dogecoin stoi o wiele wyżej. Natomiast może sukces osiągnąć z prostego powodu. To w zasadzie portal z walutą.
Wojo (17:12, 25.05.17):
Ale ta twoja waluta jest czymś pokroju dogecoina czyli czymś co sukcesu nie osiągnie
Fervi  (17:11, 25.05.17):
Masz już 4 kryptowaluty, co się wybiły całkiem nieźle (powyżej chyba 100 dolarów), może ciut więcej. Co prawda Steem nie należy do nich, natomiast na razie idzie go zdobyć dużo
Wojo (17:10, 25.05.17):
Dodatkowo bitcoin jest czymś co wcześniej było niespotykane a to jest jedno ze źródeł jego sukcesu
Wojo (17:09, 25.05.17):
Ale bitcoin to przypadek jeden na milion. Szansa że takj projekt wypali jest niewielka
Fervi  (17:08, 25.05.17):
Dlatego ci co weszli w bitcoina są bogaci, a ci co nie rozumieją krzyczą "hurr durr, waluta komputerowa do płacenia za pedofilię"
Fervi  (17:07, 25.05.17):
Wiem, wszystko co nieznane to demoniczne
Wojo (17:06, 25.05.17):
Ktoś tu chyba powoli zaczyna dzielić losy pakło
Fervi  (17:05, 25.05.17):
Potrzebujemy osób co coś potrafią Wojo
Fervi  (17:04, 25.05.17):
No i bardzo dobrze
Wojo (17:04, 25.05.17):
Szkoda czasu na coś takiego
Wojo (17:03, 25.05.17):
W kryptowaluty sie inwestuje jak mają potencjał a nie leci się pod każdą stworzoną.
Fervi  (17:00, 25.05.17):
Oczywiście im więcej Polaków tym lepiej, na początku nic nie znaczą, to po prostu budują społeczność, a potem ich głos zaczyna znaczyć 1 cent, 2 centy itd. i jest nabijanie kabzy
Fervi  (16:56, 25.05.17):
Oczywiście w kryptowalutach, więc jak ogarniasz co nieco to możesz się wybić na tym (jak na BTC) - przynajmniej potencjalnie
Fervi  (16:56, 25.05.17):
Są ludzie co siedzą na reddit i nic nie mają. A tutaj robią to samo i jeszcze im płacą
Fervi  (16:56, 25.05.17):
Czasem 3, czasem 80. Robisz to co robisz teraz a dodatkowo zarabiasz. Wyobraź sobie, że teraz gadamy sobie na GMC, tylko zamiast pustego rzucania sloganów - dostajesz hajs
ediepl (16:55, 25.05.17):
Jeśli uważasz że godzina twojej pracy kosztuje 3zl to spoko
Fervi  (16:52, 25.05.17):
No proszę, a mówią, że pieniądz nie śmierdzi
ediepl (16:51, 25.05.17):
Spoko praca jak się nie szanujesz
Fervi  (16:39, 25.05.17):
Komentujesz, piszesz posty, blabla
Fervi  (16:39, 25.05.17):
I Jasne, że z ulotek zarobisz więcej, tylko tutaj nie wychodzisz z domu. Po prostu robisz to samo co na wielu portalach
Fervi  (16:38, 25.05.17):
Czym blockchain jest zakładam, że wiesz
Fervi  (16:37, 25.05.17):
Na stronie nie ma reklam, to typowy blockchain (nie ma zatem właściciela)
ediepl (14:45, 25.05.17):
Z rozdawania ulotek miał byś lepsze pieniądze
Wojo (12:55, 25.05.17):
Ale i tak niektórzy żyją we własnym świecie w którym Windows jest złem numer jeden
Wojo (12:50, 25.05.17):
Mam na myśli te pseudo doskonałe sposoby którymi nabijacie kabze spryciarzowi
Wojo (12:49, 25.05.17):
Ale fakt faktem znaczna większość sposobów na zarabianie w necie jest poprostu mało opłacalna. No chyba że chcecie sobie dorobić mając te szesnaście lat. Na dłuższą metę śmiesznie jest oglądać dorosłego człowieka który z klikania pół dnia w reklamy dysponuje pieniędzmi pokoju 500zl i jeszcze się rzuca
Wojo (12:46, 25.05.17):
Nawet się o taką pracę nie starałem. Twoja stara zajęła etat
Fervi  (12:26, 25.05.17):
Wiem, że za tańczenie na rurze więcej ci płacą, ale nie każdy ma takie możliwości
Wojo (8:46, 25.05.17):
500zl przy solidnej pracy xD na 500zl to mi się nawet nie chce
Fervi  (22:39, 24.05.17):
Oczywiście nie mówię, by porzucić stare strony, tylko po prostu dołączyć do kolejnej
Fervi  (22:34, 24.05.17):
Oczywiście drugiej pensi na tym nie zbudujecie, ale z 500zł przy solidnej pracy
Fervi  (22:30, 24.05.17):
Moje bitcoiny nie zgadzają się z tobą xD
Wojo (22:13, 24.05.17):
To nie zadziała. Macie moje słowo
I am Lord (21:45, 24.05.17):
tak i dać nrgeekowi do zrecenzowania :p
Fervi  (21:00, 24.05.17):
Mógłbyś Kacz De Klałna w big box produkować
Ankieta
» Jakiej wersji GameMakera głównie Używasz?
GameMaker: Studio 2
GameMaker: Studio
GameMaker 8.1 i starsze
Żadnej

GMCLAN to serwis o programie Game Maker i nie tylko.
Copyright © 2002-2017. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!

[ Czas generowania strony: 0.01863 sekund ] [ Liczba zapytań MySQL: 15 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev