Final Fantasy 13 Main Menu
From PocketWiki
- Return to the VX Scripts
- Return to the Shanghai's Scripts
Contents |
| Final Fantasy 13 Main Menu | |
|---|---|
| | |
| Link | Final Fantasy 13 Menu |
| Last Update | 2010.06.02 |
| Author(s) | Shanghai |
| $imported | $imported["FinalFantasy13Menu"] |
| Terms of Usage | |
| This script can be used for both non-commercial and commercial games. Credit does not need to be due for a Shanghai Simple Script as these are things that were created within less than an hour anyway. | |
| Version History | |
| 2010.06.02 - Finished Script | |
| Discussion and FAQ | |
Introduction
An RPG Maker VX version of the Final Fantasy XIII main menu.
Instructions
WARNING: This requires Yanfly Engine Melody's Main Menu Melody to run.
Download these images into your Graphics\System folder. Main Menu Melody must be located above this script to work.
Then run the script. All other options can be found inside of the script's module. Some are mandatory as they fix the classes to different colors and actors to different images. If you fail to do this, you WILL get error messages.
Script Code
#=============================================================================== # # Shanghai Simple Script - Final Fantasy 13 Main Menu # Last Date Updated: 2010.06.02 # Level: Normal # # NOTE! This requires Yanfly Engine Melody's Main Menu Melody script to be # installed and located above this script to work. This makes your main menu # ordered like Final Fantasy 13's. #=============================================================================== # Instructions # ----------------------------------------------------------------------------- # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials but above ▼ Main. Remember to save. # #=============================================================================== $imported = {} if $imported == nil $imported["FinalFantasy13Menu"] = true module SSS # This is the image file for the menu background. Place this inside of the # Graphics\System folder. MENU_BACK_IMAGE = "MenuBack" # This is the image file used for the back of each of the menu items. This # image must be 160x24 pixels and placed inside of the Graphics\System folder. MENU_BACK_ITEM_IMAGE = "MenuBackItem" # This sets the menu help window's text color. MENU_HELP_TEXT_COLOR = Color.new(0, 0, 0) # This is the text format used to write out the current map. MENU_LOCATION = "Location: %s" # This hash sets the image files for your actors. These images must be placed # inside of the Graphics\System folder and they have to be 104x288 pixels. MENU_ACTOR_IMAGES ={ 1 => "MenuRalph", 2 => "MenuUlrika", 3 => "MenuBennett", 4 => "MenuYlva", } # Remove this and perish. # This hash sets what colors belong to which class when drawn. MENU_CLASS_COLORS ={ 1 => 2, 2 => 6, 3 => 4, 4 => 5, } # Remove this and perish. # This sets the help window descripts for the menu commands. MENU_HELP_WINDOW ={ "Item" => "View and manage your party's items.", "Status" => "View a party member's status.", "Skill" => "Manage a party member's skills.", "Equip" => "Manage a party member's equipment.", "Save" => "Save your current progress.", "Game End" => "End the current game.", "System" => "Adjust the game's options.", } # Remove this and perish. end #============================================================================== # ** Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- alias initialize_sss_ff13_menu_window_base initialize unless $@ def initialize(x, y, width, height) initialize_sss_ff13_menu_window_base(x, y, width, height) self.opacity = 0 if $scene.is_a?(Scene_Menu) end end #============================================================================== # ** Window_MenuHelp #============================================================================== class Window_MenuHelp < Window_Help #-------------------------------------------------------------------------- # * Set Text #-------------------------------------------------------------------------- def set_text(text, align = 0) if text != @text or align != @align self.contents.clear self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR self.contents.draw_text(4, 0, self.width - 40, WLH, text, align) @text = text @align = align end end end #============================================================================== # ** Window_MainMenuParty #============================================================================== class Window_MainMenuParty < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x, y) super(x-24, y, Graphics.width-x+32, Graphics.height-y) self.active = false @column_max = [4, $game_party.members.size].max @spacing = 0 refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @data = $game_party.members @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # * Draw Item #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) actor = @data[index] unless actor.nil? draw_actor_image(actor, rect) draw_actor_name(actor, rect) draw_actor_state(actor, rect.x, WLH*5/2, 96) draw_actor_class(actor, rect) draw_actor_level(actor, rect) draw_actor_hp(actor, rect) draw_actor_mp(actor, rect) end end #-------------------------------------------------------------------------- # * Draw Actor Image #-------------------------------------------------------------------------- def draw_actor_image(actor, rect) filename = SSS::MENU_ACTOR_IMAGES[actor.id] return if filename.nil? bitmap = Cache.system(filename) image_rect = Rect.new(2, 2, rect.width-4, 284) self.contents.blt(rect.x+2, rect.y+2, bitmap, image_rect) end #-------------------------------------------------------------------------- # * Draw Actor Name #-------------------------------------------------------------------------- def draw_actor_name(actor, rect) name = actor.name self.contents.font.size = Font.default_size self.contents.font.color = normal_color self.contents.draw_text(rect.x+4, WLH*3/2, rect.width-8, WLH, name) end #-------------------------------------------------------------------------- # * Draw Actor Class #-------------------------------------------------------------------------- def draw_actor_class(actor, rect) name = actor.class.name self.contents.font.size = Font.default_size - 4 color_id = SSS::MENU_CLASS_COLORS[actor.class.id].to_i self.contents.font.color = text_color(color_id) self.contents.draw_text(rect.x+4, WLH*0, rect.width-8, WLH, name, 2) end #-------------------------------------------------------------------------- # * Draw Actor Level #-------------------------------------------------------------------------- def draw_actor_level(actor, rect) self.contents.font.size = Font.default_size - 4 self.contents.font.color = power_up_color yy = 288 - WLH*7/2 - 8 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.level_a, 0) yy += WLH/2 self.contents.font.color = normal_color self.contents.font.size += 2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.level, 2) end #-------------------------------------------------------------------------- # * Draw Actor HP #-------------------------------------------------------------------------- def draw_actor_hp(actor, rect) self.contents.font.size = Font.default_size - 4 self.contents.font.color = hp_gauge_color2 yy = 288 - WLH*5/2 - 4 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.hp, 0) yy += WLH/2 self.contents.font.color = normal_color self.contents.font.size += 2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.hp, 2) end #-------------------------------------------------------------------------- # * Draw Actor MP #-------------------------------------------------------------------------- def draw_actor_mp(actor, rect) self.contents.font.size = Font.default_size - 4 self.contents.font.color = mp_gauge_color2 yy = 288 - WLH*3/2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.mp, 0) yy += WLH/2 self.contents.font.color = normal_color self.contents.font.size += 2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.mp, 2) end #-------------------------------------------------------------------------- # * Item Rect #-------------------------------------------------------------------------- def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 288 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * WLH return rect end end #============================================================================== # ** Window_MenuTimer #============================================================================== class Window_MenuTimer < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, Graphics.height - 60, 120, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear format = "%03d:%02d:%02d" @game_time = Graphics.frame_count / Graphics.frame_rate hours = @game_time / 3600 minutes = @game_time / 60 % 60 seconds = @game_time % 60 text = sprintf(format, hours, minutes, seconds) self.contents.draw_text(0, 0, contents.width-4, WLH, text, 2) end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update super refresh if @game_time != (Graphics.frame_count / Graphics.frame_rate) end end #============================================================================== # ** Window_MenuGold #============================================================================== class Window_MenuGold < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(100, Graphics.height - 60, 120, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear text = sprintf("%d%s", $game_party.gold, Vocab.gold) self.contents.draw_text(0, 0, contents.width-4, WLH, text, 0) end end #============================================================================== # ** Window_MenuLocation #============================================================================== class Window_MenuLocation < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(Graphics.width/2-16, Graphics.height - 60, Graphics.width/2+16, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear text = sprintf(SSS::MENU_LOCATION, $game_map.map_name) self.contents.draw_text(4, 0, contents.width, WLH, text, 0) end end #=============================================================================== # Override Main Menu Melody Settings #=============================================================================== YEM::MENU::USE_ICONS = false YEM::MENU::MENU_RIGHT_SIDE = false YEM::MENU::ON_SCREEN_MENU = false YEM::MENU::USE_MULTI_VARIABLE_WINDOW = false #============================================================================== # ** Scene_Menu #============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- alias start_sss_ff13_menu start unless $@ def start start_sss_ff13_menu start_ff13_menu_style end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- alias terminate_sss_ff13_menu terminate unless $@ def terminate @help_window.dispose @location_window.dispose @menu_timer_window.dispose @menubackitem_sprite.bitmap.dispose @menubackitem_sprite.dispose terminate_sss_ff13_menu end #-------------------------------------------------------------------------- # * Create Background for Menu Screen #-------------------------------------------------------------------------- def create_menu_background @menuback_sprite = Sprite.new @menuback_sprite.bitmap = Cache.system(SSS::MENU_BACK_IMAGE) update_menu_background end #-------------------------------------------------------------------------- # * Update Background for Menu Screen #-------------------------------------------------------------------------- def update_menu_background super @menubackitem_sprite.update unless @menubackitem_sprite.nil? @menu_timer_window.update unless @menu_timer_window.nil? end #-------------------------------------------------------------------------- # * Create Menu Back Items #-------------------------------------------------------------------------- def create_menu_back_items @menubackitem_sprite = Sprite.new width = 160 height = @command_window.height-32 @menubackitem_sprite.bitmap = Bitmap.new(width, height) bitmap = Cache.system(SSS::MENU_BACK_ITEM_IMAGE) rect = Rect.new(0, 0, 160, 24) y = 0 loop do break if y >= height @menubackitem_sprite.bitmap.blt(0, y, bitmap, rect) y += 24 end @menubackitem_sprite.y = @command_window.y+16 end #-------------------------------------------------------------------------- # * Start Final Fantasy 13 Menu Style #-------------------------------------------------------------------------- def start_ff13_menu_style @gold_window.dispose @gold_window = Window_MenuGold.new @menu_timer_window = Window_MenuTimer.new @location_window = Window_MenuLocation.new @help_window = Window_MenuHelp.new @help_window.x += 48 @help_window.width -= 48 @help_window.create_contents @help_window.contents.font.size = Font.default_size - 4 @command_window.y = @help_window.height - 9 @status_window.dispose x = @command_window.width y = @help_window.height-9 @status_window = Window_MainMenuParty.new(x, y) @command_window.x -= 4 @help_window.y += 12 update_help_window create_menu_back_items end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- alias update_command_selection_sss_ff13_menu update_command_selection unless $@ def update_command_selection update_help_window update_command_selection_sss_ff13_menu end #-------------------------------------------------------------------------- # * Update Help Window #-------------------------------------------------------------------------- def update_help_window return if @help_window_index == @command_window.index @help_window_index = @command_window.index commands = @command_window.commands text = SSS::MENU_HELP_WINDOW[commands[@help_window_index]].to_s @help_window.set_text(text) end end #=============================================================================== # # END OF FILE # #===============================================================================
- Return to the VX Scripts
- Return to the Shanghai's Scripts





