Jump to content

Announcing our new website

To find out the latest about our new website, visit Game Dev Unlimited

- - - - -

Advanced Message Script - Release 4


  • You cannot reply to this topic
17 replies to this topic

#1 Marked

    I administrate

  • Admin
  • 3,348 posts

Posted 19 October 2006 - 03:04 AM

Im posting this cause I dont think Dubealex is going to...but i did get permission from him.
This is the advance message script made by dubealex, for the people have have not seen it at his site. Just put the script above main in the script editor, there ia an instruction manual and a demo which are recommended to download.

The demo:
AMS-Advanced message script
OR http://www.rmxpunlimited.net/forums/index....&showfile=9






#===================================================
# ■ AMS - Advanced Message Script - R4 [Update #2]
#===================================================
# For more infos and update, visit:
# www.dubealex.com (Creation Asylum)
#
# Edited, Fixed and Enhanced by: Dubealex
# Original Script Core by: XRXS Scripter (Jap Dudes)
# HTML Hexadecimal color feature from: Phylomorphis
#
# Special Thanks:
# Rabu: For enabling the Show Face feature in an encrypted project
#
# To found all my new features, search the following:  #NEW
# To configure the button to skip the dialog, search:  #SKIP_TEXT_CODE
#
# May 18, 2005
#===================================================

LETTER_BY_LETTER_MODE = true   #Set the letter by letter mode ON/OFF		  

#===================================================
# ▼ CLASS AMS Begins
#===================================================
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	   #Choose the X axis offset of the name bos. default= 0
  @name_box_y_offset = -10	#Choose the Y axis offset of the name bos. default= -10
  @name_box_width = 8		   #Choose the width of the Name Box. default= 8  
  @name_box_height = 26		#Choose the height of the Name Box. default= 26
  
  @font_type = "Tahoma"		   #Choose the Font Name (Case Sensitive) for message box
  @name_font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for Name Box
  @font_size = 22					  #Choose the default Font Size for message box text
  @name_font_size = 22			#Choose the deafault Font Size for Name Box text
  @name_box_text_color=0		#Choose the Text Color of the Name Box
  @message_box_text_color=0   #Choose the Text Color of the Message Box
  
  @message_box_opacity = 160			#Choose the opacity of the message window. Default=160
  @message_box_skin = "001-Blue01"   #Choose the WindowSkin for the Message Box
  @name_box_skin = "001-Blue01"	   #Choose the WindowSkin for the Name Box
  
  @message_width = 480		  #Choose the width size of the message box. Default=480
  @message_height = 160		 #Choose the height size of the message box. Default=160
  @message_x = 80				  #Choose the X position of the message box. Default=80
  @message_y_bottom = 304	#Choose the Y bottom position of the message box. Default=304
  @message_y_middle = 160	#Choose the Y middle position of the message box. Default=160
  @message_y_top = 16		   #Choose the Y top position of the message box. Default=16
  
  @event_message_x_ofset = 0   #Choose the X position offset of the event message. Default=0
  @event_message_y_ofset = 48   #Choose the Y position offset of the event message. Default=48
  
end
end
#===================================================
# ▲ CLASS AMS Ends
#===================================================


#===================================================
# ▼ Class Window_Message Begins
#===================================================
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" }
   #End new command
	
   #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
	#End new command
	
   #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
	#End new command
	
   #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
	#End new command
	
   #NEW
   #Dubealex's Show Current Map Name Feature
	@now_text.gsub!(/\\[Mm]ap/) do
	$game_map.name	!= nil ? $game_map.name	: ""
	end
	#End new command
	
   #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
	#End new command
	
   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
	#End of new command
	
	#NEW
	#Dubealex's Font Change Feature
	 @now_text.gsub(/\\[Tt]\[(.*?)\]/) do
	  buftxt = $1.to_s
	  $ams.font_type = buftxt
	  @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
	  end
	#End of new command
	
   @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  
		#end of new command
									
	   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 = Escape, 0 (On The NumPad), X
# C = Enter, Space Bar and C
# A = Shift, Z

   if Input.press?(Input::C) # <-- Change the value on that line
	 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

#MESSAGE_SIZE
#MESSAGE_POSITION

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
#=========================================
# ▲ CLASS Window_Message Ends
#=========================================


#=========================================
# ▼ Class Window_Frame Begins
#=========================================
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
#=========================================
# ▲ CLASS Window_Frame Ends
#=========================================


#=========================================
# ▼ CLASS Game_Map Additional Code Begins
#=========================================
class Game_Map

#Dubealex's Addition (from XRXS) to show Map Name on screen
def name
  $map_infos[@map_id]
end
end
#=========================================
# ▲ CLASS Game_Map Additional Code Ends
#=========================================


#=========================================
# ▼ CLASS Scene_Title Additional Code Begins
#=========================================
class Scene_Title

#Dubealex's Addition (from XRXS) to show Map Name on screen
  $map_infos = load_data("Data/MapInfos.rxdata")
  for key in $map_infos.keys
	$map_infos[key] = $map_infos[key].name
  end
  
  #Dubealex's addition to save data from the AMS in the save files
  $ams = AMS.new
  
end
#=========================================
# ▲ CLASS Scene_Title Additional Code Ends
#=========================================


#=========================================
# ▼ CLASS Window_Base Additional Code Begins
#=========================================
class Window_Base < Window

#Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
def hex_color(string)
   red = 0
   green = 0
   blue = 0
   if string.size != 6
	 print("Hex strings must be six characters long.")
	 print("White text will be used.")
	 return Color.new(255, 255, 255, 255)
   end
   for i in 1..6
	 s = string.slice!(/./m)
	 if s == "#"
	   print("Hex color string may not contain the \"#\" character.")
	   print("White text will be used.")
	   return Color.new(255, 255, 255, 255)
	 end
	 value = hex_convert(s)
	 if value == -1
	   print("Error converting hex value.")
	   print("White text will be used.")
	   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
#=========================================
# ▲ CLASS Window_Base Additional Code Ends
#=========================================


#=========================================
# ▼ Class Air_Text Begins
#=========================================
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
#==========================================
# ▲ CLASS Air_Text  Ends
#==========================================


#===================================================
# ▼ CLASS Scene_Save Additional Code Begins
#===================================================
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
#===================================================
# ▲ CLASS Scene_Save Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS Scene_Load Additional Code Begins
#===================================================
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
#===================================================
# ▲ CLASS Scene_Load Additional Code Ends
#===================================================


#2 EmilyAnnCoons

    Authoress of many Zelda fanfic-novelizations

  • RMXPU Legend
  • PipPipPipPipPipPipPip
  • 1,568 posts

Posted 14 January 2007 - 11:02 PM

Awesome, let me add something to this. For anyone who hates trying to fuss with that arrow they give you on RPG Maker XP, just find
@message_width = 480		  #Choose the width size of the message box. Default=480
and replace it with
@message_width = 500		  #Choose the width size of the message box. Default=480
This will make it so you won't have to fight with the arrow anymore, and can just type until it drops each line by itself ^^

#3 Marked

    I administrate

  • Admin
  • 3,348 posts

Posted 10 September 2007 - 06:22 AM

I just uploaded this to the downloads manger: http://www.rmxpunlimited.net/forums/index....&showfile=9
Take this by example. The downloads manger is here for a reason, use it!

#4 personmuncher

    Newbie

  • Member
  • 3 posts

Posted 04 February 2008 - 06:24 PM

I really want to use this.. but i'm getting an error
I have a text box that is supposed to display the name in the top left corner (it does that) and also above a certain event (it does that correctly too)
but it then dosen't display the message and crashes with this message

"
Script 'Advanced Message Script' line 528: NoMethodError occured.

undefined method 'text_size?' for #<Bitmap:0x15d3dd8>
"

Any clue as to why?

#5 personmuncher

    Newbie

  • Member
  • 3 posts

Posted 04 February 2008 - 06:35 PM

Hmmm.. never mind. Copied the code straight from the demo version and it worked... interesting.

#6 naichi

    Newbie

  • Member
  • 3 posts

Posted 30 March 2008 - 04:30 PM

cool man this is very cool whit face maker to show selfmade chars

#7 native44

    Newbie

  • Member
  • 3 posts

Posted 13 May 2008 - 05:45 AM

it gives me an error that says " ????? ' ' ?528???NoMethodError????????
undefined method 'text_size?' for #<Bitmap:0x45c2fe0>

and the demo will not work for me ><

Can someone fix this problem please?

#8 wizaerd

    Newbie

  • Member
  • 4 posts

Posted 09 June 2008 - 11:03 PM

I hate necro-ing a thread, but this is the most recent one I could find from the various different forums for this specific script...

I'm confused as to the layout of the text box itself, if using some of these formatting codes. While I realize this particular example is a bit ridiculous, it demonstrates the difficulty... In a long name, the wrapping of the text is broken up...

For example if I use this text:

\Name[General Goods Shopkeeper]Good day. Can I offer you a bargain today?

In the resulting dialog, the text on the first line is much shorter than it could/should be...(See attachment) How can I correct this?

Attached Files



#9 Xinc

    Newbie

  • Member
  • 2 posts

Posted 23 September 2008 - 11:26 PM

Well it works! :)
Just one problem... :huh:
How do you make the text bleep? :lol:

#10 zayer

    Newbie

  • Member
  • 3 posts

Posted 24 May 2009 - 09:47 PM

I have an error :S

---------------------------
Untitled Project
---------------------------
Script 'Advanced Message Script' line 849: TypeError occurred.

nil can't be coerced into Fixnum
---------------------------
OK
---------------------------

Someone can help me, please!

#11 Polraudio

    Master of the Mind

  • Moderator
  • 3,479 posts

Posted 24 May 2009 - 11:18 PM

Please make a new topic next time.

That looks like a face error. Were you trying to show a face?
And can you make a list of the scripts your using in order?

#12 LegacyX

    Member

  • Member
  • 43 posts

Posted 24 September 2009 - 03:56 PM

I hate to do this, but i did an edit to this system. So i thought instead of create a new topic, i would put it in here (hope thats alright)

Extra Features
display the icon and name of a armor
display the icon and name of a item
display the icon and name of a skill
display the icon and name of a weapon

Spoiler


#13 Polraudio

    Master of the Mind

  • Moderator
  • 3,479 posts

Posted 24 September 2009 - 08:00 PM

Yea thats alright. I made an edit to mine where it uses the windowskin you selected in the system and not in the script.
But its not worth putting up.

I like your edits.

#14 LegacyX

    Member

  • Member
  • 43 posts

Posted 25 September 2009 - 11:54 AM

View PostPony Pink Polaroid, on 24 September 2009 - 08:00 PM, said:

Yea thats alright. I made an edit to mine where it uses the windowskin you selected in the system and not in the script.
But its not worth putting up.

I like your edits.

thanks, im still thinking what else i can add to this script. I've used this script from the first day it came out, so i know it like the back of my hand :P so if anyone needs support i'd be glad to help.

#15 LonelyShadow

    Newbie

  • Member
  • 11 posts

Posted 25 September 2009 - 11:58 PM

Cool find, Gonna be usin this!

#16 LegacyX

    Member

  • Member
  • 43 posts

Posted 26 September 2009 - 10:09 AM

Well im glad you all like it :D

#17 X64

    Newbie

  • Member
  • 1 posts

Posted 01 September 2011 - 12:10 PM

Hi I put in this script in rpgxp and I keep getting the error "Script 'AMS' line 564: SyntaxError occurred."

The line 564 looks like this: if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0

I have no idea what to do.....I would really appreciate it if anyone could help me ^^

#18 Enigma

    Sorry, The Management has denied your request

  • Local Moderator
  • 574 posts

Posted 01 September 2011 - 12:27 PM

View PostX64, on 01 September 2011 - 12:10 PM, said:

Hi I put in this script in rpgxp and I keep getting the error "Script 'AMS' line 564: SyntaxError occurred."

The line 564 looks like this: if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0

I have no idea what to do.....I would really appreciate it if anyone could help me ^^
Ehem :mellow:
First, you could read the rules. Because you would find out that this is kind of a GLORIOUS NECROPOST and I prefer not to have to deal wit h a zombie apocalypse cause the black guy always dies.
Secondly, if you have a question about a script post a new topic dont post in this one, post it in the game making support forum
Thirdly, you would have better luck actually visiting Dublealex's (the maker of this script) forum http://www.chaos-project.com/
4thly, make sure you posted this script above Main and blow the other default scripts
5thly If you have any more custom scripts you might have a compatability error

Lastly, You need to post said details including your non default scripts here so that an actual scripter can deal with them
:o





0 user(s) are reading this topic

members, guests, anonymous users