The RPG Maker Resource Kit

RMRK RPG Maker Creation => VX Ace => VXA Scripts Database => Topic started by: modern algebra on December 11, 2011, 04:51:06 AM

Title: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on December 11, 2011, 04:51:06 AM
ATS: Special Message Codes
Version: 1.0.6
Author: modern algebra
Date: 18 October 2012

Version History



Description


This script allows you to use a number of additional special codes in the message system, which will function similar to the default codes like \v[n], \c[n], etc. Please see the list of special message codes starting at line 54 for a full idea of what is added. Basically, it gives you greater control over the delivery of a message, allows you to make use of font effects like bolding and italicizing, and allows you to retrieve and display useful data like the names of weapons and armors.

Features


Screenshots

(http://img853.imageshack.us/img853/3829/atssmcscreen.png)

Instructions

Insert this script in its own slot above Main and below Materials.

For a complete list of the new special message codes and what they do, see the header of the script.

Script


Code: [Select]
#==============================================================================
#    ATS: Special Message Codes [VXA]
#    Version: 1.0.6
#    Author: modern algebra (rmrk.net)
#    Date: 18 October 2012
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script allows you to use a number of additional special codes in the
#   message system, which will function similar to the default codes like
#   \v[n], \c[n], etc. Please see the list of special message codes starting at
#   line 54 for a full idea of what is added. Basically, it gives you greater
#   control over the delivery of a message, allows you to make use of font
#   effects like bolding and italicizing, and allows you to retrieve and
#   display useful data like the names of weapons and armors.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  ATS Series:
#
#    This script is part of the Advanced Text System series of scripts. These
#   scripts are based off the Advanced Text System for RMVX, but since RMVX Ace
#   has a much more sensibly designed message system, it is no longer necessary
#   that it be one large script. For that reason, and responding to feedback on
#   the ATS, I have split the ATS into multiple different scripts so that you
#   only need to pick up the components for the features that you want. It is
#   therefore easier to customize and configure.
#
#    To find more scripts in the ATS Series, please visit:
#      http://rmrk.net/index.php/topic,44525.0.html
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    This script is not difficult to use or configure. There are only ten
#   configuration options for this script. These are:
#
#      :message_speed               :font_italic
#      :show_fast_speed             :font_outline
#      :font_name                   :font_shadow
#      :font_size                   :font_underline
#      :font_bold                   :font_highlight
#
#   :message_speed allows you to set the default number of frames to wait
#   between drawing each letter in the message window. :show_fast_speed allows
#   you to control the amount it speeds up when the player presses enter. You
#   can gain instructions on setting the default value for both at line 180.
#
#   All of the :font_ settings simply let you set the initial values for the
#   font when used.
#
#    As with other ATS scripts, you can change the value of these options in
#   game with the following codes in a script call:
#
#      ats_next(:message_option, x)
#      ats_all(:message_option, x)
#
#   Where :message_option is the symbol you want (:message_speed or
#   :show_fast_speed) and x is the value you want to change it to. ats_next
#   will only change it for the very next message, while ats_all will change it
#   for every message to follow.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  List of Special Message Codes:
#
#    The default message codes are retained, and this script adds a number of
#   other desirable features. The following is a complete list of the message
#   codes at your disposal. Simply insert them into a Display Message command,
#   Choice Branches, or any other message related system.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Font Effects:
#
# \fn[fontname] - Change the font to fontname. If you put multiple fontnames
#     separated by commas, then it will take the first one the user has installed
# \fs[n] - Change the font size to n.
# \{ - Increase the font size by 8.
# \} - Decrease the font size by 8.
# \c[n] - Set the colour of the text being drawn to the nth colour of the
#     Windowskin palette. 0 is the normal color and 16 is the system color.
# \hc[RRGGBB] or \c[#RRGGBB] - Set the colour of the text being drawn to any
#     colour, using hexadecimal values. You can set each colour (red, green,
#     blue) to anything from 0-255 (00-FF). You must use hexadecimal values. If
#     so desired, you can add an additional hex value from 00-FF to change the
#     alpha.
# \b     - Turn bold on. Text drawn after this code will be bolded.
# /b     - Turn bold off.
# \i     - Turn italic on. Text drawn after this code will be italicized.
# /i     - Turn italic off.
# \o     - Turn outline on.
# /o     - Turn outline off.
# \s     - Turn shadow on. Text drawn after this code will have a shadow.
# /s     - Turn shadow off.
# \u     - Turn underline on. Text drawn after this code will be underlined.
# /u     - Turn underline off.
# \hl[n] - Turn highlight on. Text drawn after this code will be highlighted
#     with colour n + 1 from the windowskin palette
# /hl OR \hl[0] - Turn highlight off.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Message Control:
#
# \s[n] - Sets the message speed to wait n frames between drawing every letter.
#     0 is instant.
# \s[+n] - Sets the message speed to wait an additional n frames between drawing
#     every letter.
# \s[-n] - Sets the message speed to wait n less frames between drawing every
#     letter.
# \. - Wait 15 frames before drawing the next character
# \| - Wait 60 frames before drawing the next character
# \w[n] - Wait n frames before drawing the next character
# \! - Pause text and wait for player to press Enter
# \^ - Skip Pause; allows you to close a message window without requiring player
#     input.
# \> - Show line fast.
# \< - Stop showing line fast.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Replacement Codes:
#
# \p[n] - Draw the name of the actor in the xth position in the party. 1 is
#     the party leader, 2 is the second member, etc.
# \n[n] - Draw the name of the actor with ID n
# \nn[n] - Draw the nickname of the actor with ID n.
# \pid[n] - Draw the ID of the actor in the nth position in the party.
# \ac[n] - Draw the class name of the actor with ID n.
# \al[n] - Draw the level of the actor with ID n.
# \ni[n] - Draw the name of the item with ID n.
# \nw[n] - Draw the name of the weapon with ID n.
# \na[n] - Draw the name of the armor with ID n.
# \ns[n] - Draw the name of the skill with ID n.
# \nt[n] - Draw the name of the state with ID n.
# \nc[n] - Draw the name of the class with ID n.
# \ne[n] - Draw the name of the event with ID n on the current map.
# \nm[n] - Draw the name of the enemy with ID n.
# \nv[n] - Draw the name of the variable with ID n.
# \nsw[n] - Draw the name of the switch with ID n.
# \nl[n] - Draw the name of the element with ID n.
# \nwt[n] - Draw the name of the weapon type with ID n.
# \nat[n] - Draw the name of the armor type with ID n.
# \nst[n] - Draw the name of the skill type with ID n.
# \np[n] - Draw the name of the actor in the nth position in the party.
# \map   - Draw the name of the map the player is currently on.
# \map[n] - Draw the name of the map with ID n.
# \pg - Draws the amount of money the party has.
# \g - Draws the unit of currency.
# \vocab[method] - Will draw whatever Vocab.method returns, if it is a valid
#     method call. Suitable values for method are: level, level_a, hp, hp_a,
#     mp, mp_a, tp, tp_a, fight, escape, attack, guard, item, skill, equip,
#     status, formation, save, game_end, weapon, armor, key_item, equip2,
#     optimize, clear, new_game, continue, shutdown, to_title, cancel,
#     currency_unit
# \vocab[param, n] - Will draw the label for parameter with ID n. 0 => Max HP;
#     1 => Max MP; 2 => Attack; 3 => Defence; 4 => Magic; 5 => Magic Defence;
#     6 => Agility; 7 => Luck
# \vocab[etype, n] - Will draw the label for equipment type with ID n.
#     0 => Weapon; 1 => Shield; 2 => Head; 3 => Body; 4 => Accessory
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Other Effects:
#
# \$ - Opens a window which shows the party's gold.
# \n - line break
# \i[n] - Draw icon with index n.
# \ii[n] - Draw icon of the item with ID n.
# \iw[n] - Draw icon of the weapon with ID n.
# \ia[n] - Draw icon of the armor with ID n.
# \is[n] - Draw icon of the skill with ID n.
# \it[n] - Draw icon of the state with ID n.
# \x[n] - Draw next character at pixel n of the window contents.
# \s{n,text} - Will only draw text if the switch with ID n is ON.
# \s!{n,text} - Will only draw text if the switch with ID n is OFF.
# \#{code} - This will evaluate code. So, if you know scipting, you can place
#     any code there and it will draw whatever is returned by it. For instance:
#     \#{$game_system.save_count} would draw the number of times the player has
#     saved the current game.
#==============================================================================

$imported = {} unless $imported
$imported[:ATS_SpecialMessageCodes] = true

#==============================================================================
# ** Game_ATS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new public instance variables - message_speed; special_message_codes
#==============================================================================

class Game_ATS
  CONFIG = {} unless $imported[:AdvancedTextSystem]
  CONFIG[:special_message_codes] = {
    special_message_codes: true,
    #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    #  EDITABLE REGION
    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    #   :message_speed => x,
    #      Changing the value of x determines the default number of frames to
    #     wait between drawing letters in a message window. 0 is instant.
    :message_speed =>   1,
    #   :show_fast_speed => x
    #      Changing the value of x determines the number of frames to wait
    #     between drawing letters when the player is holding enter. 0 is
    #     instant
      :show_fast_speed => 0,
    # Font Settings - Set the default settings for the font you are using here.
    :font_name => Font.default_name,       # String or Array of Strings
    :font_size => Font.default_size,       # Integer
    :font_bold => Font.default_bold,       # true or false
    :font_italic => Font.default_italic,   # true or false
    :font_outline => Font.default_outline, # true or false
    :font_shadow => Font.default_shadow,   # true or false
    :font_underline => false,              # true or false
    :font_highlight => -1,                 # Integer for colour of highlight
    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    #  END EDITABLE REGION
    #////////////////////////////////////////////////////////////////////////
  }
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Public Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CONFIG[:special_message_codes].keys.each { |key| attr_accessor key }
end

#==============================================================================
#  Initialize Common ATS Data if no other ATS script interpreted first
#==============================================================================

if !$imported[:AdvancedTextSystem]
  #============================================================================
  # *** DataManager
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    aliased method - create_game_objects; make_save_contents;
  #      extract_save_contents
  #============================================================================
  module DataManager
    class << self
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Create Game Objects
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias modb_ats_crtgmobj_6yh7 create_game_objects
      def create_game_objects(*args, &block)
        modb_ats_crtgmobj_6yh7(*args, &block)
        $game_ats = Game_ATS.new
        $game_ats.init_new_installs
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Make Save Contents
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mlba_ats_mksave_5tg9 make_save_contents
      def make_save_contents(*args, &block)
        contents = mlba_ats_mksave_5tg9(*args, &block)
        contents[:ats] = $game_ats
        contents
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Extract Save Contents
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias ma_ats_extrcsvcon_8uj2 extract_save_contents
      def extract_save_contents(contents, *args, &block)
        ma_ats_extrcsvcon_8uj2(contents, *args, &block)
        $game_ats = contents[:ats] ? contents[:ats] : Game_ATS.new
        $game_ats.init_new_installs
      end
    end
  end
 
  #============================================================================
  # ** Game_ATS
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  This class holds the default data for all scripts in the ATS series
  #============================================================================
 
  class Game_ATS
    def initialize; reset; end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Reset any or all installed ATS scripts
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def reset(script_name = nil)
      if script_name.is_a? (Symbol) # If script to reset specified
        CONFIG[script_name].each_pair { |key, value|
          self.send("#{key}=".to_sym, value)
          $game_message.send("#{key}=".to_sym, value)
        }
      else                          # Reset all ATS scripts
        CONFIG.keys.each { |script| reset(script) }
      end
    end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Initialize any newly installed ATS scripts
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def init_new_installs
      CONFIG.keys.each { |script| reset(script) unless self.send(script) }
    end
  end
 
  #============================================================================
  # ** Game_Message
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    aliased method - clear
  #============================================================================
 
  class Game_Message
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Clear
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    alias mlb_ats_clrats_5tv1 clear
    def clear(*args, &block)
      mlb_ats_clrats_5tv1(*args, &block) # Run Original Method
      return if !$game_ats
      Game_ATS::CONFIG.values.each { |installed|
        installed.keys.each { |key| self.send("#{key}=".to_sym, $game_ats.send(key)) }
      }
    end
  end
 
  #============================================================================
  # ** Game_Interpreter
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    new methods - ats_all; ats_next
  #============================================================================
 
  class Game_Interpreter
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * ATS All
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def ats_all(sym, *args, &block)
      $game_ats.send("#{sym}=".to_sym, *args, &block)
      ats_next(sym, *args, &block)
    end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * ATS Next
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def ats_next(sym, *args, &block)
      $game_message.send("#{sym}=".to_sym, *args, &block)
    end
  end
end

$imported[:AdvancedTextSystem] = true

class Game_Message
  Game_ATS::CONFIG[:special_message_codes].keys.each { |key| attr_accessor key }
end

#==============================================================================
# ** Game_Event
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - name
#==============================================================================

class Game_Event
  def name
    return @event ? @event.name : ""
  end
end

#==============================================================================
# ** Window_Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - initialize; convert_escape_characters; calc_line_height;
#      process_escape_character; process_normal_character
#==============================================================================

class Window_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlgb_atssmc_init_3do9 initialize
  def initialize(*args, &block)
    mlgb_atssmc_init_3do9(*args, &block) # Run Original Method
    @underline = false
    @highlight = -1
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Convert Escape Characters
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_convesc_4rc1 convert_escape_characters
  def convert_escape_characters(text, *args, &block)
    result = ma_atssmc_convesc_4rc1(text, *args, &block) # Run Original Method
    # Party
    result.gsub!(/\ePID\[(\d+)\]/i) { $1.to_i >= 1 ? $game_party.members[$1.to_i - 1].id.to_s : "1" }
    result.gsub!(/\ePG/i) { $game_party.gold }
    # Message Speed
    result.gsub!(/\eS\[([\+-]?\d+)\]/i) { "\eMS\[#{$1}\]" }
    result.gsub!(/\e%/)             { "\eDS%"}
    # Hex Colour
    result.gsub!(/\eC\[#/i)         { "\eHC[" }
    # Icons
    result.gsub!(/\eII\[(\d+)\]/i)  { "\eI\[#{$data_items[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIW\[(\d+)\]/i)  { "\eI\[#{$data_weapons[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIA\[(\d+)\]/i)  { "\eI\[#{$data_armors[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIS\[(\d+)\]/i)  { "\eI\[#{$data_skills[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIT\[(\d+)\]/i)  { "\eI\[#{$data_states[$1.to_i].icon_index}\]" rescue "" }
    # Actor Stats
    result.gsub!(/\eAC\[(\d+)\]/i)  { $data_classes[$game_actors[$1.to_i].class_id].name }
    result.gsub!(/\eAL\[(\d+)\]/i)  { $game_actors[$1.to_i].level.to_s }
    # Names
    result.gsub!(/\eMAP\[(\d+)\]/i) { load_data(sprintf("Data/Map%03d.rvdata2", $1.to_i)).display_name rescue "" }
    result.gsub!(/\eMAP/i)          { $game_map.display_name rescue "" }
    result.gsub!(/\eNP\[(\d+)\]/i)  { $game_party.members[$1.to_i].name rescue "" }
    result.gsub!(/\eNE\[(\d+)\]/i)  { $game_map.events[$1.to_i].name rescue "" }
    result.gsub!(/\eNN\[(\d+)\]/i)  { $game_actors[$1.to_i].nickname rescue "" }
    result.gsub!(/\eNI\[(\d+)\]/i)  { $data_items[$1.to_i].name rescue "" }
    result.gsub!(/\eNW\[(\d+)\]/i)  { $data_weapons[$1.to_i].name rescue "" }
    result.gsub!(/\eNA\[(\d+)\]/i)  { $data_armors[$1.to_i].name rescue "" }
    result.gsub!(/\eNS\[(\d+)\]/i)  { $data_skills[$1.to_i].name rescue "" }
    result.gsub!(/\eNT\[(\d+)\]/i)  { $data_states[$1.to_i].name rescue "" }
    result.gsub!(/\eNM\[(\d+)\]/i)  { $data_enemies[$1.to_i].name rescue "" }
    result.gsub!(/\eNC\[(\d+)\]/i)  { $data_classes[$1.to_i].name rescue "" }
    result.gsub!(/\eNV\[(\d+)\]/i)  { $data_system.variables[$1.to_i] }
    result.gsub!(/\eNSW\[(\d+)\]/i) { $data_system.switches[$1.to_i] }
    result.gsub!(/\eNWT\[(\d+)\]/i) { $data_system.weapon_types[$1.to_i] }
    result.gsub!(/\eNAT\[(\d+)\]/i) { $data_system.armor_types[$1.to_i] }
    result.gsub!(/\eNST\[(\d+)\]/i) { $data_system.skill_types[$1.to_i] }
    result.gsub!(/\eNL\[(\d+)\]/i)  { $data_system.elements[$1.to_i] }
    # Vocab
    result.gsub!(/\eVOCAB\[(\w+),\s*(\d+)\s*\]/i) { Vocab.send($1.downcase, $2.to_i) rescue "" }
    result.gsub!(/\eVOCAB\[(\w+)\]/i) { Vocab.send($1.downcase) rescue "" }
    # Font Settings
    result.gsub!(/\eB/i)            { "\eFE[0]" } # Bold On
    result.gsub!(/\/B/i)            { "\eFE[1]" } # Bold Off
    result.gsub!(/\eI([^\[])/i)     { "\eFE[2]#{$1}" } # Italics On
    result.gsub!(/\/I/i)            { "\eFE[3]" } # Italics Off
    result.gsub!(/\eO/i)            { "\eFE[4]" } # Outline On
    result.gsub!(/\/O/i)            { "\eFE[5]" } # Outline Off
    result.gsub!(/\eS([^\[!])/i)    { "\eFE[6]#{$1}" } # Shadow On
    result.gsub!(/\/S/i)            { "\eFE[7]" } # Shadow Off
    result.gsub!(/\eU/i)            { "\eFE[8]" } # Underline On
    result.gsub!(/\/U/i)            { "\e\FE[9]" } # Underline Off
    result.gsub!(/\eHL\[(\d+)\]/i)  { "\eHL[#{$1.to_i}]" } # Highlight On: custom colour
    result.gsub!(/\eHL([^\[])/i)    { "\eHL[17]#{$1}" }# Highlight On: system colour
    result.gsub!(/\/HL/i)           { "\eHL[0]" } # Hightlight Off
    result.gsub!(/\/FN/i)           { "\eFN[]" }  # Default Font
    result.gsub!(/\/FS/i)           { "\eFS[#{Font.default_size}]" } # Default Font
    # Conditional Text
    result.gsub!(/\eS\[(\d+)[,;:](.+?)\]/mi) { $game_switches[$1.to_i] ? $2 : "" }
    result.gsub!(/\eS!\[(\d+)[,;:](.+?)\]/mi) { $game_switches[$1.to_i] ? "" : $2 }
    result.gsub!(/\eS\{(\d+)[,;:](.+?)\}/mi) { $game_switches[$1.to_i] ? $2 : "" }
    result.gsub!(/\eS!\{(\d+)[,;:](.+?)\}/mi) { $game_switches[$1.to_i] ? "" : $2 }
    # Evaluation
    result.gsub!(/\e#\{(.+?)\}/im)  { (eval($1)).to_s rescue "" }
    # Do resubstitutions if requested
    if result.sub!(/\eRESUB/i, "") != nil
      result = convert_escape_characters(result, *args, &block)
    end
    result.gsub!(/\e(N|LB)/i, "\n") # Line Break
    result # Return result
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Calculate Line Height
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_clclnhght_3ek9 calc_line_height
  def calc_line_height(text, *args, &block)
    res = ma_atssmc_clclnhght_3ek9(text, *args, &block) # Run Original Method
    text.slice(/^.*$/).scan(/\eFS\[(\d+)\]/i) { |num| res = [res, num[0].to_i].max }
    res
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process Normal Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlra_atssmc_procnorm_5fg2 process_normal_character
  def process_normal_character(c, pos, *args, &block)
    draw_highlight_underline(c, pos) if @underline || @highlight
    mlra_atssmc_procnorm_5fg2(c, pos, *args, &block) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process Escape Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_procesc_7gv1 process_escape_character
  def process_escape_character(code, text, pos, *args, &block)
    case code.upcase
    when 'X' then pos[:x] = obtain_escape_param(text)
    when 'HC' # Hex Colour
      hex = text.slice!(/^\[([ABCDEF\d]+)\]/i)
      rgb = $1.scan(/../).map { |hex| hex.to_i(16) }
      change_color(Color.new(*rgb)) if rgb.size.between?(3,4)
    when 'FE' # Font Settings
      param = obtain_escape_param(text)
      case param / 2
      when 0 then contents.font.bold = ((param % 2) == 0)     # Bold
      when 1 then contents.font.italic = ((param % 2) == 0)   # Italic
      when 2 then contents.font.outline = ((param % 2) == 0)  # Outline
      when 3 then contents.font.shadow = ((param % 2) == 0)   # Shadow
      when 4 then @underline = ((param % 2) == 0)             # Underline
      end
    when 'HL' then @highlight = obtain_escape_param(text) - 1 # Highlight
    when 'FN' # Font Name
      text.slice!(/^\[(.*?\])/)
      param = $1
      if param.nil? || param == ']'
        contents.font.name = Font.default_name
      else
        ary = []
        while param.slice!(/\s*(.+?)\s*[,;:\]]/) != nil do ary.push($1) end
        contents.font.name = ary
      end
    when 'FS' # Font Size
      text.slice!(/^\[(\d+)\]/)
      contents.font.size = [[$1.to_i, 16].max, 64].min
    else
      ma_atssmc_procesc_7gv1(code, text, pos, *args, &block) # Run Original Method
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Highlighting and Underlining
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_highlight_underline(c, pos)
    text_width = text_size(c).width
    y_space = (pos[:height] - contents.font.size) / 2
    if @underline      # Underlining
      y = pos[:y] + pos[:height]
      y -= [2, y_space].max
      contents.fill_rect(pos[:x], y, text_width, 2, contents.font.color)
    end
    if @highlight >= 0 # Highlighting
      y = pos[:y]
      y += y_space - 1 if y_space > 0
      text_height = [contents.font.size + 2, pos[:height]].min
      colour = text_color(@highlight)
      colour.alpha = 128 if colour.alpha > 128
      contents.fill_rect(pos[:x], y, text_width, text_height, colour)
    end
  end
end

#===============================================================================
# ** Window_Message
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - clear_instance_variables; process_escape_character;
#      update_show_fast; wait_for_one_character
#    overwritten super method - reset_font_settings
#===============================================================================

class Window_Message
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Clear Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_clrinsvar_3dq9 clear_instance_variables
  def clear_instance_variables(*args, &block)
    ma_atssmc_clrinsvar_3dq9(*args, &block) # Run Original Method
    @skip_disabled = false
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Reset Font Settings
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def reset_font_settings(*args, &block)
    change_color(normal_color)
    contents.font.name = $game_message.font_name
    contents.font.size = $game_message.font_size
    contents.font.bold = $game_message.font_bold
    contents.font.italic = $game_message.font_italic
    contents.font.outline = $game_message.font_outline
    contents.font.shadow = $game_message.font_shadow
    @underline = $game_message.font_underline
    @highlight = $game_message.font_highlight
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process Escape Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mnaa_atssmc_escchar_3dr9 process_escape_character
  def process_escape_character(code, text, pos, *args, &block)
    case code.upcase
    when 'MS' # Set Message Speed
      if !text[/^\[([+-])/].nil?
        text.sub!(/^\[([\+-])/, '[' )
        sign = $1
      else
        sign = ""
      end
      param = obtain_escape_param(text)
      sign.empty? ? $game_message.message_speed = param : $game_message.message_speed += "#{sign}#{param}".to_i
      when 'DS'
        text.slice!(/^%/) # Delete buffer to ensure code isn't overextended
        @skip_disabled = !@skip_disabled
      when 'W' then wait(obtain_escape_param(text))
    else
      mnaa_atssmc_escchar_3dr9(code, text, pos, *args, &block) # Run Original Method
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Update Show Fast
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlg_atssmc_updshwfast_7yb1 update_show_fast
  def update_show_fast(*args, &block)
    mlg_atssmc_updshwfast_7yb1(*args, &block)
    if $game_message.message_speed < 1
      @show_fast = true
    elsif @skip_disabled
      @show_fast = false
    elsif $game_message.show_fast_speed > 0
      @show_fast = Input.press?(:C)
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Wait for One Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mdrnl_smcats_waitonechar_5rf1 wait_for_one_character
  def wait_for_one_character(*args, &block)
    mdrnl_smcats_waitonechar_5rf1(*args, &block) # Run Original Method
    if (@show_fast || @line_show_fast) && $game_message.show_fast_speed > 0
      wait($game_message.show_fast_speed)
    elsif $game_message.message_speed > 1
      wait($game_message.message_speed - 1)
    end
  end
end

Credit



Support


Please post in this topic at RMRK for support.

Known Compatibility Issues

May not work with other message scripts which use the same codes for different functions.
Title: Re: [VXA] ATS: Special Message Codes 1.0
Post by: Adrien on December 11, 2011, 04:59:21 AM
you my good sir are what we call the second coming of jesus
Title: Re: [VXA] ATS: Special Message Codes 1.0a
Post by: Mushu on April 16, 2012, 05:01:17 AM
I can't live without Italics, it's something I must have.
Title: Re: [VXA] ATS: Special Message Codes 1.0a
Post by: Rave on June 28, 2012, 09:43:25 AM
Awesome! Few ideas:
1) Could you add to conditional text possibility to  evaluate variables? E.g. \var[ID,expr,val,text] - draws text only when variable conforms to specific value. Expr can be =,>,<,<=,>=, example "\var[64,>=,15,You got 15 or more fish!]" will draw text "You got 15 or more fish!" only when variable 64 is greater or equal to 15.

Also, could you add possibility to draw Picture from pictures folder inside message? E.g. \pic[box] would draw picture box inside message. I know we have icons, but 1 - icons are limited, 2 - sometimes you want to draw something bigger than 32x32 picture.

And a question: Can we in conditional text use codes, e.g. \s[32,Switch 32 is on. \c[10]I like red!]? If not, thqat would be cool to have.

//edit: Also it seems like code /o isn't processed.

Text in message command:
/o \fs[72]THUD!
(http://i.imgur.com/zfKXP.png)

Script addition order:
ATS Formatting
ATS Special message codes <- this one
I don't have any other scripts yet.

Also additional idea: How about /dfs command? It would set default font size for messages if no \fs or \{/\} commands are called. This way, if we want to have, say 48 font size thorough game we won't have to call \fs every single message.
Title: Re: [VXA] ATS: Special Message Codes 1.0a
Post by: modern algebra on June 29, 2012, 03:49:55 AM
1) I don't want to do that since there are already ways to achieve that effect which are far more flexible. Namely, you could instead just put a conditional branch immediately preceding the text that sets a switch to the value, then just use the switch. Ie:

@>Conditional Branch: Variable [64: Fish] >= 15
  @>Control Switch: [32: Switch] = ON
 : Else
  @>Control Switch: [32: Switch] = OFF
END
@>Text:\s[32,You got \v[64] fish!]

2) I don't want to add that feature.

3) Kind of, but mostly not. You can use it for most replacement codes - things like \v[64], for instance - but you wouldn't be able to do it for the codes that affect the way text is drawn, like \c[n], or \b, \i, \fs[n], etc. I can add that feature though.

4) I don't think that would be useful as a message code, but I could add it in as an ats_all() script call.
Title: Re: [VXA] ATS: Special Message Codes 1.0a
Post by: Wiimeiser on June 29, 2012, 10:01:40 AM
1) I don't want to do that since there are already ways to achieve that effect which are far more flexible. Namely, you could instead just put a conditional branch immediately preceding the text that sets a switch to the value, then just use the switch. Ie:

@>Conditional Branch: Variable [64: Fish] >= 15
  @>Control Switch: [32: Switch] = ON
 : Else
  @>Control Switch: [32: Switch] = OFF
END
@>Text:\s[32,You got \v[64] fish!]
From my experience the text box disappears when you call a conditional branch...
Title: Re: [VXA] ATS: Special Message Codes 1.0a
Post by: modern algebra on June 29, 2012, 02:15:56 PM
I'm not sure what you mean. As in the example, you would do the conditional branch and set the switch before calling the text box.
Title: Re: [VXA] ATS: Special Message Codes 1.0a
Post by: Wiimeiser on June 29, 2012, 04:13:16 PM
What I meant was if you use it in between two text boxes, the text box disappears and reappears again, so if you want text preceding that message... A few other things do this as well, I believe
Title: Re: [VXA] ATS: Special Message Codes 1.0a
Post by: modern algebra on June 29, 2012, 08:43:21 PM
Then do the conditional branch before the first text box. It is intentional that text between boxes will only be appended if it directly succeeds the first text box. I do not see that as a problem.
Title: Re: [VXA] ATS: Special Message Codes 1.0.4
Post by: wsensor on August 20, 2012, 10:31:45 PM
Can this be used to drawn the name of the target being attacked?

Like under the Skill menu where it says uses/casts/does/attacks?
And if so how would one do that or would it require a different script?
Title: Re: [VXA] ATS: Special Message Codes 1.0.4
Post by: modern algebra on August 22, 2012, 12:56:53 AM
No, it can't. It seems like a good idea, but I wouldn't include it with this script since it actually is a little different.

I might write an independent script for it though. How would you want it to deal with multiple targets? Ie. Let's say, for now that the script is written so that \t is replaced by the name of the target and the message you have is:

(User name) casts Skill on \t!  I

f the scope is something like "3 random enemies", how should the names of the enemies chosen come up?
Title: Re: [VXA] ATS: Special Message Codes 1.0.4
Post by: wsensor on August 22, 2012, 08:24:17 PM
I'm not sure on that. I was looking for a way to display a targets name but I never thought about multiple targets.
Title: Re: [VXA] ATS: Special Message Codes 1.0.4
Post by: Sharpe on September 28, 2012, 10:06:59 PM
Yanfly's scripts are awesome, but you are the master of VXA message boxes. Thanks a lot.

If this showed actor faces, I would uninstall Yanfly's. If you ever consider adding that feature, please consider making it \af[n].

Thanks again!
Title: Bug report Re: [VXA] ATS: Special Message Codes 1.0.4
Post by: Jothanos on October 07, 2012, 06:17:37 PM
I just ran into a bug with the \np[n] code to show the name of a party member in a specific position.  Instead of displaying the name it just shows "p[1]" for \np[1], or "p[2]" for \np[2].  I tried this in a separate project by itself and got the same effect.
Title: Re: [VXA] ATS: Special Message Codes 1.0.5
Post by: modern algebra on October 07, 2012, 06:31:35 PM
Hmm, I appear to have neglected to add that code to the script. I updated the script to version 1.0.5 - you can get it from the original post.
Title: Re: [VXA] ATS: Special Message Codes 1.0.5
Post by: Jothanos on October 10, 2012, 12:06:57 PM
Thanks, that fixed it!
Title: Re: [VXA] ATS: Special Message Codes 1.0.5
Post by: modern algebra on October 10, 2012, 09:40:05 PM
I'm glad I could help.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on October 18, 2012, 08:50:22 PM
Updated to version 1.0.6 to allow for setting the font settings through script call prior to the message itself.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: seltaire on October 18, 2012, 09:07:17 PM
Wow thanks for this.

Hm, is there a way to change the default font, outline and shadow settings within the script itself?
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on October 18, 2012, 09:48:00 PM
Yes. At lines 196-205 you should see this:

Code: [Select]
    # Font Settings - Set the default settings for the font you are using here.
    :font_name => Font.default_name,       # String or Array of Strings
    :font_size => Font.default_size,       # Integer
    :font_bold => Font.default_bold,       # true or false
    :font_italic => Font.default_italic,   # true or false
    :font_outline => Font.default_outline, # true or false
    :font_shadow => Font.default_shadow,   # true or false
    :font_underline => false,              # true or false
    :font_highlight => -1,                 # Integer for colour of highlight

Just set them to the values you want. Ie. If you want the default font name to be Times New Roman, then set:

Code: [Select]
    :font_name => "Times New Roman",       # String or Array of Strings

If you want to change the default font at some point in the course of the game, then you would use the ats_all method in an Evaluate Script event command, like so:

Code: [Select]
ats_all(:font_name, "Arial")
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: Bradoki2 on October 19, 2012, 08:58:54 PM
Not good idea,
I want to put
Instruction

Code: [Select]
-----------------------------------------------------------------------------------------------
#FONT INSTRUCTION
-----------------------------------------------------------------------------------------------
#/fn[x] - open font, (fn)font name is for required. X supposed to be any font with font names
#\fn - close font
#/s[x] - open size, x supposed to be any number.
#\s - go back to normal.
#/i - italic, to make word italic
#\i - close italic, words go back normal
#/b - bold, to make word  bold
#\b - close bold, words go back to normal
#/out - outline, to make the words outline
#\out - close outline, word go back to normal
Sorry for my bad english
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on October 19, 2012, 09:13:15 PM
Well, I don't really see the benefit of just reversing the slashes, especially since the current configuration more closely resembles the default codes. However, you could certainly change it for your own purposes by finding the following section of the script:

Code: [Select]

    # Font Settings
    result.gsub!(/\eB/i)            { "\eFE[0]" } # Bold On
    result.gsub!(/\/B/i)            { "\eFE[1]" } # Bold Off
    result.gsub!(/\eI([^\[])/i)     { "\eFE[2]#{$1}" } # Italics On
    result.gsub!(/\/I/i)            { "\eFE[3]" } # Italics Off
    result.gsub!(/\eO/i)            { "\eFE[4]" } # Outline On
    result.gsub!(/\/O/i)            { "\eFE[5]" } # Outline Off
    result.gsub!(/\eS([^\[!])/i)    { "\eFE[6]#{$1}" } # Shadow On
    result.gsub!(/\/S/i)            { "\eFE[7]" } # Shadow Off
    result.gsub!(/\eU/i)            { "\eFE[8]" } # Underline On
    result.gsub!(/\/U/i)            { "\e\FE[9]" } # Underline Off
    result.gsub!(/\eHL\[(\d+)\]/i)  { "\eHL[#{$1.to_i}]" } # Highlight On: custom colour
    result.gsub!(/\eHL([^\[])/i)    { "\eHL[17]#{$1}" }# Highlight On: system colour
    result.gsub!(/\/HL/i)           { "\eHL[0]" } # Hightlight Off
    result.gsub!(/\/FN/i)           { "\eFN[]" }  # Default Font
    result.gsub!(/\/FS/i)           { "\eFS[#{Font.default_size}]" } # Default Font
    # Font Settings
    result.gsub!(/\eB/i)            { "\eFE[0]" } # Bold On
    result.gsub!(/\/B/i)            { "\eFE[1]" } # Bold Off
    result.gsub!(/\eI([^\[])/i)     { "\eFE[2]#{$1}" } # Italics On
    result.gsub!(/\/I/i)            { "\eFE[3]" } # Italics Off
    result.gsub!(/\eO/i)            { "\eFE[4]" } # Outline On
    result.gsub!(/\/O/i)            { "\eFE[5]" } # Outline Off
    result.gsub!(/\eS([^\[!])/i)    { "\eFE[6]#{$1}" } # Shadow On
    result.gsub!(/\/S/i)            { "\eFE[7]" } # Shadow Off
    result.gsub!(/\eU/i)            { "\eFE[8]" } # Underline On
    result.gsub!(/\/U/i)            { "\e\FE[9]" } # Underline Off
    result.gsub!(/\eHL\[(\d+)\]/i)  { "\eHL[#{$1.to_i}]" } # Highlight On: custom colour
    result.gsub!(/\eHL([^\[])/i)    { "\eHL[17]#{$1}" }# Highlight On: system colour
    result.gsub!(/\/HL/i)           { "\eHL[0]" } # Hightlight Off
    result.gsub!(/\/FN/i)           { "\eFN[]" }  # Default Font
    result.gsub!(/\/FS/i)           { "\eFS[#{Font.default_size}]" } # Default Font

and by switching the \e with the \/
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: Bradoki2 on October 19, 2012, 10:42:01 PM
Thanks..........
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on October 20, 2012, 02:52:59 PM
Sorry, I guess I should be a little more clear. If, for instance, you want to change it so /b turns bold on and \b turns it off, you would look at these two lines:

Code: [Select]
    result.gsub!(/\eB/i)            { "\eFE[0]" } # Bold On
    result.gsub!(/\/B/i)            { "\eFE[1]" } # Bold Off

And change it to:

Code: [Select]
    result.gsub!(/\/B/i)            { "\eFE[0]" } # Bold On
    result.gsub!(/\eB/i)            { "\eFE[1]" } # Bold Off

In my opinion though, I am not really sure there is much utility to changing all these lines - why not just use it the way it is? '\bThis is bold/b' is not any harder to type than '/bThis is bold\b'
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: Modern Lost on October 22, 2012, 09:12:55 AM
MA, So cool man. I love you awesome scriptwriter.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: Bradoki2 on October 23, 2012, 04:57:34 AM
Can I do a demo for you, Modern Algebra
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on October 23, 2012, 09:00:43 PM
Thanks for the offer, but no.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: rpgkain on November 14, 2012, 11:26:12 AM
Hi great script.

I´m missing..

Quote
\#!{code}# - This will evaluate code at the time the window reaches this code
#         when drawing. It does not put the result of the code into the message
#         but is instead intended to be evaluated. For instance: \#!{new_page}#
#         would perform the same function as \pb. You need to know syntax!

, from your old script, is there any other way to use code in textboxes in Ace?, not only displaying the value of an switch or something...
Or are you going to add such a feature soon.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on November 14, 2012, 11:42:58 AM
That's still a feature in this script. It is just:

Code: [Select]
# \#{code} - This will evaluate code. So, if you know scipting, you can place
#     any code there and it will draw whatever is returned by it. For instance:
#     \#{$game_system.save_count} would draw the number of times the player has
#     saved the current game.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: rpgkain on November 14, 2012, 12:01:37 PM
But it shows the result in the box.

Example: text text text \#{$game_switches[70] = true} (<--Switch 70 on to show a picture / activate an event in the right moment) text....

The textbox writes "text text text true text"

There apears a "true" in the Text.

Your old VX script had the \#{code}# and the \#!{code}# possibilities, the \#!{code}# worked fine for this problem.

Sry for my bad english or if i did any mistakes =)
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on November 15, 2012, 01:33:25 AM
Ah, sorry, I guess I forgot about that feature. I will add it at some point.

Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: linktoot@gmail.com on November 20, 2012, 03:21:21 PM
Will you consider adding in an option to change the outline color? Yanfly's messaging system has it, and it's nice to highlight words with outlines. It looks nice. :ladyj:
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: Arrow on June 06, 2013, 06:26:31 AM
Time for a delicious necropost...

Modern. One of the features you had in a previous version of your ATS, for use with VX, was the ability to play a sound with an in-text command. I was about to do this myself, but I figure it would be better to ask you to do it first before attempting a kludge. Seems more... reliable of an option.

Something like:

\snd["soundname"]
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: modern algebra on June 07, 2013, 12:53:36 AM
Hey Arrow!

I sort of messed around with the formatting of the scripts and divided them by features. Sound effect-based features are in the Message Options (http://rmrk.net/index.php/topic,46770.0.html) script.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: Arrow on June 07, 2013, 01:25:04 AM
I'm an idiot. I installed that very script and missed the feature entirely. Probably because I was looking for the word "Sound" instead of "SE" because I haven't touched RPG Maker in "years" and thank you for addressing the issue courteously.

Once again, your work is fantastic.
Title: Re: [VXA] ATS: Special Message Codes 1.0.6
Post by: FDSuprema on May 11, 2015, 12:15:33 PM
Huge necropost, first post of mine here too, so sorry and stuff, but I noticed something when playing around with this message system. With the \#{} code evaluator bit, I noticed it's impossible for you to actually evaluate any extra message codes from what that value returns. This would be extremely useful for users who, say, want to use an external file to hold dialogue. This can be remedied with a single recursive call wrapped around what the code tag returns(I tested it, so I'm 100% sure it works.)

So basically changing the line in the method convert_escape_characters which reads "(eval($1)).to_s" to say "convert_escape_characters((eval($1)).to_s, *args, &block)" instead.

Sorry if I'm out of line or anything like that, but I discovered this and wanted to make sure others could benefit from it. This is a great script set, probably one of the best message system overhauls I've seen. Again, sorry for the necropost!