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

Recommended Posts

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 >.<

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • 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: ATS: Codici Speciali nei Messaggi
      Versione: 1.0
      Autore/i: modern algebra

      Informazioni:
      Questo script consente di utilizzare una serie di ulteriori codici speciali nei messaggi, che saanno funzioni simili ai codici di default come v[n], c[n], ecc...

      Per consultare l'elenco dei codici andate a linea 54 per un'idea completa di ciò che viene aggiunto. In sostanza, ti dà un maggiore controllo sul messaggio e ti permette di fare uso di effetti come il carattere grassetto e corsivo, e consente di recuperare e visualizzare i dati utili come i nomi di armi e armature.

      Istruzioni:
      Inserite lo script sotto Material.

      Istruzioni all'interno dello script.

      Script:


      #============================================================================== # ATS: Special Message Codes [VXA] # Version: 1.0 # Author: modern algebra (rmrk.net) # Date: December 11, 2011 #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Description: # # This script allows you to use a number of additional special codes in the # message system, which will function similar to the default codes like # v[n], c[n], etc. Please see the list of special message codes starting at # line 54 for a full idea of what is added. Basically, it gives you greater # control over the delivery of a message, allows you to make use of font # effects like bolding and italicizing, and allows you to retrieve and # display useful data like the names of weapons and armors. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # ATS Series: # # This script is part of the Advanced Text System series of scripts. These # scripts are based off the Advanced Text System for RMVX, but since RMVX Ace # has a much more sensibly designed message system, it is no longer necessary # that it be one large script. For that reason, and responding to feedback on # the ATS, I have split the ATS into multiple different scripts so that you # only need to pick up the components for the features that you want. It is # therefore easier to customize and configure. # # To find more scripts in the ATS Series, please visit: # http://rmrk.net/index.php/topic,44525.0.html #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Instructions: # # This script is not difficult to use or configure. There are only two # configuration options for this script. These are: # # :message_speed # :show_fast_speed # # :message_speed allows you to set the default number of frames to wait # between drawing each letter in the message window. :show_fast_speed allows # you to control the amount it speeds up when the player presses enter. You # can gain instructions on setting the default value for both at line 180. # # As with other ATS scripts, you can change the value of these options in # game with the following codes in a script call: # # ats_next(:message_option, <img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/lunettes.gif' class='bbc_emoticon' alt='8-)' /> # ats_all(:message_option, <img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' /> # # Where :message_option is the symbol you want (:message_speed or # :show_fast_speed) and x is the value you want to change it to. ats_next # will only change it for the very next message, while ats_all will change it # for every message to follow. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # List of Special Message Codes: # # The default message codes are retained, and this script adds a number of # other desirable features. The following is a complete list of the message # codes at your disposal. Simply insert them into a Display Message command, # Choice Branches, or any other message related system. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Font Effects: # # fn[fontname] - Change the font to fontname. If you put multiple fontnames # separated by commas, then it will take the first one the user has installed # fs[n] - Change the font size to n. # { - Increase the font size by 8. # } - Decrease the font size by 8. # c[n] - Set the colour of the text being drawn to the nth colour of the # Windowskin palette. 0 is the normal color and 16 is the system color. # hc[RRGGBB] or c[#RRGGBB] - Set the colour of the text being drawn to any # colour, using hexadecimal values. You can set each colour (red, green, # blue) to anything from 0-255 (00-FF). You must use hexadecimal values. If # so desired, you can add an additional hex value from 00-FF to change the # alpha. # b - Turn bold on. Text drawn after this code will be bolded. # /b - Turn bold off. # i - Turn italic on. Text drawn after this code will be italicized. # /i - Turn italic off. # o - Turn outline on. # /o - Turn outline off. # s - Turn shadow on. Text drawn after this code will have a shadow. # /s - Turn shadow off. # u - Turn underline on. Text drawn after this code will be underlined. # /u - Turn underline off. # hl[n] - Turn highlight on. Text drawn after this code will be highlighted # with colour n + 1 from the windowskin palette # /hl OR hl[0] - Turn highlight off. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Message Control: # # s[n] - Sets the message speed to wait n frames between drawing every letter. # 0 is instant. # s[+n] - Sets the message speed to wait an additional n frames between drawing # every letter. # s[-n] - Sets the message speed to wait n less frames between drawing every # letter. # . - Wait 15 frames before drawing the next character # | - Wait 60 frames before drawing the next character # w[n] - Wait n frames before drawing the next character # ! - Pause text and wait for player to press Enter # ^ - Skip Pause; allows you to close a message window without requiring player # input. # > - Show line fast. # < - Stop showing line fast. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Replacement Codes: # # p[n] - Draw the name of the actor in the xth position in the party. 1 is # the party leader, 2 is the second member, etc. # n[n] - Draw the name of the actor with ID n # nn[n] - Draw the nickname of the actor with ID n. # pid[n] - Draw the ID of the actor in the nth position in the party. # ac[n] - Draw the class name of the actor with ID n. # al[n] - Draw the level of the actor with ID n. # ni[n] - Draw the name of the item with ID n. # nw[n] - Draw the name of the weapon with ID n. # na[n] - Draw the name of the armor with ID n. # ns[n] - Draw the name of the skill with ID n. # nt[n] - Draw the name of the state with ID n. # nc[n] - Draw the name of the class with ID n. # ne[n] - Draw the name of the event with ID n on the current map. # nm[n] - Draw the name of the enemy with ID n. # nv[n] - Draw the name of the variable with ID n. # nsw[n] - Draw the name of the switch with ID n. # nl[n] - Draw the name of the element with ID n. # nwt[n] - Draw the name of the weapon type with ID n. # nat[n] - Draw the name of the armor type with ID n. # nst[n] - Draw the name of the skill type with ID n. # np[n] - Draw the name of the actor in the nth position in the party. # map - Draw the name of the map the player is currently on. # map[n] - Draw the name of the map with ID n. # pg - Draws the amount of money the party has. # g - Draws the unit of currency. # vocab[method] - Will draw whatever Vocab.method returns, if it is a valid # method call. Suitable values for method are: level, level_a, hp, hp_a, # mp, mp_a, tp, tp_a, fight, escape, attack, guard, item, skill, equip, # status, formation, save, game_end, weapon, armor, key_item, equip2, # optimize, clear, new_game, continue, shutdown, to_title, cancel, # currency_unit # vocab[param, n] - Will draw the label for parameter with ID n. 0 => Max HP; # 1 => Max MP; 2 => Attack; 3 => Defence; 4 => Magic; 5 => Magic Defence; # 6 => Agility; 7 => Luck # vocab[etype, n] - Will draw the label for equipment type with ID n. # 0 => Weapon; 1 => Shield; 2 => Head; 3 => Body; 4 => Accessory #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Other Effects: # # $ - Opens a window which shows the party's gold. # n - line break # i[n] - Draw icon with index n. # ii[n] - Draw icon of the item with ID n. # iw[n] - Draw icon of the weapon with ID n. # ia[n] - Draw icon of the armor with ID n. # is[n] - Draw icon of the skill with ID n. # it[n] - Draw icon of the state with ID n. # x[n] - Draw next character at pixel n of the window contents. # s[n,text] - Will only draw text only if the switch with ID n is ON. # s![n,text] - Will only draw text only if the switch with ID n is OFF. # #{code} - This will evaluate code. So, if you know scipting, you can place # any code there and it will draw whatever is returned by it. For instance: # #{$game_system.save_count} would draw the number of times the player has # saved the current game. #============================================================================== $imported = {} unless $imported $imported[:ATS_SpecialMessageCodes] = true #============================================================================== # ** Game_ATS #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new public instance variables - message_speed; special_message_codes #============================================================================== class Game_ATS CONFIG = {} unless $imported[:AdvancedTextSystem] CONFIG[:special_message_codes] = { special_message_codes:true, # # EDITABLE REGION #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # :message_speed => x, # Changing the value of x determines the default number of frames to # wait between drawing letters in a message window. 0 is instant. :message_speed => 1, # :show_fast_speed => x # Changing the value of x determines the number of frames to wait # between drawing letters when the player is holding enter. 0 is # instant :show_fast_speed => 0 #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # END EDITABLE REGION #//////////////////////////////////////////////////////////////////////// } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Public Instance Variables #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONFIG[:special_message_codes].keys.each { |key| attr_accessor key } end #============================================================================== # Initialize Common ATS Data if no other ATS script interpreted first #============================================================================== if !$imported[:AdvancedTextSystem] #============================================================================ # *** DataManager #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # aliased method - create_game_objects; make_save_contents; # extract_save_contents #============================================================================ module DataManager class << self #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Create Game Objects #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias modb_ats_crtgmobj_6yh7 create_game_objects def create_game_objects(*args, &block) modb_ats_crtgmobj_6yh7(*args, &block) $game_ats = Game_ATS.new $game_ats.init_new_installs end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Make Save Contents #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mlba_ats_mksave_5tg9 make_save_contents def make_save_contents(*args, &block) contents = mlba_ats_mksave_5tg9(*args, &block) contents[:ats] = $game_ats contents end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Extract Save Contents #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_ats_extrcsvcon_8uj2 extract_save_contents def extract_save_contents(contents, *args, &block) ma_ats_extrcsvcon_8uj2(contents, *args, &block) $game_ats = contents[:ats] ? contents[:ats] : Game_ATS.new $game_ats.init_new_installs end end end #============================================================================ # ** Game_ATS #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This class holds the default data for all scripts in the ATS series #============================================================================ class Game_ATS def initialize; reset; end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Reset any or all installed ATS scripts #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def reset(script_name = nil) if script_name.is_a? (Symbol) # If script to reset specified CONFIG[script_name].each_pair { |key, value| self.send("#{key}=".to_sym, value) $game_message.send("#{key}=".to_sym, value) } else # Reset all ATS scripts CONFIG.keys.each { |script| reset(script) } end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Initialize any newly installed ATS scripts #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def init_new_installs CONFIG.keys.each { |script| reset(script) unless self.send(script) } end end #============================================================================ # ** Game_Message #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # aliased method - clear #============================================================================ class Game_Message #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Clear #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mlb_ats_clrats_5tv1 clear def clear(*args, &block) mlb_ats_clrats_5tv1(*args, &block) # Run Original Method return if !$game_ats Game_ATS::CONFIG.values.each { |installed| installed.keys.each { |key| self.send("#{key}=".to_sym, $game_ats.send(key)) } } end end #============================================================================ # ** Game_Interpreter #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new methods - ats_all; ats_next #============================================================================ class Game_Interpreter #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * ATS All #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def ats_all(sym, *args, &block) $game_ats.send("#{sym}=".to_sym, *args, &block) ats_next(sym, *args, &block) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * ATS Next #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def ats_next(sym, *args, &block) $game_message.send("#{sym}=".to_sym, *args, &block) end end end $imported[:AdvancedTextSystem] = true class Game_Message Game_ATS::CONFIG[:special_message_codes].keys.each { |key| attr_accessor key } end #============================================================================== # ** Game_Event #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new method - name #============================================================================== class Game_Event def name return @event ? @event.name : "" end end #============================================================================== # ** Window_Base #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # aliased methods - initialize; convert_escape_characters; calc_line_height; # process_escape_character; process_normal_character; reset_font_settings #============================================================================== class Window_Base #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mlgb_atssmc_init_3do9 initialize def initialize(*args, &block) mlgb_atssmc_init_3do9(*args, &block) # Run Original Method @underline = false @highlight = -1 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Convert Escape Characters #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_atssmc_convesc_4rc1 convert_escape_characters def convert_escape_characters(*args, &block) result = ma_atssmc_convesc_4rc1(*args, &block) # Run Original Method # Party result.gsub!(/ePID[(d+)]/i) { $1.to_i >= 1 ? $game_party.members[$1.to_i - 1].id.to_s : "1" } result.gsub!(/ePG/i) { $game_party.gold } # Message Speed result.gsub!(/eS[([+-]?d+)]/i) { "eMS[#{$1}]" } result.gsub!(/e%/) { "eDS%"} # Hex Colour result.gsub!(/eC[#/i) { "eHC[" } # Icons result.gsub!(/eII[(d+)]/i) { "eI[#{$data_items[$1.to_i].icon_index}]" rescue "" } result.gsub!(/eIW[(d+)]/i) { "eI[#{$data_weapons[$1.to_i].icon_index}]" rescue "" } result.gsub!(/eIA[(d+)]/i) { "eI[#{$data_armors[$1.to_i].icon_index}]" rescue "" } result.gsub!(/eIS[(d+)]/i) { "eI[#{$data_skills[$1.to_i].icon_index}]" rescue "" } result.gsub!(/eIT[(d+)]/i) { "eI[#{$data_states[$1.to_i].icon_index}]" rescue "" } # Actor Stats result.gsub!(/eAC[(d+)]/i) { $data_classes[$game_actors[$1.to_i].class_id].name } result.gsub!(/eAL[(d+)]/i) { $game_actors[$1.to_i].level.to_s } # Names result.gsub!(/eMAP[(d+)]/i) { load_data(sprintf("Data/Map%03d.rvdata2", $1.to_i)).display_name rescue "" } result.gsub!(/eMAP/i) { $game_map.display_name rescue "" } result.gsub!(/eNE[(d+)]/i) { $game_map.events[$1.to_i].name } result.gsub!(/eNN[(d+)]/i) { $game_actors[$1.to_i].nickname } result.gsub!(/eNI[(d+)]/i) { $data_items[$1.to_i].name rescue "" } result.gsub!(/eNW[(d+)]/i) { $data_weapons[$1.to_i].name rescue "" } result.gsub!(/eNA[(d+)]/i) { $data_armors[$1.to_i].name rescue "" } result.gsub!(/eNS[(d+)]/i) { $data_skills[$1.to_i].name rescue "" } result.gsub!(/eNT[(d+)]/i) { $data_states[$1.to_i].name rescue "" } result.gsub!(/eNM[(d+)]/i) { $data_enemies[$1.to_i].name rescue "" } result.gsub!(/eNC[(d+)]/i) { $data_classes[$1.to_i].name rescue "" } result.gsub!(/eNV[(d+)]/i) { $data_system.variables[$1.to_i] } result.gsub!(/eNSW[(d+)]/i) { $data_system.switches[$1.to_i] } result.gsub!(/eNWT[(d+)]/i) { $data_system.weapon_types[$1.to_i] } result.gsub!(/eNAT[(d+)]/i) { $data_system.armor_types[$1.to_i] } result.gsub!(/eNST[(d+)]/i) { $data_system.skill_types[$1.to_i] } result.gsub!(/eNL[(d+)]/i) { $data_system.elements[$1.to_i] } # Vocab result.gsub!(/eVOCAB[(w+),s*(d+)s*]/i) { Vocab.send($1.downcase, $2.to_i) rescue "" } result.gsub!(/eVOCAB[(w+)]/i) { Vocab.send($1.downcase) rescue "" } # Font Settings result.gsub!(/eB/i) { "eFE[0]" } # Bold On result.gsub!(//B/i) { "eFE[1]" } # Bold Off result.gsub!(/eI([^[])/i) { "eFE[2]#{$1}" } # Italics On result.gsub!(//I/i) { "eFE[3]" } # Italics Off result.gsub!(/eO/i) { "eFE[4]" } # Outline On result.gsub!(//O/i) { "eFE[5]" } # Outline Off result.gsub!(/eS([^[!])/i) { "eFE[6]#{$1}" } # Shadow On result.gsub!(//S/i) { "eFE[7]" } # Shadow Off result.gsub!(/eU/i) { "eFE[8]" } # Underline On result.gsub!(//U/i) { "eFE[9]" } # Underline Off result.gsub!(/eHL[(d+)]/i) { "eHL[#{$1.to_i}]" } # Highlight On: custom colour result.gsub!(/eHL([^[])/i) { "eHL[17]#{$1}" }# Highlight On: system colour result.gsub!(//HL/i) { "eHL[0]" } # Hightlight Off result.gsub!(//FN/i) { "eFN[]" } # Default Font result.gsub!(//FS/i) { "eFS[#{Font.default_size}]" } # Default Font # Conditional Text result.gsub!(/eS[(d+)[,;:](.+?)]/i) { $game_switches[$1.to_i] ? $2 : "" } result.gsub!(/eS![(d+)[,;:](.+?)]/i) { $game_switches[$1.to_i] ? "" : $2 } # Evaluation result.gsub!(/e#{(.+?)}/im) { (eval($1)).to_s rescue "" } # Do resubstitutions if requested if result.sub!(/eRESUB/i, "") != nil result = convert_escape_characters(result, *args, &block) end result.gsub!(/eN/i, "n") # Line Break result # Return result end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Calculate Line Height #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_atssmc_clclnhght_3ek9 calc_line_height def calc_line_height(text, *args, &block) res = ma_atssmc_clclnhght_3ek9(text, *args, &block) # Run Original Method text.slice(/^.*$/).scan(/eFS[(d+)]/i) { |num| res = [res, num[0].to_i].max } res end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Process Normal Character #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mlra_atssmc_procnorm_5fg2 process_normal_character def process_normal_character(c, pos, *args, &block) draw_highlight_underline(c, pos) if @underline || @highlight mlra_atssmc_procnorm_5fg2(c, pos, *args, &block) # Run Original Method end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Process Escape Character #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_atssmc_procesc_7gv1 process_escape_character def process_escape_character(code, text, pos, *args, &block) case code.upcase when 'X' then pos[:x] = obtain_escape_param(text) when 'HC' # Hex Colour hex = text.slice!(/^[([ABCDEFd]+)]/i) rgb = $1.scan(/../).map { |hex| hex.to_i(16) } change_color(Color.new(*rgb)) if rgb.size.between?(3,4) when 'FE' # Font Settings param = obtain_escape_param(text) case param / 2 when 0 then contents.font.bold = ((param % 2) == 0) # Bold when 1 then contents.font.italic = ((param % 2) == 0) # Italic when 2 then contents.font.outline = ((param % 2) == 0) # Outline when 3 then contents.font.shadow = ((param % 2) == 0) # Shadow when 4 then @underline = ((param % 2) == 0) # Underline end when 'HL' then @highlight = obtain_escape_param(text) - 1 # Highlight when 'FN' # Font Name text.slice!(/^[(.*?])/) param = $1 if param.nil? || param == ']' contents.font.name = Font.default_name else ary = [] while param.slice!(/s*(.+?)s*[,;:]]/) != nil do ary.push($1) end contents.font.name = ary end when 'FS' # Font Size text.slice!(/^[(d+)]/) contents.font.size = [[$1.to_i, 16].max, 64].min else ma_atssmc_procesc_7gv1(code, text, pos, *args, &block) # Run Original Method end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Reset Font Settings #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_atssmc_resetfont_8jb5 reset_font_settings def reset_font_settings(*args, &block) ma_atssmc_resetfont_8jb5(*args, &block) # Run Original Method contents.font.outline = Font.default_outline contents.font.shadow = Font.default_shadow @underline = false @highlight = -1 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Highlighting and Underlining #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_highlight_underline(c, pos) text_width = text_size(c).width y_space = (pos[:height] - contents.font.size) / 2 if @underline # Underlining y = pos[:y] + pos[:height] y -= [2, y_space].max contents.fill_rect(pos[:x], y, text_width, 2, contents.font.color) end if @highlight >= 0 # Highlighting y = pos[:y] y += y_space - 1 if y_space > 0 text_height = [contents.font.size + 2, pos[:height]].min colour = text_color(@highlight) colour.alpha = 128 if colour.alpha > 128 contents.fill_rect(pos[:x], y, text_width, text_height, colour) end end end #=============================================================================== # ** Window_Message #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # aliased method - clear_instance_variables; process_escape_character; # update_show_fast; wait_for_one_character #=============================================================================== class Window_Message #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Clear Instance Variables #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_atssmc_clrinsvar_3dq9 clear_instance_variables def clear_instance_variables(*args, &block) ma_atssmc_clrinsvar_3dq9(*args, &block) # Run Original Method @skip_disabled = false end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Process Escape Character #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mnaa_atssmc_escchar_3dr9 process_escape_character def process_escape_character(code, text, pos, *args, &block) case code.upcase when 'MS' # Set Message Speed if !text[/^[([+-])/].nil? text.sub!(/^[([+-])/, '[' ) sign = $1 else sign = "" end param = obtain_escape_param(text) sign.empty? ? $game_message.message_speed = param : $game_message.message_speed += "#{sign}#{param}".to_i when 'DS' text.slice!(/^%/) # Delete buffer to ensure code isn't overextended @skip_disabled = !@skip_disabled when 'W' then wait(obtain_escape_param(text)) else mnaa_atssmc_escchar_3dr9(code, text, pos, *args, &block) # Run Original Method end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Update Show Fast #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mlg_atssmc_updshwfast_7yb1 update_show_fast def update_show_fast(*args, &block) mlg_atssmc_updshwfast_7yb1(*args, &block) @show_fast = Input.press? (Input::C) if $game_message.show_fast_speed > 0 @show_fast = false if @skip_disabled end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Wait for One Character #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mdrnl_smcats_waitonechar_5rf1 wait_for_one_character def wait_for_one_character(*args, &block) mdrnl_smcats_waitonechar_5rf1(*args, &block) # Run Original Method if (@show_fast || @line_show_fast) && $game_message.show_fast_speed > 0 wait($game_message.show_fast_speed) elsif $game_message.message_speed > 1 wait($game_message.message_speed - 1) end end end Incompatibilità:
      Potrebbe non funzionare con script che utilizzano gli stessi codici per i messaggi.
    • 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
×