Skocz do zawartości

Najprostszy ekwipunek


Rekomendowane odpowiedzi

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

  • 4 tygodnie później...

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

  • 2 miesiące temu...

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...