Ten artykuł został stworzony dla starszych wersji GameMakera i może nie być aktualny.

Efektowne menu

Niedziela, 25 Września 2005, 21:13
Czas czytania 2 minuty, 18 sekund
Zgodne z GM: gm6
Jak zrobić zaawansowane menu.
TYLKO GAME MAKER 6.1

tworzymy nowy obiekt obj_menu. Dajemy kod w create:
kodalpha=0;
step=0;
kursor=0;
m[0]='Nowa gra';
m[1]='Wczytaj Grę';
m[2]='Zakończ';
kursor_max=2;
teraz dajemy kod w step:
kodif step=0
{
if alpha<1 then alpha+=0.1 else{
alpha=1;
step=1;
}
}

if step=2
{
if alpha>0 then alpha-=0.1 else{
instance_destroy();
}
}
w draw:
koddraw_set_alpha(alpha);
for (i=0; i<=kursor_max; i+=1;)
{
if i=kursor then draw_set_color(c_white) else draw_set_color(c_black);
draw_text(0,0+(40*i),m[i]);
}
w key press up dajemy kod:
kodif step=1
{
if kursor>0 then kursor -=1 else kursor=kursor_max;
//ewentualnie: sound_play(muzyczka);
}
w key press down dajemy kod:
kodif step=1
{
if kursor<kursor_max then kursor +=1 else kursor=0;
//ewentualnie: sound_play(muzyczka);
}
w key_press enter dajemy kod
kodif step=1
{
step=2;
//ewentualnie: sound_play(muzyczka);
}
i na sam koniec w on destroy dajemy kod:
kod
draw_set_alpha( 1 );
switch kursor
{
case 0: /*gdy wybrano nowa gra*/; break;
case 1: /*gdy wybrano wczytaj*/; break;
default: game_end();
}

Teraz tłmaczę o co chodzi:
W CREATE definiujemy zmienną alpha, która odpowiada za rozjaśnianie i przyciemnianie menu.
Zmienna step pomaga nam to kontrolować.
Zmienna kursor odpowiada za aktualną pozycję kursora.
Zmienne m[0]...m[n] odpowiadają za kolejne pozycje w menu
Zmienna kursor_max, musi być równa liczbie n z poprzedniej zmiennej (w tym wypadku 2)

W STEP zajmujemy się opoeracjami na rozjaśnianiu i przyciemnianiu menu.

W KEY_UP i KEY_DOWN operujemy na zmianie pozycji kursora, ale tylko gdy step=1 czyli menu jest widoczne i ani się nie rozjaśnia, ani też nie przyciemnia.

W ENTER nakazujemy się obiektowi przyciemniać, zmieniając step na dwa, tym samym unieruchamiając operacje na kursorze. Akcja w step doporowandzi do powolnego zniknięcia menu, a na końcu zniszczy go.

W DESTROY dajemy akcje jakie nalezy wykonać po wybarniu konkretnego menu. Dajemy je dopiero tutaj, bo w tym momencie obiekt zniknął, więc musi się coś wydarzyć. Najlepiej zrozumiesz to gdy zobaczysz skrypt w akcji.

W DRAW w pętli FOR, malujemy menu. Ustawiamy prześwitywalność na alpha, można dodatkowo ustawic rozmiar czcionki (przed pętlą). W pętli ustawiamy kolor czcionki na czarny, lub na biały gdy aktualny tekst odpowiada pozycji kursora.

Dla początkujących skrypt ten może być dość skomplikowany, ale sam strouję go w praktyce od dość dawna, w róznych modyfikacjach (nie tylko do menu, ale np. do plansz z wpisywaniem imienia, plansz tekstowych, oraz plansz z pytaniami). Po drobnych modyfikacjach w draw, można uzyskac naprawdę wspaniałe efekty, włącznie z kursorem oraz tłem dla menu. Ten sam skrypt został zastrosowany w 80% moich gier.
Komentarze (łącznie 63, wyświetlam 31 - 45):
kamciog (Wto., 24 Cze. 08, 14:35)
#31

Nawet dobre
;)

nikki (Pon., 28 Lip. 08, 19:25)
#32

nie działa mi nowa gra:(

Misiek999 (Pon., 28 Lip. 08, 20:45)
#33

kolejny co bezmyślnie skopiował lol

L
Lechu4444 (śro., 30 Lip. 08, 18:34)
#34

nikki a wo ogóle coś zrobiłeś/aś od siebie?? Nie wiem dodałaś skrypt na nową grę

C
compi (śro., 10 Gru. 08, 19:41)
#35

Mnie też nie działa nowa gra a mam kod w Case 0 : room_goto = intro
;/

gnysek (śro., 10 Gru. 08, 19:58)
#36

case 0: room_goto(intro); break;

S
SthridX (śro., 25 Mar. 09, 17:13)
#37

Jak zrobić aby się dało przenieść to nowa gra etc do środka, oraz we wczytaj grę móc wybierać roomy xD?

S
SthridX (śro., 25 Mar. 09, 17:26)
#38

A btw, compi, ja mam tak to zrobione:
w pierwszym roomie bez niczego dać obiekt menu a w destroy:

case 0: room_goto_next(); break;

A w następnych roomach niech będzie wszystko inne xF

mosiek96 (Wto., 04 Sie. 09, 21:13)
#39

A jak ustawić pozycje menu bo jak ustawiłem obj_menu na środku ekranu to mi menu zrobił w prawym rogu sprawdzałem kod w create w draw ale niestety jestem początkujący i nie za bardzo go rozumie

4
47xxxxxxxx (Wto., 04 Sie. 09, 21:22)
#40

draw_text(0,0+(40*i),m[i]); - zmień pogrubiony tekst

mosiek96 (Wto., 04 Sie. 09, 21:24)
#41

dobra poradzilem sobie :)

kamcio540 (Wto., 27 Kwi. 10, 17:27)
#42

Gdy klikne np. na nowa gra , to znikają litery. A jak zrobić by np. Weszło do następnego pomieszczenia ??

kamcio540 (Wto., 27 Kwi. 10, 17:43)
#43

he udało sie to zrobić.a jak usunełem to wczytaj gre to teraz mi sie wszystko pomieszało i pisze

0

nowa gra

zakończ

kamcio540 (Wto., 27 Kwi. 10, 17:56)
#44

create:

alpha=0;
step=0;
kursor=0;
m[1]='Nowa gra';
m[2]='Zakończ';
kursor_max=2;

destroy:

draw_set_alpha( 1 );
switch kursor
{
case 0: room_goto(skater_room_position_1); break;
default: game_end();
}

D
Dawka83 (Wto., 27 Kwi. 10, 18:46)
#45

bo zaczynasz od 0 m[0]='Nowa gra' itd

Najnowsze wersje GameMakera:

Stabilna
2024.14.3.217 • 2024.14.3.260
wydana 14 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 434 dni temu
Beta
2024.1400.4.986 •
2024.1400.4.961
 0.19.0

wydana  6 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
53 użytkownicy online na discordzie:
RogerDodg3r, Miłosz, Morti, c..., 🧁Cupcake🧁, Sporek, LeD, Carl-bot, pABLO, Fox, p..., PanPupa, HappyOrange, GMRussell, Filyps, fervi, 𝕳𝖚𝖌𝖔 𝕲𝖔𝖓𝖝𝖆𝖑𝖊𝖝, 𝕯𝖎𝖆𝖓𝖆, r..., Threef, Voytec, Uzjel, chleb, Murrri, MagnusArias, Dyno, 🆅🅸🆃🅾74🅼, Deusald, szmalu, Korodzik, Destiny, Morro, Kandif, sutikku, Skovv, Danieo, bagno, antek, Arrekin, Tidżi, Mtax, g..., GreenClover, s..., Cebul, Borek, moeglich, Add92, Krzysiek1250, h..., Shockah, Nero, xVANiLL
Shoutbox
K
Kamilek (21:57, 08.12.25)
Ale klimat tu znowu wrócić! :-D
Wojo (13:03, 07.12.25)
Żeby nie było to jednak discord jest żywy :)
Wojo (12:50, 07.12.25)
Ehh znak czasu. Prawie dwa miesiące ciszy w shoutboxie, na forum też raczej cisza i jest głównie swego rodzaju archiwum ostatnich dwóch dekad
gnysek (16:01, 16.10.25)
To już google decyduje. Mam wrażenie, ze po datach obcina stare treści.
S
Sutikku (10:42, 14.10.25)
Ja jeszcze trafiam na fora jak szukam konkretnych haseł (chociażby wczoraj zepsuty pendrive który się identyfikuje jako Phison 2307 Boot ROM). Teraz projekty opensource często mają społeczności na discordzie i tam jest tona przydatnych informacji ale niedostępna poza discordem. Fajnie by to było wyeksponować
Korodzik (04:24, 14.10.25)
A w sumie to forum się normalnie indeksuje w wyszukiwarkach? Bo ja stwierdziłem, że np. w Google ciężko znaleźć cokolwiek z gmclanowego forum. Większość tematów jest chyba nieindeksowana od dawna...
S
Sutikku (08:44, 13.10.25)
mam niedokończony projekt bota, którego dodaje się do discorda, a on synchronizuje wiadomości z discorda -> na readonly forum. Wtedy treści mogą być indeksowane z wyszukiwarek i łatwo dostępne bez logowania. No ale leży w czyśćcu i czeka.
Wojo (11:52, 11.10.25)
Może kiedyś powróci moda na fora internetowe. Pamiętam w sumie, że czasami aktywność rosła i malała, ale tak pusto to chyba jeszcze nigdy nie było i myślę, że ta cała migracja użytkowników jest zasługą Discorda i zmiany czasów. Po prostu lata dwudzieste spowodowały zmiany trendów w internecie
S
Sutikku (09:06, 08.10.25)
najwyższa pora zopensourcować kod gmclanu!
gnysek (10:33, 06.10.25)
Może tak zrobię :D Jak znajdę czas :D
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?