Neko Fondateur
Messages : 184 Date d'inscription : 14/07/2013 Age : 25 Localisation : Ici, la plupart du temps.
| Sujet: Main Menu Evo II Dim 21 Juil - 10:21 | |
| Auteur -driko (pour le script) -Fênix (pour la correction d'un bug d'affichage) Script: - Code:
-
#=============================================================================== # * Main Menu Evo II # * Successor to Main Menu EVO # * Bugs Corrigidos por .:Fênix:. # * http://www.planetdev.co.uk # * Part of CNG Engine Evolution #===============================================================================
$imported = {} if $imported == nil $imported["CEE-MainMenuEvoII"] = true
module CngEvo module Menu #=========================================================================== # * Load System data to prevent errors when loading Vocab terms #=========================================================================== $data_system = load_data("Data/System.rvdata") #=========================================================================== # * Menu Commands, seperate each value with a comma. # * To add new commands, either use a Vocab entry (See the Vocab Module), # Or use a text string in quotes, example: "Quests" #=========================================================================== COMMANDS = [ Vocab::item, Vocab::skill, Vocab::equip, Vocab::status, #"Quests", Vocab::save, #"Options", Vocab::game_end] #=========================================================================== # * These are the icons that display next to the command option in the menu. # * The best way to find the number of the icon is to use Yanfly's # YEM IconView Melody, and look for the ID number. # * Seperate each number with a comma. #=========================================================================== ICONS = [ 144, 128, 32, 106, #179, 141, #134, 142] #=========================================================================== # * These are the scenes to call for each menu command. # * Copy the existing examples to add new ones. # * The last value (True/False) is whether or not you need to select an # an actor to continue onto that scene. # * True = Select an Actor. # * False = Don't select one. #=========================================================================== SCENES = [ [Scene_Item, false], [Scene_Skill, true], [Scene_Equip, true], [Scene_Status, true], #[Scene_Quest, false], [Scene_File, false], #[Scene_Options, false], [Scene_End, false]] #=========================================================================== # * These are the Playtime, Steps, Map Name and Gold icons. # * As with the others, seperate with a comma #=========================================================================== INFO_ICONS = [ 188, 48, 153, 205] end # Menu end # CngEvo
#=============================================================================== # * Scene_Menu Class, Processes the main menu. #=============================================================================== class Scene_Menu < Scene_Base #============================================================================= # * Include the Menu module and initialize the command_window index #============================================================================= include CngEvo::Menu def initialize(menu_index = 0) @menu_index = menu_index end # initialize #============================================================================= # * Start the scene by creating windows etc #============================================================================= def start super create_menu_background create_command_window @status_window = Window_MenuEvoStatus.new @menuinfo = Window_MenuInfo.new end # start #============================================================================= # * End the scene and dispose windows etc #============================================================================= def terminate super dispose_menu_background @menudummy.dispose @command_window.dispose @status_window.dispose @menuinfo.dispose end # terminate #============================================================================= # * Update the scene's windows #============================================================================= def update super @menuinfo.update if @command_window.active @command_window.update update_command elsif @status_window.active @status_window.update update_actor_selection end end # update #============================================================================= # * Create the main command window #============================================================================= def create_command_window @menudummy = Window_MenuDummy.new @command_window = Window_Command.new(140, COMMANDS) @command_window.index = @menu_index @command_window.x = 24 @command_window.opacity = 0 end # create_command_window #============================================================================= # * Update the command window, and process choices #============================================================================= def update_command if Input.trigger?(Input::C) Sound.play_decision if SCENES[@command_window.index][1] == false if SCENES[@command_window.index][0] == Scene_File $scene = SCENES[@command_window.index][0].new(true, false, false) else $scene = SCENES[@command_window.index][0].new end else start_actor_selection end elsif Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new end end # update_command end # Scene_Menu
#=============================================================================== # * Window_MenuDummy, this window draws the menu icons. #=============================================================================== class Window_MenuDummy < Window_Base #============================================================================= # * Include the Menu module, and setup window size #============================================================================= include CngEvo::Menu def initialize super(0, 0, 164, ((24 * COMMANDS.size) + 32)) refresh end # initialize #============================================================================= # * Draw the icons #============================================================================= def refresh for i in 0...ICONS.size draw_icon(ICONS[i], -2, (i * 24)) # Items end end # refresh end # Window_MenuDummy
#=============================================================================== # * Window_MenuEvoStatus, this window is a Window_MenuStatus Replacement #=============================================================================== class Window_MenuEvoStatus < Window_Selectable #============================================================================= # * Initialize the window, ans setup values #============================================================================= def initialize super(0, (416 - 192), 544, 192) refresh self.active = false self.index = -1 end # initialize #============================================================================= # * Draw window contents #============================================================================= def refresh self.contents.clear @item_max = $game_party.members.size @facesprites = [] for actor in $game_party.members x = actor.index * 128 + 16 draw_actor_evoface(actor, x, 64) draw_actor_graphic(actor, x + 14, 158) draw_actor_name(actor, x, 0) draw_actor_level(actor, x, 32) draw_actor_state(actor, x + 80, 0) draw_actor_hp(actor, x - 12, 64) draw_actor_mp(actor, x - 12, 96) end end # refresh #============================================================================= # * Update cursor #============================================================================= def update_cursor if @index < 0 # No cursor self.cursor_rect.empty elsif @index < @item_max # Normal self.cursor_rect.set((@index * 128), 0, 128, 160) elsif @index >= 100 # Self self.cursor_rect.set((@index * 128), 0, 128, 160) else # All self.cursor_rect.set(0, 0, contents.width, 160) end end # update_cursor #============================================================================= # * Add support for horizontal scrolling #============================================================================= def update super if cursor_movable? last_index = @index if Input.repeat?(Input::RIGHT) if @index == 0 if $game_party.members.size > 1 @index = 1 end elsif @index == 1 if $game_party.members.size > 2 @index = 2 end elsif @index == 2 if $game_party.members.size > 3 @index = 3 end elsif @index == 3 if $game_party.members.size >= 4 @index = 0 end end elsif Input.repeat?(Input::LEFT) if @index == 0 if $game_party.members.size >= 4 @index = 3 end elsif @index == 1 @index = 0 elsif @index == 2 @index = 1 elsif @index == 3 @index = 2 end end if @index != last_index Sound.play_cursor end end update_cursor call_update_help end # update end # Window_MenuEvoStatus
#=============================================================================== # * Window_MenuInfo class, this window draws Playtime, Steps etc. #=============================================================================== class Window_MenuInfo < Window_Base #============================================================================= # * Include the Menu module and setup window size #============================================================================= include CngEvo::Menu def initialize super((544 - 260), 0, 260, 128) refresh end # initialize #============================================================================= # * Draw Window contents #============================================================================= def refresh self.contents.clear draw_icon(INFO_ICONS[1], 0, 24) # Steps draw_icon(INFO_ICONS[2], 0, 48) # Map Name draw_icon(INFO_ICONS[3], 0, 72) # Area draw_time self.contents.draw_text(0, 24, width - 32, WLH, $game_party.steps, 2) @map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name self.contents.draw_text(0, 48, width - 32, WLH, @map_name, 2) self.contents.draw_text(0, 72, width - 32, WLH, $game_party.gold, 2) end # refresh #============================================================================= # * Check if Playtime is different from last check #============================================================================= def update if @text != (Graphics.frame_count / Graphics.frame_rate) draw_time end super end # update #============================================================================= # * Draw playtime info #============================================================================= def draw_time self.contents.clear_rect(Rect.new(0, 0, (260 - 32), 24)) draw_icon(INFO_ICONS[0], 0, 0) # Playtime @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.draw_text(0, 0, width - 32, WLH, @text, 2) end # draw_time end # Window_MenuInfo
#=============================================================================== # * Window_Base Edits to allow for face opacity changing #=============================================================================== class Window_Base < Window #============================================================================= # * Draw the character's face graphic #============================================================================= def draw_evoface(face_name, face_index, x, y, size = 96) opacity = 100 bitmap = Cache.face(face_name) rect = Rect.new(0, 0, 0, 0) rect.x = face_index % 4 * 96 + (96 - size) / 2 rect.y = face_index / 4 * 96 + (96 - size) / 2 rect.width = size rect.height = size self.contents.blt(x, y, bitmap, rect, opacity) bitmap.dispose end # draw_evoface #============================================================================= # * Call the draw_evoface method with the relevant arguments #============================================================================= def draw_actor_evoface(actor, x, y, size = 96) draw_evoface(actor.face_name, actor.face_index, x, y, size) end # draw_actor_evoface end # Window_Base
#=============================================================================== # * Scene_File edit for returning to the right menu option #=============================================================================== class Scene_File < Scene_Base #============================================================================= # * Return to the previous scene #============================================================================= def return_scene if @from_title $scene = Scene_Title.new elsif @from_event $scene = Scene_Map.new else $scene = Scene_Menu.new(5) end end # return_scene end # Scene_File | |
|