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
Treść artykułu
O błędach i ich przyczynach
autor: Misiek999 (28.12.08)
Podczas pracy z Game Makerem, możemy natrafić na różnego rodzaju błędy. Niektóre możemy zignorować podczas wyświetlenia - jednak niektóre wymuszają wyłączenie gry. W tym artykule postaram się opisać wyskakujące błędy, ich przyczynę oraz jak je naprawiać.

Error Messages
W większości przypadków, okno z informacją o błędzie wskaże nam miejsce gdzie takowy wystąpił - przez co nie powinniśmy mieć problemów z wyszukaniem problemu.



1 - Numer akcji, w której wystąpił błąd ( "1" to ta na samej górze eventu ).
2 - Event ( wydarzenie ), w jakim wystąpił błąd. W tym wypadku jest to step.
3 - Informacja, w jakim obiekcie wystąpił błąd ( w tym wypadku object0 ).
4 - Linia w jakiej wykryto błąd. W tym wypadku jest to pierwsza linia kodu. Używając wbudowanego edytora, można bez problemu "skoczyć" do szukanej linii używając "Go to a particular line".
5 - Część kodu, w którym wykryto błąd.
6 - Opis błędu. W tym wypadku nieznana zmienna.
7 - Przerywamy działanie gry.
8 - Ignorujemy napotkany błąd - nie zawsze jest to jednak skuteczne.
9 - Kopiujemy cały raport do schowka.
10 - Czyścimy okno błędu.

Rodzaje Błędów
Każdemu, nawet najlepszemu mistrzowi nie raz wyskoczą różnego rodzaju błędy. W większości będą to problemy łatwe do naprawienia, drobne przeoczenia. Zdąża się też jednak i takie, nad którymi będziemy siedzieć i głowić się jak go rozwiązać.

Błąd: Unknown variable <nazwa>.
Tłumaczenie: Nieznana zmienna <nazwa>.
Opis: Musimy pamiętać, że przed jakąkolwiek operacją z użyciem zmiennej, musimy ją uprzednio zadeklarować. Zazwyczaj robimy to w create, lecz nie jest to konieczne. Zasada jest taka, że przed użyciem zmiennej musimy ją zadeklarować, nadać jakąś początkową wartość. Robimy to w taki sposób: nazwa = dowolna_wartość. Innym rozwiązaniem problemu jest zaznaczenie w ustawieniach Game Makera opcji "Treat uninitialized variables as value 0". Znajdziemy ją w Global Game Settings > Errors.
Możliwość zignorowania: Istnieje. Ale w tym wypadku ignorowanie błędu jest bez sensu - gdyż błąd będzie się wyświetlał tak długo, dopóki zmienna nie zostanie wykryta. Może to nastąpić po jakimś czasie, gdy mamy ustawiony np. alarm, gdzie została zadeklarowana zmienna.

Błąd: Division by 0.
Tłumaczenie: Dzielenie przez zero.
Opis: W jakieś operacji matematycznej, chcemy podzielić dowolną liczbę przez zero. W programowaniu nie jest to dopuszczalne. Pozostaje nam tylko zmiana dzielnika liczby.
Możliwość zignorowania: Nie istnieje.

Błąd: Unknown variable "nazwa" or array index out of bounds.
Tłumaczenie: Nieznana zmienna "nazwa", lub indeks tablicy poza jej granicami.
Opis: Tworząc tablice, ustalamy również jej granice. Możemy ją powiększać, dopisując kolejne wartości, ale nie możemy bezpośrednio odwoływać się do indeksu poza jej granicami. Przykładowo : Tablica o nazwie "array" ma rozmiar 8, więc nie możemy odwołać się do indeksu 9 : zmienna = array[9]. - przed wykonaniem tej operacji musi być dopisana tam jakaś wartość np. array[9] = 5. Aby powiększyć tablicę.
Możliwość zignorowania: Istnieje. Po zignorowaniu, Game Maker nie wykona po prostu obliczeń.

Błąd: Negative array index.
Tłumaczenie: Negatywny indeks tablicy.
Opis: Tablica nie może mieć ujemnego indeksu - przeszukaj kod. Często zdarza się w przypadku, gdy jakaś zmienna posiada wartość ujemną, a my próbujemy za jej pomocą odwołać się do jakiegoś indeksu tablicy ( tablica[zmienna] ).
Możliwość zignorowania: Istnieje. Po zignorowaniu, Game Maker nie wykona obliczeń.

Błąd: Error defining an external function.
Tłumaczenie: Błąd w definiowaniu zewnętrznej funkcji.
Opis: Błąd ten głownie występuje, gdy korzystamy z funkcji biblioteki dll, a nie umieściliśmy jej w tym samym folderze co gra. Większość bibliotek posiada również tzw. Funkcję inicjalizującą, którą musi być wykonana przed używaniem reszty funkcji. Możliwe, że o niej zapomniałeś. Błąd może występować również w innych wypadkach - ale jak nie jesteśmy twórcą danego dll'a nic więcej nie możemy zrobić.
Możliwość zignorowania: Istnieje. Tak jak w wypadku "Unknown variable <nazwa>", Game Maker nie będzie dawał nam spokoju póki problem nie będzie rozwiązany. Krótko mówiąc "Ignore" nic nam nie da.

Błąd: Wrong number of arguments to function or script.
Tłumaczenie: Zła liczba argumentów w funkcji bądź skrypcie.
Opis: Do większości funkcji możemy wpisać tylko określoną liczbę argumentów, niezbędną do wykonania obliczeń. Jeśli jest ona nieprawidłowa - zostaniemy o tym poinformowani.
Możliwość zignorowania: Nie istnieje.

Błąd: Cannot compare arguments.
Tłumaczenie: Nie można porównać argumentów.
Opis: Pamiętajmy, że porównywać można ze sobą zmienne tylko tego samego typu. W GML istnieją dwa typy : real ( liczby rzeczywiste ) oraz string ( ciąg znaków ), jeśli zmienna "a" będzie liczbą, a zmienna "b" ciągiem znaków, kod: if a == b { game_end(); } będzie nieprawidłowy.
Możliwość zignorowania: Nie istnieje.

Błąd: Unexpected symbol in expression.
Tłumaczenie: Niepożądany symbol w wyrażeniu.
Opis: Przyczyną ich występowania może być pomyłka bądź też niewystarczająca wiedza GML. Możliwości jest bardzo wiele więc nie będę ich wszystkich wymieniał. Unikniemy ich - jeśli dobrze poznamy składnie oraz zasady panujące w tym języku. Symbole takie jak !, ^, ^^, & itd. Używamy w konkretnych sytuacjach - nie możemy natomiast stawiać ich wszędzie gdzie nam się podoba. Odsyłam do kursów GML.
Możliwość zignorowania: Nie istnieje.

Błąd: Wrong type of arguments to <symbol>.
Tłumaczenie: Złe typy argumentów dla <symbolu>.
Opis: Przy operacjach takich dodawanie (+), odejmowanie ( - ), dzielenie (/), mnożenie ( * ), dzielenie całkowite ( div ) oraz reszta z dzielenia (mod ) - używać możemy tylko liczb rzeczywistych ( tzn. po lewej i po prawej stronie tego symbolu muszą znaleźć się zmienne typu real. Oprócz tego znakiem "+" możemy łączyć ciągi znaków.
Możliwość zignorowania: Nie istnieje.

Błąd: Symbol <symbol> expected.
Tłumaczenie: Wymagany symbol <symbol>.
Opis: Pojawia się, kiedy zapomnieliśmy dopisać jakiegoś znaku np. zamknąć nawiasu podczas pisania funkcji, Zamknąć blok klamrą.
Możliwość zignorowania: Nie istnieje.

Może też się zdarzyć, że twój kod będzie poprawnie napisany - a gra będzie się ciągle wyłączać. Powodem tego mogą być zbyt obciążające obliczenia bądź funkcje, z którymi Game Maker nie może sobie poradzić. Przykładem może być funkcja draw_getpixel(), którą należy stosować z umiarem.

Kontrola nad błędami
Istnieje kilka opcji, które mogą pomóc nam w kontrolowaniu błędów. Znajdziemy je wchodząc do "Global Game Settings" w zakładce "Errors".



1 - Jeśli to odznaczymy, nie będą wyświetlane okienka z błędami. Jeśli błąd nie może być zignorowany - gra zostaje wyłączona.
2 - Po zaznaczeniu, każdy błąd zostanie zapisany do pliku game_errors.log.
3 - Po wystąpieniu jakiegokolwiek błędu , Game Maker przerywa działanie gry.
4 - Wszystkim nieznanym zmiennym, które wystąpiły w kodzie - zostaje przypisana wartość 0 ( patrz tabelka - Unknown variable "nazwa" ).

Wersja PDF
głosów: 13 | ocena: 8.54 oceń zasób | dodał: PsichiX
Komentarze
stron: 21

2


av

PsichiX (12:55, 27.04.2010)

zeby tylko srednik - and tez wywal albo then wstaw chociaz

av

Misiek999 (15:17, 27.04.2010)

yyy, a czemu tak nie może być ? ;p sprawdza czy kakao false jest.

av

Assassin (16:28, 27.04.2010)

YXE miał na myśli, że kakao=false to skutek, a nie przyczyna, dlatego powiedział: wywalić and (a opcjonalnie dać then) .

av

Mentoss (17:57, 27.04.2010)

nie, nie kakao to warunek. wywalenie srednika pomogło

av

Ignifil (14:24, 1.08.2010)

Czemu jak mam w create name = Andrzej to mi wyskakuje taki błąd?:

ERROR in
action number 1
of Create Event
for object object0:

Error in code at line 1:
name = Andrzej

at position 8: Unknown variable Andrzej

av

PsichiX (14:54, 1.08.2010)

name = "Andrzej";
string wymaga cudzysłowia

av

wikku9 (14:54, 1.08.2010)

musisz Andrzej dać w cudzysłowiu.

av

Ignifil (16:00, 1.08.2010)

okej dzięki

av

TheMarcQ (19:32, 4.08.2010)

" Unknown variable Andrzej"
jak nie znasz angielskiego to odsyłam do
translate.google.pl

stron: 21

2



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

Nie masz konta? Zarejestruj się
Użytkownicy on-line
5 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 4, userów: 1, ukrytych: 0
I am vader
Użytkownicy na czacie discord
I am vader (12:50, 18.08.18):
gratki
Penguin (11:29, 18.08.18):
Gratulacje
exp (22:07, 17.08.18):
gratuluję również, kariera z przyszłością
Chell (15:00, 17.08.18):
dzieki
Wojo (11:37, 17.08.18):
Gratulacje
Chell (7:00, 17.08.18):
jaką stawkę myślicie że mogę wołać ako junior php po miesiącu praktyk i 2 stażu?
Chell (6:59, 17.08.18):
gmclany, zaraz będę kończył staż i zaczynał pracę na pół etatu
gnysek (9:54, 16.08.18):
niewiele, ale jest szybsze.
MaxGaming (3:25, 16.08.18):
Skoro pliki o rozszerzeniu html(przy standardowej konfiguracji serwera) są po prostu wyświetlane, a te z rozszerzeniem php wykonywane to czy użycie pliku html o tym samym kodzie jest szybsze niż pliku php(jeśli w źródle pliku znajduje się oczywiście sam kod hrml)?
Wojo (17:12, 15.08.18):
Exp podglądaj sobie reportaże o chwilowkach i o tym jak ludzie mają problemy z wyjaśnieniem że nie brali żadnego kredytu
exp (15:16, 15.08.18):
max czemu nie mógł udowodnić, nie chcieli sprawdzić jego podpisu? numer dowodu się zgadzał?
exp (15:15, 15.08.18):
no to też może się przydać, bo typ na koncie google miał podane imię i nazwisko i w adresie prawdopodobnie miał datę urodzenia, więc jak ktoś mnie okradnie, to mam podejrzanego. ale wątpię, że prokuratura będzie zainteresowana tym
I am vader (12:27, 15.08.18):
Nie powinno też się mordować ale to nie powstrzymuje ludzi
Wojo (22:26, 14.08.18):
Ale z drugiej strony nie powinno się kogoś okradać mimo wszystko
Sutikku (21:57, 14.08.18):
exp w formie dowodu mógłby pokazać, że nieumyślnie wysłał komuś swoje dane?
MaxGaming (17:37, 14.08.18):
Mój znajomy własnie wpadł w taką chwilówkę i jako że nie potrafił udowdnić że to nie on wziął to musi to spłacać
exp (17:36, 14.08.18):
no jak czytałem o tym, to w takiej sytuacji musisz de facto udowodnić niewinność
Wojo (19:56, 13.08.18):
z tym są różne scenariusze ale i tak powinien ktoś to uregulować bo to jest nienormalne jak mozna czlowiekowi zniszczyc zycie przez bledy mlodosci
exp (19:46, 13.08.18):
zna mój adres zameldowania, a nie zamieszkania, więc wyjebongo. boję się tylko o chwilówki itd. podobno w razie przyjścia komornika łatwo zamknąć sprawę, ale i tak nie chciałbym takich nieprzyjemności
Sutikku (19:29, 13.08.18):
osobiście myślę, że nic Ci nie grozi, ewentualnie pizza co wieczór będzie przyjeżdżać
exp (15:33, 13.08.18):
przez głupią literówkę wysłałem skan pewnego papieru niewłaściwej osobie. robię to regularnie i zrobiłem się trochę nieostrożny
exp (15:31, 13.08.18):
myślicie, że grozi mi coś, jeśli obcy człowiek posiadł prawie wszystkie moje dane osobowe? (ale nie zna mojego numeru dowodu)
gnysek (10:20, 11.08.18):
Dobra zrestartowałem serwer.
gnysek (10:36, 10.08.18):
wynajem!
MaxGaming (0:23, 10.08.18):
chodiz mi bardziej o doświadczenie niż hajs bo pracować wolę na swoim za mniej niż na etacie za więcej ale jednak pierwsza praca po technikum informatycznym od razu w marketingu to fajna sprawa. Tylko jeździć ponad 100km w jedną stronę codziennie pociągiem?
MaxGaming (0:22, 10.08.18):
więc nie mam pojęcia co robić
MaxGaming (0:22, 10.08.18):
wgl to zaproponowano mi prace w dziale marketingu jednej z polskich firm dzięki temu co uczę się na własną rekę, sam dyrektor działu marketingu stwierdził że woli takie osoby niż te świeżo po studiach które na studiach nie nauczą się praktycznie nic co jest na prawdę potrzebne w tej pracy ale... w WWA a ja mam jednak daleko żeby codziennie tam dojedżać
MaxGaming (23:56, 9.08.18):
nie wytłumaczysz że na prawdę rząd nie może stworzyć tych pieniędzy na 500 plus
MaxGaming (23:55, 9.08.18):
Obsługi telefonu dziecko się samo potrafi nauczyć. Teraz spróbuj nauczyć tego moją babcię. Zrozumcie że ludzie są różni. Znam 20 latków których
I am Lord (23:13, 9.08.18):
I nie chodził na żadne dokształcające najęcia
I am Lord (23:13, 9.08.18):
Mój tata pojechał do Norwegii bez języka i się nauczył go w rok już tak że coś tam rozumiał w pracy a przez 3 latach już w miarę płynnie gada
I am Lord (23:11, 9.08.18):
Przebywanie w obcym środowisku dłuższy czas sam w sobie uczy człowieka jezyka
Sutikku (22:46, 9.08.18):
zgadzam się
MaxGaming (22:40, 9.08.18):
Ale język nie jest potrzebny żeby przetrwać widocznie. Odpuścice trochę. Każda rozsądna osoba by się uczyła języka ale nie jest to jakiś przymus. Myślę że to właśnie dzięki temu że takie osoby nie myślą "nie znasz języka, nie próbuj" to przynajmniej nie siedzą na zasiłkach w Polsce tylko na zmywaku w Anglii
Sutikku (22:36, 9.08.18):
o przepraszam za przekleństwa, wydawały się tak adekwatne do treści, ze nie zauważyłem.
Sutikku (22:34, 9.08.18):
a co to za robienie gierek jak wychodzą Ci chujowe i są rakiem gamingu, i co z Ciebie za żołnierz jak chujowo strzelasz? Grunt, że próbują, efekty słabe fakt. Nie uważam, że to dobre i mądre wyjście, nie miałbym strefy komfortu gdybym nie mógł komunikować się w czyimś kraju, ale potrafię takich ludzi zrozumieć. Dziwniejsze jest dla mnie, że będąc tak długo w danym kraju język sam się nie podłapie.
Wojo (21:20, 9.08.18):
najwyraźniej nie jesteś patustem skoro nie potrafisz pojąć tego jak można żyć na krawędzi i bez żadnych zmartwień
I am vader (20:11, 9.08.18):
Ale co to za życie jak się izolujesz i stajesz się rakiem narodu?
Sutikku (17:40, 9.08.18):
potrafią i próbują ;p
Sutikku (17:40, 9.08.18):
słabe porównania, bo za granicę przeważnie jedzie się zarobić i żyć, a skoro oni zarabiają i żyją, to więcej im do szczęścia nie trzeba
I am vader (17:20, 9.08.18):
Jak idziesz na wojnę uczysz się strzelać, bo inaczej zginiesz. Jak chcesz zrobić grę to uczysz się programowania, bo inaczej nie dasz rady. Jak idziesz do szkoły uczysz się tego co Ci każą, bo inaczej jesteś idiotą. Jak wyjeżdżasz za granicę, uczysz się jezyka i kultury, bo inaczej jesteś pasożytem. Proste. Nie potrafisz, nie próbuj.
Wojo (14:32, 9.08.18):
Zazwyczaj są to ludzie, którzy nie lubią gdy narzuca im się jakiekolwiek zasady
exp (13:44, 9.08.18):
max, jeżeli nauczenie się języka kraju, w którym mieszka się na stałe jest dla niektórych niemożliwe ze względu na "strefę komfortu" to już nie wiem, co mam powiedzieć xd
exp (13:43, 9.08.18):
też znam ukraińców, którzy mówią po polsku, niektórzy bardzo dobrze. tak samo, jak wielu polaków w anglii czy niemczech też dobrze zna język miejscowy. nigdzie nie mówiłem, że wszyscy są źli, ale wielu
Wojo (13:15, 9.08.18):
propaganda cały czas istnieje tylko jest bardziej lub mniej intensywna. Aktualnie nie ma żadnej szansy aby dziecko nie było skażone propagandą (no chyba, że mieszka w jaskini)
MaxGaming (12:14, 9.08.18):
nie słuchałem jak ktoś kiedyś na tym forum polecał w każdym nowym telefonie taśmą zaklejać ten czujnik zalania i teraz mam problem XD
MaxGaming (12:09, 9.08.18):
za dużo propagandy już poszło. Trzeba by czekać a nowe pokolenie które nie jest skażone propagandą A o zgrozo propaganda nie ustaje
MaxGaming (12:08, 9.08.18):
W sumie demokracja to jedna wielka pułapka. Co możemy niby zrobić? Chodzić po domach i tłumaczyć ludziom żeby głosować na inne partie? Nie da rady przekonać większości
MaxGaming (12:07, 9.08.18):
sądzą że są sprytni bo wolą PO albo PiS, a to jest jeden ciort
MaxGaming (12:07, 9.08.18):
Ale tak jest w obie strpny. "Wpjna" PO/PiS to pułapka w którą większośc ludzi się łapie
Ankieta
» Jakie kursy najchętniej widziałbyś na stronie ?
GM Studio
GM Studio 2
Godot
Construct

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

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