...: Strona :...
News
Archiwum
Redakcja
Chat ( 0 )
Forum
Księga Gości
Imprezy
Linki
Wymiana
Radio

- Download -
Programy
Gry
Zasoby
Music
Sound
Inne

- RPG Maker -
RPGUNITE
RPGMZ
RPGMV
RPGVXAce
RPGVX
RPGXP
RPGME
SimRPG95
RPG95
WRPGE

- Projekty -
Commander
Eden Universe
Pogromca II
Virtua Twierdza

- Krypta -
Kompendium
Scenariusze
Questy
Artykuły

...: Buttony :...
Goniec RM (Archiwum)
Dragon Ball Nao
M.U.G.E.N Samouczek
Pokemon Crystal PBF
Pillars of Eternity POLSKA - największy portal Pillars of Eternity (Project Eternity)
Kroniki Fallathanu - Prawdziwy mmoRPG w przeglądarce



Modules -  the greatest and ultimate place for every tracked-music sympathizer
Dragon Ball Great


Informacje || Problemy z RPGVXAce || Zgłoś nowe materiały
RPG Maker :: RPG Maker VX Ace

Dłuższe Wiadomości
- czyli wyświetlanie tekstu na całym ekranie -


Jest to sposób na wyświetlenie wiadomości tak by tekst obejmował cały ekran. Może się to np przydać do zrobienia różnych notatek, książek itp w świecie gry - gdzie zamiast robić każdą na osobnym obrazku, można po prostu dać tekst z RMa i pusty obrazek z kartką jako tło.

A więc po kolei.
Jak wiadomo okno w edytorze gdzie wklepujemy tekst daje nam tylko 4 linijki, i nie można tego za bardzo legalnie zmienić, więc musimy zadziałać inaczej. Użyjemy do tego celu okna z przewijanych wiadomości, które jest bardzo duże i tam na pewno spokojnie nasz tekst zmieścimy.

No to wchodzimy do ruby do klasy game_interpreter i zjeżdżamy do linijki 333 "def command_105" - to jest właśnie fragment odpowiedzialny za to co się dzieje gdy dajemy komende długiego tekstu. Moglibyśmy to zastąpić po prostu tym co się dzieje gdy dajemy wiadomość, ale wtedy stracimy przewijany tekst, zrobimy więc myk z przełącznikiem. Po prostu damy jeden przełącznik, jak będzie ON to tekst będzie na całym ekranie, jak OFF to przewijany.
A więc mamy tam coś takiego:



No i to zamieniamy na:



A teraz wyjaśnienie co to w ogóle robi i jak działa.
Pierwsze sprawdzamy czy przełącznik (tutaj 1, ale zamieniając 1 na inną liczbę możecie to zmienić) jest ON.
Jeśli jest OFF to po prostu wykonuje się kod pod ELSE, czyli to co oryginalnie było pod def_command.

Jeśli jest ON to wykonuje się kod który jest kopią tego co jest pod def_command 101 - od wiadomości, ale jest on lekko zmieniony. Wywalone są linijki odpowiedzialne za ustawianie mordy przy wiadomości - nie są one nam tu potrzebne, a ich ustawianie byłoby kłopotliwe, bo w edytorze mamy dostęp do tych ustawień tylko przy zwykłych wiadomościach (co tak swoją drogą jest według mnie badziewnym rozwiązaniem, o wiele lepiej było w RM2k3). Potem mamy ustawienia co do tła, gdzie znowu w edytorze jest to na sztywno przypisane wiadomości. Tutaj zrobimy sobie myk żeby ustawienia co do prędkości przewijanego tekstu były odpowiedzialne za tło naszej wiadomości. Jako, że nie można ustawić szybkości 0 to po prostu od naszej wartości szybkości odejmniemy sobie 1. I teraz w zależności jak ustawimy prędkość takie będzie tło:
1 - tło z windowskina
2 - tło to takie czarne półprzeźroczyste
3 lub więcej - brak tła (tu se można podłożyć obrazek)
Dalej mamy pozycję okna - tu na sztywno wpisujemy 0 (czyli góra ekranu).
I to tutaj w sumie tyle, dalej mamy po prostu skąd program ma brać tekst samej wiadomości, tu mamy 405, w zwykłej wiadomości było 401 i tyle z różnic.

I teraz jakbyście odpalili grę i wklepali długą wiadomość to program nadalby ją wyswietlił w 4 linijkach i pociąłby ją na kilka okienek, a nie o taki efekt nam chodziło - no więc trzeba jeszcze się pobawić i pozmieniać co nie co w klasie window_message.
Pierwsze w linijce 30 należy zmienić "fitting_height(visible_line_number)" na "Graphics.height" - czyli wysokość okienka z 4 linijek tekstu na całe okno gry. Należy tu zauważyć że wysokość okna gry nie jest ustawiona na sztywno więc spokojnie wszystko się fajnie ułoży i przy dupnej rozdziałce ACE i przy jedynej porządnej 640x480.
Ale jak widać to nam zmieniło wielkość okienek wszystkich, a nie o to nam zupełnie chodziło, no więc trzeba jeszcze zjechać do linijki 199 "def update_placement" gdzie mamy:



I to zmienić na:



I teraz po kolei. Kod ten odpowiada za pozycje naszego okna. W ACE skrypty są tak napisane że nic nie jest na sztywno, czyli pozycja naszego okna zależy od rozdziałki gry i od wielkości samego okna. A my tą wielkość zmieniliśmy - i wsio byłoby ok, gdyby ACE miał okna wyboru, wpisywania zmiennej itp normalnie jak w starszych makerach. Ale nie oczywiście muszą być one wydupcone i jakoś dziwnie wyświetlane - no nie ważne, może komuś ten efekt się podoba... No dobra, tylko że zmieniając wielkość naszego okienka wydupcyliśmy te podookienka gdzieś w kosmos no i tu trzeba je ogarnąć, dlatego zmiana: "(Graphics.height - height)" na "(Graphics.height - fitting_height(visible_line_number))" - po prostu u domyślnie wysokość okna jest tą 4 linijkową, więc można równie dobrze odjąć samą wysokość okna. My zmieniamy by odejmowano dokładniej tą 4 linijkową co daje nam zawsze ten sam wynik niezależnie od tego jaka na prawdę jest wysokość okna.

I na końcu tam dodajemy sprawdzanie przełącznika i tu już na stałe w zależności od tego czy zmienna jest OFF czy ON wyświetalamy duże albo małe okno. Pewnie to jest jakiś syf kod i powinien być lepiej ułożony, ale działa to po co grzebać XD. Też należy zwrócić uwagę żeby przełącznik był OFF podczas wyświetlania zwykłych wiadomości - no bo jak będzie ON, to wyświetlą się na dużym oknie, a tego nie chcemy.

No i to w sumie tyle - teraz przełączając przełącznik na ON i pisząc tekst w przewijanych możemy wyswietlić statyczny tekst na całym ekranie. Skróty wiadomościowe itp - wsio powinno działać.

Oczywiście można pobrać demo i w sumie jak macie nowe projekty to nawet na leniwca podmienić całe klasy game_interpreter i window_message.

Tyle, jest to moje pierwsze kombinowanie w skryptach ACE więc możliwe, że coś sknociłem, jak tak to dajcie znać.


Autor: Dragon Kamillo
Pobierz:
  • Gra demonstracyjna: RPGVXAce-Dłuższe Wiadomości

    Tekst: Dragon Kamillo
    Email: k.maciejewski@poczta.onet.pl


  • Twierdza RPG Maker || RPG Maker Polska
    2002-2024