Skocz do zawartości
SIDek

room przejściowy między levelami

Rekomendowane odpowiedzi

Chciałbym zrobić taki room przejściowy między levelami. Przechodzisz level 1 -> room przejściowy -> level 2. -> room przejściowy itd....

Room miałby nas wysyłać do konkretnego rooma levela i określać liczbę punktów którą możemy w nim zdobyć (global.punkty)

 

Chciałem zrobić to na zasadzie.

If global.level=1 and klikamy enter { goto_room 1 i global.punkty=200} itd. dla 50 leveli

 

Można zapisać to jakoś inaczej?

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Tutaj przykładowo może się przydać stworzenie struktury z globalnej tablicy 2D na takiej zasadzie:

 

enum eLevel {enID, enPunkty}
globalvar gLevelsDat;

gLevelsDat[numerLevelu, eLevel.enID] = room_1;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 50;

pierwszy index tablicy gLevelsDat to będzie numer levelu czyli w twoim przypadku będzie to twój "global.level"

drugi index tej tablicy to będzie odnośnik do tego jaką informację chcesz uzyskać, ja przygotowałem 2 informacje bo tyle na ten moment potrzebujesz (ale będziesz mógł to łatwo rozbudować sobie dopisując więcej rzeczy w tym enumie w 1 linice). Informacja pierwsza to id rooma, a informacja druga to liczba twoich punktów do uzyskania na nim.

 

Najlepiej by było gdybyś stworzył sobie w twoim pierwszym roomie taką strukturę w jakimś obiekcie w create.

Dla przykładu wyglądałoby to tak:

enum eLevel {enID, enPunkty}
globalvar gLevelsDat;

var numerLevelu = 0;
gLevelsDat[numerLevelu, eLevel.enID] = room_1;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 50;

numerLevelu++;
gLevelsDat[numerLevelu, eLevel.enID] = room_2;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 25;

numerLevelu++;
gLevelsDat[numerLevelu, eLevel.enID] = room_3;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 75;

numerLevelu++;
gLevelsDat[numerLevelu, eLevel.enID] = room_4;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 100;

numerLevelu++;
gLevelsDat[numerLevelu, eLevel.enID] = room_5;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 65;

numerLevelu++;
gLevelsDat[numerLevelu, eLevel.enID] = room_6;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 150;

// i tak dalej

 

No i gdy taką strukturkę już sobie stworzysz to potem możesz w swoim przejściowym roomie jej użyć w taki sposób:

bazując na twojej zasadzie "If global.level=1 and klikamy enter { goto_room 1 i global.punkty=200} itd. dla 50 leveli"

 

if ( keyboard_check_pressed(vk_enter) )
{
	global.punkty = gLevelsDat[global.level, eLevel.enPunkty];
	room_goto(gLevelsDat[global.level, eLevel.enID]);
}

 

 

Takie rozwiązanie może się początkowo tobie wydawać skomplikowane ale to daje fajną elastyczność bo gdybyś np chciał dodatko kiedyś ustawić by każdy level miał np określoną ilość przeciwników do zabicia aby go przejść no to w prosty sposób moją strukturę rozbudujesz:

enum eLevel {enID, enPunkty, enKille}
globalvar gLevelsDat;

gLevelsDat[numerLevelu, eLevel.enID] = room_1;
gLevelsDat[numerLevelu, eLevel.enPunkty] = 50;
gLevelsDat[numerLevelu, eLevel.enKille] = 8;

i potem w roomie przejściowym:

if ( keyboard_check_pressed(vk_enter) )
{
	global.punkty = gLevelsDat[global.level, eLevel.enPunkty];
	global.wymaganeKille = gLevelsDat[global.level, eLevel.enKille];
	room_goto(gLevelsDat[global.level, eLevel.enID]);
}

itd.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

tak mi się coś właśnie kojarzyło, że można użyć tablic do tego, ale nigdy z nich nie korzystałem.

Można to zapisać jakoś inaczej bez funkcji

enum

? Wracam do GM po dłuższej przerwie, mam GM8 i brakuje tu tej funkcji

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

W GM8 masz takie specjalne menu w którym definiujesz sobie własne stałe (constant)

form_constants.jpg

 

i tam powpisuj:

enID 0

enPunkty 1

 

 

a używać będziesz tego jak zwykłej zmiennej:

gLevelsDat[numerLevelu, enID] = room_1;
gLevelsDat[numerLevelu, enPunkty] = 50;

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×