Messaggi Personalizzabili by DubeAlex
Descrizione
Questo codice vi permette di inserire alcuni dati come la velocità del messaggio, scritte colorate, inserire il face, e tante altre che spiego più avanti passo per passo.
Autore
Script di DubeAlex
Traduzione di Tio
Correzione di Aliuzz96
Istruzioni per l'uso
Creiamo una nuova classe sopra Main e chiamiamola Advanced Message Script.
Inseriamo tutto questo codice.
Sotto Spoiler, i comandi dello script.
Spoiler
Ora spiego i comandi che dovranno essere inseriti nei messaggi per avere i vari effetti:
Cambiare temporaneamente il colore del testo(Default):
\c[IDcolore]
Inserite l'id del colore. Potete trovare tutti i colori disponibili nella classe Window_Base a partire dalla stringa 39. 0 sarebbe il bianco.
Cambia il colore del testo temporaneamente (con i colore dell'HTML):
\c[#000000]
Inserite un codice HTML all'interno della parentesi. Per esempio:
#000000 = nero
#FFFFFF = biaco
Mostra la finestra delle monete
\G
Mostra quante monete ha in possesso il giocatore in una finestra a parte.
Mostra il nome eroe
\n[HeroID]
Usate l'ID dell'eroe (lo trovate nel database da dove create i vostri personaggi) per far mostrare il nome dell'eroe nella finestra.
Mostra il nome del mostro
\m[MonsterID]
Inserite l'ID del mostro per mostrare il nome del mostro nel messaggi. Funzione aggiunta da DubeAlex.
Mostra il prezzo di un oggetto
\Price[ItemID]
Inserire l'ID dell'oggetto per mostrarne il prezzo nella finestra. Funzione aggiunta da DubeAlex.
Mostra il nome della mappa attuale:
\Map
Mostrerà il nome della mappa in cui vi trovate. Funzione aggiunta da DubeAlex.
Mostrare la faccia nella finestra dei messaggi
\f[NOMEFACCIA]
Sostituite NOMEFACCIA con il nome del file grafico che si deve trovare importato nella directory Graphics/Pictures del vostro progetto. Dev'essere un file .PNG di 96x96 pixel. Non è necessario scrivere l'estensione del file.
Mostra la classe di un personaggio
\Class[ClassID]
Usate ID del nome della classe dell'eroe per mostrare la classe dell'eroe nella finestra. Funzione aggiunta da DubeAlex.
Mostrare nomi di Variabili, oggetti, armi, armature e poteri
\v[xID]
Sostituite la X con una di queste opzioni:
Variable = Non scrivete niente, basta questo: \v[VariableID]
Items = i + itemID --> \v[iID]
Armors = a + armorID --> \v[aID]
Weapons = w + weaponID --> \v[wID]
Skills = s + skillID --> \v[sID]
Aggiungere finestra col nome
\Name[text]
Usate questo codice per mostrare una finestra sopra la finestra del messaggio contenente il nome di chi parla. Potete usare una variabile o altri comandi ocme "Mostra nome eroe" in questa finestra. Esempi:
\Name[\v[12]] --> Mostrerà il nome della variabile ID# 12 nella finestra del nome.
\Name[Dubealex] --> Mostrerà "Dubealex" nella finestra del nome.
\Name[\n[1]] --> Mostrerà il nome dell'eroe 1 nella finestra del nome.
Modificare l'opacità del testo:
\o[Opacity]
Inserite un numero fra 0 e 255 per cambiare l'opacità. 255 è completamente opaco e 0 è invisibile.
Modificare la velocità del testo
\s[Speed]
Per modificare la velocità dl testo scorrevole, inserite un numero fra 1 e 19 (1 + veloce, 19 + lento).
Modificare la grandezza del testo
\h[size]
Inserite un numero fra 6 e 32 per cambiare la grandezza del testo. 6 è più piccolo e 32 più grande.
Mostra la finestra del messaggio sopra l'eroe o un evento
\p[Option]
Fa apparire la finestra del messaggio sopra un evento o l'eroe. Opzioni disponibili:
\p[Event ID]
\P[0]
\p[-1]
Using "\p[Event ID]" la finestra sarà sopra l'evento di cui scrivere l'ID.
Using "\p[0]" la finestra apparirà sopra l'eroe.
Using "\p[-1]" farà una finestra senza bordi e senza sfondo.
Pause nei messaggi
\| --> Pausa di un secondo
\. --> Pausa di 0,25 secondi
\~ --> Chiude la finestra appena appare questo comando (va inserito alla fine quindi)
\! --> Aspetta che il giocatore prema il tasto per andare avanti
\\ --> Mostra il carattere \
Settare ON-OFF il testo lettera per lettera:
\< --> Setta ON
\> --> Setta OFF
Cambiare il carattere nel messaggio:
\t[FontName]
FontName deve essere un .TTf nella cartella Windows/Fonts e deve essere caso sensitivo. Funzione aggiunta da DubeAlex.
Far iniziare un SE durante il messaggio(permanente):
\a[FileName]
Il file dev'essere importato in Sounds/SE
Per fermarlo usate il comando \a[]. Lasciate l'interno delle parentesi vuoto o la canzone suonerà all'infinito.
Attiva/Disattiva il tasto per saltare i dialoghi
\%
Comando che permette di non far saltare i dialoghi al giocatore (utile se si fanno dei testi a tempo con la musica). Per eliminare l'opzione dal gioco reinserire il comando. Funzione aggiunta da DubeAlex.
Modificare il colore del nome nella finestra del nome(permanente)
\z[ColorID]
Come l'altro comando per i colori, solo che cambia il nome nella finestra nel nome. Funzione aggiunta da DubeAlex.
Cambia il colore del testo nella finestra dei messaggi (permanente):
\Color[ColorID]
Come l'altro comando per i colori, solo che lo cambia permanentemente. Funzione aggiunta da DubeAlex.
Ora spiego i comandi che dovranno essere inseriti nei messaggi per avere i vari effetti:
Cambiare temporaneamente il colore del testo(Default):
\c[IDcolore]
Inserite l'id del colore. Potete trovare tutti i colori disponibili nella classe Window_Base a partire dalla stringa 39. 0 sarebbe il bianco.
Cambia il colore del testo temporaneamente (con i colore dell'HTML):
\c[#000000]
Inserite un codice HTML all'interno della parentesi. Per esempio:
#000000 = nero
#FFFFFF = biaco
Mostra la finestra delle monete
\G
Mostra quante monete ha in possesso il giocatore in una finestra a parte.
Mostra il nome eroe
\n[HeroID]
Usate l'ID dell'eroe (lo trovate nel database da dove create i vostri personaggi) per far mostrare il nome dell'eroe nella finestra.
Mostra il nome del mostro
\m[MonsterID]
Inserite l'ID del mostro per mostrare il nome del mostro nel messaggi. Funzione aggiunta da DubeAlex.
Mostra il prezzo di un oggetto
\Price[ItemID]
Inserire l'ID dell'oggetto per mostrarne il prezzo nella finestra. Funzione aggiunta da DubeAlex.
Mostra il nome della mappa attuale:
\Map
Mostrerà il nome della mappa in cui vi trovate. Funzione aggiunta da DubeAlex.
Mostrare la faccia nella finestra dei messaggi
\f[NOMEFACCIA]
Sostituite NOMEFACCIA con il nome del file grafico che si deve trovare importato nella directory Graphics/Pictures del vostro progetto. Dev'essere un file .PNG di 96x96 pixel. Non è necessario scrivere l'estensione del file.
Mostra la classe di un personaggio
\Class[ClassID]
Usate ID del nome della classe dell'eroe per mostrare la classe dell'eroe nella finestra. Funzione aggiunta da DubeAlex.
Mostrare nomi di Variabili, oggetti, armi, armature e poteri
\v[xID]
Sostituite la X con una di queste opzioni:
Variable = Non scrivete niente, basta questo: \v[VariableID]
Items = i + itemID --> \v[iID]
Armors = a + armorID --> \v[aID]
Weapons = w + weaponID --> \v[wID]
Skills = s + skillID --> \v[sID]
Aggiungere finestra col nome
\Name[text]
Usate questo codice per mostrare una finestra sopra la finestra del messaggio contenente il nome di chi parla. Potete usare una variabile o altri comandi ocme "Mostra nome eroe" in questa finestra. Esempi:
\Name[\v[12]] --> Mostrerà il nome della variabile ID# 12 nella finestra del nome.
\Name[Dubealex] --> Mostrerà "Dubealex" nella finestra del nome.
\Name[\n[1]] --> Mostrerà il nome dell'eroe 1 nella finestra del nome.
Modificare l'opacità del testo:
\o[Opacity]
Inserite un numero fra 0 e 255 per cambiare l'opacità. 255 è completamente opaco e 0 è invisibile.
Modificare la velocità del testo
\s[Speed]
Per modificare la velocità dl testo scorrevole, inserite un numero fra 1 e 19 (1 + veloce, 19 + lento).
Modificare la grandezza del testo
\h[size]
Inserite un numero fra 6 e 32 per cambiare la grandezza del testo. 6 è più piccolo e 32 più grande.
Mostra la finestra del messaggio sopra l'eroe o un evento
\p[Option]
Fa apparire la finestra del messaggio sopra un evento o l'eroe. Opzioni disponibili:
\p[Event ID]
\P[0]
\p[-1]
Using "\p[Event ID]" la finestra sarà sopra l'evento di cui scrivere l'ID.
Using "\p[0]" la finestra apparirà sopra l'eroe.
Using "\p[-1]" farà una finestra senza bordi e senza sfondo.
Pause nei messaggi
\| --> Pausa di un secondo
\. --> Pausa di 0,25 secondi
\~ --> Chiude la finestra appena appare questo comando (va inserito alla fine quindi)
\! --> Aspetta che il giocatore prema il tasto per andare avanti
\\ --> Mostra il carattere \
Settare ON-OFF il testo lettera per lettera:
\< --> Setta ON
\> --> Setta OFF
Cambiare il carattere nel messaggio:
\t[FontName]
FontName deve essere un .TTf nella cartella Windows/Fonts e deve essere caso sensitivo. Funzione aggiunta da DubeAlex.
Far iniziare un SE durante il messaggio(permanente):
\a[FileName]
Il file dev'essere importato in Sounds/SE
Per fermarlo usate il comando \a[]. Lasciate l'interno delle parentesi vuoto o la canzone suonerà all'infinito.
Attiva/Disattiva il tasto per saltare i dialoghi
\%
Comando che permette di non far saltare i dialoghi al giocatore (utile se si fanno dei testi a tempo con la musica). Per eliminare l'opzione dal gioco reinserire il comando. Funzione aggiunta da DubeAlex.
Modificare il colore del nome nella finestra del nome(permanente)
\z[ColorID]
Come l'altro comando per i colori, solo che cambia il nome nella finestra nel nome. Funzione aggiunta da DubeAlex.
Cambia il colore del testo nella finestra dei messaggi (permanente):
\Color[ColorID]
Come l'altro comando per i colori, solo che lo cambia permanentemente. Funzione aggiunta da DubeAlex.
Qui lo Script
Spoiler
#=================================================== # ■ AMS - Advanced Message Script - R4 [Update #2],Aliuzz debug.^_^ #=================================================== # Per informazioni e aggiornamenti sullo script visitate: # www.dubealex.com (Creation Asylum) # # Modificato, aggiustato e migliorato da: Dubealex # Original Script Core by: XRXS Scripter (Jap Dudes) # HTML Hexadecimal color feature from: Phylomorphis # # Ringraziamenti: # Rabu: Per aver aggiunto l'opzione Mostra face # # Traduzione in italiano by Tio # Per più informazioni visitate www.rpgshrine.altervista.org # Per trovare gli ultimi aggiornamenti nello script cercate: #NEW # Per configurare il bottone che fa saltare il dialogo cercare: #SKIP_TEXT_CODE # # May 18, 2005 #=================================================== LETTER_BY_LETTER_MODE = true #Setta la modalità di lettura lettera per lettera #(per toglierla modificare true in false) #=================================================== # ▼ Inizio CLASSE AMS #=================================================== class AMS attr_accessor :name_box_x_offset attr_accessor :name_box_y_offset attr_accessor :font_type attr_accessor :name_font_type attr_accessor :font_size attr_accessor :name_font_size attr_accessor :message_box_opacity attr_accessor :name_box_skin attr_accessor :name_box_text_color attr_accessor :message_box_text_color attr_accessor :message_box_skin attr_accessor :name_box_width attr_accessor :name_box_height attr_accessor :message_width attr_accessor :message_height attr_accessor :message_x attr_accessor :message_y_bottom attr_accessor :message_y_middle attr_accessor :message_y_top attr_accessor :event_message_x_ofset attr_accessor :event_message_y_ofset def initialize @name_box_x_offset = 0 #Sceglie la posizione X della finestra col nome. Iniziale= 0 @name_box_y_offset = -10 #Sceglie la posizione Y della finestra col nome. Iniziale= -10 @name_box_width = 8 #Sceglie la larghezza della finestra col nome. Iniziale= 8 @name_box_height = 26 #Sceglie l'altezza della finestra col nome. Iniziale= 26 @font_type = "AR BLANCA" #Sceglie il font per la finestra dei messaggi @name_font_type = "AR BLANCA" #Sceglie il font per la finestra col nome @font_size = 21 #Sceglie la grandezza del font nella finestra dei messaggi @name_font_size = 22 #Sceglie la grandezza del font per la finestra col nome @name_box_text_color=0 #Sceglie il colore del font per la finestra dei messaggi @message_box_text_color=0 #Sceglie il colore del font per la finestra col nome @message_box_opacity = 160 #Sceglie l'opacità della finestra dei messaggi.Iniziale=160 @message_width = 480 #Sceglie la larghezza della finestra dei messaggi. Iniziale=480 @message_height = 160 #Sceglie l'altezza della finestra dei messaggi. Iniziale=160 @message_x = 80 #Sceglie la posizione X della finestra dei messaggi. Iniziale=80 @message_y_bottom = 304 #Sceglie la posizione Y della finestra a partire dal basso. Iniziale=304 @message_y_middle = 160 #Sceglie la posizione Y della finestra a partire dall'alto. Iniziale=160 @message_y_top = 16 #Sceglie la posizione della finestra del nome in alto. Iniziale=16 @event_message_x_ofset = 0 #Sceglie la posizione X della finestra orientata agli eventi. Iniziale=0 @event_message_y_ofset = 48 #Sceglie la posizione Y della finestra orientata agli eventi. Iniziale=48 end end #=================================================== # ▲ Finisce CLASSE AMS #=================================================== #=================================================== # ▼ Inizia Classe Window_Message #=================================================== class Window_Message < Window_Selectable alias xrxs9_initialize initialize def initialize @alex_skip = false xrxs9_initialize if $soundname_on_speak == nil then $soundname_on_speak = "" end $gaiji_file = "./Graphics/Gaiji/sample.png" if FileTest.exist?($gaiji_file) @gaiji_cache = Bitmap.new($gaiji_file) else @gaigi_cache = nil end @opacity_text_buf = Bitmap.new(32, 32) end #-------------------------------------------------------------------------- alias xrxs9_terminate_message terminate_message def terminate_message if @name_window_frame != nil @name_window_frame.dispose @name_window_frame = nil end if @name_window_text != nil @name_window_text.dispose @name_window_text = nil end xrxs9_terminate_message end #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = text_color($ams.message_box_text_color) self.contents.font.name = $ams.font_type @x = @y = @max_x = @max_y = @indent = @lines = 0 @face_indent = 0 @opacity = 255 @cursor_width = 0 @write_speed = 0 @write_wait = 0 @mid_stop = false @face_file = nil @popchar = -2 if $game_temp.choice_start == 0 @x = 8 end if $game_temp.message_text != nil @now_text = $game_temp.message_text if (/A[Ff][(.+?)]/.match(@now_text))!=nil then @face_file = $1 + ".png" @x = @face_indent = 128 if FileTest.exist?("Graphics/Pictures/" + $1 + ".png") self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end @now_text.gsub!(/[Ff][(.*?)]/) { "" } end begin last_text = @now_text.clone @now_text.gsub!(/[Vv][([IiWwAaSs]?)([0-9]+)]/) { convart_value($1, $2.to_i) } end until @now_text == last_text @now_text.gsub!(/[Nn][([0-9]+)]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end #NEW #Dubealex's Stop Skip Text ON-OFF @now_text.gsub!(/[%]/) { "100" } #Fine nuovo comando #NEW #Dubealex's Show Monster Name Feature @now_text.gsub!(/[Mm][([0-9]+)]/) do $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : "" end #Fine nuovo comando #NEW #Dubealex's Show Item Price Feature @now_text.gsub!(/[Pp]rice[([0-9]+)]/) do $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : "" end #Fine nuovo comando #NEW #Dubealex's Show Hero Class Name Feature @now_text.gsub!(/[Cc]lass[([0-9]+)]/) do $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : "" end #Fine nuovo comando #NEW #Dubealex's Show Current Map Name Feature @now_text.gsub!(/[Mm]ap/) do $game_map.name != nil ? $game_map.name : "" end #Fine nuovo comando #NEW #Dubealex's Choose Name Box Text Color @now_text.gsub!(/[Zz][([0-9]+)]/) do $ams.name_box_text_color=$1.to_i @now_text.sub!(/[Zz][([0-9]+)]/) { "" } end #FIne nuovo comando name_window_set = false if (/[Nn]ame[(.+?)]/.match(@now_text)) != nil name_window_set = true name_text = $1 @now_text.sub!(/[Nn]ame[(.*?)]/) { "" } end if (/[Pp][([-1,0-9]+)]/.match(@now_text))!=nil then @popchar = $1.to_i if @popchar == -1 @x = @indent = 48 @y = 4 end @now_text.gsub!(/[Pp][([-1,0-9]+)]/) { "" } end @max_choice_x = 0 if @popchar >= 0 @text_save = @now_text.clone @max_x = 0 @max_y = 4 for i in 0..3 line = @now_text.split(/n/)[3-i] @max_y -= 1 if line == nil and @max_y <= 4-i next if line == nil line.gsub!(/w[(w+)]/) { "" } cx = contents.text_size(line).width @max_x = cx if cx > @max_x if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end self.width = @max_x + 32 + @face_indent self.height = (@max_y - 1) * 32 + 64 @max_choice_x -= 68 @max_choice_x -= @face_indent*216/128 else @max_x = self.width - 32 - @face_indent for i in 0..3 line = @now_text.split(/n/)[i] next if line == nil line.gsub!(/w[(w+)]/) { "" } cx = contents.text_size(line).width if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end @max_choice_x += 8 end @cursor_width = 0 @now_text.gsub!(//) { "\000" } @now_text.gsub!(/[Cc][([0123456789ABCDEF#]+)]/) { "\001[#{$1}]" } @now_text.gsub!(/[Gg]/) { "\002" } @now_text.gsub!(/[Ss][([0-9]+)]/) { "\003[#{$1}]" } @now_text.gsub!(/[Aa][(.*?)]/) { "\004[#{$1}]" } #NEW #Dubealex's Permanent Color Change @now_text.gsub!(/[Cc]olor[([0-9]+)]/) do $ams.message_box_text_color= $1.to_i @now_text.sub!(/[Cc][([0-9]+)]/) { "" } end #Fine nuovo comando #NEW #Dubealex's Font Change Feature @now_text.gsub(/[Tt][(.*?)]/) do buftxt = $1.to_s $ams.font_type = buftxt @now_text.sub!(/[Tt][(.*?)]/) { "" } end #Fine nuovo comando @now_text.gsub!(/[.]/) { "\005" } @now_text.gsub!(/[|]/) { "\006" } @now_text.gsub!(/[>]/) { "\016" } @now_text.gsub!(/[<]/) { "\017" } @now_text.gsub!(/[!]/) { "\020" } @now_text.gsub!(/[~]/) { "\021" } @now_text.gsub!(/[Ee][([0-9]+)]/) { "\022[#{$1}]" } @now_text.gsub!(/[Ii]/) { "\023" } @now_text.gsub!(/[Oo][([0-9]+)]/) { "\024[#{$1}]" } @now_text.gsub!(/[Hh][([0-9]+)]/) { "\025[#{$1}]" } @now_text.gsub!(/[Bb][([0-9]+)]/) { "\026[#{$1}]" } @now_text.gsub!(/[Rr][(.*?)]/) { "\027[#{$1}]" } reset_window if name_window_set color=$ams.name_box_text_color off_x = $ams.name_box_x_offset off_y = $ams.name_box_y_offset space = 2 x = self.x + off_x - space / 2 y = self.y + off_y - space / 2 w = self.contents.text_size(name_text).width + $ams.name_box_width + space h = $ams.name_box_height + space @name_window_frame = Window_Frame.new(x, y, w, h) @name_window_frame.z = self.z + 1 x = self.x + off_x + 4 y = self.y + off_y @name_window_text = Air_Text.new(x, y, name_text, color) @name_window_text.z = self.z + 2 end end reset_window if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max number = $game_variables[$game_temp.num_input_variable_id] @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end end #-------------------------------------------------------------------------- def update super if @fade_in self.contents_opacity += 24 if @input_number_window != nil @input_number_window.contents_opacity += 24 end if self.contents_opacity == 255 @fade_in = false end return end @now_text = nil if @now_text == "" if @now_text != nil and @mid_stop == false if @write_wait > 0 @write_wait -= 1 return end text_not_skip = LETTER_BY_LETTER_MODE while true @max_x = @x if @max_x < @x @max_y = @y if @max_y < @y if (c = @now_text.slice!(/./m)) != nil if c == "\000" c = "" end if c == "\001" @now_text.sub!(/[([0123456789ABCDEF#]+)]/, "") temp_color = $1 color = temp_color.to_i leading_x = temp_color.to_s.slice!(/./m) if leading_x == "#" self.contents.font.color = hex_color(temp_color) next end if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end if c == "\002" if @gold_window == nil and @popchar <= 0 @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end c = "" end if c == "\003" @now_text.sub!(/[([0-9]+)]/, "") speed = $1.to_i if speed >= 0 and speed <= 19 @write_speed = speed end c = "" end if c == "\004" @now_text.sub!(/[(.*?)]/, "") buftxt = $1.dup.to_s if buftxt.match(///) == nil and buftxt != "" then $soundname_on_speak = "Audio/SE/" + buftxt else $soundname_on_speak = buftxt.dup end c = "" elsif c == "\004" c = "" end if c == "\005" @write_wait += 5 c = "" end if c == "\006" @write_wait += 20 c = "" end if c == "\016" text_not_skip = false c = "" end if c == "\017" text_not_skip = true c = "" end if c == "\020" @mid_stop = true c = "" end if c == "\021" terminate_message return end if c == "\023" @indent = @x c = "" end if c == "\024" @now_text.sub!(/[([0-9]+)]/, "") @opacity = $1.to_i color = self.contents.font.color self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255) c = "" end if c == "\025" @now_text.sub!(/[([0-9]+)]/, "") self.contents.font.size = [[$1.to_i, 6].max, 32].min c = "" end if c == "\026" @now_text.sub!(/[([0-9]+)]/, "") @x += $1.to_i c = "" end if c == "\027" @now_text.sub!(/[(.*?)]/, "") @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity) if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end c = "" end if c == "\030" @now_text.sub!(/[(.*?)]/, "") self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24)) if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end @x += 24 c = "" end if c == "n" @lines += 1 @y += 1 @x = 0 + @indent + @face_indent if @lines >= $game_temp.choice_start @x = 8 + @indent + @face_indent @cursor_width = @max_choice_x end c = "" end if c == "\022" @now_text.sub!(/[([0-9]+)]/, "") @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i) c = "" end #NEW #Dubealex's Text Skip On/OFF Command if c == "100" if @alex_skip==false @alex_skip=true else @alex_skip=false end c = "" end #Fine nuovo comando if c != "" self.contents.draw_text(0+@x, 32 * @y, 40, 32, c) @x += self.contents.text_size©.width if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end end #SKIP_TEXT_CODE # B = Esc, 0 (tastiera numerica), X # C = Invio, Barra spaziatrice e C # A = Shift, Z if Input.press?(Input::C) # <-- Cambia il valore in quella linea if @alex_skip==false text_not_skip = false end end else text_not_skip = true break end if text_not_skip break end end @write_wait += @write_speed return end if @input_number_window != nil @input_number_window.update if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number $game_map.need_refresh = true @input_number_window.dispose @input_number_window = nil terminate_message end return end if @contents_showing if $game_temp.choice_max == 0 self.pause = true end if Input.trigger?(Input::B) if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0 $game_system.se_play($data_system.cancel_se) $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1) terminate_message end end if Input.trigger?(Input::C) if $game_temp.choice_max > 0 $game_system.se_play($data_system.decision_se) $game_temp.choice_proc.call(self.index) end if @mid_stop @mid_stop = false return else terminate_message end end return end if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true refresh Graphics.frame_reset self.visible = true self.contents_opacity = 0 if @input_number_window != nil @input_number_window.contents_opacity = 0 end @fade_in = true return end if self.visible @fade_out = true self.opacity -= 48 if self.opacity == 0 self.visible = false @fade_out = false $game_temp.message_window_showing = false end return end end #-------------------------------------------------------------------------- def get_character(parameter) case parameter when 0 return $game_player else events = $game_map.events return events == nil ? nil : events[parameter] end end #-------------------------------------------------------------------------- def reset_window #GRANDEZZA_MESSAGGIO #POSIZIONE_MESSAGGIO if @popchar >= 0 events = $game_map.events if events != nil character = get_character(@popchar) x = [[character.screen_x - $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min self.x = x self.y = y end elsif @popchar == -1 self.x = -4 self.y = -4 self.width = 648 self.height = 488 else if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 self.y = $ams.message_y_top when 1 self.y = $ams.message_y_middle when 2 self.y = $ams.message_y_bottom end self.x = $ams.message_x if @face_file == nil self.width = $ams.message_width self.x = $ams.message_x else if self.width <= 600 self.width = 600 self.x -=60 end end self.height = $ams.message_height end end self.contents = Bitmap.new(self.width - 32, self.height - 32) self.contents.font.color = text_color($ams.message_box_text_color) self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size if @face_file != nil self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end if @popchar == -1 self.opacity = 255 self.back_opacity = 0 elsif $game_system.message_frame == 0 self.opacity = 255 self.back_opacity = $ams.message_box_opacity else self.opacity = 0 self.back_opacity = $ams.message_box_opacity end end #-------------------------------------------------------------------------- def gaiji_draw(x, y, num) if @gaiji_cache == nil return 0 else if @gaiji_cache.width < num * 24 return 0 end if self.contents.font.size >= 20 and self.contents.font.size <= 24 size = 24 else size = self.contents.font.size * 100 * 24 / 2200 end self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24)) if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end return size end end #-------------------------------------------------------------------------- def line_height return 32 if self.contents.font.size >= 20 and self.contents.font.size <= 24 return 32 else return self.contents.font.size * 15 / 10 end end #-------------------------------------------------------------------------- def ruby_draw_text(target, x, y, str,opacity) sizeback = target.font.size target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2 rubysize = [rubysize, 6].max opacity = [[opacity, 0].max, 255].min split_s = str.split(/,/) split_s[0] == nil ? split_s[0] = "" : nil split_s[1] == nil ? split_s[1] = "" : nil height = sizeback + rubysize width = target.text_size(split_s[0]).width target.font.size = rubysize ruby_width = target.text_size(split_s[1]).width target.font.size = sizeback buf_width = [target.text_size(split_s[0]).width, ruby_width].max width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0 if opacity == 255 target.font.size = rubysize target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1]) target.font.size = sizeback target.draw_text(x, y, width, target.font.size, split_s[0]) return width else if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height @opacity_text_buf.dispose @opacity_text_buf = Bitmap.new(buf_width, height) else @opacity_text_buf.clear end @opacity_text_buf.font.size = rubysize @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1) @opacity_text_buf.font.size = sizeback @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1) if sub_x >= 0 target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) else target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) end return width end end #-------------------------------------------------------------------------- def convart_value(option, index) option == nil ? option = "" : nil option.downcase! case option when "i" unless $data_items[index].name == nil r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name) end when "w" unless $data_weapons[index].name == nil r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name) end when "a" unless $data_armors[index].name == nil r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name) end when "s" unless $data_skills[index].name == nil r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name) end else r = $game_variables[index] end r == nil ? r = "" : nil return r end #-------------------------------------------------------------------------- def dispose terminate_message if @gaiji_cache != nil unless @gaiji_cache.disposed? @gaiji_cache.dispose end end unless @opacity_text_buf.disposed? @opacity_text_buf.dispose end $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end #========================================= # ▲ Finisce CLASSE Window_Message #========================================= #========================================= # ▼ Inizia Classe Window_Frame #========================================= class Window_Frame < Window_Base def initialize(x, y, width, height) super(x, y, width, height) self.windowskin = RPG::Cache.windowskin($ams.name_box_skin) self.contents = nil end #-------------------------------------------------------------------------- def dispose super end end #========================================= # ▲ Esci CLASSE Window_Frame #========================================= #========================================= # ▼ Inizia aggiunte classe Game_Map #========================================= class Game_Map #Dubealex's Addition (from XRXS), mostra nome della mappa nel gioco def name $map_infos[@map_id] end end #========================================= # ▲ Finisce aggiunte classe Game_Map #========================================= #========================================= # ▼ Inizia aggiunte classe Scene_Title #========================================= class Scene_Title #Dubealex's Addition (from XRXS) mostra nome della mappa nel gioco $map_infos = load_data("Data/MapInfos.rxdata") for key in $map_infos.keys $map_infos[key] = $map_infos[key].name end #Dubealex's addition, salva i dati dei messaggi quando salvi il gioco $ams = AMS.new end #========================================= # ▲ Finisce aggiunte classe Scene_Title #========================================= #========================================= # ▼ Inizia aggiunte classe Window_Base #========================================= class Window_Base < Window #Dubealex Addition (from Phylomorphis) per usare i codici dei colori HTML def hex_color(string) red = 0 green = 0 blue = 0 if string.size != 6 print("Vengono usati sei carrateri.") print("Sarà usato il colore bianco per il testo.") return Color.new(255, 255, 255, 255) end for i in 1..6 s = string.slice!(/./m) if s == "#" print("Potrebbe non essere prensete il carattere "#".") print("Sarà usato il colore bianco per il testo.") return Color.new(255, 255, 255, 255) end value = hex_convert(s) if value == -1 print("Errore nel convertire il valore.") print("Sarà usato il colore bianco per il testo.") return Color.new(255, 255, 255, 255) end case i when 1 red += value * 16 when 2 red += value when 3 green += value * 16 when 4 green += value when 5 blue += value * 16 when 6 blue += value end end return Color.new(red, green, blue, 255) end #-------------------------------------------------------------------------- def hex_convert(character) case character when "0" return 0 when "1" return 1 when "2" return 2 when "3" return 3 when "4" return 4 when "5" return 5 when "6" return 6 when "7" return 7 when "8" return 8 when "9" return 9 when "A" return 10 when "B" return 11 when "C" return 12 when "D" return 13 when "E" return 14 when "F" return 15 end return -1 end end #========================================= # ▲ Finisce aggiunte classe Window_Base #========================================= #========================================= # ▼ Inizia classe Air_Text #========================================= class Air_Text < Window_Base def initialize(x, y, designate_text, color=0) super(x-16, y-16, 32 + designate_text.size * 12, 56) self.opacity = 0 self.back_opacity = 0 self.contents = Bitmap.new(self.width - 32, self.height - 32) w = self.contents.width h = self.contents.height self.contents.font.name = $ams.name_font_type self.contents.font.size = $ams.name_font_size self.contents.font.color = text_color(color) self.contents.draw_text(0, 0, w, h, designate_text) end #-------------------------------------------------------------------------- def dispose self.contents.clear super end end #========================================== # ▲ Finisce classe Air_Text #========================================== #=================================================== # ▼ Inizia aggiunte classe Scene_Save #=================================================== class Scene_Save < Scene_File alias ams_original_write_save_data write_save_data def write_save_data(file) ams_original_write_save_data(file) Marshal.dump($ams, file) end end #=================================================== # ▲ Finisce aggiunte classe Scene_Save #=================================================== #=================================================== # ▼ Inizia aggiunte classe Scene_Load #=================================================== class Scene_Load < Scene_File alias ams_original_read_save_data read_save_data def read_save_data(file) ams_original_read_save_data(file) $ams = Marshal.load(file) end end #=================================================== # ▲ Finisce aggiunte classe Scene_Load #===================================================
Modificato da Apo, 03 May 2013 - 15:19 PM.
Code e script aggiornati