Sutikku Opublikowano 28 Sierpnia 2014 Udostępnij Opublikowano 28 Sierpnia 2014 Moją pięta Achillesa od zawsze było robienie ekwipunku. Przeważnie to było draw_text() zamiast ekwipunku. Przykłady znalezione w internecie, przeważnie posiadały dużo kodu, albo nie mogłem zrozumieć/nie chciałem (lenistwo wrogiem człowieka) albo trzeba było dawać kod do każdego obiektu, co mnie troszkę zrażało. Tym razem na potrzeby własnej gry, wziąłem się do pracy i stworzyłem własny, bardzo prosty ekwipunek. Może nie powala funkcjonalnością, czy też możliwościami, ale wierzę, że komuś się przyda. A tutaj link https://gmclan.org/up9511_12_ProstyEkwipunek.html Wersja GM 8.0 Tworzymy obiekt ekwipunku. W create wstawiamy kod GML (CREATE) maksEkw=6 //maksymalna wielkosc ekwipunku, ostatni element tablicy nie jest wykorzystywany //petla itemow for(i=0; i<maksEkw; i+=1) // { global.ekwipunek=-1 } W draw wstawiamy taki oto kod GML (Draw) for(i=0; i<maksEkw; i+=1) { if!(global.ekwipunek==-1) { draw_sprite(spr_box, global.ekwipunek, x+(i*33), 32) // sprite ma rozmiar 32, ale dalem 33 zeby byl odstep } } . Mam stworzony sprite spr_box, a w nim 3 klatki, każda to inna skrzynka/obiekt. A to kod do step (chciałem to zrobić optymalniej ale zawiodłem) GML (Step) if keyboard_check_pressed(ord('1')) { check_ekw(1-1) //daje tutaj 1-1, zamiast 0, aby w przyszlosci wiedziec co robie i sie nie pogubic. } if keyboard_check_pressed(ord('2')) { check_ekw(2-1) } if keyboard_check_pressed(ord('3')) { check_ekw(3-1) } if keyboard_check_pressed(ord('4')) { check_ekw(4-1) } if keyboard_check_pressed(ord('5')) { check_ekw(5-1) } if keyboard_check_pressed(ord('6')) { check_ekw(6-1) } Skrypt check_ekw wygląda tak: GML (checkekw) ii=argument0 if !(global.ekwipunek[ii]==-1) { switch(global.ekwipunek[ii]) { case 0: score+=3 global.ekwipunek[ii]=-1 break; case 1: score+=15 global.ekwipunek[ii]=-1 break; case 2: instance_create(random(640), random(480), obj_item) global.ekwipunek[ii]=-1 break; } } . case 0, to inaczej klatka 0. Ponieważ w przykładzie nie robiłem postaci, kod zbierania itemków mam w obiekcie, ale nic nie stoi na przeszkodzie aby pokazany tutaj kod dawać w kolizji z itemkiem. Obiekt Itemku - Create GML (CREATE) image_speed=0 image_index=choose(0,1,2) //to dla zroznicowania itemkow</span></span></span></span> A kod zbierania, w tym przypadku po naciśnięciu myszką na item GML (zbieranie) for(i=0; i<obj_ekwipunek.maksEkw; i+=1) { if(global.ekwipunek==-1) { global.ekwipunek=image_index i=obj_ekwipunek.maksEkw //to zeby zakonczyc petle, nie jestem pewien czy nie wystarczy samo break; instance_destroy(); } } Piszcie uwagi, bluzgi, czy co tam chcecie :) Zapomniałem dopisać, że jest pod GM 8.0, bo na czas robienia nowej gry, musiałem się przenieść. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
exp Opublikowano 28 Sierpnia 2014 Udostępnij Opublikowano 28 Sierpnia 2014 Fajna rzecz, w sam raz dla przygodówki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 28 Sierpnia 2014 Autor Udostępnij Opublikowano 28 Sierpnia 2014 Dziękuje za opinie :) Na początku miało się używać przedmioty przez naciśnięcie kursorem, ale to wtedy nie byłby tytułowy Najprostszy Ekwipunek. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 20 Września 2014 Autor Udostępnij Opublikowano 20 Września 2014 MiniAktualizacja. Ponieważ jest to kwestia zamiany paru linijek kodu dam tutaj. Za pomocą tej zmiany teraz można powiększać ekwipunek. Na tej samej zasadzie zmniejszać. W create obj_ekwipunek GML (create) maksEkw=3 //maksymalna wielkosc ekwipunku, ostatni element tablicy nie jest wykorzystywany //petla itemow for(i=0; i<9; i+=1) // { global.ekwipunek=-1 } Teraz 9 wyznacza maksymalny ekwipunek jaki można mieć. Po naciśnięciu spacji, zebrania nowego plecaka, czy jeszcze czegoś innego powiększanie ekwipunku. GML (akcja) if(maksEkw<9) maksEkw+=1 . I w step dodać wszystkie wciśnięcia klawisza do 9 GML (step) if keyboard_check_pressed(ord('9')) { check_ekw(9-1) //daje tutaj 1-1, zamiast 0, aby w przyszlosci wiedziec co robie i sie nie pogubic. } I tak od 1, do 9. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 20 Września 2014 Administratorzy Udostępnij Opublikowano 20 Września 2014 Upraszczamy event step: GML var i; for(i=1; i<9; i++) { if keyboard_check_pressed(ord(string(i))) { check_ekw(i-1); } } 5x mniej kodu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 20 Września 2014 Autor Udostępnij Opublikowano 20 Września 2014 Dziękuje. Kombinowałem coś z stringami, ale gdzieś robiłem błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Opisek Opublikowano 11 Grudnia 2014 Udostępnij Opublikowano 11 Grudnia 2014 Bardzo mi się podoba i pasuje idealnie do mojej gry. Na pewno wykorzystam, 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ę