Licznik czasu gry

Większość klasycznych gier jRPG posiada licznik czasu gry. Niestety, w opcję taką nie został wyposażony RPG Maker 2003. Dlatego dziś przygotujemy prosty skrypt liczący nasz postęp w grze.

Kod

Sam kod jest bardzo prosty. Umieszczamy go w common evencie ustawionym na Parallel Process.

Potrzebujemy trzech zmiennych odpowiadających za sekundy, minuty i godziny. Najpierw ustawiamy Wait na jedną sekundę, a następnie zwiększamy zmienną odpowiadającą za sekundy o 1. W ten sposób będzie upływał nam czas. Teraz musimy tylko sprawdzić, kiedy wybije minuta i godzina.

Dlatego najpierw tworzymy warunek sprawdzający, czy zmienna z sekundami jest równa 60. W jego środku zerujemy sekundy i zwiększamy zmienną z minutami o 1. Następnie to samo robimy z minutami i godzinami.

To w zasadzie tyle!

Problemy ze skryptem

Jak już wspomniałem, to bardzo prosty skrypt, który ma jednak sporo wad. Po pierwsze, nie liczy czasu spędzonego w menu oraz podczas walk (tam nie działają common eventy). Po drugie, może zostać zaburzony przez działanie innych eventów.

Dlatego nie polecam tego skryptu do liczenia ogólnego czasu gry, ale raczej do sprawdzania upływu czasu podczas wędrówki bohatera na mapach. Można go połączyć z systemem dnia i nocy lub innymi pomysłami, o których napiszę niebawem.

Michał „Michu” Wysocki

– Download przykładowego projektu –

3 thoughts on “Licznik czasu gry

  1. O ile nie mam niestety pomysłu na rozwiązanie problemu z menu tradycyjnym, tak pomysł liczenia czasu w walkach można podratować dzięki Maniac Patch – potrzeba wtedy nie jednego, a dwa common eventy z innym ustawienie sposobu wywoływania.
    Jeden należy wtedy ustawić jako „Parallel”, a drugi „Parallel (battle)” – czyli działa w tle tylko podczas walk.

  2. W Amaroku mamy system dnia i nocy, który splata się trochę ze skryptami i korzysta ze script callów (to jest RM XP), ale podstawa działa podobnie.

    Mała rada, jeśli chcecie zrobić system dnia i nocy, polecam dać przełączanie godzin/dni gdy warunek jest „równo/ponad”, a nie „równo” jak w przykładzie. Wtedy, gdy w ramach questa przełączycie czas do przodu dodaniem do zmiennej system się nie wywali. Trzeba również dodać dodawanie dni na podstawie dzielenia godzin przez 24 (czy inną podstawę) i odejmowanie od czasu odpowiednio przemnożonej liczby (mam nadzieję, że zrozumiale piszę xd, chodzi o to, żeby odliczyć odpowiednią liczbę dni jeśli np. dodamy kilkaset godzin).

  3. Ostatnio wpadłem na pomysł, czy nie dałoby się zrobić podobnego skryptu, ale na zupełnie innej zasadzie.
    Maniac patch (jak również starsze patche do RM2k/3) pozwalają na zapisanie w zmiennych aktualnego czasu z systemowego zegara, wystarczy więc zapisać taki czas zaraz po uruchomieniu gry, a potem przed zapisem wczytać go ponownie i odejmując pierwsze wartości otrzymać czas spędzony w grze (wtedy odchodzą problemy z walkami itp), jedyny minus robienia tego w ten sposób jest taki, że jeśli gracz zostawi grę w tle włączoną to czas będzie wciąż „naliczany”, ale jako, że muzyka też wciąż w takiej sytuacji gra, to nie koniecznie musimy postrzegać to jako wadę XD (maniac też pozwala wyłączyć mrożenie nieaktywnej gry, więc na upartego można użyć tej opcji i dać w 100% ciągłe działanie gry).
    Technicznie problemem jest jeszcze zapis gry w domyślnym menu. Najłatwiej by go było wyłączyć, no ale wiadomo że nie każdy chce robić w grze safe pointy. Rozwiązania są w sumie 2 (albo i 3 jeśli olejemy czas spędzany w menu, bo wtedy można zapisywanie czasu dać przed samym wejściem do menu, ale to dupa a nie rozwiązanie) – 1. użycie patcha który zamiast opcji otwierania zapisu z menu zamienia nam ją w aktywowanie przełącznika i zamknięcie menu, wtedy wywołujemy se zdarzenie z zaskryptowanym wszystkim i otwieramy zapis z poziomu efentu, 2 wywalenie opcji z menu, ale w zamian danie bezpośredniej drogi zapisu pod np jakiś przycisk na klawiaturze (np shit), znów możemy zaskrypcić to co potrzeba, jednocześnie nie robiąc czegoś bardzo dziwnego – w końcu menu drużyny i opcja zapisu gry mogą być rozdzielone.
    Taki luźny pomysł, ale brzmi jak coś ci powinno dość dobrze działać i w miarę dokładnie liczyć czas spędzony w grze.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.