SHARE
TWEET

Ending Credits - Ace

Holy87 Jul 12th, 2013 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #===============================================================================
  2. # TITOLI DI CODA - Ace
  3. #===============================================================================
  4. # Autore: Holy87
  5. # Versione: 1.0
  6. #-------------------------------------------------------------------------------
  7. # Mostrare dei titoli di coda alla fine del gioco non è mai stato così facile.
  8. #-------------------------------------------------------------------------------
  9. # Istruzioni:
  10. # Copiare lo script sotto Materials, prima del Main. Create un file di testo
  11. # (possibilmente con Notepad++) e piazzateci tutto quello che volete scriverci.
  12. # Nella configurazione, impostate il nome del file di testo dove c'è scritto
  13. # Nome_File. Potete cambiare anche font, grandezza, velocità e scorrimento.
  14. # Per avviare i titoli di coda, basta inserire in un "chiama script"
  15. # call_ending (oppure call_credits)
  16. #-------------------------------------------------------------------------------
  17. # Nota: è anche possibile inserire delle immagini su un rigo scrivendo all'inizio
  18. # di esso il tag [IMG]nomeimmagine
  19. # l'immagine deve risiedere nella cartella pictures.
  20. # Altri tag:
  21. # [R] -> Marghio registrato
  22. # [C] -> Simbolo del copyright
  23. # [S] -> Stella
  24. # [L] -> Cuore
  25. # [B] -> Punto
  26. #-------------------------------------------------------------------------------
  27.  
  28. module H87_Ending
  29. #===============================================================================
  30. # ** CONFIGURAZIONE **
  31. #===============================================================================
  32.   #Nome del file che contiene il testo dei titoli di coda
  33.   Nome_File = "crediti.txt"
  34.   #Permettere lo scorrimento veloce con INVIO?
  35.   AllowFast = true
  36.   #Velocità di scorrimento standard
  37.   Speed = 2
  38.   #Spaziatura rigo
  39.   WLH = 24
  40.   #Nome del font:
  41.   Name = "VL PGothic"
  42.   #Grandezza del font:
  43.   Size = 20
  44.   #Grassetto?
  45.   Bold = false
  46.   #Corsivo?
  47.   Italic = false
  48.   #Ombrato?
  49.   Shadow = false
  50.   #Bordo?
  51.   Outline = false
  52.   #Colore del testo:
  53.   Colore = Color.new(255,255,255)#(Rosso,Verde,Blu) da 0 a 255
  54. end
  55.  
  56. #===============================================================================
  57. # ** Classe Scene_Ending
  58. #===============================================================================
  59. class Scene_Ending < Scene_MenuBase
  60.   include H87_Ending
  61.   def start
  62.     super
  63.     @timecount = 0
  64.     create_background
  65.     carica_testo
  66.     crea_finestra
  67.   end
  68.  
  69.   #-----------------------------------------------------------------------------
  70.   # * Carica il testo dal file
  71.   #-----------------------------------------------------------------------------
  72.   def carica_testo
  73.     if File.exist? (Nome_File) #apre il file in sola lett.
  74.       array = []
  75.       File.open(Nome_File,"r") do |f|
  76.         f.each_line {|riga| array.push(riga.to_s)}
  77.         @testo = array
  78.       end
  79.     else
  80.       p "File non trovato"
  81.       @testo = "Vuoto"
  82.     end
  83.   end
  84.  
  85.   #-----------------------------------------------------------------------------
  86.   # * Crea la finestra del testo
  87.   #-----------------------------------------------------------------------------
  88.   def crea_finestra
  89.     @quadrato = Viewport.new(0,0,Graphics.width,Graphics.height)
  90.     @finestra = Ending_Text.new(@testo)
  91.     @finestra.viewport = @quadrato
  92.     @finestra.y = Graphics.height
  93.   end
  94.  
  95.   #-----------------------------------------------------------------------------
  96.   # * aggiornamento
  97.   #-----------------------------------------------------------------------------
  98.   def update
  99.     super
  100.     aggiorna_finestra(Input.press?(Input::C))
  101.     close if @finestra.ended?
  102.   end
  103.  
  104.   #-----------------------------------------------------------------------------
  105.   # * aggiornamento del testo
  106.   #-----------------------------------------------------------------------------
  107.   def aggiorna_finestra(accelerato)
  108.     @timecount += 1
  109.     if @timecount >= Speed or accelerato
  110.       @finestra.y -= 1
  111.       @timecount = 0
  112.     end
  113.   end
  114.  
  115.   #-----------------------------------------------------------------------------
  116.   # * chiusura
  117.   #-----------------------------------------------------------------------------
  118.   def close
  119.     SceneManager.return
  120.   end
  121.  
  122.   #-----------------------------------------------------------------------------
  123.   # * terminate
  124.   #-----------------------------------------------------------------------------
  125.   def terminate
  126.     super
  127.     dispose_background
  128.     @finestra.dispose
  129.   end
  130. end
  131.  
  132. #===============================================================================
  133. # Classe Info_Text
  134. #===============================================================================
  135. class Ending_Text
  136.   include H87_Ending
  137.   attr_reader :height
  138.   attr_reader :width
  139.  
  140.   #-----------------------------------------------------------------------------
  141.   # * inizializzazione
  142.   #-----------------------------------------------------------------------------
  143.   def initialize(testo)
  144.     @tw = WLH
  145.     @testo = testo
  146.     @height = calc_lenght
  147.     @width = Graphics.width
  148.     @spritetext = Sprite.new
  149.     @spritetext.bitmap = create_bitmap
  150.   end
  151.  
  152.   #-----------------------------------------------------------------------------
  153.   # * restituisce la x
  154.   #-----------------------------------------------------------------------------
  155.   def x
  156.     return @spritetext.x
  157.   end
  158.  
  159.   #-----------------------------------------------------------------------------
  160.   # * restituisce la y
  161.   #-----------------------------------------------------------------------------
  162.   def y
  163.     return @spritetext.y
  164.   end
  165.  
  166.   #-----------------------------------------------------------------------------
  167.   # * imposta la x da valore
  168.   #-----------------------------------------------------------------------------
  169.   def x=(value)
  170.     @spritetext.x=value
  171.   end
  172.  
  173.   #-----------------------------------------------------------------------------
  174.   # * imposta la y da valore
  175.   #-----------------------------------------------------------------------------
  176.   def y=(value)
  177.     @spritetext.y=value
  178.   end
  179.  
  180.   #-----------------------------------------------------------------------------
  181.   # * imposta il viewport
  182.   #-----------------------------------------------------------------------------
  183.   def viewport=(viewport)
  184.     @spritetext.viewport = viewport
  185.   end
  186.  
  187.   #-----------------------------------------------------------------------------
  188.   # * imposta l'opacità
  189.   #-----------------------------------------------------------------------------
  190.   def opacity=(opa)
  191.     @spritetext.opacity = opa
  192.   end
  193.  
  194.   #-----------------------------------------------------------------------------
  195.   # * restituisce l'opacità
  196.   #-----------------------------------------------------------------------------
  197.   def opacity
  198.     return @spritetext.opacity
  199.   end
  200.    
  201.   #-----------------------------------------------------------------------------
  202.   # * calcola quanto è grande l'immagine
  203.   #-----------------------------------------------------------------------------
  204.   def calc_lenght
  205.     l = 0
  206.     for i in 0..@testo.size-1
  207.       if image?(@testo[i])
  208.         l += img_lenght(@testo[i])
  209.       else
  210.         l += @tw
  211.       end
  212.     end
  213.     return l+8
  214.   end
  215.  
  216.   #-----------------------------------------------------------------------------
  217.   # * il testo si riferisce ad un'immagine?
  218.   #-----------------------------------------------------------------------------
  219.   def image?(text)
  220.     return true if text[0..4].upcase == "[IMG]"
  221.   end
  222.  
  223.   #-----------------------------------------------------------------------------
  224.   # * calcola l'altezza dell'immagine del testo
  225.   #-----------------------------------------------------------------------------
  226.   def img_lenght(txt)
  227.     bitmap = Cache.picture(image_from_text(txt).chomp)
  228.     return bitmap.height
  229.   end
  230.  
  231.   #-----------------------------------------------------------------------------
  232.   # * prende il nome della picture
  233.   #-----------------------------------------------------------------------------
  234.   def image_from_text(txt)
  235.     return txt.gsub("[IMG]","")
  236.   end
  237.  
  238.   #-----------------------------------------------------------------------------
  239.   # * crea la bitmap principale
  240.   #-----------------------------------------------------------------------------
  241.   def create_bitmap
  242.     bitmap = Bitmap.new(@width,@height)
  243.     bitmap.font.color = Colore
  244.     bitmap.font.name = Name
  245.     bitmap.font.size = Size
  246.     bitmap.font.bold = Bold
  247.     bitmap.font.italic = Italic
  248.     bitmap.font.shadow = Shadow
  249.     bitmap.font.outline = Outline
  250.     l = 4
  251.     @lenght = l #meglio usare una variabile d'istanza...
  252.     for i in 0..@testo.size-1
  253.       fetch_text(@testo[i],bitmap)
  254.     end
  255.     return bitmap
  256.   end
  257.  
  258.   #-----------------------------------------------------------------------------
  259.   # * crea il testo al rigo designato
  260.   #-----------------------------------------------------------------------------
  261.   def fetch_text(text,bitmap)
  262.     if image?(text) #se è un immagine
  263.       text.chomp!
  264.       bitmap2 = Cache.picture(image_from_text(text))
  265.       x = (@width - bitmap2.width)/2
  266.       rect = Rect.new(0,0,bitmap2.width,bitmap2.height)
  267.       bitmap.blt(x, @lenght, bitmap2, rect)
  268.       @lenght += bitmap2.height
  269.     else #se è del normale testo
  270.       bitmap.draw_text(4,@lenght,self.width-4,@tw,formatted_text(text),1)
  271.       @lenght += @tw
  272.     end
  273.   end
  274.  
  275.   #-----------------------------------------------------------------------------
  276.   # * dimissione dello sprite
  277.   #-----------------------------------------------------------------------------
  278.   def dispose
  279.     @spritetext.dispose
  280.   end
  281.  
  282.   #-----------------------------------------------------------------------------
  283.   # * formatta il rigo
  284.   #-----------------------------------------------------------------------------
  285.   def formatted_text(text)
  286.     text.gsub!("\n","") if text.gsub("\n","") != nil
  287.     text.gsub!("[R]","®")
  288.     text.gsub!("[C]","©")
  289.     text.gsub!("[L]","♥")
  290.     text.gsub!("[S]","★")
  291.     text.gsub!("[B]","●")
  292.     return text
  293.   end
  294.  
  295.   #-----------------------------------------------------------------------------
  296.   # * restituisce true se i titoli di coda sono finiti
  297.   #-----------------------------------------------------------------------------
  298.   def ended?
  299.     return true if self.y <=  0-self.height
  300.     return false
  301.   end
  302.  
  303. end #infotext
  304.  
  305. #===============================================================================
  306. # ** Classe Game_Interpreter
  307. #===============================================================================
  308. class Game_Interpreter
  309.   def call_credits
  310.     SceneManager.call(Scene_Ending)
  311.   end
  312.  
  313.   def call_ending
  314.     SceneManager.call(Scene_Ending)
  315.   end
  316.        
  317. end #game_interpreter
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