SHARE
TWEET

Logo Ace

Holy87 Jul 12th, 2013 (edited) 1,016 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $imported = {} if $imported == nil
  2. $imported["H87_Logoshower"] = 1.2
  3. #===============================================================================
  4. # SCHERMATA DEL LOGO - ACE
  5. #===============================================================================
  6. # Autore: Holy87
  7. # Versione: 1.2.2
  8. # Difficoltà utente: ★★
  9. #
  10. # Nella versione 1.2 è stato aggiunto lo sfondo bianco
  11. # Novità della versione 1.1:
  12. # ● Possibilità di inserire video
  13. # ● Possibilità di inserire semplici scritte
  14. # ● Possibilità di riprodurre un SE all'apparizione di un logo
  15. # ● Effetto fade alla pressione del tasto invio
  16. #-------------------------------------------------------------------------------
  17. # Questo script serve per mostrare una serie di immagini all'apertura del gioco,
  18. # come il nome-firma-logo dell'autore/team, messaggi ecc...
  19. # Lo script consente di:
  20. # ● Mostrare quante successioni di immagini si voglia
  21. # ● Saltare in qualsiasi momento al titolo premendo Invio
  22. # ● Regolare per ogni immagine il tempo di comparsa e l'effetto zoom
  23. # ● Eseguire la musica della schermata del titolo dall'inizio
  24. # ● Saltare automaticamente la presentazione se si esegue da Test di gioco.
  25. #-------------------------------------------------------------------------------
  26. # Istruzioni:
  27. # Copiare lo script sotto Materials e prima del Main.
  28. # Le immagini da mostrare vanno messe nella cartella Graphics\Pictures. Le
  29. # immagini verranno automaticamente centrate sullo schermo quando mostrate.
  30. #
  31. #-------------------------------------------------------------------------------
  32. # Compatibilità:
  33. # Alias del metodo first_scene_class di SceneManager.
  34. #-------------------------------------------------------------------------------
  35. module H87_logo_shower
  36. #===============================================================================
  37. # ** CONFIGURAZIONE **
  38. #===============================================================================
  39.   Logos = {
  40.   # Inserisci qui in ordine le immagini da mostrare, quanto tempo deve durare
  41.   # (in frame) e se attivare o no l'effetto zoom.
  42.   #Tipo:  0-> Fade normale
  43.   #       1-> Zoom normale
  44.   #       2-> Zoom orizzontale
  45.   #       3-> Zoom verticale
  46.   #       4-> Increspatura
  47.  
  48.   # Se vuoi mostrare un filmato, dovrai inserire soltanto il nome.
  49.  
  50.   # Puoi inserire una frase o qualsiasi altra cosa al posto del nome
  51.   # dell'immagine: in questo caso, comparirà un testo al posto dell'immagine.
  52.   # Puoi andare a capo con il testo con il carattere "|"
  53.  
  54.   #ID   Nome         Tempo      Tipo      SE
  55.   1 => ["Logo",       100,      0],
  56.   2 => ["Logo iniziale|creato da Holy87",       70,      1,    "Applause1"],
  57.   3 => ["Video"],
  58.   4 => ["Logo3",      150,      4],
  59.   } # non rimuovere!
  60.   # N.B. Il conteggio del tempo comincia dopo il termine del fade del logo.
  61.  
  62.   #Vuoi eseguire la musica del titolo anche nel logo?
  63.   Play_music = true
  64.  
  65.   #Tempo di dissolvenza delle immagini
  66.   Fade_time = 50
  67.  
  68.   #Tempo di dissolvenza dell'immagine finale
  69.   Final_fade = 80
  70.  
  71.   #Saltare i logo se si avvia il gioco in modalità test?
  72.   Jump_test = true
  73.  
  74.   #Vuoi che lo sfondo sia nero oppure bianco?
  75.   White = false #true se lo vuoi bianco
  76.  
  77.   #Inserire il nome del carattere del logo:
  78.   Logo_Font = "Comic Sans MS"
  79.  
  80.  
  81.   #============================================================================
  82.   # ** FINE CONFIGURAZIONE **
  83.   # Modificare da questo punto in poi è rischioso.
  84.   #============================================================================
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.   #--------------------------------------------------------------------------
  99.   # * restituisce la velocità di dissolvenza
  100.   #--------------------------------------------------------------------------
  101.   def fade_speed
  102.     return 255.0 / Fade_time
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # * restituisce la velocità di dissolvenza dopo l'ultima immagine
  106.   #--------------------------------------------------------------------------
  107.   def final_fade_speed
  108.     return 255.0 / Final_fade
  109.   end
  110. end # modulo
  111.  
  112. #===============================================================================
  113. # ** Classe Scene_Logo
  114. #===============================================================================
  115. class Scene_Logo < Scene_Base
  116.   include H87_logo_shower # <- il modulo di prima
  117.   #--------------------------------------------------------------------------
  118.   # * inizio
  119.   #--------------------------------------------------------------------------
  120.   def start
  121.     super
  122.     $logo_done = true               # flag che indica che il logo è stato visto
  123.     create_logo_graphic             # crea lo sprite del logo
  124.     play_title_music if Play_music  # esegui la musica del titolo
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # * creazione dello sprite
  128.   #--------------------------------------------------------------------------
  129.   def create_logo_graphic
  130.     @logo_base = Sprite.new
  131.     @logo_base.opacity = 0
  132.     @logo_base.bitmap = new_base_bitmap
  133.     @logo_counter = 1               # contatore
  134.     @time_counter = 0               # tempo che resta
  135.     @logo = Sprite.new              # creazione
  136.     change_logo                     # aggiorna la bitmap
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # * assegna la bitmap
  140.   #--------------------------------------------------------------------------
  141.   def new_base_bitmap
  142.     bitmap = Bitmap.new(Graphics.width, Graphics.height)
  143.     colore = Color.new(255,255,255)
  144.     bitmap.fill_rect(0,0,bitmap.width,bitmap.height,colore) if White
  145.     return bitmap
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # * cambia logo e aggiorna la bitmap
  149.   #--------------------------------------------------------------------------
  150.   def change_logo
  151.     if Logos[@logo_counter][1].nil?
  152.       Graphics.play_movie("Movies/"+Logos[@logo_counter][0])
  153.     else
  154.       RPG::SE.new(Logos[@logo_counter][3]).play if Logos[@logo_counter][3] != nil
  155.       initialize_logo_sprite
  156.       preset_logo
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # * reinizializza gli attributi del logo
  161.   #--------------------------------------------------------------------------
  162.   def initialize_logo_sprite
  163.     @logo.bitmap = logo_bitmap(Logos[@logo_counter][0])
  164.     @logo.opacity = 0
  165.     @logo.ox = @logo.width/2      # l'origine è al centro
  166.     @logo.oy = @logo.height/2     # idem
  167.     @logo.x = Graphics.width / 2  # centra l'immagine
  168.     @logo.y = Graphics.height / 2 # idem
  169.     @speed = 0
  170.     @logo.zoom_x = 1
  171.     @logo.zoom_y = 1
  172.     @logo.wave_speed = 0
  173.     @logo.wave_length = 0
  174.   end    
  175.   #--------------------------------------------------------------------------
  176.   # * imposta l'inizio del logo a seconda del tipo di comparsa
  177.   #--------------------------------------------------------------------------
  178.   def preset_logo
  179.     case Logos[@logo_counter][2]    # caso
  180.     when 1
  181.       @speed = 0.002              # velocità zoom
  182.       @logo.zoom_x = 0.9          # proporzioni (solo del 10% più piccolo
  183.       @logo.zoom_y = 0.9          # idem
  184.     when 2
  185.       @speed = 0.01
  186.       @logo.zoom_x = 0
  187.     when 3
  188.       @speed = 0.01
  189.       @logo.zoom_y = 0
  190.     when 4
  191.       @speed = 1
  192.       @logo.wave_amp = 120
  193.       @logo.wave_length = 255
  194.       @logo.wave_speed = 360
  195.     end
  196.   end    
  197.   #--------------------------------------------------------------------------
  198.   # * restituisce la bitmap del logo
  199.   #--------------------------------------------------------------------------
  200.   def logo_bitmap(source)
  201.     begin
  202.       bitmap = Cache.picture(source)
  203.     rescue Errno::ENOENT
  204.       line_height = 40
  205.       text = source.split("|")
  206.       bitmap = Bitmap.new(Graphics.width, Graphics.height)
  207.       bitmap.font.color = White ? Color.new(0,0,0) : Color.new(255,255,255)
  208.       bitmap.font.outline = false
  209.       bitmap.font.size = 40
  210.       bitmap.font.name = Logo_Font
  211.       starting_line = (Graphics.height - text.size*line_height) / 2
  212.       for i in 0..text.size-1
  213.         bitmap.draw_text(0,starting_line,bitmap.width,line_height,text[i],1)
  214.         starting_line += line_height
  215.       end
  216.     end
  217.     return bitmap
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # * sostituisce l'immagine con la prossima
  221.   #--------------------------------------------------------------------------
  222.   def next_logo
  223.     return if Logos[@logo_counter + 1] == nil
  224.     @logo_counter += 1
  225.     @time_counter = 0
  226.     change_logo
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # * restituisce true se c'è un'altra immagine da mostrare
  230.   #--------------------------------------------------------------------------
  231.   def there_next?
  232.     return true if Logos[@logo_counter + 1] != nil
  233.     return false
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # * aggiornamento
  237.   #--------------------------------------------------------------------------
  238.   def update
  239.     super
  240.     jump_logo if Input.trigger?(:C) # aggiorna l'input
  241.     update_fade_logo                      # aggiorna l'animazione
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # * aggiorna l'animazione dell'immagine
  245.   #--------------------------------------------------------------------------
  246.   def update_fade_logo
  247.     @logo_base.opacity += 20
  248.     process_appear
  249.     process_fade
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # * processo di apparizione del logo
  253.   #--------------------------------------------------------------------------
  254.   def process_appear
  255.     case Logos[@logo_counter][2]
  256.     when 1
  257.       if @logo.zoom_x < 1
  258.         @logo.zoom_x += @speed
  259.         @logo.zoom_y += @speed
  260.       end
  261.     when 2
  262.       @logo.zoom_x += @speed if @logo.zoom_x < 1
  263.     when 3
  264.       @logo.zoom_y += @speed if @logo.zoom_y < 1
  265.     when 4
  266.       if @logo.wave_amp > 0
  267.         @logo.wave_amp -= @speed
  268.       end
  269.       @logo.update
  270.     end
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # * processo di scomparsa del logo
  274.   #--------------------------------------------------------------------------
  275.   def process_fade
  276.     if Logos[@logo_counter][1] != nil and @time_counter < Logos[@logo_counter][1] # attesa frame
  277.       @logo.opacity += fade_speed
  278.       if @logo.opacity >= 255
  279.         @time_counter += 1
  280.       end
  281.     else
  282.       if there_next?
  283.         @logo.opacity -= fade_speed
  284.       else
  285.         @logo.opacity -= final_fade_speed
  286.       end
  287.       if @logo.opacity == 0
  288.         if there_next?
  289.           next_logo
  290.         else
  291.           go_title
  292.         end
  293.       end
  294.     end
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # * finalmente, vai alla schermata del titolo
  298.   #--------------------------------------------------------------------------
  299.   def go_title
  300.     SceneManager.goto(SceneManager.h87f_s_c)
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # * fine
  304.   #--------------------------------------------------------------------------
  305.   def terminate
  306.     @logo.opacity = 0
  307.     super
  308.     @logo_base.dispose if @logo_base
  309.     if @logo
  310.       @logo.bitmap.dispose
  311.       @logo.dispose
  312.     end
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # * forza il title
  316.   #--------------------------------------------------------------------------
  317.   def jump_logo
  318.     loop do
  319.       @logo.opacity -= 30
  320.       Graphics.update
  321.       break if @logo.opacity == 0
  322.     end
  323.     go_title
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # * esegue la musica del titolo
  327.   #--------------------------------------------------------------------------
  328.   def play_title_music
  329.     $data_system.title_bgm.play
  330.     RPG::BGS.stop
  331.     RPG::ME.stop
  332.   end
  333. end # scene_logo
  334.  
  335. #===============================================================================
  336. # ** SceneManager
  337. #===============================================================================
  338. module SceneManager  
  339.   class << self; alias h87f_s_c first_scene_class; end
  340.   #--------------------------------------------------------------------------
  341.   # * modifica della schermata iniziale
  342.   #--------------------------------------------------------------------------
  343.   def self.first_scene_class
  344.     if $BTEST
  345.       return h87f_s_c
  346.     elsif $TEST and H87_logo_shower::Jump_test
  347.       return h87f_s_c
  348.     else
  349.       return Scene_Logo
  350.     end
  351.   end
  352. end #scenemanager
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top