Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
  • 0
CrimsonInferno

AMS - Advanced Message Script -- Support

Question

(Entire post taken from LegacyX's thread)

 

Okay, a friend of mine -- I guess you could say we are friends -- edited Dubealex's message script to fit in a few other things and cut corners.

But I was wondering a few things:

 

Is it as good as Ccoa's script? Does it cost money to use like hers? Is it too difficult to use? Can you change the face sizes from 96x96 to a bigger face picture? Any one think they could help? :)

 

By: Dubealex, Edited by LegacyX

New 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

 

Instructions

 

Place above the main. and away you go =]

 

 

Compatibility

 

At the moment there are no known compatibility problems

 

FAQ

 

Q: How do i change the face picture so that it actually fits in the window?

A:Find this lineself.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))

and edit this part Rect.new(0, 0, 96, 96) to say Rect.new(0, 0, 150,150) to make it bigger

 

 

#===================================================
#  ¦ AMS - Advanced Message Script - R4 [update #2]
#===================================================
# For more infos and update, visit:
# http://www.creationasylum.net (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
# LegacyX: For adding Extra Features
#
# To found all my new features, search the following:   #NEW
# To configure the button to skip the dialog, search:   #SKIP_TEXT_CODE
#
#    Edited by FF12_master :To find Edits Search for ++Edit
#   -Edits-
#
#   -Shortened face and name box short cut-
#  
#   \f[i] face shortcut, were i is the file name
#   \n[i] name box, were i is the decided name.
#
#   \oa[i]         - display the icon and name of armor i
#   \oi[i]         - display the icon and name of item i
#   \os[i]         - display the icon and name of skill i
#   \ow[i]         - display the icon and name of weapon i
#
# For any extra features to be added for Personalised Games Please PM LegacyX
#
# 24th Febuary 2009
#===================================================

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 = 21                     #Choose the default Font Size for message box text
@name_font_size = 21             #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 = 240      #Choose the opacity of the message window. Default=160
@message_box_skin = "Black3"   #Choose the WindowSkin for the Message Box
@name_box_skin = "Black3"       #Choose the WindowSkin for the Name Box

@message_width = 440             #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 = 310         #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 ="Faces/" + $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

   #New
   #++Edit
   #Shows Icon and Weapon/Armour and Item name use \ow[i], \oa[i], \oi[i]
   # armor, items, skills, and weapons
       @now_text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) {
          item = $data_armors[$1.to_i]
          "\014[#{$1}]" + "   " + item.name
       }
       @now_text.gsub!(/\\[Oo][ii]\[([0-9]+)\]/) {
          item = $data_items[$1.to_i]
          "\015[#{$1}]" + "   " + item.name
       }
       @now_text.gsub!(/\\[Oo][ss]\[([0-9]+)\]/) {
          item = $data_skills[$1.to_i]
          "\016[#{$1}]" + "   " + item.name
       }
       @now_text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) {
          item = $data_weapons[$1.to_i]
          "\017[#{$1}]" + "   " + item.name
       }

 #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]\[(.+?)\]/.match(@now_text)) != nil
    name_window_set = true
    name_text = $1
    @now_text.sub!(/\\[Nn]\[(.*?)\]/) { "" }
 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!(/\\\\/) { "\000" }
 @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
 @now_text.gsub!(/\\[Gg]/) { "\002" }
 @now_text.gsub!(/\\[ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
 @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$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!(/\\[.]/) { "\005" }
 @now_text.gsub!(/\\[|]/) { "\006" }
 @now_text.gsub!(/\\[|]/) { "\014" }
 @now_text.gsub!(/\\[|]/) { "\015" }
 @now_text.gsub!(/\\[|]/) { "\016" }
 @now_text.gsub!(/\\[|]/) { "\017" }
 @now_text.gsub!(/\\[>]/) { "\019" }
 @now_text.gsub!(/\\[<]/) { "\031" }
 @now_text.gsub!(/\\[!]/) { "\020" }
 @now_text.gsub!(/\\[~]/) { "\021" }
 @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
 @now_text.gsub!(/\\[ii]/) { "\023" }
 @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
 @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
 @now_text.gsub!(/\\[bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
 @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$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 == "\000"
          c = "\\"
       end

       if c == "\001"
          @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 == "\002"
          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 == "\003"
          @now_text.sub!(/\[([0-9]+)\]/, "")
          speed = $1.to_i
          if speed >= 0 and speed <= 19
             @write_speed = speed
          end
          c = ""
       end

       if c == "\004"
          @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 == "\004"
          c = ""
       end

       if c == "\005"
          @write_wait += 5
          c = ""
       end

       if c == "\006"
          @write_wait += 20
          c = ""
       end

       if c == "\019"
          text_not_skip = false
          c = ""
       end

       if c == "\031"
          text_not_skip = true
          c = ""
       end

       if c == "\020"
          @mid_stop = true
          c = ""
       end

       if c == "\021"
          terminate_message
          return
       end

       if c == "\023"
          @indent = @x
          c = ""
       end

       if c == "\024"
          @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 == "\025"
          @now_text.sub!(/\[([0-9]+)\]/, "")
          self.contents.font.size = [[$1.to_i, 6].max, 32].min
          c = ""
       end

       if c == "\026"
          @now_text.sub!(/\[([0-9]+)\]/, "")
          @x += $1.to_i
          c = ""
       end

       if c == "\027"
          @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 == "\030"
          @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 == "\022"
          @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(c).width
          if $soundname_on_speak != "" then
             Audio.se_play($soundname_on_speak)
          end
       end

 #New
   #++Edit
   #Shows Icon and Weapon/Armour and Item name use \ow[i], \oa[i], \oi[i]

       # If \oa[n]
    if c == "\014"
       @now_text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @now_text.sub!("   ", " ")
       item = $data_armors[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       line = self.contents.text_size("dj").height
       self.contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
    end
    #++Edit
    # If \oi[n]
    if c == "\015"
       @now_text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @now_text.sub!("   ", " ")
       item = $data_items[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       line = self.contents.text_size("dj").height
       self.contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
    end
    #++Edit
    # If \os[n]
    if c == "\016"
       @now_text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @now_text.sub!("   ", " ")
       item = $data_skills[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       line = self.contents.text_size("dj").height
       self.contents.blt(@x + 2, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
    end
    #++Edit
    # If \ow[n]
    if c == "\017"
       @now_text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @now_text.sub!("   ", " ")
       item = $data_weapons[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       line = self.contents.text_size("dj").height
       self.contents.blt(@x + 2, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
    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("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
 end
when "w"
 unless $data_weapons[index].name == nil
    r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
 end
when "a"
 unless $data_armors[index].name == nil
    r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
 end
when "s"
 unless $data_skills[index].name == nil
    r = sprintf("\030[%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

 

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

(Entire post taken from LegacyX's thread)

 

Okay, a friend of mine -- I guess you could say we are friends -- edited Dubealex's message script to fit in a few other things and cut corners.

But I was wondering a few things:

 

Is it as good as Ccoa's script? Does it cost money to use like hers? Is it too difficult to use? Can you change the face sizes from 96x96 to a bigger face picture? Any one think they could help? :)

 

 

This script is 100% free, even Dub has told people that this is free. Also it is as freindly to use as i can immagine. If you needed to change the size of the faces i could do that for you if you really needed to.

 

Also eventualy there will be no need to even use Ccoa's UMS, becuase i plan on adding all of here UMS's features into my Modified AMS, plus a few Extras so if you hold on tight you will have the all new LAUMS (LegacyX Advanced Universal Message System), becuase i my self have found compatibility problems between Ccoa's ums that the AMS can do and the UMS cannot, although the UMS is an extreemly powerful script, the LAUMS will have the best of bothworlds, high Compatibility with High amount of Features.

 

As to making the Faceset biger than 96x96 it even says in the post..

 

Q: How do i change the face picture so that it actually fits in the window?

A:Find this lineself.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))

and edit this part Rect.new(0, 0, 96, 96) to say Rect.new(0, 0, 150,150) to make it bigger

Share this post


Link to post
Share on other sites
  • 0

Was asking around but didn't get any answer with the UMS, so I thought I would look at this too. Anyways, was wondering if I'm able to have a "Fire-Emblem"-style message system. Instead of the faces you'll see a character graphic above the window on the left/right, the other character on the other side when characters are having conversations.

Share this post


Link to post
Share on other sites
  • 0

Ah i see what you mean, well i havent added that and i dont believe it is already included. the best way to do that is via common events. But if i find a way of adding it, i sure will ^^

Share this post


Link to post
Share on other sites
  • 0

Yeah I think Kiriashi said something about events and pictures...but I honestly don't want to place pictures at the right coordinates ten bazillion times when the message system is being used, lol.

Share this post


Link to post
Share on other sites
  • 0

This script is 100% free, even Dub has told people that this is free. Also it is as freindly to use as i can immagine. If you needed to change the size of the faces i could do that for you if you really needed to.

 

Also eventualy there will be no need to even use Ccoa's UMS, becuase i plan on adding all of here UMS's features into my Modified AMS, plus a few Extras so if you hold on tight you will have the all new LAUMS (LegacyX Advanced Universal Message System), becuase i my self have found compatibility problems between Ccoa's ums that the AMS can do and the UMS cannot, although the UMS is an extreemly powerful script, the LAUMS will have the best of bothworlds, high Compatibility with High amount of Features.

 

As to making the Faceset biger than 96x96 it even says in the post..

 

Lol

 

I didn't see that because where I was messaged the script, didn't have it. I was asking around on a forum and someone said you made it and I was like "he scripted something!" (I was happy) and then asked where I could find the thread, but instead, he messaged just the script and never replied back lol

 

I actually didn't know you were here! :)

Thanks, Legacy.

Share this post


Link to post
Share on other sites
  • 0

Its not a problem, you know if you have a problwem with my scripts you can PM me on any forum you find me on ^_^

Share this post


Link to post
Share on other sites
  • 0

The AMS lacked support for showing a skill name so I added this small script underneath the others. Allows you to show a skill name using \s[skill number] example \s[1] gives you the name of the first skill. Its pretty simple to add features to show any name in the game.

 

#Corpsegirl's Show Skill Name Feature

@now_text.gsub!(/\\[ss]\[([0-9]+)\]/) do

$data_skills[$1.to_i] != nil ? $data_skills[$1.to_i].name : ""

end

#End new command

Share this post


Link to post
Share on other sites
  • 0

When makign these things put them after any of the other methods that you can find if you search the script for #new .

Share this post


Link to post
Share on other sites
  • 0

I can't get face graphics to show up in the message boxes. Whenever I have a thing where the character is supposed to talk and have their face in the message box I keep getting an error that says "Unable to find file Graphics/Pictures/Faces/characterface3.png" and then the game shuts down.
I do know that there isn't a folder in the Materialbase area called Faces so myabe that's why it can't find the file? Because I have the face graphic in Graphics/Pictures and I can't put it in Graphics/Pictures/Faces because that doesn't exist....I don't know what to do is there a way to fix this? (sorry if this is a stupid question I'm really new at this...)

Share this post


Link to post
Share on other sites
  • 0

This topic is 4 years old. I was going to say you need to make a new topic, but I took a closer look and realized that this is a script topic. How silly of me :oops:

A lot of things bug me about this situation to be honest, but all I can really say is this:

Try not to necropost.

Share this post


Link to post
Share on other sites
  • 0

Since this is Script support thread, I think it's still okay to necro and answer this. :v

 

@AwesomeTea

I think you can create the folder faces by yourself, and put the picture in it manualy.

Share this post


Link to post
Share on other sites
  • 0

@black mage yeah I was trying to do that but I don't think I can...or at least I don't know how. But I guess I'll figure something out somehow...thanks for answering though! Sorry for asking I didn't know I wasn't supposed to....

@Bob423 I don't even know what necroposting is??  I didn't know I was doing something wrong but I didn't know what else to do so sorry I guess I shouldn't have asked....

Share this post


Link to post
Share on other sites
  • 0

Well necroposting is basically bring a post back from the dead. The post before yours is 4 years old and that means that the topic has been dead for quite a while. It's fine, though because you're having a problem with the script that was posted here. And I don't think crimson's around, so she(?)(she, right? I forgot >.<) probably won't be able to help.

 

Just don't worry about it this time :thumbsup:

Share this post


Link to post
Share on other sites
  • 0

I am seriously very close to removing the rule of necro posting altogether. There's literally nothing negative about this situation apart from age-old maxim "you shall not necropost". It's silly isn't it? Lets just help people.

 

I can't put it in Graphics/Pictures/Faces because that doesn't exist

I'm not sure why you can't do that, you're running windows right? The error is obviously that the game is trying to load a file that doesn't exist, so as black mage says, just create the faces directory and ensure you've got the .png that matches the name. It's as simple as that. I recommend downloading the demo also as a point of first reference in using the script.

Share this post


Link to post
Share on other sites
  • 0

I agree mark. It's stupid and it's the main cause my problems with this post. From now on, I don't even care as long as it's not spam.

Share this post


Link to post
Share on other sites
  • 0
I'm not sure why you can't do that, you're running windows right? The error is obviously that the game is trying to load a file that doesn't exist, so as black mage says, just create the faces directory and ensure you've got the .png that matches the name. It's as simple as that. I recommend downloading the demo also as a point of first reference in using the script.

 

Yes I'm running windows. And yeah like I said to black mage I was trying to do that but I can't or at least I don't know how. I'm a beginner like I said before and the only way I've ever created new folders/files in anything on my computer is by right clicking and selecting the new folder option that shows up but I can't do that in RMXP (I've tried) so I guess I'm not doing it right and I don't know how to go about doing it correctly (and I have looked everywhere for a tutorial on how to do so but I can't find anything which is why I came here...I really did try to find the answer for like over a week before asking here). But I don't want to keep bothering everyone here (if this is simple problem and I just can't seem to figure out I feel even more dumb for asking at all :oops:) so I'll just try finding another script or something I didn't mean to break any rules or cause a disturbance or anything. Thank you very much and, again, sorry for asking :)

Share this post


Link to post
Share on other sites
  • 0

Bob don't be ridiculous. I prefer the AMS over UMS (which are both ancient btw) but any faceset system will require physical images to be loaded into the game.

 

I'll just try finding another script or something I didn't mean to break any rules or cause a disturbance or anything. Thank you very much and, again, sorry for asking

Dude chill out. You did nothing wrong. Ask as many questions as possible :P That's what we're here for.

 

And yeah like I said to black mage I was trying to do that but I can't or at least I don't know how. I'm a beginner like I said before and the only way I've ever created new folders/files in anything on my computer is by right clicking and selecting the new folder option that shows up but I can't do that in RMXP (I've tried) so I guess I'm not doing it right and I don't know how to go about doing it correctly

This is a wee bit of an odd question because the solution is very simple. You do not do it RMXP, of course.

15a52fa4d13bc5a4cbf0e1ce829c55d4.png

 

Then copy your faces in there. As simple as that, right?

Share this post


Link to post
Share on other sites
  • 0

Common sense, really. We haven't got any written down rules. We used to. Back in the days when there was a lot more people posting here and we needed some structure and words for people to follow. The main issue we have these days is the confusion by long-term members and occasionally mods over necro-posting, which usually goes completely against common sense. So yeah. Maybe I'll write some rules for when we get more customers through the door :3

Share this post


Link to post
Share on other sites
  • 0

I got this script from an ancient old site.. it's nice actually, however, i did not know how to use it

Because i dont have the demo and the link is dead (ancient -.-) anyway, if someone still have the

Demo of this script (R4 updates?) Please upload it...

P.S : this may not seems like problems with the script, but the unability to use it to the max is as same

As an error itself.

Thanks!

Share this post


Link to post
Share on other sites
  • 0

Thanks, Marked!

I thought creation asylum address is dubealex com (without the dot to prevent spam xD) and it led me to an error.

But it was creationasylum net , lol and it was solved. Anyway, sorry for being such an hustle :-)

Edited by Calvinchun

Share this post


Link to post
Share on other sites
  • 0

Thanks, Marked!

I thought creation asylum address is dubealex com (without the dot to prevent spam xD) and it led me to an error.

But it was creationasylum net , lol and it was solved. Anyway, sorry for being such an hustle :-)

 

Edited by Bob423
Testing...did it work?

Share this post


Link to post
Share on other sites
  • 0

Let's try this

 

Ahem:

Edited by Bob423
wtf? the part under it isn't posting. I appologize for the double post, but this is kind of a big problem. Using Firefox btw.

Share this post


Link to post
Share on other sites
  • 0

Let's try this

 

Ahem:

I'm not getting the error. Try it in the bug reporting topic and delete stuff after testing. Before posting, check the non-wysiwig view of the editor to see how the bbcode is structured. I'm using firefox and its working.

Share this post


Link to post
Share on other sites
  • 0

I will now attempt to post what I wanted to before. Hopefully it works, as copy/pasting worked on a different topic.

 

WTF IS WRONG WITH THIS SITE WHY DIDN'T IT SHOW UP...

and why won't mark answer my PM?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...