Strona główna
Witaj, nieznajomy!

Menu

Tworzenie wewnętrznego menu. (Tak jak w import/export).

Tak więc zaczynamy.
Na początek możemy dodać funkcję

Kod:
0512: show_permanent_text_box 'CLOTHA'


Która pokaże nam instrukcje jak obsłuzyć panel, jeżeli nie chcesz to nie musisz jej umieszczać.

Następnie zamrozimy gracza aby nie mógł się ruszać.

Kod:
Player.CanMove($PLAYER_CHAR) = False


(Player.CanMove = Funkcja odpowiedzialnalna za zamrożenie/odmrożenie gracza)
($PLAYER_CHAR = Zmienna pod którą jest przypisany gracz)
( = False : Niemożliwe)

Teraz stwórzmy nasz panel funkcją:

Kod:
08D4: $Panel = create_panel_with_title 'FEM_MM' position 29.0 145.0 width 200.0 columns 1 interactive 1 background 1 alignment 1


($Panel = Zmienna pod którą przypisaliśmy nazwę panelu)
('FEM_MM' = Wpis z pliku GXT , tytuł panelu)
(29.0 = Pozycja X)
(145.0 = Pozycja Y, zmniejszmy jeżeli na początku nie dodaliśmy info o obsłudze panelu)
(200.0 = Długość panelu)
(columns 1 = Ilość kolumn w panelu)
(interactive 1 = Ustawienie aby panel był interaktywny i uznawany za menu)
(background 1 = Ustawienie czy panel ma użyć tapety)
(alignment 1 = Pozycja textu, 0-Centralnie 1-Lewa 2-Prawa)

Teraz uzupełnijmy text w panelu funkcją:

Kod:
08DB: set_panel $Panel column 0 header 'MTOR02C' data 'IE16' 'IE10' 'IE11' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'


($Panel = Zmienna panelu dla którego ma zastosować zmiany)
(column 0 = W której kolumnie ma zastosować zmiany)
(header 'MTOR02C' = Wpis z pliku GXT , podtytuł)
(data 'IE16' 'IE10' 'IE11' = Wpisy z pliku GXT , które zostaną dodane do panelu. Użyj 'DUMMY' jeżeli chcesz pozostawić puste.)

Panel został stworzony, teraz czekajmy aż gracz dokona jakiegoś ruchu:

Kod:
:czekaj_na_wybor
wait 
0
if
00E1: player $PLAYER_CHAR pressed_key 15
jf 
@czekaj_na_wybor_test2


Tutaj sprawdziliśmy czy gracz przycisną klawisz Return, który anuluje menu

Kod:
00E1: player $PLAYER_CHAR pressed_key 15


($PLAYER_CHAR = Zmienna gracza)
(pressed_key 15 = Numer przyciśniętego klawisza)
Jeśli nie był to ten klawisz skoczy do pętli która sprawdzi czy to nie był klawisz sprintu = zatwierdzenia.
Jeśli jednak to byl ten klawisz niech podejmie kroki usuwające panel:

Kod:
08DA: remove_panel $Panel
03E6: remove_text_box
Player.CanMove($PLAYER_CHAR) = True
jump @wyjdz


(08DA: remove_panel $Panel = Usuwamy panel)
(03E6: remove_text_box = Usuwamy info o obsłudze panelu , jeśli go stworzyliśmy)
(Player.CanMove($PLAYER_CHAR) = True = $PLAYER_CHAR = Zmienna pod którą jest przypisany gracz, = True : Możliwe)
(jump @wyjdz = Skaczemy do nagłówka który wyjdzie z procedury)

"Jeśli nie był to ten klawisz skoczy do pętli która sprawdzi czy to nie był klawisz sprintu = zatwierdzenia."
Więc to jest ta pętla.
Sprawdza czy gracz przycisną klawisz sprintu = potwierdzający.
Jeśli nie sprawdza od początku ponieważ przycisnięty klawisz nie był żadnym z żądanych.

Kod:
:czekaj_na_wybor_test2
if
00E1: player $PLAYER_CHAR pressed_key 16
jf 
@czekaj_na_wybor

00E1: player $PLAYER_CHAR pressed_key 15


($PLAYER_CHAR = Zmienna gracza)
(pressed_key 15 = Numer przyciśniętego klawisza)

Jesli przycisnięto niech wykona nastepujace kroki:

Kod:
08D7: $Wybrane = panel $Panel active_row
08DA: remove_panel $Panel
03E6: remove_text_box


(08D7: $Wybrane = panel $Panel active_row = $Wybrane = Zmienna pod którą wpisze wybraną pozycje, $Panel = Z którego panelu)
(08DA: remove_panel $Panel = Usuwamy panel)
(03E6: remove_text_box = Usuwamy info o obsłudze panelu , jeśli go stworzyliśmy)

Teraz funkcja którą zanalizuje wybraną pozycję i skoczy w jej miejsce docelowe:

Kod:
0871: init_jump_table $Wybrane total_jumps 2 1 -1 jumps 0 @wybrane1 1 @wybrane2 0 -1 0 -1 0 -1 0 -1 0 -1


($Wybrane = Zmienna pod którą przypisaliśmy wybraną pozycję)
(total_jumps 3 = Ustalasz ile totalnie użyłeś w panelu pól które można było wybrać)
(1 -1 = Pierwsza pozycja , ustalamy -1 = Nic, ponieważ jest to podmenu którego nie możesz wybrać)
(jumps 0 @wybrane1 = 0 = zaznaczona pozycja aktualnie pierwsza @wybrane1 czyli skacze do nagłówka :wybrane1)
(1 @wybrane2 = 1 = druga pozycja i skacze do następnego zdeklarowanego nagłówka. Za każdym skokiem zwiększaj liczbę o 1 więcej i deklaruj nagłówek do którego powinno skoczyć)
(0 -1 0 -1 0 -1 0 -1 0 -1 = zużyliśmy już nasze 2 skoki "total_jumps 2" i resztę możliwych ustawiamy jako nic (-1))

I na koniec wystarczy stworzyć nagłówki które ustaliliśmy po wyborze (wybrane1 i wybrane2) poczym zdeklarować co się ma stać.
Dodane przez: MakG
Posting comments to this article is disabled.
Created & Powered by MakG
Wszelkie prawa zastrzeżone