Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Animowany Parallax
Autor Wiadomość
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Sro 27 Cze, 2012 21:38
Animowany Parallax
~ Animowany Parallax ~


Wersja:
2.1

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.
#==============================================================================

$imported = {} unless $imported
$imported["MAAnimatedParallax"] = true
$imported["MAAnimatedParallax2.1"] = true

#==============================================================================
# ** 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

#==============================================================================
# ** Spriteset Map
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Wprowadzone zmiany:
#    aliasowane metody - update_parallax
#==============================================================================

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
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Loki 




Preferowany:
RPG Maker VX

Pomógł: 12 razy
Dołączył: 25 Kwi 2012
Posty: 162
Wysłany: Czw 28 Cze, 2012 10:22
Według mnie nieprzydatne. Na zdarzeniach to samo można zrobić.
 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Czw 28 Cze, 2012 12:03
igor napisał/a:
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 ^^
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene