Maniacs Patch nie gryzie #6 – Aktualizacje 09.08.2021 i 10.10.2021

BingShan nie spoczywa na laurach i non stop rozwija swój projekt wzbogacając go o kolejne ficzery. Sprawdźmy, czym zaskoczy nas tym razem.

Obrazki

Obsługa 32bitowych obrazów

Tak, moi drodzy, stało się! Silnik w końcu obsługuje pełnoprawne 32bitowe obrazy png, tak jak w nowszych makerach, chociaż nadal z drobnymi ograniczeniami:

  • przezroczystość jest zero-jedynkowa, piksel jest albo w pełni przezroczysty albo wcale;
  • pliki trzeba dodawać poprzez ręczne wrzucanie ich do folderu Pictures, gdyż edytor nie był jeszcze aktualizowany;
  • nie wyświetlają się w podglądzie okienka wyboru obrazka.

Możliwość oddzielnego skalowania szerokości i wysokości

Za pomocą parametru .scale2 %SZEROKOSC, %WYSOKOSC można manipulować skalowaniem obu wymiarów obrazka niezależnie od siebie.

Malowanie kafelkami tilesetu

Komendą @pic[N] .drawTile można wstawiać grafiki kafelków tilesetu mapy bezpośrednio na obrazek. Oferuje ona kilka konfigurowalnych parametrów:

  • .xywh X, Y, W, H
    • — ustawia szerokość W i wysokość H obszaru malowania oraz punkt początkowy malowania (lewy górny róg) na piksel o współrzędnych X i Y w obrazku
  • .lower – malowanie kaflem dolnej warstwy
  • .upper – malowanie kaflem górnej warstwy
  • .single N – malowanie pojedynczym kaflem o id N
  • .range N – malowanie serią kafli
  • .disableAutoTile – przy malowaniu kaflem dolnej warstwy wyłącza autotile – efekt jak przy trzymaniu shifta
  • .wipe – przed malowaniem czyści wskazany obszar
  • .tilesetId N – użycie tilesetu o id N przy malowaniu. Opuszczenie tego parametru sprawi, że brany będzie tileset obecnej mapy.
  • .pattern N – w przypadku animowanych kafli, bierze N-tą klatkę animacji

Na przykładzie własnego projektu: używam powyższej funkcji, aby w pusty obrazek wstawić grafikę kafla z górnej warstwy, który akurat chcę podnieść:

Wyciąganie danych

Powiększa się również lista rzeczy, które można wyciągnąć i zapisać przy użyciu @sys .getInfo:

  • .tilesetId .dst N – zapisuje id tilesetu używanego przez mapę do zmiennej o id N
  • .face – wyciąga nazwę pliku i numer obrazka twarzy(0-15)…
    • .actor[N] – …dla postaci o id N
    • .win – …dla twarzy użytej w wiadomości
    • .static – sprawia, że pobierana jest zawsze twarz ustawiona w bazie danych (nawet po późniejszej zmianie)
    • .dynamic – sprawia, że pobierana jest obecna twarz
    • .dst A, B – zapisuje nazwę pliku do zmiennej tekstowej o id A, a numer twarzy do zmiennej B
  • .body – wyciąga nazwę pliku i numer charsetu(0-7)…
    • .actor[N] – …dla postaci o id N
    • .ev[N] – …dla zdarzenia o id N
    • .static – sprawia, że zawsze pobierany jest charset ustawiony pierwotnie (nawet po późniejszej zmianie)
    • .dynamic – sprawia, że pobierany jest obecnie używany charset
    • .dst A, B – zapisuje nazwę pliku do zmiennej tekstowej o id A, a numer charsetu do zmiennej B

Animacje

Od teraz za pomocą komendy w TPC @sys .gameOpt .animLimit MAX_ANIMACJI można ustalać maksymalną ilość jednocześnie pokazywanych animacji, efektywnie znosząc irytujące ograniczenie tylko jednej w danym momencie! Oprócz tego animacje zyskały kilka dodatkowych możliwości:

@anim[ID] .show

  • .picTarget N
    • przywiązuje animację do obrazka, tj. kiedy obrazek zostanie przesunięty, animacja zostanie przeniesiona w to samo miejsce
  • .pos X Y
    • czyli po prostu wyświetlenie animacji na konkretnych współrzędnych X i Y ekranu
  • .bind A B
    • wiąże animację ze zmiennymi o id A oraz B. Co to oznacza? To znaczy, że jeśli którakolwiek z tych zmiennych zostanie zmieniona, automatycznie zmieni się też położenie animacji!
  • .buffer A
    • odtwarza animację w buforze od id A. Oznacza to, że jeśli inna animacja zostanie odtworzona w tym samym buforze, to zostanie ona nadpisana
  • .reverse 0/1
    • ustawione na 1 odtwarza animację w odbiciu lustrzanym
  • .keep
    • zachowuje animację we wskazanym wcześniej buforze, aby przy kolejnych jej wyświetleniach nie musiała być ładowana od nowa do pamięci. Przydatne przy dużych i długich animacjach bądź cyklicznie powtarzanych.

Nowe możliwości demonstruje sam BingShan na swoim Twitterze:

Eventy

Sprawdzenie istnienia zdarzenia

Nowy warunek @if .ev[N] .exists sprawdza, czy istnieje na mapie event od id N. Przydatna opcja, gdyż odwołanie się do nieistniejącego eventu wyrzuca błąd zamykając tym samym grę.

Enumeracja zdarzeń na mapie

Czyli pętla przechodząca przez wszystkie zdarzenia, które są na mapie.

@foreach .mev .dst N – gdzie do zmiennej o id N trafia id obecnie sprawdzanego eventu

Zmienne tekstowe

Usuwanie X znaków

Niby drobiazg, ale BingShan przeoczył dodanie tej funkcji we wcześniejszej aktualizacji.

t[N] .asg .rem A, B, C – począwszy od miejsca B usuwa C znaków z tekstu A

RegEx

Czyli wyrażenia regularne – potężne narzędzie, umożliwiające odnajdowanie, zamienianie bądź usuwanie schematów i wzorów w ciągu znaków. Cechuje się charakterystyczną składnią, dość mało czytelną. Do nauki i testowania regexów bardzo polecam tę stronę.

  • t[N] .asg .exRep A, B, C – w tekście A zamienia ciągi znaków pasujące do wyrażenia regularnego B na ciąg C
    • .first – dodanie tego parametru ogranicza zamianę tylko dla pierwszego znalezionego ciągu znaków
  • t[N] .exInStr A, – w tekście o id N wyszukuje ciągi znaków pasujące do wyrażenia regularnego A i zwraca pozycję znalezionego ciągu do zmiennej B
    • .beg C – zaczyna szukanie od C-tego znaku, domyślnie 0
  • t[N] .exMatch A, B, C – w tekście o id N wyszukuje ciągi znaków pasujące do wyrażenia regularnego A, następnie przechowuje je w zmiennych tekstowych począwszy od id B, a do zmiennej numerycznej od id C wrzuca pozycję znalezionego ciągu
    • .beg – zaczyna szukanie od D-tego znaku, domyślnie 0

Próg wejścia jest niemały i tak naprawdę można by poświęcić temu zagadnieniu całą serię artykułów, ale ogarnięcie podstaw składni pozwoli na łatwe i szybkie stworzenie, przykładowo, alternatywnego sposobu przechowywania informacji o przedmiotach lub zdarzeniach:



Ustawienie strony kodowej przy wczytywaniu plików

O co dokładnie z tym chodzi? Otóż do tej pory, kiedy chcieliśmy załadować z pliku do zmiennej tekstowej jakiś tekst, polskie znaki były niepoprawnie konwertowane i wyświetlały się jako „krzaczki” bądź znaki zapytania. Dzięki mojej propozycji BingShan zdecydował się dodać możliwość ręcznego ustalenia odpowiedniego kodowania poprzez dorzucenie do pliku RPG_RT.ini linii Encoding=X, gdzie X to numer strony kodowej. W przypadku języka polskiego X powinno wynosić 1250. Poniżej przykład porównujący tekst przed i po dokonaniu modyfikacji.

Odświeżony wygląd TPC

Nowy interfejs TPC dodaje, m.in., numery linii i podświetlenie obecnej, kolorowanie części składni oraz lepszą obsługę skrótów klawiszowych.

Pozostałe zmiany zbyt małe na własny akapit

  • @if .canOutput
    • sprawdza czy możliwy jest zapis pliku w katalogu gry
  • opcja masowej zmiany nazw zmiennych i przełączników poprzez TPC
  • @save[N] .load .disableBlackout
    • ładuje natychmiastowo zapis o id N bez wygaszania ekranu na chwilę jak to zwykle ma miejsce

Axer

7 thoughts on “Maniacs Patch nie gryzie #6 – Aktualizacje 09.08.2021 i 10.10.2021

  1. Jak zawsze mega robota. Szczerze liczę na serię króciutkich i prostszych lekcji, gdzie pokażesz, jak te wszystkie bajery zastosować do konkretnych rzeczy w projekcie. Interesują mnie zwłaszcza zmienne tekstowe i bawienie się okienkami.

  2. Szczerze mówiąc aż żałuję, że Axer nie wydał tego poradnika zanim zacząłem robić Move That Box. Gdybym wiedział o możliwościach Maniaca wtedy to pewnie bym na nim produkował grę. Ma on wiele opcji, które w MV trzeba dobudowywać skryptami, albo robić rzeczy naokoło.

    Tekst oczywiście również najwyższych lotów. Prosimy o więcej!

  3. Nie będę ukrywać, że część rzeczy technicznie wciąż mnie przerasta, jednak po przejrzeniu tekstu ucieszył mnie jeden punkt: animacje! To jest element, który naprawdę drażni, więc cieszę się, że najnowsze MP naprawiaja ten problem.

    Zastanawia mnie za to 32bitowe wgrywanie – co w takim razie z przezroczystością? Czy w takim razie (póki BingShan nie weźmie się za edytor i wgrywanie plików przez RPG Makera) jedyna opcja przezroczystości to domyślny kolor czarny? Czy da się to ominąć?

    1. Mogie się mylić,, ale z tego co rozumiem to przeźroczystość w 32 bitowych grafikach to 100% kanału alpha, tylko wartości pośrednie są ignorowane (a szkoda bo to by była jedyna przewaga, po za ilością kolorów, co moim zdaniem w 2k3 nie jest aż tak ważne, zawsze też można było pociąć obraz na mniejsze kawałki i mieć wszystkie kolory). Kolor czarny nie powinien być przeźroczysty z automatu, bo kolor przeźroczysty to pierwszy kolor w palecie (infran fiew umieszcza tam zawsze czerń, stąd wrażenie domyślności), a 32 bitowe grafiki jej nie mają.

  4. Z każdą kolejną aktualizacją od Bing Shana, a co za tym idzie za każdym kolejnym tekstem Axera zdaję sobię sprawę z dwóch rzeczy – jak potężnym narzędziem jest Maniac oraz że nigdy nie będę w stanie go użyć. Osobiście nie nadaję się do robienia gier od strony technicznej i tym co sprawiło, że byłem w stanie cokolwiek sklecić była chyba mimo wszystko prostość, przejrzystość i skromność Makera. Maniacs rozwija się bardzo dynamicznie, stawia jednak bardziej na rozwój możliwości programu, w tyle zostawiając to co z mojej perspektywy jest w nim najważniejsze. Mimo tego każdy news budzi we mnie małą euforię i rozpalala wizje tego co docelowo chciałbym móc kiedykolwiek stworzyć. Może gdy BingShan osiągnie już wszystkie swoje cele w środku makera to zacznie dostosowywac je do kogoś tak technicznie ograniczonego jak np ja, ale póki tak nie jest to patrzę błagalnie np. na Axera aby wykorzystał swoje kosmiczne umiejętności i obeznanie w temacie i przyniósł nam kiedyś gierkę w której pokaże na co go stać!!

    1. 19 grudnia 2021 napisałem, że nie będę w stanie nigdy użyć Maniacs Patcha – no cóż, koniec końców nie miałem wyboru i stało się. To jak duże możliwości i ułatwienia oferuje nawet amatorom to wspaniała sprawa. Ja na dodatek nie napotkałem przy instalacji absolutnie żadnych błędów, wszystko trwało 10 sekund (razem z TPC), choć przyznam, że moja głupota sprawiła, iż przez pierwsze 5 minut byłem przekonany, że coś jest nie tak.

      Nadal uważam, że sporo z opcji, które tworzone są w TPC fajnie byłoby zawrzeć w normalnych komendach, na pewno ułatwiłoby to wsiąkanie w opcje.

      Tak czy inaczej, polecam instalację patcha każdemu. Myślę, że z opcji typu Show String Picture, większe mozliwości obrazkowe itp są czymś na bardzo prostym poziomie co przydać się może każdemu, a może przy okazji ktoś zacznie brnąć dalej i dalej. 🙂

      1. > Nadal uważam, że sporo z opcji, które tworzone są w TPC fajnie byłoby zawrzeć w normalnych komendach, na pewno ułatwiłoby to wsiąkanie w opcje.
        Tak, masz absolutną rację, obecnie używanie tych komend przez TPC to rozwiązanie tymczasowe, docelowo każda opcja maniaka ma znaleźć się w formie możliwej do wyklikania. BingShanowi po prostu łatwiej jest dodawać kolejne ficzery i dać do nich dostęp przez TPC niż mocowac się z przebudowywaniem klejonego taśmą edytora, który jest bardzo odporny na zmiany :v

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.