Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

 
Reply to this topicStart new topic
> 3 Character Menu, For games using parties of only three characters.
Dark Gaia
post Dec 23 2010, 08:04 PM
Post #1


Chaotic Good
Group Icon

Group: +Gold Member
Posts: 2,538
Type: Writer
RM Skill: Masterful




3 Character Menu
By Dark Gaia

Introduction


This is a simple menu rewrite that makes it so your menu only shows three characters, instead of the usual four. This is designed for games that use three character parties, like Final Fantasy VIII and Chrono Trigger. It also adds a window displaying the player's current location along the bottom of the screen, just in case you don't already have one.

Installation

To install this script into your game, just open up your Script Editor, scroll down to where it says â–¼ Materials and just below this point, right click, choose "Insert" and paste this script in. This script should work alongside any other scripts that modify the menu, except for scripts that alter the properties of the windows or add new windows or commands.

Usage Conditions

This is free for use, even for commercial games, but you must credit me if you use it.

Script

Show script
CODE
#==============================================================================
#                           * 3 Character Menu*
#                               by Dark Gaia
#==============================================================================
# * This script rewrites your menu screen so that it shows only three party
#   members, for games where you only want to use a party of three. *
#==============================================================================
#                * THIS SCRIPT ONLY WORKS IN RPG MAKER VX! *
#==============================================================================
# * To install this script into your game, just open up your Script Editor,
#   scroll down to where it says â–¼ Materials and just below this point, right
#   click, choose "Insert" and paste this script in. *
#==============================================================================
# * This script is free for use in all games, including commercial games, so
#   long as you credit me if you use it. *
#==============================================================================

#Begin script - do not edit past here, or you may break the script!

#==============================================================================
# ** Window_MenuStatus
#==============================================================================

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    x : window X coordinate
  #    y : window Y coordinate
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 360, 360)
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.members.size
    @column_max = $game_party.members.size
    for actor in $game_party.members
      draw_actor_face(actor, actor.index * 115 +2, 2, 92 )
      x = actor . index * 115 + WLH / 2
      y = 96 + WLH / 2
      draw_actor_name (actor, x - 10, y + 0)
      draw_actor_class(actor, x - 10, y + 30)
      draw_actor_level(actor, x - 10, y + 45)
      draw_actor_state(actor, x - 10, y + 60)
        if actor . index % 2 == 0
          draw_actor_hp(actor, x - 10, y + 125, width - 270)
          draw_actor_mp(actor, x - 10, y + 145, width - 270)
        else
          draw_actor_hp(actor, x - 10, y + 125, width - 270)
          draw_actor_mp(actor, x - 10, y + 145, width - 270)
        end
    end
  end
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------
  def update_cursor
    if @index < 0              # No cursor
      self.cursor_rect.empty
    elsif @index < @item_max    # Normal
      self.cursor_rect.set(@index * 115, 0, 96, 103)
    elsif @index >= 100        # Self
      self.cursor_rect.set( (@index - 100) * 96, 0, 96, 96)
    else                        # All
      self.cursor_rect.set(0, 0, 96, @item_max * 96)
    end
  end
end

#==============================================================================
# ** Window_Location
#==============================================================================

class Window_Lieu < Window_Base

  def initialize(x, y)
    super(x, y, 360, WLH+32)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.clear
    $maps = load_data("Data/MapInfos.rvdata")
    @map_id = $game_map.map_id
    @map_name = $maps[@map_id].name
    self.contents.font.color = system_color

    self.contents.font.color = normal_color
    self.contents.draw_text(-10, -3, 360, 32, @map_name, 1)
  end
end

#==============================================================================
# ** Scene_Menu
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    menu_index : command cursor's initial position
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_command_window
    @lieu_window = Window_Lieu.new(184, 360)
    @gold_window = Window_Gold.new(0, 360)
    @status_window = Window_MenuStatus.new(184, 0)
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @lieu_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @command_window.update
    @gold_window.update
    @lieu_window.update
    @status_window.update
    if @command_window.active
      update_command_selection
    elsif @status_window.active
      update_actor_selection
    end
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    @command_window = Window_Command.new(184, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # If number of party members is 0
      @command_window.draw_item(0, false)    # Disable item
      @command_window.draw_item(1, false)    # Disable skill
      @command_window.draw_item(2, false)    # Disable equipment
      @command_window.draw_item(3, false)    # Disable status
    end
    if $game_system.save_disabled            # If save is forbidden
      @command_window.draw_item(4, false)    # Disable save
    end
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Skill, equipment, status
        start_actor_selection
      when 4      # Save
        $scene = Scene_File.new(true, false, false)
      when 5      # End Game
        $scene = Scene_End.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Start Actor Selection
  #--------------------------------------------------------------------------
  def start_actor_selection
    @command_window.active = false
    @status_window.active = true
    if $game_party.last_actor_index < @status_window.item_max
      @status_window.index = $game_party.last_actor_index
    else
      @status_window.index = 0
    end
  end
  #--------------------------------------------------------------------------
  # * End Actor Selection
  #--------------------------------------------------------------------------
  def end_actor_selection
    @command_window.active = true
    @status_window.active = false
    @status_window.index = -1
  end
  #--------------------------------------------------------------------------
  # * Update Actor Selection
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      $game_party.last_actor_index = @status_window.index
      Sound.play_decision
      case @command_window.index
      when 1  # skill
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # equipment
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # status
        $scene = Scene_Status.new(@status_window.index)
      end
    end
  end
end


Screenshot



This post has been edited by Dark Gaia: Dec 23 2010, 08:06 PM


__________________________
Things I've made/written/developed:


Find out more and get the latest news at my website or Facebook
Go to the top of the page
 
+Quote Post
   
NerdRage
post Dec 27 2010, 09:06 AM
Post #2


Level 3
Group Icon

Group: Member
Posts: 35
Type: Developer
RM Skill: Skilled




This is a cool edit!

Can i ask favor?
Can you make it to where you can still have 4 or more party members?

That would help alot for my project.






__________________________
Go to the top of the page
 
+Quote Post
   
Dark Gaia
post Jan 1 2011, 03:49 AM
Post #3


Chaotic Good
Group Icon

Group: +Gold Member
Posts: 2,538
Type: Writer
RM Skill: Masterful




Well, it was intended for people who needed a menu to show only three characters. If you want to use four or more members, just use a normal menu.

If you're using this script, you can still have more than 3 characters in the party, it'll just only show the first three.


__________________________
Things I've made/written/developed:


Find out more and get the latest news at my website or Facebook
Go to the top of the page
 
+Quote Post
   
din7775
post Sep 13 2011, 08:07 AM
Post #4



Group Icon

Group: Member
Posts: 2
Type: Event Designer
RM Skill: Skilled




great realy!! but can u tell me in what line there is the icons of the commands cauze i want to change the icon.


__________________________
Go to the top of the page
 
+Quote Post
   
SloaTheDemon
post Sep 26 2011, 02:03 PM
Post #5


Level 7
Group Icon

Group: Member
Posts: 95
Type: Musician
RM Skill: Beginner




im wondering if u could make it where u can only have 3 main characters but have like the a 4th slot only for guest characters


__________________________





Current projects

    RMVX games-
    nothing


    RMXP-
      nothing


music
my music


Go to the top of the page
 
+Quote Post
   

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 25th May 2013 - 04:43 PM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker