Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Nazwa lokacji
Autor Wiadomość
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Pon 27 Cze, 2011 01:09
Nazwa lokacji
STMN Revolution Mode

Opis:
Ten skrypt pozwala nam na wyświetlanie nazwy lokacji z bardzo fajnym efektem animacji.
Sporo opcji konfiguracji i fakt, że nie wymaga żadnych grafik czyni ten skrypt doskonałym dla początkujących.

Info:
Autor: Ramiro (Holy_wyvern, ramiazul)
Tłumaczenie: Angius
Screenów nie ma, bo animacji nijak na screenie nie da się zamieścić...

Skrypt:
Spoiler:

Kod:
#===============================================================================
# SHOW THE MAP NAME - REVOLUTION MODE -
#------------------------------------------------------------------------------
# Autor Ramiro (Holy_wyvern, ramiazul)
#------------------------------------------------------------------------------
# Versja 1.0
#------------------------------------------------------------------------------
# Opis:
# Pozwala na wyświetlani nazwy mapy z fajnym efektem animacji
#------------------------------------------------------------------------------
# Kompatybilność:
# Tylko VX.
# Powinien działać z czymkolwiek (99.999% pewności)
#------------------------------------------------------------------------------
# Instrukcje:
# Wklej do sekcji Materials (nad Main)
#
# To wyświetla również imiona bohaterów i zmienne!
# \N[ID aktora w bazie]         (1  -  999)
# \P[ID zmiennej]                  (1  -  999)
# \PN[id of actor on party position]  (0  -    3)
# (Tak, tak jak okna wiadomości...)
#------------------------------------------------------------------------------
# BUGI:
# Na razie żadnych. Napisz, jak znajdziesz.
#------------------------------------------------------------------------------
#Notatki autora:
# Tylko dla gier niekomercyjnych. Creditsy nie są konieczne, ale byłoby miło :P
#===============================================================================

#===============================================================================
# KONFIGURACJA
#===============================================================================

module MAPWINDOW
 
  VIEWING_TIME = 50                        # Czas pokazywania
  LETTER_ANIM  = 200                      # Czas animowania literki
  LETTER_END   = 20                         # Czas ukrywania nazwy
  INIT_X       = 10                         # start X pierwszej litery
  INIT_Y       = 10                         # start Y pierwszej litery
  START_ANGLE  = -180                       # start kąt pierwszej litery
  RECT_COLOR   = Color.new(255,255,255)     # Kolor obwódki
  RECT_X       = 0                          # Przesunięcie obwódki X
  RECT_Y       = -14                        # oraz Y
  FIRST_LETTER = Color.new(255,255,255)     # Kolor pierwszej litery
  LETTER_COLOR = Color.new(255,255,255,200) # Kolor pozostałych liter
  OPACITY      = 200                        # Przeźroczystość liter
  RECT_OPACITY = 255                        # Przeźroczystość obwódki
  FONT_SIZE    = 25                         # Rozmiar czcionki
  EX_START_X   = 0                          # X start movement
  RECT_HEIGHT  = 1                          # Szerokość obwódki
  NOT_SHOW_MAPS= []                         # Wpisz ID map, których nazw nie pokazywać
                                                           # np. [1,2,3]
end


#===============================================================================
# NIE TYKAĆ!                                         
#===============================================================================
class Game_Map
  def name
    map_infos = load_data("Data/MapInfos.rvdata")
    name = map_infos[@map_id].name.clone
    name.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    name.gsub!(/\\PN\[([0-9]+)\]/i) { $game_party.members[$1.to_i].name }
    name.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] } 

    return name
  end
end

#===============================================================================
# The spritest of letters                                           
#===============================================================================

class Spriteset_MapName
  include MAPWINDOW
  def initialize
    @letters = []
    @index   = 0
    @finish_count = @dispose_count = 0
  end
 
  def set_sprites
   if !NOT_SHOW_MAPS.include?($game_map.map_id)
    dispose_sprites
    @letters = []
    name = $game_map.name.scan(/./).clone
    @l_count = (LETTER_ANIM / name.size) + 1
    @index   = 0
    @finish = false
    @finish_count = VIEWING_TIME
    @dispose_count = LETTER_END
   
    for i in 0...name.size
       @letters[i] = Sprite.new
       @letters[i].bitmap = Bitmap.new(FONT_SIZE,FONT_SIZE)
       @letters[i].ox = 10
       @letters[i].oy = 10
       @letters[i].bitmap.font.size = FONT_SIZE
       @letters[i].bitmap.font.color = i == 0 ? FIRST_LETTER : LETTER_COLOR
       @letters[i].bitmap.draw_text(0,0,FONT_SIZE,FONT_SIZE,name[i],1)
       @letters[i].x = i * (FONT_SIZE / 2) + EX_START_X + INIT_X
       @letters[i].y = INIT_Y
       @letters[i].z = 9999
       @letters[i].opacity = 0
       @letters[i].angle = START_ANGLE
     end
    @b_count = @letters.size * ((LETTER_ANIM / @letters.size) + 1)
    @border = Sprite.new
    @border.bitmap = Bitmap.new(@letters.size * (FONT_SIZE / 2) + (FONT_SIZE / 2), RECT_HEIGHT)
    @border.bitmap.fill_rect(Rect.new(0,0,@letters.size * (FONT_SIZE / 2) + (FONT_SIZE / 2), RECT_HEIGHT),RECT_COLOR)
    @border.x = - @border.width + INIT_X - (FONT_SIZE / 2) - RECT_X
    @border.opacity = 0
    @border.y = INIT_Y + (FONT_SIZE ) + RECT_Y
  end
  end
 
  def update
    if !@finish
    if @letters[@index]
      if @l_count > 0
         @letters[@index].x = (@letters[@index].x * (@l_count - 1) + @index * (FONT_SIZE / 2) + INIT_X) / @l_count
         @letters[@index].opacity = (@letters[@index].opacity * (@l_count - 1) + OPACITY) / @l_count
         @letters[@index].angle = (@letters[@index].angle * (@l_count - 1)) / @l_count
         @l_count -= 1
         
         if @b_count > 0
           @border.x = (@border.x * (@b_count - 1) + INIT_X - (FONT_SIZE / 2) + RECT_X) / @b_count
           @border.opacity = (@border.opacity * (@b_count - 1) + RECT_OPACITY) / @b_count
           @b_count -= 1
         end
       else
         @index += 1
         @l_count = ((LETTER_ANIM / @letters.size) + 1)
       end
    else
      @finish = true
    end
   
  else
    if @finish_count > 0
      @finish_count -= 1
      return
    end 
    if @dispose_count > 0
   
      for i in 0...@letters.size
        @letters[i].x = (@letters[i].x * (@dispose_count - 1) + i * (FONT_SIZE / 2) + 24 + INIT_X) / @dispose_count
        @letters[i].opacity = (@letters[i].opacity * (@dispose_count - 1)) / @dispose_count
      end 
      @border.x = (@border.x * (@dispose_count - 1)+ INIT_X + RECT_X - (FONT_SIZE / 2) - @border.width ) / @dispose_count
      @border.opacity = (@border.opacity * (@dispose_count - 1)) / @dispose_count   
      @dispose_count -= 1
    end
   
  end
   
  end
 
  def dispose
    dispose_sprites
  end
 
  def dispose_sprites
    for i in @letters
      i.dispose
    end
    if @border
      @border.bitmap.dispose if @border.bitmap
      @border.dispose
    end 
  end
 
end

#===============================================================================
# The map                                           
#===============================================================================

class Scene_Map < Scene_Base
 
 
  alias smsbstrt start
  alias smsbupdbas update_transfer_player
  alias smsbupdnorm update
  alias smsbterm terminate
 
  def start
    @letters = Spriteset_MapName.new
    smsbstrt
#~     @letters.set_sprites
  end
 
  def update
    @letters.update
    smsbupdnorm
  end
 
  def update_transfer_player
    teleported = true if $game_player.transfer?
    smsbupdbas
    @letters.set_sprites if teleported
  end
 
  def terminate
    @letters.dispose
    smsbterm
  end
 
end

________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
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