3 Character Menu

0 Members and 1 Guest are viewing this topic.

*
Rep:
Level 84
The Guardian Dragon
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

Spoiler for Show script:
Code: [Select]
#==============================================================================
#    * 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

Developer of Legionwood and One Night and author of post-apocalyptic novel Sun Bleached Winter. Find everything I've made at http://drobertgrixti.com.

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
I was just thinking how pretty this script looked in your game topic. Great job! :)

*
Rep:
Level 84
The Guardian Dragon
Thanks! I did write it because I needed it, but then I realised that there are so few three character menus out there or support for them (in scripts such as Main Menu Melody etc) so I decided to release it for everyone else to use.
Developer of Legionwood and One Night and author of post-apocalyptic novel Sun Bleached Winter. Find everything I've made at http://drobertgrixti.com.

*
The Hero of Rhyme
Rep:
Level 83
( ͡° ͜ʖ ͡°)
2014 Best RPG Maker User - StoryProject of the Year 20142014 Queen of RMRK2011 Best Newbie2014 Best RPG Maker User - Creativity2014 Kindest Member2013 Queen of RMRKBronze SS AuthorBronze Writing ReviewerSecret Santa 2013 ParticipantFor taking arms in the name of your breakfast.GOOD!For frequently finding and reporting spam and spam bots2012 Best Yuyubabe Smiley2012 Best RPG Maker User (Creativity);o
Its very epic :) huzzah!
Spoiler for My Games and Art:
ℒℴѵℯ❤


My Artwork Thread

The Lhuvia Tales [Current]

Ambassador [Complete]

The Postman [Complete]

The Wyvern [Complete]

Phoenix Wright: Haunted Turnabout [Complete]

Major Arcana [Cancelled]


***
Rep:
Level 74
I'm baaack!
I would love to use your script and put your name in my games credits but for some retarded reason when I paste your script it goes into one line...It's not your fault though I've had this problem before...

*****
Rep:
Level 84
This text is way too personal.
Bronze - GIAW 11 (Hard)Silver - GIAW Halloween
Try pasting it into MS Word First, SMF does not like some browsers.

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
Yeah, it's probably your browser. Try using Firefox instead if you have it.

*
Rep:
Level 84
The Guardian Dragon
If that fails, I can attach a text file with the script in it for you.
Developer of Legionwood and One Night and author of post-apocalyptic novel Sun Bleached Winter. Find everything I've made at http://drobertgrixti.com.

****
Rep:
Level 75
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
I really like the script, but is there a way for me to turn off the show map location thing because I already have something for that and I don't want the map names that I exclude to be shown in the menu.

**
Rep: +0/-0Level 70
RMRK Junior
thanks for the Great Script, but I was wondering If there was a Battle script that would work with this? or can I edit the battle script to just show 3 ppl?

***
Rep:
Level 69
RESIDENT ADONKADONK
Ahh 1337.
Anyways, if you are using the Takentai SBS, you can easily modify it in the configurations script, the maximum party members.
Sorry, Gaia, but it looks kind of empty between the face and the hp bars. Is there a way to add in the middle?

I'm back.