• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Advanced Message Script
#1
Questo script permette di modificare vari aspetti dei messaggi che inseriremo nei nostri giochi come per esempio far apparire il messaggio lettera per lettera come in The Legend of Zelda A link to the Past oppure inserire delle pause durante il messaggio.

Script:
[spoiler]Premetto che lo script è stato creato da DubeAlex (potete visitare la sua community da qui: http://www.dubealex.com/index.php?act=idx ).
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.
Io ho tradotto le spiegazioni del codice intero, nel caso fosse interessati nel modificare qualcosina, però questo script appartiene a DubeAlex.
Potete scaricare una demo della versione inglese di DubeAlex da qui.

Prima di tutto posto lo script tradotto. Creiamo una nuova classe sopra Main e chiamiamola Advanced Message Script.
Inseriamo tutto questo codice:
CODICE
#===================================================
# ¦ AMS - Advanced Message Script - R4 [Update #2]
#===================================================
# 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 = "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 = 160 #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

@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 @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("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
#===================================================

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[/spoiler]

Autore: DubeAlex, Tio per la traduzione in ITA e Rabu per un aggiunta allo script.
 
Rispondi
#2
Grazie mille!!!
 
Rispondi
  


Vai al forum:


Browsing: 1 Ospite(i)