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.

Scrolling

All I need is to be able to make it so that if there is more then 4 party members, I have to scroll down to see the rest. Also, if you could tell me how to resize the rectangle that appears after I select "order" That would help too.

Here is the script:

#============================================================================
#L's Custom Menu #2 - Retro-looking
#============================================================================
=begin
  This CMS is the result of attempted recreating RPG Tkool Dante98/DantePC Menu
for RPG Maker XP.(except map name and time windows, and some commands ;))  Map
as Background, and the size-changing Window_MenuStatus is inspired by D2Win
(MS Windows frontend for Dante98/98 II Games).
=end
#==============================================================================

module MenuCommand
  Item    = 'Item'
  Skill    = 'Skill'
  Equip    = 'Equip'
  Status  = 'Status'
  Save    = 'Save'
  Load    = 'Load'
  End_Game = 'Exit'
   
  Help    = 'Help'
  Order    = 'Order'
  Party    = 'Party'
  Option  = 'Option'
  Quest    = 'Quest'
  Limit    = 'Limit'
  System  = 'System'
end


#==============================================================================
# Window_Gold
#==============================================================================

class Window_Gold < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(439, 413, 200, 64)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    #Refresh and add the contents to window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    #Advanced Gold Display mini-script by Dubealex.
    self.contents.clear   
    case $game_party.gold
    when 0..9999
      gold = $game_party.gold
    when 10000..99999
      gold = $game_party.gold.to_s
      array = gold.split(//)
      gold = array[0].to_s+array[1].to_s+","+array[2].to_s+array[3].to_s+array[4].to_s
    when 100000..999999
      gold = $game_party.gold.to_s
      array = gold.split(//)
      gold = array[0].to_s+array[1].to_s+array[2].to_s+","+array[3].to_s+array[4].to_s+array[5].to_s
    when 1000000..9999999
      gold = $game_party.gold.to_s
      array = gold.split(//)
      gold = array[0].to_s+","+array[1].to_s+array[2].to_s+array[3].to_s+","+array[4].to_s+array[5].to_s+array[6].to_s
    end
 
    self.contents.font.color = system_color
    gold_word = $data_system.words.gold.to_s + " /"
    cx = contents.text_size(gold_word).width
    cx2=contents.text_size(gold.to_s).width
    self.contents.draw_text(4, 0, 160-cx-2, 32, gold_word)
    self.contents.font.color = text_color(0)
    self.contents.draw_text(164-cx2+2, 0, cx2, 32, gold.to_s, 2)
  end
end


#==============================================================================
# Window_PlayTime
#==============================================================================

class Window_PlayTime < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(239, 413, 200, 64)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    #Refresh and add the contents to window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    #Clear Bitmap
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 120, 32, "Time")
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 160, 32, text, 2)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end


#------------------------------------------------------------------------------
#  Game_Map
#------------------------------------------------------------------------------
class Game_Map
#------------------------------------------------------------------------------
#  Name
#------------------------------------------------------------------------------
  def name
    $map_infos[@map_id]
  end
end


#========================================
#â–  Scene_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
  $map_infos = load_data("Data/MapInfos.rxdata")
  for key in $map_infos.keys
    $map_infos[key] = $map_infos[key].name
  end
end


#==============================================================================
# Window_MapName
#==============================================================================

class Window_MapName < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 413, 239, 64)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    #Refresh and add the contents to window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    #Clear Bitmap
    self.contents.clear   
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 200, 32, $game_map.name.to_s, 1)
  end 
end


#==============================================================================
# Window_MenuStatus
#==============================================================================

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    $game_party.actors.size < 4 ? i = 14 : i = 0
    $game_party.actors.size == 1 ? i = 24 : i = i
    super(177, 0, 462, ($game_party.actors.size * 72)+i)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    #Refresh and add the contents to window   
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    #Clear Bitmap
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      x = 16
      y = i*64
      actor = $game_party.actors
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x + 144, y)
      draw_actor_state(actor, x + 260, y )
      draw_actor_level(actor, x, y + 32)
      draw_actor_hp(actor, x + 98, y + 32)
      draw_actor_sp(actor, x + 254, y + 32)
    end
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0, @index * 70, self.width - 32, 64)
    end
  end
end


#==============================================================================
# Scene_Menu
#==============================================================================
class Scene_Menu
  def initialize(menu_index = 0)
    @menu_index = menu_index
    commands_init
    @changer = 0 #Change Party Order by Yargovish
    @where = 0 #
    @checker = 0  #
  end
  #--------------------------------------------------------------------------
  # * Set Commands
  #--------------------------------------------------------------------------
  def commands_init
    # MenuCommand
    @commands = []
    s1 = MenuCommand::Item
    s2 = MenuCommand::Skill
    s3 = MenuCommand::Equip
    s4 = MenuCommand::Status
    s5 = MenuCommand::Order
    s6 = MenuCommand::Limit
    s7 = MenuCommand::System
    @commands.push(s1, s2, s3, s4, s5, s6, s7).flatten!
   
    @sys_commands = []
    o1 = MenuCommand::Option
    o2 = MenuCommand::Help
    o3 = MenuCommand::Save
    o4 = MenuCommand::Load
    o5 = MenuCommand::End_Game
    @sys_commands.push(o3, o4, o5).flatten!
  end
  #--------------------------------------------------------------------------
  # * Main - Handles drawing/disposing windows and the main loop
  #--------------------------------------------------------------------------
  def main
    #Draw Background
    @background = Spriteset_Map.new
    #Draw Windows
    main_window
    #Execute transition
    Graphics.transition
    #Main Loop
    loop do
      #Main Loop
      main_loop
      break if main_scenechange?
    end
    #Prepare for transition
    Graphics.freeze
    #Dispose Windows
    main_dispose
  end
  #--------------------------------------------------------------------------
  # * Main Draw - Handles drawing windows
  #--------------------------------------------------------------------------
  def main_window   
    #Draw Windows
    main_command_window
    system_command_window 
    @gold_window = Window_Gold.new
    @gold_window.x = 439
    @gold_window.y = 413
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 239
    @playtime_window.y = 413   
    @map_window = Window_MapName.new
    @map_window.x = 0
    @map_window.y = 413
    @map_window.z = 100
    @status_window = Window_MenuStatus.new       
  end
  #--------------------------------------------------------------------------
  # * Main Command Window
  #--------------------------------------------------------------------------
  def main_command_window 
    @command_window = Window_Command.new(160, @commands)
    @command_window.height = 6 * 32 + 32
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
   
    if $game_party.actors.size <= 1 #
      #Disable change party order
      @command_window.disable_item(4)
    end 
  end
  #--------------------------------------------------------------------------
  # * System Command Window
  #--------------------------------------------------------------------------
  def system_command_window
    @sys_command_window = Window_Command.new(160, @sys_commands)
    @sys_command_window.visible = false
    @sys_command_window.active = false
    @sys_command_window.x = 100
    @sys_command_window.y = 210
    @sys_command_window.z = 0
    check_save_available
    check_load_available
  end
  #-----------------
  def check_save_available
    if $game_system.save_disabled
      @sys_command_window.disable_item(0)
    end
  end
  #-----------------
  def check_load_available
    #Check if saved file exists
    @load_enabled = false
    for i in 0..3
      if (FileTest.exist?("Save#{i+1}.rxdata"))       
        @load_enabled = true
      end
    end 
    if !@load_enabled
      @sys_command_window.disable_item(1)
    end
  end   
  #--------------------------------------------------------------------------
  # * Main Scene Change
  #--------------------------------------------------------------------------
  def main_scenechange?
    # Abort loop if screen is changed
    if $scene != self
      return true
    end
    return false
  end
  #--------------------------------------------------------------------------
  # * Main Dispose
  #--------------------------------------------------------------------------
  def main_dispose
    #Dispose Background
    @background.dispose
    # Dispose All Windows
    @gold_window.dispose
    @playtime_window.dispose
    @map_window.dispose
    @status_window.dispose
    @command_window.dispose
    @sys_command_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Main Loop
  #--------------------------------------------------------------------------
  def main_loop
    # Update game screen
    Graphics.update
    # Update input information
    Input.update
    # Frame update
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    # Update Windows
    update_windows
    #update_command if @command_window.active and @command_window.visible
    #update_sys_command if @sys_command_window.active and @sys_command_window.visible
    #update_status if @status_window.active
   
    if @sys_command_window.active
      @sys_command_window.z = +500
    end
   
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If system window is active: call update_sys_command
    if @sys_command_window.active
      update_sys_command
      return
    end
    # If status window is active: call update_status
    if @status_window.active
      update_status
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Window Update
  #--------------------------------------------------------------------------
  def update_windows   
    @command_window.update if @command_window.visible
    @sys_command_window.update if @sys_command_window.visible
    @gold_window.update
    @playtime_window.update
    @map_window.update
    @status_window.update
  end
  #--------------------------------------------------------------------------
  # * Update Command Window
  #--------------------------------------------------------------------------
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Return if Disabled Command
      if disabled_main_command?
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      main_command_input
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Update SysCommand Window
  #--------------------------------------------------------------------------
  def update_sys_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @sys_command_window.active = false
      @sys_command_window.visible = false
      @sys_command_window.index = 0
      @sys_command_window.z = -500
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Return if Disabled Command
      if disabled_main_command?
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Command Input
      sys_command_input
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when status window is active)
  #--------------------------------------------------------------------------
  def update_status
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Make command window active
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Return if Disabled Command
      if disabled_main_command?
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Command Input
      sub_command_input
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Disabled Main Command? Test
  #--------------------------------------------------------------------------
  def disabled_main_command?
    # Gets Current Command
    @command_window.height = 6 * 32 + 32
    command = @commands[@command_window.index]
    sys_command = @sys_commands[@sys_command_window.index]
    # Gets SDK Scene_Menu Commands
    c = MenuCommand
    # If 0 Party Size
    if $game_party.actors.size == 0
      # If Item, Skill, Equip or Status Selected
      if [c::Item, c::Skill, c::Equip, c::Status].include?(command)
        return true
      end
    end
    if $game_party.actors.size <= 1
      if [c::Order].include?(command)
        return true
      end
    end
    # If Save Disabled && Command is Save
    return true if $game_system.save_disabled && sys_command == c::Save
    # If Load Disabled && Command is Load
    return true if !@load_enabled && sys_command == c::Load
    return false
  end
  #--------------------------------------------------------------------------
  # * Update Command Check
  #--------------------------------------------------------------------------
  def main_command_input
    # Loads Current Command
    @command_window.height = 6 * 32 + 32
    command = @commands[@command_window.index]
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Checks Commands
    case command
    when MenuCommand::Item  #item
      command_item
    when MenuCommand::Skill #skill
      command_skill
    when MenuCommand::Equip #equip
      command_equip
    when MenuCommand::Status  #status
      command_status
    when MenuCommand::Order #order
      command_order
    when MenuCommand::Limit #limit break skill
      command_limitbreak
    when MenuCommand::System  #call system submenu
      $game_system.se_play($data_system.decision_se)
      @sys_command_window.active = true
      @sys_command_window.visible = true
      @command_window.active = false   
    end
  end
  #--------------------------------------------------------------------------
  # * Update System Command Check
  #--------------------------------------------------------------------------
  def sys_command_input
    # Loads Current Command
    sys_command = @sys_commands[@sys_command_window.index]
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Checks Commands
    case sys_command
    when MenuCommand::Help
      command_help
    when MenuCommand::Option  #option
      command_option
    when MenuCommand::Save  #save
      command_save
    when MenuCommand::Load  #load
      command_load
    when MenuCommand::End_Game  #exit
      command_endgame
    end
  end
  #--------------------------------------------------------------------------
  # * Disabled Sub Command? Test
  #--------------------------------------------------------------------------
  def disabled_sub_command?
    # Loads Current Command
    @command_window.height = 6 * 32 + 32
    command = @commands[@command_window.index]
    # If Skill Selected
    if command == MenuCommand::Skill
      # If this actor's action limit is 2 or more
      if $game_party.actors[@status_window.index].restriction >= 2
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # * Update Status Check
  #--------------------------------------------------------------------------
  def sub_command_input
    # Loads Current Command
    @command_window.height = 6 * 32 + 32
    command = @commands[@command_window.index]
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Checks Command By Name
    case command
    when MenuCommand::Skill
      command_skill
    when MenuCommand::Equip
      command_equip
    when MenuCommand::Status
      command_status
    when MenuCommand::Order
      command_order
    when MenuCommand::Limit #limit break skill
      command_limitbreak
    end
  end
  #--------------------------------------------------------------------------
  # * Command Item
  #--------------------------------------------------------------------------
  def command_item
    # Switch to item screen
    $scene = Scene_Item.new
  end
  #--------------------------------------------------------------------------
  # * Command Skill
  #--------------------------------------------------------------------------
  def command_skill
    # If Main Command Active
    if @command_window.active
      # Activate Status Window
      active_status_window
      return
    end
    # Switch to skill screen
    $scene = Scene_Skill.new(@status_window.index)
  end
  #--------------------------------------------------------------------------
  # * Command Equip
  #--------------------------------------------------------------------------
  def command_equip
    # If Main Command Active
    if @command_window.active
      # Activate Status Window
      active_status_window
      return
    end
    # Switch to equipment screen
    $scene = Scene_Equip.new(@status_window.index)
  end
  #--------------------------------------------------------------------------
  # * Command Status
  #--------------------------------------------------------------------------
  def command_status
    # If Main Command Active
    if @command_window.active
      # Activate Status Window
      active_status_window
      return
    end
    # Switch to status screen
    $scene = Scene_Status.new(@status_window.index)
  end
  #--------------------------------------------------------------------------
  # * Command Order
  #--------------------------------------------------------------------------
  def command_order
    # If Main Command Active
    if @command_window.active
      # Activate Status Window
      active_status_window
      @checker = 0
      return
    end
    #Change Party Order by Yargovish
    if @checker == 0
      @changer = $game_party.actors[@status_window.index]
      @where = @status_window.index
      @checker = 1
    else
      $game_party.actors[@where] = $game_party.actors[@status_window.index]
      $game_party.actors[@status_window.index] = @changer
      @checker = 0
      @status_window.refresh
      $game_player.refresh #
    end     
  end
  #--------------------------------------------------------------------------
  # * Command Party
  #--------------------------------------------------------------------------
  def command_party
    # Switch to party change screen
    #Put your Party Change Scene here
  end
  #--------------------------------------------------------------------------
  # * Command Option
  #--------------------------------------------------------------------------
  def command_option
    # Switch to option screen
    #Put your Option Scene here
  end
  #--------------------------------------------------------------------------
  # * Command Quest
  #--------------------------------------------------------------------------
  def command_quest
    # Switch to quest log screen
    #Put your Quest Scene here
  end
  #--------------------------------------------------------------------------
  # * Command Quest
  #--------------------------------------------------------------------------
  def command_help
    # Switch to help screen
    #Put your Help Scene here
  end
  #--------------------------------------------------------------------------
  # * Command LimitBreak
  #--------------------------------------------------------------------------
  def command_limitbreak
    # If Main Command Active
    if @command_window.active
      # Activate Status Window
      active_status_window
      return
    end
    # Switch to limit screen
    #Put your limit Scene here
    $scene = Scene_LimitMenu.new(@status_window.index) #for Alistor's Limit Break menu
  end
  #--------------------------------------------------------------------------
  # * Command Save
  #--------------------------------------------------------------------------
  def command_save
    # Switch to save screen
    $scene = Scene_Save.new
  end
  #--------------------------------------------------------------------------
  # * Command Load
  #--------------------------------------------------------------------------
  def command_load
    # Switch to load screen
    $scene = Scene_Load.new
  end
  #--------------------------------------------------------------------------
  # * Command End Game
  #--------------------------------------------------------------------------
  def command_endgame
    # Switch to end game screen
    $scene = Scene_End.new
  end
  #--------------------------------------------------------------------------
  # * Activate Status Window
  #--------------------------------------------------------------------------
  def active_status_window
    # Make status window active
    @command_window.active = false
    @status_window.active = true
    @status_window.visible = true
    @status_window.index = 0
  end
end


P.S. I added a little bit to the original script. Don't know exactly what I am doing, but I am trying to learn.
 

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