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

ΨΧΞ (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

ΨΧΞ (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
43 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 34, userów: 9, ukrytych: 0
Jamesdit, ALT, ♔ Adriann ♔ , Herbertpaymn, ♔ I am Lord ♔ , Pręcik, PatrykPlayingPOLSKA, dxdiag, ediepl

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
Adriann (18:28, 27.04.17):
starają się coraz bardziej:3
I am vader (18:03, 27.04.17):
Najlepsza bot reklama jaka tu widzialem led.feen.us/fq7e5b.png
Nikas (12:02, 27.04.17):
uuuuu
nowy_user (11:54, 27.04.17):
Człowiek ma już dość tych botów, niech Marmot lub Patrysław coś z nimi zrobią
Wojo (9:56, 27.04.17):
Znowu te boty
Penguin (7:23, 27.04.17):
mi też
Sutikku (22:51, 26.04.17):
Nie znajduje mi adresu DNS youtube, no to fajnie
Nikas (21:35, 26.04.17):
store.steampowe....com/app/206440 To The Moon zostało zrobione w rpg makerze.
Ignatus (21:33, 26.04.17):
Ja z GM mam ciekawa historie.Pewnego dnia 2 lata temu stwierdzilem ze spelnie marzenie dziecinstwa i zaczne robic gry, znajomy podpowiedzial zebym zaczal od nauki javy.Dla urozmaicenia zmudnego przerabiania kursow zaczalem instalowac rozne edytory i tak trafilem na GM
Ignatus (21:31, 26.04.17):
Każdy kojarzy spelunky
kriso99 (20:33, 26.04.17):
siemka, jest jakas lista na necie z id wszystkich klawiszy z klawiatury?
Suekii (18:58, 26.04.17):
Spelunky kojarzycie?
Flashek (18:46, 26.04.17):
każdy pierwszy program będzie dobry jeżeli tylko użytkownik sobie z nim radzi
I am vader (18:41, 26.04.17):
Bywają dobre gry w rpgmakerze..na przyklad ten, no..... Ahriman's Prophecy!
I am Lord (18:16, 26.04.17):
i nie chodzi mi o tego: www.adventuremaker.com tamten program potrafił tylko wyświetlać tekst i odpowiedzi
I am Lord (18:15, 26.04.17):
a nie, wcześniej tknąłem jakiś adventure maker i to był edytor gier tekstowych.
I am Lord (18:14, 26.04.17):
no bardzo fajna zabawka była to w nim poznałem czym są zmienne :d
I am Lord (18:14, 26.04.17):
Ja zaczynałem w rpg makerze 2000
Uzjel (18:13, 26.04.17):
Ej, Ja zaczynałem w RPG Makerze i bardzo dobrze go wspominam To tylko narzędzie, jak każde inne.
Suekii (18:08, 26.04.17):
rpg maker to zabawka dla dzieci w podstawówce.
I am vader (16:41, 26.04.17):
Mam chyba 50 gównogierek z rpgmakera na koncie bo kazde kostowalo 10 centow. Zadne nie jest dobre.
Kotekhh (16:18, 26.04.17):
rpg maker rządzi chłopcy
Flashek (16:09, 26.04.17):
Pamiętam moją pierwszą grę na androida, to była istna masakra. Autko wypierdzielało mi w kosmos. Tekstury były zniekształcone jak w jakimś psychologicznym horrorze. Jak znajdę to ci wyślę gdzieś na chomikuju mam obok modyfikowanych biosów )
dxdiag (16:07, 26.04.17):
praktycznie wszystko współdziała z tym cackiem
dxdiag (16:06, 26.04.17):
ale plusem jest kompatybilność
dxdiag (16:05, 26.04.17):
Nie tylko
Flashek (16:05, 26.04.17):
Z tego co czytałem to Ue3 to zabawa światłem głównie
Flashek (16:04, 26.04.17):
Domyślam się
dxdiag (16:03, 26.04.17):
HDR jest genialne
dxdiag (16:03, 26.04.17):
ja na trójce robiłem bardzo długi czas
dxdiag (16:01, 26.04.17):
w unrealu tez masz wady poważne
dxdiag (16:00, 26.04.17):
powiem ci ze generalnie w unity nie ma na co narzekać tylko trzeba się przyzwyczaić do interfejsu
Flashek (15:59, 26.04.17):
niby ten silnik i ma wiele fajnych zastosowań ale szczerze mam dość pierdzielenia się z tą optymalizacją
Flashek (15:58, 26.04.17):
ja ostatnio robiłem w unity ale mi ręce opadły
I am Lord (15:55, 26.04.17):
Dester widzę że bardzo ci zależy na tej wygranej sprowadzając kolegów haha
dxdiag (15:31, 26.04.17):
robię nowy projekt w unreal
dxdiag (15:30, 26.04.17):
Siemka
Wojo (15:27, 26.04.17):
No tu ci przyznam rację
Kotekhh (15:12, 26.04.17):
nie ma to jak po 12 godzinach legnąć się w łożu
Wojo (15:04, 26.04.17):
Ja zaraz kończę
Suekii (13:20, 26.04.17):
Dzisiaj nockę walę więc jeszcze sporo luzu a tam ?
Kotekhh (13:13, 26.04.17):
Jak tam ludziska, w robocie co ?
Wojo (10:57, 26.04.17):
Zgadzam się
Flashek (8:17, 26.04.17):
Tche Witcher Tchree to jakaś porażka
Flashek (8:16, 26.04.17):
Danielos Monater Energy
Wojo (8:16, 26.04.17):
Zawsze był
PatrykPlayingPOLSKA (23:09, 25.04.17):
Witcher jest darmowy,arstechnica.co....mes-partnership
I am Lord (21:04, 25.04.17):
Jest dogrywka między Destem a Hamtarenem, będę liczył głosy napisane w postach w temacie głosowania do tury #158. Podliczam w czwartek jak będę przy kompie.
Gibki Kaktus (0:49, 25.04.17):
Ja będę!
I am Lord (18:41, 24.04.17):
Ok linki wrzucę
Ankieta
» Czy jesteś szczery odpowiadając w ankietach w Internecie?
Tak
Nie

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.00884 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev