Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

HBGames

Okay, so what I'm wanting now, is the ability to add icons into the message box, I know Dubealex has his UMS which does this, along with something else I'd like, which is a letter by letter function.

Here's his script for reference:
Code:
 

#===================================================

#  ¦ AMS - Advanced Message Script - R4 [Update #2]

#===================================================

# For more infos and update, visit:

# [url=http://www.creationasylum.net]http://www.creationasylum.net[/url] (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

 

I've tried editing this myself to take everything out except the letter by letter and display icons (For items, armours, weapons and skills), but I keep getting error after error, so I thought I'd let someone else take a look.

Cheers to anyone that can do this :cheers: :thumb:

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top