12-21-2005, 01:00 PM
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.
No support is given. If you are the owner of the thread, please contact administration.
Very simple. No effort was required.
I took a message script created by RPG and ccoa (I think...) and added two lines and a metroid sound to go along with the text.
To try this out replace your Window_Message Script with this script:
Code:
#==================================
# Window_Message
#-------------------------------
# The message window.
#==================================
class Window_Message < Window_Selectable
attr_accessor :autoclosetime
attr_accessor :op
#-------------------------------
# Object Initialization
#-------------------------------
def initialize
super(80+64, 336, 480, 128)#(80, 304, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.size = $fontsize
self.contents.font.name = $fontface
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
@autoclosetime = -1
@op = 255
@refreshflag = false
self.active = false
self.index = -1
@update_text = true
self.windowskin = nil
end
#-------------------------------
# Garbage Collection
#-------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#-------------------------------
# Message Termination Process
#-------------------------------
def terminate_message
self.active = false
self.pause = false
self.index = -1
self.contents.clear
@contents_showing = false
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
# ***ccoa***
#if there was a face showing, make it invisible
if $message_showing != nil
@message.dispose
@message = nil
end
if $face_showing != nil
@face.dispose
@face =nil
end
end
#-------------------------------
# Refresh
#-------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.name = "Arial"
self.contents.font.size = 18
self.windowskin = nil
@x = @y = 0
@cursor_width = 0
@autoclosetime = -1
@refreshflag = true
@lineheight = 32
@active = ""
@a = ""
@centerflag = false
@rightflag = false
@bannerflag = false
@update_text = true
@text_skip = false
# ***ccoa***
# face for the message box
@face = Sprite.new
@face.visible = true
@message = Sprite.new
@message.visible = true
if $game_temp.choice_start == 0
@x = 8
end
if $game_temp.message_text != nil
@text = $game_temp.message_text
begin
last_text = @text.clone
@text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until @text == last_text
@text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
@text.gsub!(/\\\\/) { "\000" }
@text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
@text.gsub!(/\\[Gg]/) { "\002" }
@text.gsub!(/\\[Ii]\[([0-9]+)\]/) { "\003[#{$1}]" }
@text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\004[#{$1}]" }
@text.gsub!(/\\[Aa]\[([0-9]+)\]/) { "\005[#{$1}]" }
@text.gsub!(/\\[Xx]/) { "\006" }
@text.gsub!(/\\[Rr]/) { "\007" }
@text.gsub!(/\\[Dd]/) { "\011" }
@text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\023[#{$1}]" }
@text.gsub!(/\\[Bb]/) { "\017" }
@text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\014[#{$1}]" }
@text.gsub!(/\\[Mm]\[([0-9]+)\]/) { "\015[#{$1}]" }
@text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\016[#{$1}]" }
@text.gsub!(/\\[Jj]\[([0-9]+)\]/) { "\013[#{$1}]" }
@text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\021[#{$1}]" }
@text.gsub!(/\\[Kk]\[([0-9]+)\]/) { "\022[#{$1}]" }
end
def update_text
if @text != nil
Audio.bgs_play("Audio/BGS/metroid", 100, 100)
while ((c = @text.slice!(/./m)) != nil)
if c == "\000"
c = "\\"
end
if c == "\001"
@text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
next
end
if c == "\002"
if @gold_window == nil
@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
next
end
if c == "\003"
@text.sub!(/\[([0-9]+)\]/, "")
item_sub = $1.to_i
c = $data_items[item_sub].name
l = self.contents.text_size( c ).width
draw_item_name($data_items[item_sub], @x, @y * 32 + 1)
@x = @x + l + 24
next
end
if c == "\004"
@text.sub!(/\[([0-9]+)\]/, "")
fontize = $1.to_i
case fontize
when 1
self.contents.font.name = "Arial"
when 2
self.contents.font.name = "High Tower Text"
when 3
self.contents.font.name = "Tw Cen MT"
when 4
self.contents.font.name = "Tahoma"
end
next
end
if c == "\005"
@text.sub!(/\[([0-9]+)\]/, "")
@autoclosetime = $1.to_i
next
end
if c == "\006"
@centerflag = true
next
end
if c == "\007"
@rightflag = true
next
end
if c == "\011"
self.contents.font.name = "Arial"
self.contents.font.size = 18
self.contents.font.color = normal_color
@lineheight = 32
next
end
if c == "\014"
@text.sub!(/\[([0-9]+)\]/, "")
w_sub = $1.to_i
c = $data_weapons[w_sub].name
l = self.contents.text_size( c ).width
bitmap = RPG::Cache.icon($data_weapons[w_sub].icon_name)
self.contents.blt(@x+4, @y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
@x += 28
self.contents.draw_text(@x+4, 32 * @y, l+32, @lineheight, c)
@x = @x + l
next
end
if c == "\015"
@text.sub!(/\[([0-9]+)\]/, "")
a_sub = $1.to_i
c = $data_armors[a_sub].name
l = self.contents.text_size( c ).width
bitmap = RPG::Cache.icon($data_armors[a_sub].icon_name)
self.contents.blt(@x+4, @y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
@x += 28
self.contents.draw_text(@x+4, 32 * @y, l+32, @lineheight, c)
@x = @x + l
next
end
if c == "\016"
@text.sub!(/\[([0-9]+)\]/, "")
@op = $1.to_i
next
end
if c == "\017"
@bannerflag = true
next
end
if c == "\018"
@text.sub!(/\[([0-9]+)\]/, "")
jump = $1.to_i
@x += jump
next
end
if c == "\021"
@text.sub!(/\[([0-9]+)\]/, "")
@lineheight = $1.to_i
next
end
if c == "\022"
@text.sub!(/\[([0-9]+)\]/, "")
skill_sub = $1.to_i
c = $data_skills[skill_sub].name
l = self.contents.text_size( c ).width
bitmap = RPG::Cache.icon($data_skills[skill_sub].icon_name)
self.contents.blt(@x+4, @y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
@x += 28
self.contents.draw_text(@x+4, 32 * @y, l+32, @lineheight, c)
@x = @x + l
next
end
if c == "\023"
@text.sub!(/\[([0-9]+)\]/, "")
bigness = $1.to_i
self.contents.font.size = bigness
next
end
if c == "\n"
if @centerflag == true
@x = 448 - @x
@x = @x / 2
self.contents.draw_text(@x, 32 * @y, 448-@x, @lineheight, @a)
end
if @rightflag == true
@x = 448 - @x
self.contents.draw_text(@x, 32 * @y, 448-@x, @lineheight, @a)
end
if @bannerflag == true
@x = 448 - @x
@x = @x / 2
self.contents.draw_text(@x, 44, 448-@x, @lineheight, @a)
end
@a = ""
@centerflag = false
@rightflag = false
@bannerflag = false
if @y >= $game_temp.choice_start
@cursor_width = [@cursor_width, @x].max
end
@y += 1
@x = 0
if @y >= $game_temp.choice_start
@x = 8
end
next
end
# ***ccoa***
#display face?
if $message_showing != nil
#draw the face, then add the text to one side of it
@message.bitmap= RPG::Cache.picture($message_showing)
@message.x = 18
@message.y = 340
@message.z = 9998
@message.visible = true
else
@message.bitmap= nil
@message.x = 18
@message.y = 340
@message.z = 9998
@message.visible = false
end
#draw the face, then add the text to one side of it
if $face_showing != nil
@face.bitmap = RPG::Cache.picture($face_showing)
@face.x = 20
@face.y = 344
@face.z = 9999
@face.opacity = 255
@face.visible = true
if @centerflag == false && @rightflag == false && @bannerflag == false
self.contents.draw_text(4 + @x, 32 * @y, 40, @lineheight, c)
@x += self.contents.text_size( c ).width
else
@a += c
@x += self.contents.text_size( c ).width
end
if !@text_skip
#$game_system.se_play($data_system.decision_se)
return
end
else
@face.bitmap = nil
@face.x = 20
@face.y = 344
@face.z = 9999
@face.visible = false
# just put in the text
if @centerflag == false && @rightflag == false && @bannerflag == false
self.contents.draw_text(4 + @x, 32 * @y, 40, @lineheight, c)
@x += self.contents.text_size( c ).width
else
@a += c
@x += self.contents.text_size( c ).width
end
if !@text_skip
return
end
end
end
end
self.opacity = 0
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
@update_text = false
end
end
#-------------------------------
# Reset the window in response to changes in the position or
# transparency
#-------------------------------
def reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # ?
self.y = 16
when 1 # ?
self.y = 160
when 2 # ?#?????? ????
self.y = 336
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
end
#-------------------------------
# Frame Update
#-------------------------------
def update
super
if @refreshflag && @fade_in == false
self.contents_opacity = @op
end
if @autoclosetime == 0
@autoclosetime = -1
terminate_message
end
if @autoclosetime >= 1
@autoclosetime -= 1
end
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity >= @op
@fade_in = false
end
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
Audio.bgs_stop
self.pause = true
end
if @update_text
if Input.trigger?(Input::C)
@text_skip = true
end
update_text
return
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_can cel_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
@op = 255
terminate_message
end
return
end
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
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
#-------------------------------
# Updates the cursor rectangle.
#-------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
# ***ccoa***
# make sure the cursor appears in the correct spot for choice messages
if $message_showing != nil
self.cursor_rect.set(8, n * 32, @cursor_width, 32)
self.windowskin= RPG::Cache.windowskin("001-Blue01")
end
else
self.cursor_rect.empty
end
end
end
Next put this sound in your BGS folder.
http://www.invisionplus.net/forums/index.p...pe=post&id=2261
That's it.
~Constance