Jump to content

Recommended Posts

#==============================================================================
# ** dbchest's MenuStatus v2.0
#==============================================================================
# ** Credits (Freeware)
#------------------------------------------------------------------------------
#  a list of credits for those involved in the production of said script.
# you are not required to credit special mentions; you are however, fully
# responsible for proper accreditations of those directly involved in this
# work's production as follows:
#------------------------------------------------------------------------------
#  programmer: dbchest (none required, always appreciated)
#  special thanks: Riff, Acebent, Tsukihime
#==============================================================================
# ** Details
#------------------------------------------------------------------------------
#  dbchest's Menu Status is an aesthetic enhancement to the engine's default
# menu status display. introducing this script to your project will not affect
# gameplay directly; the only visual modifications will be to the menu status.
#==============================================================================
# ** Features
#------------------------------------------------------------------------------
#  four presets displays to choose from
#   - two alignments to choose from (traditional, staggered)
#    - traditional layout featured in presets :a, :c
#    - staggered layout featured in presets :b, 
#  select whether to display actor face graphics
#   - actor face graphics featured in presets :c, 
#  select whether to display animated characters
#   - animated characters featured in presets :c, 
#  select whether to display class icons
#   - class icons (depicted by weapon) featured in presets :c, 
#  all presets include an "experience to next level" rate gauge
#  all presets include a "current level - max level" rate gauge
#==============================================================================
# ** Installation Instructions (Some Assembly May Be Required)
#------------------------------------------------------------------------------
#  paste script in "Materials" section of the script editor.
#  no known compatibility issues.
#  no foreign script requirements.
#------------------------------------------------------------------------------
#  If choosing to display preset :c, preset ; class icons will be displayed
# displayed by default. jump to line "82" of the MSManager to configure the
# icon indexes for these class icons.
#==============================================================================
# ** Author's Notes
#------------------------------------------------------------------------------
#  for error reporting and / or suggestions, please post in the script's
# official thread or contact me directly via personal message at
# rpgmakervxace.net
#==============================================================================
# ** What's Next?
#------------------------------------------------------------------------------
#  allow developers to design their own layout using all available features.
#==============================================================================

Playable Demo:

https://www.dropbox.com/s/ocrwfn6xxiadcoj/dbchest%27s%20MenuStatus%20v2.0.exe?dl=0

 

 

 

#==============================================================================
# ** dbchest's MenuStatus v2.0
#==============================================================================
# ** Credits (Freeware)
#------------------------------------------------------------------------------
#  a list of credits for those involved in the production of said script.
# you are not required to credit special mentions; you are however, fully
# responsible for proper accreditations of those directly involved in this
# work's production as follows:
#------------------------------------------------------------------------------
#  programmer: dbchest (none required, always appreciated)
#  special thanks: Riff, Acebent, Tsukihime
#==============================================================================
# ** Details
#------------------------------------------------------------------------------
#  dbchest's Menu Status is an aesthetic enhancement to the engine's default
# menu status display. introducing this script to your project will not affect
# gameplay directly; the only visual modifications will be to the menu status.
#==============================================================================
# ** Features
#------------------------------------------------------------------------------
#  four presets displays to choose from
#   - two alignments to choose from (traditional, staggered)
#    - traditional layout featured in presets :a, :c
#    - staggered layout featured in presets :b, 
#  select whether to display actor face graphics
#   - actor face graphics featured in presets :c, 
#  select whether to display animated characters
#   - animated characters featured in presets :c, 
#  select whether to display class icons
#   - class icons (depicted by weapon) featured in presets :c, 
#  all presets include an "experience to next level" rate gauge
#  all presets include a "current level - max level" rate gauge
#==============================================================================
# ** Installation Instructions (Some Assembly May Be Required)
#------------------------------------------------------------------------------
#  paste script in "Materials" section of the script editor.
#  no known compatibility issues.
#  no foreign script requirements.
#------------------------------------------------------------------------------
#  If choosing to display preset :c, preset ; class icons will be displayed
# displayed by default. jump to line "82" of the MSManager to configure the
# icon indexes for these class icons.
#==============================================================================
# ** Author's Notes
#------------------------------------------------------------------------------
#  for error reporting and / or suggestions, please post in the script's
# official thread or contact me directly via personal message at
# rpgmakervxace.net
#==============================================================================
# ** What's Next?
#------------------------------------------------------------------------------
#  allow developers to design their own layout using all available features.
#==============================================================================

#==============================================================================
# ** MSManager
#------------------------------------------------------------------------------
#  This module manages the configuration for MenuStatus display.
#==============================================================================

module MSManager
  #--------------------------------------------------------------------------
  # * Constant (Config)
  #--------------------------------------------------------------------------
  DEFAULT_DISPLAY  = :preset_a
  SHOW_STATE_ICONS = true
  #--------------------------------------------------------------------------
  # * Hash Table (Display Preset)
  #--------------------------------------------------------------------------
  PRESET = {:preset_a => 0,
            :preset_b => 1,
            :preset_c => 2,
            :preset_d => 3}
  #--------------------------------------------------------------------------
  # * Hash Table (Class Icons)
  #--------------------------------------------------------------------------
  CLASS_ICONS = {:default     => 115,
                 "Soldier"    => 144,
                 "Monk"       => 145,
                 "Paladin"    => 146,
                 "Spellblade" => 147}          
  #--------------------------------------------------------------------------
  # * Get Display Preset
  #--------------------------------------------------------------------------
  def self.get_preset
    return $game_system.menu_status_display_preset
  end
  #--------------------------------------------------------------------------
  # * Set Display Preset
  #--------------------------------------------------------------------------
  def self.set_preset(preset)
    $game_system.menu_status_display_preset = PRESET[preset]
  end
  #--------------------------------------------------------------------------
  # * Get Icon Index (Class Icons)
  #--------------------------------------------------------------------------
  def self.get_icon_index(actor)
    CLASS_ICONS.each do |class_name, icon_index|
      return icon_index if actor.class.name == class_name
    end
  end
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system data. It saves the disable state of saving and 
# menus. Instances of this class are referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Include MSManager Module
  #--------------------------------------------------------------------------
  include MSManager
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :menu_status_display_preset      # menu status display preset
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias init_menu_status_display_preset initialize
  def initialize
    init_menu_status_display_preset
    @menu_status_display_preset = PRESET[DEFAULT_DISPLAY]
  end
end

#==============================================================================
# ** Game_BattlerBase
#------------------------------------------------------------------------------
#  This base class handles battlers. It mainly contains methods for calculating
#  parameters. It is used as a super class of the Game_Battler class.
#==============================================================================

class Game_BattlerBase
  #---------------------------------------------------------------------------
  # * Get Percentage of LVL
  #---------------------------------------------------------------------------
  def lvl_rate
    @level.to_f / max_level
  end
  #---------------------------------------------------------------------------
  # * Get Percentage of EXP
  #---------------------------------------------------------------------------
  def exp_rate
    equation1 = (exp.to_f - current_level_exp.to_f)
    equation2 = (next_level_exp.to_f - current_level_exp.to_f)
    equation1 / equation2
  end
end

#==============================================================================
# ** Window_MenuStatus 
#------------------------------------------------------------------------------
#  This window displays party member status on the menu screen.
#==============================================================================

class Window_MenuStatus < Window_Selectable
  #---------------------------------------------------------------------------
  # * Include MSManager Module
  #---------------------------------------------------------------------------
  include MSManager
  #---------------------------------------------------------------------------
  # * Draw Level (:preset_a and :preset_
  #---------------------------------------------------------------------------
  def draw_actor_level_ab(actor, x, y, width = 124, rate = actor.lvl_rate)
    draw_gauge(x, y, width, rate, text_color(17), text_color(6))
    change_color(system_color)
    draw_text(x, y, 32, line_height, Vocab::level_a)
    change_color(normal_color)
    draw_text(x + 100, y, 24, line_height, actor.level, 2)
  end
  #---------------------------------------------------------------------------
  # * Draw Level (:preset_c and :preset_d)
  #---------------------------------------------------------------------------
  def draw_actor_level_cd(actor, x, y, width = 100, rate = actor.lvl_rate)
    draw_gauge(x, y, width, rate, text_color(17), text_color(6))
    change_color(system_color)
    draw_text(x, y, 32, line_height, Vocab::level_a)
    change_color(normal_color)
    ms_make_font_smaller
    draw_text(x + 84, y, 24, line_height, actor.level, 2)
    ms_make_font_bigger
  end
  #---------------------------------------------------------------------------
  # * Draw Next Level (:preset_a and :preset_
  #---------------------------------------------------------------------------
  def draw_actor_nxtlevel_ab(actor, x, y, width = 124, rate = actor.exp_rate)
    next_level = actor.next_level_exp - actor.exp
    draw_gauge(x, y, width, rate, text_color(11), text_color(3))
    change_color(system_color)
    draw_text(x, y, 48, line_height, "NEXT")
    change_color(normal_color)
    draw_text(x + 64, y, 60, line_height, next_level, 2)
  end
  #---------------------------------------------------------------------------
  # * Draw Next Level (:preset_c and :preset_d)
  #---------------------------------------------------------------------------
  def draw_actor_nxtlevel_cd(actor, x, y, width = 100, rate = actor.exp_rate)
    next_level = actor.next_level_exp - actor.exp
    draw_gauge(x, y, width, rate, text_color(11), text_color(3))
    change_color(system_color)
    draw_text(x, y, 48, line_height, "NEXT")
    change_color(normal_color)
    ms_make_font_smaller
    draw_text(x + 48, y, 60, line_height, next_level, 2)
    ms_make_font_bigger
  end
  #---------------------------------------------------------------------------
  # * Draw Max Level (:preset_a and :preset_
  #---------------------------------------------------------------------------
  def draw_actor_maxlevel_ab(actor, x, y, width = 124, rate = 1.0)
    draw_gauge(x, y, width, rate, text_color(11), text_color(3))
    change_color(system_color)
    draw_text(x, y, 48, line_height, "MAX")
  end
  #---------------------------------------------------------------------------
  # * Draw Max Level (:preset_c and :preset_d)
  #---------------------------------------------------------------------------
  def draw_actor_maxlevel_cd(actor, x, y, width = 100, rate = 1.0)
    draw_gauge(x, y, width, rate, text_color(11), text_color(3))
    change_color(system_color)
    draw_text(x, y, 48, line_height, "MAX")
  end
  #--------------------------------------------------------------------------
  # * Draw HP (:preset_c and :preset_d)
  #--------------------------------------------------------------------------
  def draw_actor_hp_cd(actor, x, y, width = 100, rate = actor.hp_rate)
    draw_gauge(x, y, width, rate, hp_gauge_color1, hp_gauge_color2)
    change_color(system_color)
    draw_text(x, y, 30, line_height, Vocab::hp_a)
    ms_make_font_smaller
    ms_draw_current_and_max_values(x + 4, y, width, actor.hp, actor.mhp,
      hp_color(actor), normal_color)
    ms_make_font_bigger
  end
  #--------------------------------------------------------------------------
  # * Draw MP (:preset_c and :preset_d)
  #--------------------------------------------------------------------------
  def draw_actor_mp_cd(actor, x, y, width = 100, rate = actor.mp_rate)
    draw_gauge(x, y, width, rate, mp_gauge_color1, mp_gauge_color2)
    change_color(system_color)
    draw_text(x, y, 30, line_height, Vocab::mp_a)
    ms_make_font_smaller
    ms_draw_current_and_max_values(x + 4, y, width, actor.mp, actor.mmp,
      mp_color(actor), normal_color)
    ms_make_font_bigger
  end
  #--------------------------------------------------------------------------
  # * Draw Current Value/Maximum Value in Fractional Format
  #--------------------------------------------------------------------------
  def ms_draw_current_and_max_values(x, y, width, current, max, color1, color2)
    change_color(color1)
    xr = x + width
    if width < 96
      draw_text(xr - 40 + 4, y, 42, line_height, current, 2)
    else
      draw_text(xr - 90 + 4, y, 42, line_height, current, 2)
      change_color(color2)
      draw_text(xr - 44, y, 12, line_height, "/", 2)
      draw_text(xr - 42 + 4, y, 42, line_height, max, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Increase Font Size
  #--------------------------------------------------------------------------
  def ms_make_font_bigger
    contents.font.size += 2 if contents.font.size <= 64
  end
  #--------------------------------------------------------------------------
  # * Decrease Font Size
  #--------------------------------------------------------------------------
  def ms_make_font_smaller
    contents.font.size -= 2 if contents.font.size >= 16
  end
  #---------------------------------------------------------------------------
  # * Draw Item
  #---------------------------------------------------------------------------
  def draw_item(index)
    actor = $game_party.members[index]
    enabled = $game_party.battle_members.include?(actor)
    rect = item_rect(index)
    draw_item_background(index)
    preset = MSManager.get_preset
    case preset
    when 0
      x = rect.x + standard_padding
      y = rect.y + standard_padding
      draw_actor_simple_status_preset_a(actor, x, y)
    when 1
      x = rect.x + standard_padding
      y = rect.y + standard_padding
      draw_actor_simple_status_preset_b(actor, x, y)
    when 2
      x = rect.x + 1
      y = rect.y + 1
      draw_actor_face(actor, x, y, enabled)
      x = rect.x + standard_padding
      y = rect.y + standard_padding
      draw_actor_simple_status_preset_c(actor, x, y)
    when 3
      x = rect.x + 1
      y = rect.y + 1
      draw_actor_face(actor, x, y, enabled)
      x = rect.x + standard_padding
      y = rect.y + standard_padding
      draw_actor_simple_status_preset_d(actor, x, y)
    end
  end
  #---------------------------------------------------------------------------
  # * Draw Simple Status (:preset_a)
  #---------------------------------------------------------------------------
  def draw_actor_simple_status_preset_a(actor, x, y)
    adjust_x = x + standard_padding * 2
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_name(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_hp(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    draw_actor_mp(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 188
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_class(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_level_ab(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    if actor.max_level?
      draw_actor_maxlevel_ab(actor, adjust_x, adjust_y)
    else
      draw_actor_nxtlevel_ab(actor, adjust_x, adjust_y)
    end
    #---------------------------------------------------------------
    return if !SHOW_STATE_ICONS
    adjust_x = x + standard_padding * 2
    adjust_y = y + line_height * 3 - standard_padding
    draw_actor_icons(actor, adjust_x, adjust_y)
  end
  #---------------------------------------------------------------------------
  # * Draw Simple Status (:preset_
  #---------------------------------------------------------------------------
  def draw_actor_simple_status_preset_b(actor, x, y)
    adjust_x = x + standard_padding
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_name(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + standard_padding * 2
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_hp(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + standard_padding * 3
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    draw_actor_mp(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 188 - standard_padding
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_class(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 188
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_level_ab(actor,adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 188 + standard_padding
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    if actor.max_level?
      draw_actor_maxlevel_ab(actor, adjust_x, adjust_y)
    else
      draw_actor_nxtlevel_ab(actor, adjust_x, adjust_y)
    end
    #---------------------------------------------------------------
    return if !SHOW_STATE_ICONS
    adjust_x = x + standard_padding * 4
    adjust_y = y + line_height * 3 - standard_padding
    draw_actor_icons(actor, adjust_x, adjust_y)
  end
  #---------------------------------------------------------------------------
  # * Draw Simple Status (:preset_c)
  #---------------------------------------------------------------------------
  def draw_actor_simple_status_preset_c(actor, x, y)
    icon_index = MSManager.get_icon_index(actor)
    icon_x = x + 85 - standard_padding
    icon_y = y + line_height * 2 - standard_padding * 2
    draw_icon(icon_index, icon_x, icon_y, true)
    #---------------------------------------------------------------
    adjust_x = x + 85 + standard_padding + 4
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_name(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_hp_cd(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    draw_actor_mp_cd(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 85 + 140
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_class(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_level_cd(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    if actor.max_level?
      draw_actor_maxlevel_cd(actor, adjust_x, adjust_y)
    else
      draw_actor_nxtlevel_cd(actor, adjust_x, adjust_y)
    end
    #---------------------------------------------------------------
    return if !SHOW_STATE_ICONS
    adjust_x = x + 85 + standard_padding + 4
    adjust_y = y + line_height * 3 - standard_padding
    draw_actor_icons(actor, adjust_x, adjust_y)
  end
  #---------------------------------------------------------------------------
  # * Draw Simple Status (:preset_d)
  #---------------------------------------------------------------------------
  def draw_actor_simple_status_preset_d(actor, x, y)
    icon_index = MSManager.get_icon_index(actor)
    icon_x = x + 85 - standard_padding
    icon_y = y + line_height * 2 - standard_padding * 2
    draw_icon(icon_index, icon_x, icon_y, true)
    #---------------------------------------------------------------
    adjust_x = x + 85 + 4
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_name(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 85 + standard_padding + 4
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_hp_cd(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 85 + standard_padding * 2 + 4
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    draw_actor_mp_cd(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 85 + 128
    if !SHOW_STATE_ICONS
      adjust_y = y - 2
    else
      adjust_y = y - standard_padding - 2
    end
    draw_actor_class(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 85 + 140
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height - 4
    else
      adjust_y = y + line_height - standard_padding - 4
    end
    draw_actor_level_cd(actor, adjust_x, adjust_y)
    #---------------------------------------------------------------
    adjust_x = x + 85 + 152
    if !SHOW_STATE_ICONS
      adjust_y = y + line_height * 2 - 4
    else
      adjust_y = y + line_height * 2 - standard_padding - 4
    end
    if actor.max_level?
      draw_actor_maxlevel_cd(actor, adjust_x, adjust_y)
    else
      draw_actor_nxtlevel_cd(actor, adjust_x, adjust_y)
    end
    #---------------------------------------------------------------
    return if !SHOW_STATE_ICONS
    adjust_x = x + 85 + standard_padding * 3 + 4
    adjust_y = y + line_height * 3 - standard_padding
    draw_actor_icons(actor, adjust_x, adjust_y)
  end
end

#==============================================================================
# ** Window_ActorAnime
#------------------------------------------------------------------------------
#  This window displays a "stepping animation" for each actor displayed in the
# menu status.
#==============================================================================

class Window_ActorAnime < Window_Selectable
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :pending_index            # Pending position (for formation)
  attr_accessor :frame                    # Current Frame
  attr_accessor :anime_pose               # Current Pose
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, window_width, window_height)
    @pending_index = -1
    @frame = 0
    @anime_pose = 0
    self.opacity = 0 
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width - 160
  end
  #--------------------------------------------------------------------------
  # * Get Window Height
  #--------------------------------------------------------------------------
  def window_height
    Graphics.height
  end
  #--------------------------------------------------------------------------
  # * Get Number of Items
  #--------------------------------------------------------------------------
  def item_max
    $game_party.members.size
  end
  #--------------------------------------------------------------------------
  # * Get Item Height
  #--------------------------------------------------------------------------
  def item_height
    (height - standard_padding * 2) / 4
  end
  #--------------------------------------------------------------------------
  # * Draw Character Graphic
  #--------------------------------------------------------------------------
  def draw_character(character_name, character_index, x, y)
    return unless character_name
    bitmap = Cache.character(character_name)
    sign = character_name[/^[\!\$]./]
    if sign && sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
    end
    n = character_index
    case @anime_pose
    when 0 ; src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
    when 1 ; src_rect = Rect.new((n%4*3)*cw, (n/4*4)*ch, cw, ch)
    when 2 ; src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
    when 3 ; src_rect = Rect.new((n%4*3+2)*cw, (n/4*4)*ch, cw, ch)
    when 4 ; src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) end
    contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)
    actor = $game_party.members[index]
    enabled = $game_party.battle_members.include?(actor)
    rect = item_rect(index)
    face = 96
    char_x = rect.x + face
    char_y = rect.y + line_height * 4 + 1
    draw_actor_graphic(actor, rect.x + face, char_y)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_frame
    update_anime_pose
    refresh if @frame == 10
    reset_anime if @frame == 10
  end
  #--------------------------------------------------------------------------
  # * Update Animation Frame
  #--------------------------------------------------------------------------
  def update_frame
    @frame += 1
  end
  #--------------------------------------------------------------------------
  # * Update Animation Pose
  #--------------------------------------------------------------------------
  def update_anime_pose
    @anime_pose += 1 if @frame == 10
  end
  #--------------------------------------------------------------------------
  # * Reset Animation Count
  #--------------------------------------------------------------------------
  def reset_anime
    @anime_pose = 0 if @anime_pose > 3
    @frame = 0
  end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Create Status Window
  #--------------------------------------------------------------------------
  alias create_menu_status_window create_status_window
  def create_status_window
    create_menu_status_window
    preset = MSManager.get_preset
    if preset == 2 || preset == 3
      @actor_anime = Window_ActorAnime.new(@command_window.width, 0)
    end
  end
  #--------------------------------------------------------------------------
  # * Formation [OK]
  #--------------------------------------------------------------------------
  alias clear_actor_anime on_formation_ok
  def on_formation_ok
    clear_actor_anime
    @frame = 0
    @anime_pose = 0
    @status_window.refresh
  end
end 

 

 

Edited by dbchest
  • Like 3

Share this post


Link to post
Share on other sites

This is really cool! I love the new menu layouts! I think number 4 is my favorite! One quick question. Now sure if it's a bug or if it's just the way it works. But when talking to the NPC on the right and he changes the players class, the graphic doesn't change until you open the menu, then it refreshes and everything is good. Not that it would be a problem for me, I've never really used a system where the class changes the players graphic, but I thought I'd bring it up anyway.

But again, really great script! :D Awesome work!

  • Like 2

Share this post


Link to post
Share on other sites

i'm happy that everything worked out for you, that really makes my day. the "glitch" you're referring to above, believe it or not, is not a bug. here is how the system works. i included the graphics setter directly into my Menu Status script. maybe i shouldn't assume, but the impression i'm under is that for those who are using a CCS (class changing system) are doing so from the menu. should that remain true, here's the stack:

 

map > menu > class changing scene

 

for a vast majority of class changing systems, you access the scene through the menu command window, right? in this manner, there would never be a problem. you would enter the CCS from the menu and update all of your actors accordingly. when you leave the CCS you revert to the menu scene (where my script kicks in). i placed the method call that updates the actor(s) graphics into the draw_item method before it actually draws anything. so for those people who utilize a CCS in their projects, if that system is accessed from the menu then everything will update as you travel back down the stack. by the time you reach the map again, your on screen charasets will have updates as well.

 

the key thing here is for the CCS, like the one you're implementing into your project (i tested it personally), should be accessed from the menu, nothing more.

 

e.g. your project is a perfect example of what i'm talking about. have you tried using it in your game yet?

Edited by Calintz
  • Like 1

Share this post


Link to post
Share on other sites

Oh okay that makes sense. Well, I really like this script! :) I'm definitely going to be putting into one of my projects! I love the way the menu layout looks. A very nice and simple, but beautiful change to the common very plain menu. Amazing work! :)

  • Like 2

Share this post


Link to post
Share on other sites

thank you very much. i consider this my very first official script. i have my fingers crossed that it makes its way into the master script list, etc...

  • Like 2

Share this post


Link to post
Share on other sites

I definitely think it's awesome enough to make it onto the MSL! :D Just saying.

  • Like 1

Share this post


Link to post
Share on other sites

time will tell.

i'll be updating it eventually to v2.0.

 

at that time, users will be able to generate their own layout using various settings.

i'll also add an exception for those not using a CCS to turn off the graphics updater.

  • Like 2

Share this post


Link to post
Share on other sites

just add that to the bottom of your script and the player sprites should update on changing class.

 

class Game_Actor < Game_Battler
  alias clchange2125541561 change_class
 
  def change_class(class_id, keep_exp = false)
    clchange2125541561(class_id, keep_exp = false)
    get_class_graphics
    refresh
    end
 
  def get_class_graphics
    case class_id
    when 1 ; set_graphic("Actor4", 0, "Actor4", 0)
    when 2 ; set_graphic("Actor4", 1, "Actor4", 1)
    when 3 ; set_graphic("Actor4", 2, "Actor4", 2)
    when 4 ; set_graphic("Actor4", 4, "Actor4", 4)
    when 5 ; set_graphic("Actor4", 6, "Actor4", 6)
    when 6 ; set_graphic("Actor5", 0, "Actor5", 0)
    when 7 ; set_graphic("Actor5", 2, "Actor5", 2)
    when 8 ; set_graphic("Actor5", 5, "Actor5", 5)
    when 9 ; set_graphic("Actor5", 7, "Actor5", 7)
    when 10 ; set_graphic("Actor5", 4, "Actor5", 4)
    else ; set_graphic("Actor1", 0, "Actor1", 0)      # default graphics
    end
    $game_player.refresh
  end
end
  • Like 2

Share this post


Link to post
Share on other sites

Oh, wow! Awesome Xypher! This is why I love being a part of an RPG Maker Community! Everyone helps everyone, and we are all better for it! :)

  • Like 1

Share this post


Link to post
Share on other sites

Downloaded , Its a Great Work bro, i Really Have Enjoyed it

your a greatest Coder, =) Keep with good Work

can't wait for Version 2.0

  • Like 1

Share this post


Link to post
Share on other sites

v1.1 has been released.

will serve as this script's completion.

 

the code has been optimized and the charasets have been fully animated.

Share this post


Link to post
Share on other sites

ummm....there is a problem in this script..plz help me...i've applied you script in my hud script..everything works fine..

but there is small glitch with EXP gauge...

 

When a hero reaches level 99, the hero still continue to get extra exp...and the digit of exp starts counting in negative, and the gauge width grows wider and wider...not only in my project, in your own demo i'v faced this problem..I'm using yanfly limit adjust script, where max level is 100, well thats not a problm...this problem appears without the adjust limit script...i'm uploading 2 pics,...1. when level is 1 and 2. when level is 99/100..

 

well see the picture, that will say all i'm asking, can u please fix this??

post-39171-0-36244800-1418039033_thumb.png

post-39171-0-45958800-1418039122_thumb.png

Share this post


Link to post
Share on other sites

i will absolutely fix this for you.

 

my schedule is extremely tight here on my vessel, so please be patient while i fix this; by the sound of it, this is a very simple adjustment. i will have this prepared for you within a few days. i will have to un-archive that script; it is one of the first scripts i ever wrote. i'm happy you were able to locate this bug, gratitude.

Share this post


Link to post
Share on other sites

hey man, i've finished updating this to v2.0; i will get around to uploading it sometime this week.

Share this post


Link to post
Share on other sites

v2.0 has been uploaded; it is now the standard. all versions < 2.0 have been archived and i will no longer provide support for them. v2.0 addressed the only bug that was currently known and the code has been greatly cleaned and optimized. please report any new bugs here. let me know what you guys think. new in version 2.0; you have the option to display the state afflictions in the menu status or not. the position of the display will automatically update depending on the selected option.

 

the demo is < 2MB, please download and have a look.

Edited by dbchest

Share this post


Link to post
Share on other sites

I've made my very new and first menu script and applied your status configurations in it..It is named Organized-MENU.. .

 

See the image, I will post my script to the forum soon....

 

Edit: Obviously it is a single player menu for the game makers who prefer to make Horror/Action games.

post-39171-0-45019600-1428840268_thumb.png

Edited by RupamOntherocks

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted