Krótki opis:
Ten skrypt pozwala ustawić animowane tło parallax, przełączające się w ustawionej przez Ciebie prędkości, osobno dla każdej mapy.
Autor:
modern algebra
Tłumaczenie:
Avara
Kompatybilność:
RPG Maker VX
Skrypt:
Spoiler:
Kod:
#==============================================================================
# Nazwa: Animowany Parallax / Animated Parallax
# Wersja: 2.1
# Autor: modern algebra (rmrk.net)
# Data: September 9, 2011
# Tłumaczenie: Avara
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Opis:
#
# Ten skrypt pozwala ustawić animowane tło parallax poprzez przełączające
# się ujęcia animacji w wyznaczonej przez Ciebie przędkości. Jako domyślne
# skrypt ten obsługuje tylko formaty .png, .jpg, i .bmp dla obrazów animowanego
# parallax (są to jedyne obsługiwane przez RMVX jakie znam).
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Instrukcje:
#
# Skrypt działa poprzez wiele obrazów parallax, przełączających
# się w ustawionej przez Ciebie prędkości, osobno dla każdej mapy.
#
# Jeśli chcesz kożystać z animowanego parallax, musisz zrobić kilka rzeczy:
# (a) Zrobić lub znaleźć tła parallax, jakie chcesz użyć i zaimportować je
# do Twojej gry. Następnie podpisać je tak samo z jedną różnicą: na końcu
# każdy z nich musi mieć _1, _2, itd. ... (/Graphics/Parallexes)
# Przykładowe nazwy:
# BlueSky_1, BlueSky_2, BlueSky_3, itd. ...
# (b) Ustawić parallax danej mapie, dla której chcesz animowany parallax.
# Pamiętaj, aby ustawić go do pierwszego w kolejności obrazka animacji,
# czyli BlueSky_1, nie BlueSky_2 lub _3. Jeśli ustawisz BlueSky_2,
# to wówczas będzie animacja tylko pomiędzy obrazami _2 i _3.
# (W ustawieniach mapy.)
# (c) Przejdź do części KONFIGURACJA w linijce 50 i podążaj według
# instrukcji dla ustawień prędkości animacji.
#==============================================================================
#==============================================================================
# ** Game_Map
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Wprowadzone zmiany:
# aliasowane metody - update_parallax; setup_parallax
# Nowe metody - maap_check_extensions; setup_parallax_frames
#==============================================================================
class Game_Map
MAAP_PARALLAX_ANIMATION_FRAMES = { # <- Nie ruszać
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
# KONFIGURACJA
#|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# MAAP_PARALLAX_ANIMATION_FRAMES - stała ta pozwala na ustawienie prędkości,
# z jaką będzie następowało przejście pomiędzy obrazami animacji parallax
# dla poszczególnych map. Jeśli chcesz ją ustawić na 20 klatek na jednej mapie,
# ale 35 na innej mapie, to jest właśnie miejsce, gdzie możesz to zrobić.
# Wswzystko co musisz zrobić, to wpisać następujący kod:
#
# id_mapy => ilość_klatek,
# gdzie id_mapy, to ID mapy, gdzie chcesz ustawić animowany parallax oraz ilość
# klatek, (a) jaką ma być wyświetlany każdy z obrazów animacji przed przejściem
# do następnego lub (b) wstawiamy całą tablicę z liczbami klatek, jaką mają być
# wyświetlane wszystkie obrazki animacji z osobna. Istnieje 60 klatek na
# sekundę.
#
# PRZYKŁADY:
# 1 => 35, Na mapie 1 będą wyświetlane obrazy parallax 35 klatek każdy
# 2 => 40, Na mapie 2 będą wyświetlane obrazy parallax 40 klatek każdy
# 8 => [20, 5, 15], Na mapie 8 piewszy obraz animacji parallax będzie
# wyświetlany przez 20 klatek, drugi przez 5 klatek, zaś trzeci
# będzie wyświetlany przez 15 klatek, przed włączeniem na
# powrót pierwszego obrazka animacji parallax.
#
# Zauważ, że przecinek jest konieczny! W przypadku jakichkolwiek map, gdzie
# używasz animowanego parallax, ale nie umieścisz jej w tej tablicy, wówczas
# domyślnie liczba kratek wyświetlania jednego obrazka animacji przyjmie wartość
# ustaloną w linijce 83.
2 => 40,
8 => 20,
} # <- Nie ruszać
# Zmiana wartości poniżej pozwala na ustawienie prędkości domyślnej zmiany
# obrazów w animacji parallax. Tzn. Szybkość klatek animacji na mapie, która
# nie ma ustalonej własnej prędkości za pomocą powyższej konfiguracji.
MAAP_PARALLAX_ANIMATION_FRAMES.default = 30
# W zależności od wielkości i ilości obrazów animacji parallax na jednej mapie,
# może wystąpić pewne opóźnienie podczas ładowania kolejnego obrazu. Następująca
# opcja pozwala zdecydować, czy wszystkie obrazy animacji parallax mają być
# ładowane na raz, kiedy bohater wejdzie na daną mapę lub każdy obraz osobno
# podczas pierwszego jego wyświetlenia. Generalnie, jeśli obrazy są bardzo duże
# (powyżej 1 MB), to powinieneś ustawić tą opcję na "true"; jeśli pliki
# są mniejsze, wówczas należy ustawić ją na "false".
MAAP_PRELOAD_PARALLAXES = true
#|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# KONIEC KONFIGURACJI
#///////////////////////////////////////////////////////////////////////////
MAAP_SUPPORTED_EXTENSIONS = ["png", "jpg", "bmp"]
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Setup Parallax
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias ma_ap_stuppara_5tc1 setup_parallax
def setup_parallax (*args, &block)
ma_ap_stuppara_5tc1 (*args, &block) # Uruchamianie oryginalnej metody
setup_parallax_frames
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Update Parallax
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias mlg_ap_updparal_4fg2 update_parallax
def update_parallax (*args, &block)
mlg_ap_updparal_4fg2 (*args, &block) # Uruchamianie oryginalnej metody
# Korzystanie z timera jeśli parallax ma więcej niż jedną klatkę
if @maap_parallax_frames && @maap_parallax_frames.size > 1
@maap_parallax_frame_timer += 1
if @maap_parallax_frame_timer % @maap_parallax_frame_limit == 0
@maap_parallax_index = (@maap_parallax_index + 1) % @maap_parallax_frames.size
@parallax_name = @maap_parallax_frames[@maap_parallax_index]
if MAAP_PARALLAX_ANIMATION_FRAMES[@map_id].is_a? (Array) && MAAP_PARALLAX_ANIMATION_FRAMES[@map_id].size > @maap_parallax_index
@maap_parallax_frame_limit = MAAP_PARALLAX_ANIMATION_FRAMES[@map_id][@maap_parallax_index]
end
end
end
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Setup Parallax Frames
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def setup_parallax_frames
# Usuwanie z pamięci podręcznej map bitowych z poprzedniej mapy
last_map_bmps = @maap_parallax_frames.nil? ? [] : @maap_parallax_frames
@maap_parallax_index = 0
@maap_parallax_frames = [@parallax_name]
@maap_parallax_frame_timer = 0
if MAAP_PARALLAX_ANIMATION_FRAMES[@map_id].is_a? (Array) && MAAP_PARALLAX_ANIMATION_FRAMES[@map_id].size > 0
@maap_parallax_frame_limit = MAAP_PARALLAX_ANIMATION_FRAMES[@map_id][0]
else
@maap_parallax_frame_limit = MAAP_PARALLAX_ANIMATION_FRAMES[@map_id]
end
if @parallax_name[/_(\d+)$/] != nil
frame_id = $1.to_i + 1
base_name = @parallax_name.sub (/_\d+$/) { "" }
while maap_check_extensions ("Graphics/Parallaxes/#{base_name}_#{frame_id}")
@maap_parallax_frames.push ("#{base_name}_#{frame_id}")
frame_id += 1
end
end
(last_map_bmps - @maap_parallax_frames).each { |bmp| (Cache.parallax (bmp)).dispose }
# Opóźnione ładowanie obrazów parallax, co daje brak lagów przy pierwszym ładowaniu
if MAAP_PRELOAD_PARALLAXES
(@maap_parallax_frames - last_map_bmps).each { |bmp| Cache.parallax (bmp) }
Graphics.frame_reset
end
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Sprawdzanie rozszerzeń
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def maap_check_extensions (filepath)
MAAP_SUPPORTED_EXTENSIONS.each { |ext|
return true if FileTest.exist? ("#{filepath}.#{ext}") }
return false
end
end
class Spriteset_Map
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Update Parallax
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias malg_animparlx_upd_4rg1 update_parallax
def update_parallax (*args, &block)
# Nigdy nie wyrzucać z pamięci podręcznej zdjęcia parallax.
@parallax.bitmap = nil if @parallax_name != $game_map.parallax_name
malg_animparlx_upd_4rg1 (*args, &block) # Uruchamianie oryginalnej metody
end
end
Screeny:
Niepotrzebne.
Demo:
Dodatkowe informacje:
Instrukcja zawarta w skrypcie.
Parallax użyty w skrypcie by Celianna
Według mnie nieprzydatne. Na zdarzeniach to samo można zrobić.
Owszem, jeśli teren animacji jest mały. Jeśli chcemy wrzucić dużo takich animacji na jednej mapie, to lepiej użyć tego skryptu. Można też nim skonfigurować ile każdy obrazek animacji z osobna ma być wyświetlany. Można ustawić też ich więcej niż 3.
Choć domyślam się, że ten skrypt rzadko kiedy będzie używany ^^
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum