Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More
  • Contenuti simili

    • Da Ally
      Nome Script: Dimensione e Posizione Box Messaggio
      Versione: N/D
      Autore/i: Zerbu
       
      Informazioni:
      Questo script consente di impostare le dimensioni di una finestra di messaggio e/o impostarlo su una posizione fissa sullo schermo di gioco.
       
      Screenshots:
       
       
       
      Istruzioni:
      Create quattro variabili per le seguenti impostazioni:
      - Larghezza della finestra di messaggio
      - Altezza della finestra di messaggio
      - Posizione X sullo schermo
      - Posizione Y sullo schermo
       
      Quindi, modificate le impostazioni nello script per assegnare e individuare quali variabili vengono utilizzate:
       

      #-------------------------------------------------------------------------- # Options #-------------------------------------------------------------------------- # Variable with the message width # If the variable value is 0, the full width of the window will be used MESSAGE_WIDTH = 2 # Variable with the message height # If the variable value is 0, the default height will be used MESSAGE_HEIGHT = 3 # Variable with the X position # If the variable value is -1, it will be centred on the screen MESSAGE_X = 4 # Variable with the Y position # If the variable value is 0, the position chosen in the editor # (Top, Middle, Bottom) will be used MESSAGE_Y = 5 Script: 

      #============================================================================== # Message Box Options #------------------------------------------------------------------------------ # by Zerbu #============================================================================== class Window_Message < Window_Base #-------------------------------------------------------------------------- # Options #-------------------------------------------------------------------------- # Variable with the message width # If the variable value is 0, the full width of the window will be used MESSAGE_WIDTH = 2 # Variable with the message height # If the variable value is 0, the default height will be used MESSAGE_HEIGHT = 3 # Variable with the X position # If the variable value is -1, it will be centred on the screen MESSAGE_X = 4 # Variable with the Y position # If the variable value is 0, the position chosen in the editor # (Top, Middle, Bottom) will be used MESSAGE_Y = 5 #-------------------------------------------------------------------------- # DO NOT EDIT BELOW unless you know what you're doing! # If you are not careful, editing below could cause chaos in your game # world, and I don't mean something the player will enjoy! #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- # alias method: window_width #-------------------------------------------------------------------------- alias default_window_width window_width def window_width #--- if $game_variables[MESSAGE_WIDTH] != 0 $game_variables[MESSAGE_WIDTH] #--- else default_window_width end #--- end #-------------------------------------------------------------------------- # alias method: window_height #-------------------------------------------------------------------------- alias default_window_height window_height def window_height #--- if $game_variables[MESSAGE_HEIGHT] != 0 $game_variables[MESSAGE_HEIGHT] #--- else default_window_height #--- end end #-------------------------------------------------------------------------- # alias method: update_placement #-------------------------------------------------------------------------- alias default_placement update_placement #--- def update_placement #--- default_placement #--- if $game_variables[MESSAGE_X] == -1 x_space = Graphics.width - window_width self.x = x_space-(x_space/2) #--- else self.x = $game_variables[MESSAGE_X] #--- end #--- if $game_variables[5] != 0 self.y = $game_variables[MESSAGE_Y] end #--- if (self.width != window_width || self.height != window_height) self.width = window_width self.height = window_height create_contents end #--- end end #============================================================================== # END SCRIPT #==============================================================================
    • Da Ally
      Nome Script: Effetto nel Testo dei Messaggi
      Versione: 2
      Autore/i: Zerbu
       
      Informazioni:
      Questo script, inserisce un suono durante lo scorrimento del testo nei messaggi.
       
      Istruzioni:
      Inserite lo script sotto Material.
      Per cambiare l'effetto del suono, fate riferimento a questa riga:

      MESSAGE_SOUND = RPG::SE.new("Knock", 70, 80) Script:
      #============================================================================== # Text Sound Effect (version 2) # NEW FEATURE: Switch to turn off sound effect #------------------------------------------------------------------------------ # by Zerbu #============================================================================== module Text_Sound_Effect #-------------------------------------------------------------------------- # Options #-------------------------------------------------------------------------- # The sound effect to play MESSAGE_SOUND = RPG::SE.new("Knock", 70, 80) # The number of characters to display before each time the sound plays # The default is 3, it's recommended you keep it as this unless you # know what you're doing MESSAGE_SOUND_FRAMES = 3 # Switch to disable sound effect # If you need to turn off the sound effect for any part of the game, # turn this switch on # Set to nil to disable this feature MESSAGE_SOUND_DISABLE = nil end class Window_Base < Window include Text_Sound_Effect #-------------------------------------------------------------------------- # alias method: process_characer #-------------------------------------------------------------------------- alias textsound_process_character_normal process_character def process_character(c, text, pos) if !MESSAGE_SOUND_DISABLE or !$game_switches[MESSAGE_SOUND_DISABLE] #--- if !defined?(@sound_frames) @sound_frames = 0 end #--- if @sound_frames == 0 MESSAGE_SOUND.play end #--- @sound_frames+=1 #--- if @sound_frames == MESSAGE_SOUND_FRAMES @sound_frames = 0 end #--- end textsound_process_character_normal(c, text, pos) end #--- end
    • Da Ally
      Nome script: Mini box
      Versione: N/D
      Autore: Woratana, tradotto in Italiano da Yoshi91.
       
      Informazioni:
      Permette di creare dei box messaggi sui chara.
       
      Screenshots:

       
      Script:

      #=============================================================== # ● [VX] ◦ Mini Box Messaggi sopra gli eventi ◦ □ # * Mostra testo sopra un evento * #-------------------------------------------------------------- # ◦ Creato da Woratana [[email protected]] # ◦ Della comunità di RPG Maker # - Tradotto in Ita da Yoshi91 # ◦ Aggiornato il: 22/12/2008 # ◦ Versione: 2.0 #-------------------------------------------------------------- #================================================================== # ** INFO ** #----------------------------------------------------------------- # - Mostra testo sopra il giocatore o un evento. # - Cambia l'opacità e la posizione della finestra (nello script). # - Scegli se riprodurre un suono quando viene mostrato un mini-messaggio (nello script). # - Fixato Bug nella versione 1.0 che dava errore quando parte una battaglia. #================================================================== # ** Istruzioni per l'uso ** # #----------------------------------------------------------------- # 1. Setta le impostazioni dello script nell'apposito spazio # 2. Per scrivere ciò che apparirà nel box messaggi usa un chiama script: # set_text(personaggio, nuovo_testo) # # - al posto di 'personaggio' si setterà dove apparirà: # sostituirlo con -1 per farlo apparire sul giocatore, con 0 per farlo apparire # sull'evento che si sta utilizzando e 1 e maggiore per farlo apparire su un # evento che volete voi scrivendo l'ID di questo. # # - al posto di 'nuovo_testo' si digiterà il testo che verrà mostrato a schermo. # # - Il testo che si dovrà mostrare deve essere compreso fra ' o " # # Un esempio: # set_text(10,'Ciao!') # # Con questo chiama script verrà mostrato Ciao sopra l'evento con ID 10. # #================================================================== #PS: per sovrascrivere un mini messaggio basta usare un altro chiama script, #così il vecchio messaggio viene sostituito da quello nell'ultimo chiama script, #usando sempre lo stesso codice, senza dover settare qualcosa. Comodo, no? #================================================================== module Wora_CTB #================================================================ # ** Inizio impostazioni #---------------------------------------------------------------- TEXTBOX_SKIN = 'Window' # Nome della Windowskin in cui sarà mostrato il mini # Messaggio. (bisogna inserire questa nella cartella # System del vostro gioco, e scrivere Window per usare # quella di base, che viene usata nel vostro gioco. # Scrivi Window se setti TESTBOX_OPACITY a 0. TEXTBOX_OPACITY = 0 # Opacità della windowskin usata per il mini messaggio: # 0 minimo, 255 massimo. # Setta 0 per non usare una Windowskin, 255 per averla # solida e compatta. TEXTBOX_X_OFFSET = 0 # Sposta la posizione del mini box orizzontalmente # (usa + o -, per 0 non scrivere nè + nè -.) # Scrivere - col trattino. TEXTBOX_Y_OFFSET = -1 # Sposta la posizione del mini box verticalmente # (usa + o -, per 0 non scrivere nè + nè -.) # Scrivere - col trattino. TEXTBOX_POPSOUND_MODE = 0 # Qui setta il metodo di riproduzione Suono (SE), # ovvero: # MODO 1- Non verrà riprodotto nessun SE quando verrà visualizzato il mini # messaggio. (per settare questo scrivere 0). # MODO 2- Verrà riprodotto il SE solo quando verrà mostrato il mini messaggio, # infatti quando verra modificato questo non si sentirà il suono.(per settare # questo scrivere 1). # MODO 3- Verrà riprodotto il SE quando verrà visualizzato il mini messaggio # e quando verrà sovrascritto da un altro. TEXTBOX_POPSOUND = 'Decision1' # Setta qui il nome del SE TEXTBOX_POPSOUND_VOLUME = 80 # Setta qui il volume del SE TEXTBOX_POPSOUND_PITCH = 100 # Setta qui la velocità del SE #---------------------------------------------------------------- # ** Fine impostazioni #================================================================ #================================================================ #NON MODIFICARE LE RIGHE SEGUENTI SE NON SEI UNO SCRIPTER, #SI POTREBBERO CAUSARE ERRORI!!! #================================================================ end $worale = {} if $worale.nil? $worale['Chartbox'] = true class Game_Interpreter def set_text(evid, new_text) target = get_character(evid) target.text = new_text end end class Sprite_Character < Sprite_Base alias wora_chartbox_sprcha_upd update alias wora_chartbox_sprcha_dis dispose def update wora_chartbox_sprcha_upd @chartext = '' if @chartext.nil? if @character.text != @chartext @chartext = @character.text $game_system.chartbox = {} if $game_system.chartbox.nil? case @character.class when Game_Player; char_id = -1 when Game_Event; char_id = @character.id end $game_system.chartbox[[$game_map.map_id, char_id]] = @chartext if @chartext == '' @textbox.visible = false if [email protected]? else if @textbox.nil? @textbox = Window_CharTBox.new RPG::SE.new(Wora_CTB::TEXTBOX_POPSOUND, Wora_CTB::TEXTBOX_POPSOUND_VOLUME, Wora_CTB::TEXTBOX_POPSOUND_PITCH).play if Wora_CTB::TEXTBOX_POPSOUND_MODE > 0 else RPG::SE.new(Wora_CTB::TEXTBOX_POPSOUND, Wora_CTB::TEXTBOX_POPSOUND_VOLUME, Wora_CTB::TEXTBOX_POPSOUND_PITCH).play if Wora_CTB::TEXTBOX_POPSOUND_MODE == 2 end @textbox.set_text(@chartext) @textbox.visible = true end end if @chartext != '' @textbox.x = self.x - (@textbox.width / 2) + Wora_CTB::TEXTBOX_X_OFFSET @textbox.y = self.y - self.oy - @textbox.height + Wora_CTB::TEXTBOX_Y_OFFSET end end def dispose @textbox.dispose if [email protected]? and [email protected]? wora_chartbox_sprcha_dis end end class Game_Character attr_accessor :text alias wora_chartbox_gamcha_ini initialize def initialize(*args) wora_chartbox_gamcha_ini(*args) $game_system.chartbox = {} if $game_system.chartbox.nil? case self.class when Game_Player my_text = $game_system.chartbox[[$game_map.map_id, -1]] if !$game_system.chartbox[[$game_map.map_id, -1]].nil? when Game_Event my_text = $game_system.chartbox[[$game_map.map_id, @id]] if !$game_system.chartbox[[$game_map.map_id, @id]].nil? end @text = my_text.nil? ? '' : my_text end end class Game_System attr_accessor :chartbox end class Game_Interpreter alias wora_chartbox_gamint_com201 command_201 unless $@ def command_201 if $game_map.fog_reset if @params[0] == 0; id_map = @params[1] else; id_map = $game_variables[@params[1]] end $game_system.chartbox = {} if id_map != @map_id end wora_chartbox_gamint_com201 end end class Window_CharTBox < Window_Base def initialize(x = 0, y = 0, w = 66, h = WLH+32) super(x,y,w,h) self.windowskin = Cache.system(Wora_CTB::TEXTBOX_SKIN) self.opacity = Wora_CTB::TEXTBOX_OPACITY end def set_text(text) if text != @text text_w = self.contents.text_size(text).width self.width = text_w + 32 create_contents self.contents.font.color = normal_color self.contents.draw_text(0, 0, self.contents.width, WLH, text, 1) @text = text end end end #================================================================================= # [FINE SCRIPT] Mini Box Messaggi sopra i chara da Woratana [[email protected]] #=================================================================================
    • Da Ally
      Nome Script: NMS - Neo Message System
      Versione: 3.0
      Autore/i: Woratana

      Informazioni:
      Un sistema di messaggi che prende piede dall'AMS di dubealex,e quindi riportato anche per VX.
      Con questo script,si possono inserire opzioni che non sono presenti nel VX,esempio:


       

      Istruzioni:
      All'interno della demo ^^

      Demo:
      http://www.mediafire.com/?2mhjjkk4mte
    • Da Ally
      Nome Script: AMS Script Dubealex - Update 2z
      Versione: R4 Update 2z
      Autore/i: Dubealex, modificato da Zarethal.
       
      Informazioni:
      Ebbene finalmente sono riuscito a tappare i bug più evidenti di questo script, ossia l'impossibilità di mostrare alcuni numeri durante il gioco (o in alcuni casi il crash dello stesso quando si visualizza un dialogo contenente dei numeri).
      Non so se le modifiche possano avere degli effetti collaterali, tuttavia penso possa essere ugualmente utile a chi come me per molto tempo ha dato i numeri nel cercare una soluzione che rendesse questo script più abbordabile.
       
      Inoltre, rispetto a gran parte delle fonti su internet, ho provveduto ad integrare le istruzioni per i comandi speciali all'interno dello script stesso in modo da facilitarne l'uso, spero vi sia d'aiuto :clindoeil:
       
      Istruzioni:
      Inserito lo script sopra Main.
      Altre istruzioni all'interno dello script.
       
      Script:

      #=================================================== # ■ AMS - Advanced Message Script - R4 [Update #2z] #=================================================== # 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 #=================================================== #=================================================== # ISTRUZIONI E CORREZIONE BUG - ZARETHAL #=================================================== # # Mostra oro: \G # Cambiare font: \t[FontName] # Mostra la classe di un pg: \Class[Hero ID] # Prezzo di uno strumento: \Price[Item ID] # Mostra il nome di una mappa: \ Map # Inserire un faceset nel dialogo: \f[FileName] (devono essere per forza file png di 96x96 pixel messi nella cartella pictures) # Usare comandi per i colori in exadecimale: \\c[#000000](modificare i numeri) # Cambiare colore al testo: \c[Color ID] # Mostrare qualcosa: \v[ID]-->Mostra una variabile # \v[i ID]-->mostra un oggetto # \v[w ID]-->mostra un'arma # \v[a ID]-->mostra un'armatura # \v[s ID]-->mostra una abilità # Mettere il messaggio su un evento: \P[Event ID] # Mettere il messaggio sul giocatore: \ p[0] ,se mettere \p[-1] verrà la window skin senza bordi e background # Mostrare il nome: \name[Nome] # Mostrare il nome di un eroe: \n[ID] # Mostrare il nome di un eroe nel window name: \name[\n[ID]] # Cambiare la velocità: \s[0-19]La velocità va da 0 a 19(0 è il più veloce,19 il più lento) # Cambire la grandezza del dialogo:\h[6-32] 36 è il più grande,6 ci vuole il microscopio. # Mostrare un nome di mostro: \m[ID] # Attendi imput: \! # Iniziare/Interrompere la modalità letter-by-letter: finisce con \>,inizia con \< # Aspettare: \| è un secondo,\. è 0.25 secondi # Cambaire l'opacità: \o[Numero],da 0(trasparente) a 255. # Attivare/disattivare la modalità salta dialogo: \% # Modificare il colore permanentemente: \Color[ID] # Cambiare il colore nel nome: \z[ID] # Chiusura automatica di un testo: \~ #=================================================== 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 = 10 #Sceglie la posizione X della finestra col nome. Iniziale= 0 @name_box_y_offset = 25 #Sceglie la posizione Y della finestra col nome. Iniziale= -10 @name_box_width = 20 #Sceglie la larghezza della finestra col nome. Iniziale= 8 @name_box_height = 26 #Sceglie l'altezza della finestra col nome. Iniziale= 26 @font_type = "Tahoma" #Sceglie il font per la finestra dei messaggi @name_font_type = "Tahoma" #Sceglie il font per la finestra col nome @font_size = 22 #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 = 200 #Sceglie l'opacità della finestra dei messaggi.Iniziale=160 @message_box_skin = "001-Blue01" #Nome della Windowskin della finestra dei messaggi. @name_box_skin = "001-Blue01" #Nome della Windowskin della finestra col nome. @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 @[member=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 self.contents.font.size = $ams.font_size self.windowskin = RPG::Cache.windowskin($ams.message_box_skin) @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!(/\\\\/) { "0" } @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "1[#{$1}]" } @now_text.gsub!(/\\[Gg]/) { "2" } @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "3[#{$1}]" } @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "4[#{$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!(/\\[.]/) { "5" } @now_text.gsub!(/\\[|]/) { "6" } @now_text.gsub!(/\\[>]/) { "16" } @now_text.gsub!(/\\[<]/) { "17" } @now_text.gsub!(/\\[!]/) { "20" } @now_text.gsub!(/\\[~]/) { "21" } @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "22[#{$1}]" } @now_text.gsub!(/\\[Ii]/) { "23" } @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "24[#{$1}]" } @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "25[#{$1}]" } @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "26[#{$1}]" } @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "27[#{$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 == "\0" c = "\\" end if c == "\1" @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 == "\2" 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 == "\3" @now_text.sub!(/\[([0-9]+)\]/, "") speed = $1.to_i if speed >= 0 and speed <= 19 @write_speed = speed end c = "" end if c == "\4" @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 == "\4" c = "" end if c == "\5" @write_wait += 5 c = "" end if c == "\6" @write_wait += 20 c = "" end if c == "16" text_not_skip = false c = "" end if c == "17" text_not_skip = true c = "" end if c == "20" @mid_stop = true c = "" end if c == "21" terminate_message return end if c == "23" @indent = @x c = "" end if c == "24" @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 == "25" @now_text.sub!(/\[([0-9]+)\]/, "") self.contents.font.size = [[$1.to_i, 6].max, 32].min c = "" end if c == "26" @now_text.sub!(/\[([0-9]+)\]/, "") @x += $1.to_i c = "" end if c == "27" @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 == "30" @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 == "22" @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 @[member=alex]_skip==false @[member=alex]_skip=true else @[member=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(c).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 @[member=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:: 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("30[%s]%s", $data_items[index].icon_name, $data_items[index].name) end when "w" unless $data_weapons[index].name == nil r = sprintf("30[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name) end when "a" unless $data_armors[index].name == nil r = sprintf("30[%s]%s", $data_armors[index].icon_name, $data_armors[index].name) end when "s" unless $data_skills[index].name == nil r = sprintf("30[%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 #=================================================== Se avete qualche commento da fare scrivete pure, non sono sicuro sia privo di errori perciò accetto qualsiasi critica >.<
×