uzu13 Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 Dlaczego wyskakuje mi bład : Unknown variable hp ; jak w create mam wpsiane hp=10 ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rabbcio Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 Stwórz zmienną globalną i po problemie. (w create zamiast hp=10, global.hp=10) :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
uzu13 Opublikowano 19 Maja 2010 Autor Udostępnij Opublikowano 19 Maja 2010 To samo jest z global Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Shockah Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 A gdzie używasz tej zmiennej hp? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 JAK zmienną hp mas w obj_1, a używasz jej w obj_2, to musisz pisać zawsze obj_1.hp -= 10 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rabbcio Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 wszedzie gdzie masz "hp", zmień na "global.hp" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 Nie. Jeżeli dasz globala to jak zabijesz jednego to wszyscy zdechną. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 CO mają do tego globale? Przestańcie gadać take pierdoły. Nie ma sensu używać globali. Napisz, jak i gdzie używasz zmiennej hp. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
uzu13 Opublikowano 19 Maja 2010 Autor Udostępnij Opublikowano 19 Maja 2010 No więc: 1. W object0 mam w stepie: GML if distance_to_object(object1) <=15 { if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)&&!a) a=collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0); zmienna=1 } if zmienna=0 { image_index=sprite0 direction=0 speed=2 } if zmienna=1 sprite_index=sprite1 a.hp-=5 a=false speed=0 2. W object1 step: GML if hp <=0 { instance_destroy(); } Create: GML hp=50 a=false zmienna=0 I jak się kolizjuje obj1 z 2 to wyskakuje własnie taki błąd jak podałem na początku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 GML if (zmienna==1) { sprite_index=sprite1; a.hp-=5; a=false; speed=0; } Może o to chodzi. EDIT: Zauważ że masz if(distance_to_object(object1) <=15), a dalej sprawdzasz warunek if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)&&!a). W pierwszym sprawdzasz czy object1 jest w odległości mniejszej bądź równej 15 px, w drugim od 10 px. Jeżeli pierwszy jest prawdą, to wcale nie znaczy, że drugi if także. Dla przykładu załóżmy, że object1 jest w odległości 13px. Warunek pierwszy jest spełniony natomiast drugi nie. Object1 jest za daleko o 3 px, co powoduje, że zmienna a nadal jest false i GM nie odwołuje się do żadnego objectu. Natomiast zmienna=1 i dalsza część kodu jest wykonywana. Przepuszczam, że chciałeś zrobić coś takiego, że gdy object0 jest w odległości 15 px od object1, to go atakuje. Zmienia mu się sprite i odejmuje się object1 5 hp: GML if(distance_to_object(object1)<=15) { if(sprite_index!=sprite1) { a=collision_circle(x,y,15,object( 1 albo 0 nie pamietam ),1,0); a.hp-=5; speed=0; sprite_index=sprite1; } } else { image_index=sprite0; direction=0; speed=2; } Jeszcze musisz dodać kod na zamianę sprita po ataku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 a.hp-=5 a=false ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)&&!a) Collision_circle zwraca id obiektu, z którym kolidujesz, a nie true-false. Dlatego podejrzewam, że ten warunek nigdy się nie spełnia, a co za tym idzie, zmienna "a" nie jest znana i nie przetrzymuje ona id obiektu... I dlatego unknown variable ;) . Może tak: GML if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)>0&&!a) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 19 Maja 2010 Udostępnij Opublikowano 19 Maja 2010 wez sobie drawem albo show_messagami sprawdzaj jakie warunki sa spełnione i bedziesz wiedział gdzie jest źle a gdzie dobrze. Collision_circle zwraca id obiektu, z którym kolidujesz, a nie true-false. oj oj oj, zwraca 1 jeśli jest kolizja a wartość 1 to true, w przeciwnym wypadku zwraca 0 lub -1 co jest wartością false. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
uzu13 Opublikowano 20 Maja 2010 Autor Udostępnij Opublikowano 20 Maja 2010 Zmieniałem tak jak pisaliście ale cały czas wyskakuje ten głupi błąd... Coś tam się działo innego tak jak miało być, ale... Dam może tutaj ten projekcik i może sami na gotowym projekcie coś zauważycie. http://rapidshare.com/files/389464047/TEST.gmk.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 20 Maja 2010 Udostępnij Opublikowano 20 Maja 2010 co to ma być to a.hp-=5. Zmiana hp dla zmiennej a? Nie rozumiem tego ale wg mnie powinno być po prostu hp-=5 albo object1.hp-=5. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
alwin Opublikowano 20 Maja 2010 Udostępnij Opublikowano 20 Maja 2010 Totalnie nie wiem o co chodzi w tym przykładzie.. co chcesz uzyskać? a.hp-=5 jest bez sensu ponieważ zmienna a jest typu boolean a nie objectem.. zrób ewentualnie other.hp-=5. Lub po prostu hp-=5, komu ma odejmować to hp? edit- pomyliłem sie, jednak do zmiennej a jest przypisany obiekt, nie zauważyłem:) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 20 Maja 2010 Udostępnij Opublikowano 20 Maja 2010 Proszę: plik Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 20 Maja 2010 Udostępnij Opublikowano 20 Maja 2010 zwraca 1 jeśli jest kolizja a wartość 1 to true, w przeciwnym wypadku zwraca 0 lub -1 co jest wartością false Wiem jakie są odpowiedniki true i false w liczbach -__-. Chociaż funkcja zwraca tu -4. Ale tak, pomyliłem się, co do kodu :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 20 Maja 2010 Udostępnij Opublikowano 20 Maja 2010 @Hunter: ja tez dalem sie kiedys na to zlapac: funkcje zaczynajace sie od 'collision' zwracaja id, jesli jest kolizja, w przeciwnym razie - -1. E: no, moze noone. Czyli -4. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 20 Maja 2010 Udostępnij Opublikowano 20 Maja 2010 ... w przeciwnym wypadku zwracają noone ( -4 ). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
uzu13 Opublikowano 20 Maja 2010 Autor Udostępnij Opublikowano 20 Maja 2010 Dziękuje bardzo :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się