XS - Menu Delux

Discussion in 'RGSS3 Scripts (RMVX Ace)' started by Nicke, Nov 21, 2012.

    Tags:
  1. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    [​IMG]
    XS - Menu Delux
    Version 1.1b
    Introduction
    This script will change default menu into something more customized and an animated background(s).

    Features

    • The ability to change font settings, menu commands, windows etc.
    • Add static backgrounds or animated ones that will loop when the menu is opened.
    • Add/remove more information to the detail window.
    • Menu commands can call scenes and run common events.
    • Choose a song (bgm or bgs) to be played when the menu is opened. (The previous song that was played will be remembered and continue on when the menu closes.)
    • And more!
    Screenshots

    [​IMG]
    How to Use
    To install any of my scripts, open up your script editor and copy/paste the script to an open slot below Materials but above Main. Remember to save.

    Script
    Get the script here and the Core Script.
    Optional: Download the example backgrounds and put them in Graphics/System folder.

    Updates
    Released 1.1b. More bugs corrected and added support for Yanfly's Class System script (Can display subclass next to the normal class).

    Credit
    Do credit me, Nicke, if you are planing on using any of my scripts. Thanks.
    Can be use in commercial projects.
     
    Last edited by a moderator: Feb 11, 2013
    #1
    Name, Marquise*, jtong2 and 19 others like this.
  2. ShinGamix

    ShinGamix DS Style 4Ever! Veteran

    Messages:
    3,906
    Likes Received:
    448
    Location:
    Alien Ship
    First Language:
    April Fools
    Primarily Uses:
    N/A
    Whoa this looks very nice Nicke! I am already a big fan of most all your other scripts!

    I always keep an eye out for Xail System Scripts.

    Note-XS Core HAS to be above the Menu Delux Script in the script list for it to work or you will get a message saying you need the latest version of the core script.

    Test Play 1- Error! AHH! (I chose the continue option here at the start menu)

    Line 477 - @backgrounds.each {|i| i[0].dispose unless i[0].nil? ; i[0] = nil }

    nil class?

    Test Play 2 - Trying again but choose new game this time.

    Script 'XS - Menu Delux' line 105:noMethodError occured.

    undefined method 'name' for #,Game_Map:0x8ff8608>

    I am also using your Pre-Title Script also in this project.

    Test 3- Put in a brand new clean project.

    Did the same error again.

    Line 105: "Map: #{$game_map.name}",
     
    Last edited by a moderator: Nov 21, 2012
    #2
  3. hyde9318

    hyde9318 RMC Coordinator Veteran

    Messages:
    2,593
    Likes Received:
    680
    Location:
    Michigan, USA
    First Language:
    English
    Primarily Uses:
    RMMV
    Ok, I have both a question and a suggestion.

    Question: How is the ease of adding custom menu commands? Not the variables and such, but the select-able commands themselves (the left side).

    Suggestion: Not sure if it does this or not, but maybe a center option for when you dont have many characters. Like say I start off with one single character. The script will center their "profile" vertically on the page. So essentially, with one player, it will place them where you currently have "Rupert". Then if you add a second character, it will place them where you have "Eric. However, when you place a third (or more) character(s), the menu goes back to normal (how it is shown in the screenshot).

    I ask this because I really like how this looks, but the game I am working on doesn't require many characters. Most of the time, you will only have one character in your party.
     
    #3
    nilotech likes this.
  4. ??????

    ?????? Diabolical Codemaster Veteran

    Messages:
    6,264
    Likes Received:
    2,313
    Location:
    Your OS
    First Language:
    Binary
    Primarily Uses:
    RMMV
    beautiful , just beautiful !
     
    #4
  5. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    Thanks for the feedback guys. I have updated the script now, minor bug with map name. I might do a small FAQ to explain how to edit the details and new commands later.
     
    #5
  6. Mr.Bukashi

    Mr.Bukashi Game Designer/Script Editor Veteran

    Messages:
    73
    Likes Received:
    1
    Location:
    Under your bed
    First Language:
    English
    Alright I got it tinypic is not working so I can show you a screenshot but i fixed it now for the attribute system.
     
    Last edited by a moderator: Nov 22, 2012
    #6
  7. ShinGamix

    ShinGamix DS Style 4Ever! Veteran

    Messages:
    3,906
    Likes Received:
    448
    Location:
    Alien Ship
    First Language:
    April Fools
    Primarily Uses:
    N/A
    @Nicke - The bug fix worked and the menu looks great!! Now I want to make a Window system image to match it.
     
    #7
  8. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    Great :) Have fun!
     
    #8
  9. Shablo5

    Shablo5 Veteran Veteran

    Messages:
    608
    Likes Received:
    23
    First Language:
    English
    Glad to see you decided to make it. How'd it turn out in your eyes?

    Does this include scenes? Shop, etc.
     
    #9
  10. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    This is currently only for the menu scene. I might do a shop scene later.

    Edit:

    Released 1.0c. See OP for more details.
     
    Last edited by a moderator: Nov 25, 2012
    #10
  11. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    Alright, released 1.0d. Some new features added such as live update on playtime and the ability to choose a bgm and bgs to be played when the menu is opened.
     
    #11
    Acetonide likes this.
  12. Astro86

    Astro86 Villager Member

    Messages:
    18
    Likes Received:
    0
    First Language:
    Italian
     
    Last edited by a moderator: Nov 30, 2012
    #12
  13. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    Yep, I know. The domain was due to be canceled today. I am going to fix it asap.
     
    #13
  14. Choco-Elliot Wyvern

    Choco-Elliot Wyvern Numbah 1 Konata Izumi fan Veteran

    Messages:
    750
    Likes Received:
    72
    Location:
    Fat Chocobo's forest
    First Language:
    Chocobo
    I found an error when I started up the script...didn't configure it at all...

    [​IMG]
     
    #14
  15. Puppet of Fate

    Puppet of Fate Master Puppeteer Veteran

    Messages:
    174
    Likes Received:
    1
    First Language:
    English
    I can't see the image. All I see is "Posted Image".
     
    #15
  16. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    @Choco-Elliot Wyvern: Can you post the whole script? So I can see if you missed something.

    @Puppet of Fate: Um, what do you mean? The screenshot or?
     
    #16
  17. Choco-Elliot Wyvern

    Choco-Elliot Wyvern Numbah 1 Konata Izumi fan Veteran

    Messages:
    750
    Likes Received:
    72
    Location:
    Fat Chocobo's forest
    First Language:
    Chocobo
    Here you go

    #==============================================================================

    # XaiL System - Menu Delux

    # Author: Nicke

    # Created: 20/11/2012

    # Edited: 28/11/2012

    # Version: 1.0d

    #==============================================================================

    # 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.

    #==============================================================================

    # Requires: XS - Core Script.

    #==============================================================================

    #

    # This script changes the way the menu scene works. Not compatible with

    # XS - Menu or XS - Icon Menu.

    #

    # Instructions are in the settings module below. Make sure you read through

    # everything so you understand each section.

    #

    # *** Only for RPG Maker VX Ace. ***

    #==============================================================================

    ($imported ||= {})["XAIL-XS-MENU_DELUX"] = true

    module XAIL

    module MENU_DELUX

    #--------------------------------------------------------------------------#

    # * Settings

    #--------------------------------------------------------------------------#

    # MENU_FONT:

    # MENU_FONT = [name, size, color, bold, shadow]

    MENU_FONT = [["Calibri", "Verdana"], 18, Color.new(255,255,255), true, true]

    # MENU_WINDOW:

    # MENU_WINDOW [x, y, z, opacity]

    MENU_WINDOW = [-12, -12, 200, 0]

    # STATUS_WINDOW:

    # STATUS_WINDOW [x, y, z, opacity]

    STATUS_WINDOW = [142, -4, 200, 0]

    # DETAILS_WINDOW:

    # DETAILS_WINDOW [x, y, z, opacity]

    DETAILS_WINDOW = [380, -10, 200, 0]

    # PLAYTIME_WINDOW:

    # PLAYTIME_WINDOW [x, y, z, opacity, icon, enabled]

    PLAYTIME_WINDOW = [430, 348, 200, 0, 280, true]

    # HELP_WINDOW:

    # Setup help window.

    # HELP = [x, y, z, opacity, enabled]

    HELP_WINDOW = [-6, 352, 200, 0, true]

    # MENU_ALIGNMENT:

    # MENU_ALIGNMENT = 0 (left), 1 (center), 2 (right)

    MENU_ALIGNMENT = 0 # Default: 2.

    # MENU_SKIN:

    # The windowskin to use for the windows.

    # Set to nil to disable.

    # MENU_SKIN = string

    MENU_SKIN = nil

    # MENU_LIST:

    # name, icon_index and custom are optional.

    # If name is empty it will use the corresponding symbol as name instead.

    # To make a command a common event you need to set custom to the common event

    # id you want to run as seen below.

    # symbol => [name, description, icon_index, enabled, personal, custom]

    MENU_LIST = {

    :item => ["", "Browse through your acquired items.", 4148, true, false],

    :equip => ["Equipment", "Change your equipment.", 4145, true, true],

    :skill => ["Spells", "Manage your available skills.", 4147, true, true],

    :status => ["Stats", "See the current status of the hero.", 4136, true, true],

    :formation => ["", "Change the formation of the party.", 4134, true, false],

    :save => ["", "Record your progress.", 4139, true, false],

    :load => ["", "Load your saved progress.", 4165, true, false, Scene_Load],

    :game_end => ["Quit", "Exit the program.", 4162, true, false],

    :title => ["", "Return to title.", 4133, true, false, Scene_Title],

    :event_1 => ["Camping", "Run common event camping.", 728, true, false, 1]

    } # Don't remove this line!

    # MENU_SAVE = true/false

    # Override enabled option for save (so you can change it ingame).

    MENU_SAVE = true

    # If MENU_CUSTOM is true you will have to add the commands yourself

    # ingame, which can be useful for certain quest related stuff or if you

    # want to enable/disable menu commands.

    # To add/remove a command ingame follow these instructions:

    #

    # In a script call do like this:

    # menu_scene(key, type)

    # menu_scene:)item,:add) # To add item to menu list.

    # menu_scene:)item,:del) # To remove item from menu list.

    #

    # In a conditional branch you can check if a menu command is

    # enabled/disabled:

    # menu_active?(key)

    # menu_active?:)item) # Check if item is enabled.

    # !menu_active?:)item) # Check if item is disabled.

    #

    # To set a id to be enabled do like this:

    # menu_active:)skill, true) # Set menu skill to be enabled.

    #

    # To add/remove all available menu commands use one of the

    # following methods in a script call:

    # menu_add_all

    # menu_del_all

    #

    # MENU_CUSTOM = true/false

    MENU_CUSTOM = false

    # The text to be displayed if no menu items is available.

    # Only used if MENU_CUSTOM is true.

    # MENU_EMPTY = string

    EMPTY = "Menu is not available at this point..."

    # MENU_MUSIC:

    # Set the music to be played at the menu scene.

    # This is optional.

    # MUSIC = true/false

    MUSIC = true

    # MUSIC_BGM = [name, volume, pitch]

    MUSIC_BGM = ["Theme4", 70, 100]

    # MUSIC_BGS = [name, volume, pitch]

    MUSIC_BGS = ["Darkness", 50, 100]

    # ANIM_LIST:

    # A list of animation images.

    # name => [z, zoom_x, zoom_y, blend_type, opacity]

    ANIM_LIST = {

    "Menu_Fog1" => [1, 1.2, 1.2, 1, 125],

    "Menu_Fog2" => [1, 1.8, 1.8, 1, 155]

    } # Don't remove this line!

    # BACKGROUND:

    # name => [x, y, z, opacity]

    BACKGROUND = {

    "Menu_Back" => [0, 0, 4, 255]

    } # Don't remove this line!

    # BAR_COLOR = rgba(255,255,255,255)

    # Set the color of the gauges.

    BAR_HP = [Color.new(205,50,50,65), Color.new(235,75,75,185)]

    BAR_MP = [Color.new(50,50,205,65), Color.new(75,75,235,185)]

    BAR_TP = [Color.new(50,205,50,65), Color.new(75,235,75,185)]

    # DETAILS:

    # Setup details here. (Recommended to use the default ones since you will

    # need a bit RGSS knowledge to add more.)

    def self.details

    ["#{Vocab::currency_unit}: #{$game_party.gold}",

    "Steps: #{$game_party.steps}",

    "Collected Items: #{$game_party.all_items.size}",

    "Map: #{$game_map.name}",

    "Leader: #{$game_party.leader.name}",

    "Battle count: #{$game_system.battle_count}",

    "Save count: #{$game_system.save_count}",

    "Variable I: #{$game_variables[1]}",

    "Variable II: #{$game_variables[2]}"]

    end

    # DETAILS_ICONS:

    # DETAILS_ICONS[id] = icon_id

    # Set the details icon_id. (optional)

    # Should be in the same order as details.

    # Use nil to disable a icon.

    DETAILS_ICONS = []

    DETAILS_ICONS[0] = 2114 # GOLD

    DETAILS_ICONS[1] = 172 # STEPS

    DETAILS_ICONS[2] = 270 # ITEMS

    DETAILS_ICONS[3] = 232 # MAP

    DETAILS_ICONS[4] = 4425 # LEADER

    DETAILS_ICONS[5] = 115 # BATTLE COUNT

    DETAILS_ICONS[6] = 224 # SAVE COUNT

    DETAILS_ICONS[7] = nil # VAR 1

    DETAILS_ICONS[8] = nil # VAR 2

    # Transition, nil to use default.

    # TRANSITION [speed, transition, opacity]

    TRANSITION = nil

    end

    end

    # *** Don't edit below unless you know what you are doing. ***

    #==============================================================================#

    # ** Error Handler

    #==============================================================================#

    unless $imported["XAIL-XS-CORE"]

    # // Error handler when XS - Core is not installed.

    msg = "The script %s requires the latest version of XS - Core in order to function properly."

    name = "XS - Menu Delux"

    msgbox(sprintf(msg, name))

    exit

    end

    #==============================================================================#

    # ** Game_System

    #==============================================================================#

    class Game_System

    attr_accessor :menu_list

    alias xail_menu_delux_gm_sys_initialize initialize

    def initialize(*args, &block)

    # // Method to initialize game system.

    xail_menu_delux_gm_sys_initialize(*args, &block)

    @menu_list = {}

    end

    def get_menu

    # // Method to get the menu list.

    XAIL::MENU_DELUX::MENU_CUSTOM ? @menu_list : XAIL::MENU_DELUX::MENU_LIST

    end

    end

    #==============================================================================#

    # ** Game_Interpreter

    #==============================================================================#

    class Game_Interpreter

    def menu_scene(key, type = :add)

    # // Method to add/remove a menu item to the list.

    case type

    when :add # // Add menu id.

    unless $game_system.menu_list.include?(XAIL::MENU_DELUX::MENU_LIST[key])

    $game_system.menu_list[key] = XAIL::MENU_DELUX::MENU_LIST[key]

    end unless XAIL::MENU_DELUX::MENU_LIST[key].nil?

    when :del # // Remove menu id.

    unless XAIL::MENU_DELUX::MENU_LIST[key].nil?

    $game_system.menu_list.delete(key)

    end

    end

    end

    def menu_active?(key)

    # // Method to check if menu key is enabled.

    # This will return nil if menu item not added in the list.

    return $game_system.menu_list[key][3] rescue nil

    end

    def menu_active(key, enabled)

    # // Method to enable id.

    $game_system.menu_list[id][3] = enabled

    end

    def menu_add_all

    # // Method to add all available menu items.

    XAIL::MENU_DELUX::MENU_LIST.each {|key| menu_scene(key) }

    end

    def menu_del_all

    # // Method to remove all available menu items.

    XAIL::MENU_DELUX::MENU_LIST.each {|key| menu_scene(key, :del) }

    end

    end

    #==============================================================================#

    # ** Game_Map

    #==============================================================================#

    class Game_Map

    attr_reader :name

    alias xail_menu_delux_setup setup

    def setup(map_id)

    # // Method to setup the map id.

    xail_menu_delux_setup(map_id)

    @name = $data_mapinfos[@map_id].name

    end

    end

    #==============================================================================

    # ** Window_MenuCommand

    #==============================================================================

    class Window_MenuCommand < Window_Command

    def window_width

    # // Method to return the width of MENU_window.

    return 170

    end

    def alignment

    # // Method to return the alignment.

    return XAIL::MENU_DELUX::MENU_ALIGNMENT

    end

    def menu_color(color, enabled = true)

    # // Method to set the color and alpha if not enabled.

    contents.font.color.set(color)

    contents.font.color.alpha = Colors::AlphaMenu unless enabled

    end

    def item_rect_for_text(index)

    # // Method to draw item rect for text.

    rect = item_rect(index)

    contents.fill_rect(rect.x, rect.y, contents_width, contents_height, Color.new(0,0,0,60))

    rect.x += 24

    rect.width -= 8

    draw_icon(XAIL::MENU_DELUX::MENU_LIST.values[index][2], -2, rect.y) unless XAIL::MENU_DELUX::MENU_LIST.values[index][2].nil?

    rect

    end

    def draw_item(index)

    # // Method to draw the command item.

    contents.font.name = XAIL::MENU_DELUX::MENU_FONT[0]

    contents.font.size = XAIL::MENU_DELUX::MENU_FONT[1]

    # // Save option.

    XAIL::MENU_DELUX::MENU_LIST[:save][3] = save_enabled if XAIL::MENU_DELUX::MENU_SAVE

    menu_color(XAIL::MENU_DELUX::MENU_FONT[2], menu_enabled?(index))

    # // Font settings

    contents.font.bold = XAIL::MENU_DELUX::MENU_FONT[3]

    contents.font.shadow = XAIL::MENU_DELUX::MENU_FONT[4]

    draw_text(item_rect_for_text(index), command_name(index), alignment)

    reset_font_settings

    end

    def menu_enabled?(index)

    # // Method to check if menu item is enabled.

    return $game_system.get_menu.values[index][3]

    end

    def make_command_list

    # // Method to add the commands.

    $game_system.get_menu.each {|key, value|

    name = value[0] == "" ? key.id2name.capitalize : value[0]

    XAIL::MENU_DELUX::MENU_LIST[:save][3] = save_enabled if XAIL::MENU_DELUX::MENU_SAVE

    add_command(name, key, value[3], value[5].nil? ? nil : value[5])

    }

    end

    end

    #==============================================================================

    # ** Window_MenuStatus

    #==============================================================================

    class Window_MenuStatus < Window_Selectable

    def window_width

    # // Method to determine window width.

    return 250

    end

    def window_height

    # // Method to determine window height.

    return Graphics.height

    end

    def standard_padding

    # // Method to determine standard padding.

    return 4

    end

    def col_max

    # // Method to determine col max.

    return 2

    end

    def spacing

    # // Method to determine spacing.

    return 30

    end

    def item_width

    # // Method to determine item width.

    return 98

    end

    def item_height

    # // Method to determine item height.

    return 128

    end

    def refresh

    # // Method to refresh the window.

    contents.clear

    draw_background

    draw_all_items

    end

    def draw_background

    # // Method to draw background.

    contents.fill_rect(0, 0, contents_width, contents_height, Color.new(0,0,0,60))

    end

    def draw_item(index)

    # // Method to draw item.

    actor = $game_party.members[index]

    rect = item_rect(index)

    draw_item_background(index)

    # // Face

    draw_actor_face(actor, rect.x + 1, rect.y + 1, true)

    # // Name

    draw_font_text(actor.name, rect.x + 4, rect.y, rect.width, 0, XAIL::MENU_DELUX::MENU_FONT[0], 20, XAIL::MENU_DELUX::MENU_FONT[2])

    # // Level

    lvl = "#{Vocab::level_a} #{actor.level}"

    draw_font_text(lvl, rect.x + 4, rect.y + 64, rect.width, 0, XAIL::MENU_DELUX::MENU_FONT[0], 16, XAIL::MENU_DELUX::MENU_FONT[2])

    # // Class

    draw_font_text(actor.class.name, rect.x - 4, rect.y + 76, rect.width, 2, XAIL::MENU_DELUX::MENU_FONT[0], 16, XAIL::MENU_DELUX::MENU_FONT[2])

    # // Stats

    draw_menu_stats(actor, :hp, rect.x, rect.y + 90, XAIL::MENU_DELUX::BAR_HP[0], XAIL::MENU_DELUX::BAR_HP[1], rect.width - 2)

    draw_menu_stats(actor, :mp, rect.x, rect.y + 100, XAIL::MENU_DELUX::BAR_MP[0], XAIL::MENU_DELUX::BAR_MP[1], rect.width - 2)

    draw_menu_stats(actor, :tp, rect.x, rect.y + 110, XAIL::MENU_DELUX::BAR_TP[0], XAIL::MENU_DELUX::BAR_TP[1], rect.width - 2)

    end

    def draw_menu_stats(actor, stat, x, y, color1, color2, width)

    # // Method to draw actor hp & mp.

    case stat

    when :hp

    rate = actor.hp_rate ; vocab = Vocab::hp_a ; values = [actor.hp, actor.mhp]

    when :mp

    rate = actor.mp_rate ; vocab = Vocab::mp_a ; values = [actor.mp, actor.mmp]

    when :tp

    rate = actor.tp_rate ; vocab = Vocab::tp_a ; values = [actor.tp, actor.max_tp]

    end

    contents.font.name = XAIL::MENU_DELUX::MENU_FONT[0]

    contents.font.size = 14 # // Override font size.

    contents.font.color = XAIL::MENU_DELUX::MENU_FONT[2]

    contents.font.bold = XAIL::MENU_DELUX::MENU_FONT[3]

    contents.font.shadow = XAIL::MENU_DELUX::MENU_FONT[4]

    # // Draw guage.

    draw_gauge_ex(x, y - 8, width, 8, rate, color1, color2)

    # // Draw stats.

    draw_text(x + 1, y, width, line_height, values[0], 0)

    draw_text(x - 1, y, width, line_height, values[1], 2)

    # // Draw vocab.

    draw_text(x, y, width, line_height, vocab, 1)

    reset_font_settings

    end

    end

    #==============================================================================

    # ** Window_Menu_Details

    #==============================================================================

    class Window_Menu_Details < Window_Base

    def initialize(x, y)

    # // Method to initialize.

    super(x, y, window_width, fitting_height(XAIL::MENU_DELUX.details.size) + 6)

    @leader = $game_party.leader

    refresh

    end

    def standard_padding

    # // Method to determine standard padding.

    return 8

    end

    def window_width

    # // Method to determine window width.

    return 172

    end

    def refresh

    # // Method to refresh the window.

    contents.clear

    # // Draw background.

    draw_background

    # // Draw details.

    y = -10

    XAIL::MENU_DELUX.details.each_index {|i|

    draw_line_ex(0, y+=24, Color.new(255,255,255,32), Color.new(0,0,0,64))

    draw_font_text(XAIL::MENU_DELUX.details, -4, line_height * i + 4, contents_width, 2, XAIL::MENU_DELUX::MENU_FONT[0], 16, XAIL::MENU_DELUX::MENU_FONT[2])

    }

    # // Draw icons.

    draw_icons(XAIL::MENU_DELUX::DETAILS_ICONS, :vertical, 2, line_height * 0 + 2)

    end

    def draw_background

    # // Method to draw background.

    contents.fill_rect(0, 0, contents_width, contents_height, Color.new(0,0,0,60))

    end

    def update

    # // Method to update details window.

    super

    if @leader != $game_party.leader

    @leader = $game_party.leader

    refresh

    end

    end

    end

    #==============================================================================

    # ** Window_Menu_Playtime

    #==============================================================================

    class Window_Menu_Playtime < Window_Base

    def initialize(x, y)

    # // Method to initialize.

    super(x, y, 120, fitting_height(1))

    @playtime = $game_system.playtime_s

    refresh

    end

    def refresh

    # // Method to refresh the window.

    contents.clear

    # // Draw icon.

    draw_icon(XAIL::MENU_DELUX::pLAYTIME_WINDOW[4], 4, 0)

    # // Draw playtime.

    draw_font_text(@playtime, 0, 6, contents_width, 2, XAIL::MENU_DELUX::MENU_FONT[0], 22, XAIL::MENU_DELUX::MENU_FONT[2])

    end

    def update

    # // Method to update the window.

    super

    @playtime = $game_system.playtime_s

    refresh

    end

    end

    #==============================================================================#

    # ** Window_Menu_Help

    #==============================================================================#

    class Window_Menu_Help < Window_Help

    attr_accessor :index

    alias xail_icon_menu_winhelp_init initialize

    def initialize(*args, &block)

    # // Method to initialize help window.

    xail_icon_menu_winhelp_init(*args, &block)

    @index = 0

    end

    def set_text(text, enabled)

    # // Method to set a new help text.

    if text != @text

    menu_color(XAIL::MENU_DELUX::MENU_FONT[2], enabled)

    @text = text

    refresh

    end

    end

    def refresh

    # // Refresh help contents.

    contents.clear

    draw_help_text

    end

    def draw_help_text

    # // Method to draw the help text.

    contents.font.name = XAIL::MENU_DELUX::MENU_FONT[0]

    contents.font.size = XAIL::MENU_DELUX::MENU_FONT[1]

    menu_color(XAIL::MENU_DELUX::MENU_FONT[2], menu_enabled?(@index))

    contents.font.bold = XAIL::MENU_DELUX::MENU_FONT[3]

    contents.font.shadow = XAIL::MENU_DELUX::MENU_FONT[4]

    # // Draw title and description for the menu.

    draw_line_ex(0, 14, Color.new(255,255,255,128), Color.new(0,0,0,200))

    draw_text_ex_no_reset(0, 0, @text)

    reset_font_settings

    end

    def menu_enabled?(index)

    # // Method to check if menu item is enabled.

    return $game_system.get_menu.values[index][3]

    end

    def menu_color(color, enabled = true)

    # // Method to set the color and alpha if not enabled.

    contents.font.color.set(color)

    contents.font.color.alpha = 150 unless enabled

    end

    end

    #==============================================================================#

    # ** Scene_MenuBase

    #==============================================================================#

    class Scene_MenuBase < Scene_Base

    def start

    # // Method to start the scene.

    super

    @actor = $game_party.menu_actor

    if SceneManager.scene_is?(Scene_Menu)

    @backgrounds = []

    @animations = []

    create_menu_backgrounds

    create_menu_animations

    end

    end

    def create_menu_backgrounds

    # // Method to create custom background(s).

    XAIL::MENU_DELUX::BACKGROUND.each {|key, value| @backgrounds << [sprite.new, key] }

    @backgrounds.each {|i|

    i[0].bitmap = Cache.system(i[1])

    i[0].x = XAIL::MENU_DELUX::BACKGROUND[i[1]][0]

    i[0].y = XAIL::MENU_DELUX::BACKGROUND[i[1]][1]

    i[0].z = XAIL::MENU_DELUX::BACKGROUND[i[1]][2]

    i[0].opacity = XAIL::MENU_DELUX::BACKGROUND[i[1]][3]

    }

    end

    def create_menu_animations

    # // Method to create custom animation(s).

    # name => [z, zoom_x, zoom_y, blend_type, opacity]

    XAIL::MENU_DELUX::ANIM_LIST.each {|key, value| @animations.push << [Plane.new, key] }

    @animations.each {|i|

    i[0].bitmap = Cache.system(i[1])

    i[0].z = XAIL::MENU_DELUX::ANIM_LIST[i[1]][0]

    i[0].zoom_x = XAIL::MENU_DELUX::ANIM_LIST[i[1]][1]

    i[0].zoom_y = XAIL::MENU_DELUX::ANIM_LIST[i[1]][2]

    i[0].blend_type = XAIL::MENU_DELUX::ANIM_LIST[i[1]][3]

    i[0].opacity = XAIL::MENU_DELUX::ANIM_LIST[i[1]][4]

    }

    end

    alias xail_upd_menubase_delux_upd update

    def update(*args, &block)

    # // Method for updating the scene.

    xail_upd_menubase_delux_upd(*args, &block)

    if SceneManager.scene_is?(Scene_Menu)

    for i in 0...@animations.size

    @animations[0].ox += 1.2 - i

    @animations[0].oy -= 0.6 + i

    end unless scene_changing?

    delay?(1)

    end

    end

    def delay?(amount)

    # // Method to delay.

    amount.times do

    update_basic

    end

    end

    alias xail_menubase_delux_transition perform_transition

    def perform_transition(*args, &block)

    # // Method to create the transition.

    return if $game_system.get_menu.empty?

    if XAIL::MENU_DELUX::TRANSITION.nil?

    xail_menubase_delux_transition(*args, &block)

    else

    Graphics.transition(XAIL::MENU_DELUX::TRANSITION[0],XAIL::MENU_DELUX::TRANSITION[1],XAIL::MENU_DELUX::TRANSITION[2])

    end

    end

    def dispose_sprites

    # // Method to dispose sprites.

    @backgrounds.each {|i| i[0].dispose unless i[0].nil? ; i[0] = nil } rescue nil

    @animations.each {|i| i[0].dispose unless i[0].nil? ; i[0] = nil } rescue nil

    end

    def terminate

    # // Method to terminate.

    super

    dispose_sprites unless SceneManager.scene_is?(Scene_Menu)

    end

    end

    #==============================================================================#

    # ** Scene_Menu

    #==============================================================================#

    class Scene_Menu < Scene_MenuBase

    def start

    super

    # // Method to start the scene.

    # // Return if menu empty.

    return command_map if $game_system.get_menu.empty?

    # // Create windows.

    create_menu_command_window

    create_menu_status_window

    create_menu_details_window

    create_menu_playtime_window if XAIL::MENU_DELUX::pLAYTIME_WINDOW[5]

    if XAIL::MENU_DELUX::HELP_WINDOW[4]

    create_menu_help_window

    help_update(@command_window.index)

    end

    # // Play music if enabled.

    play_menu_music if XAIL::MENU_DELUX::MUSIC

    end

    def create_menu_command_window

    # // Method to create the command window.

    @command_window = Window_MenuCommand.new

    @command_window.windowskin = Cache.system(XAIL::MENU_DELUX::MENU_SKIN) unless XAIL::MENU_DELUX::MENU_SKIN.nil?

    @command_window.x = XAIL::MENU_DELUX::MENU_WINDOW[0]

    @command_window.y = XAIL::MENU_DELUX::MENU_WINDOW[1]

    @command_window.z = XAIL::MENU_DELUX::MENU_WINDOW[2]

    @command_window.opacity = XAIL::MENU_DELUX::MENU_WINDOW[3]

    $game_system.get_menu.each {|key, value|

    unless value[5].nil?

    @command_window.set_handler(key, method:)command_custom))

    else

    if value[4]

    @command_window.set_handler(key, method:)command_personal))

    else

    @command_window.set_handler(key, method("command_#{key}".to_sym))

    end

    end

    }

    @command_window.set_handler:)cancel, method:)return_scene))

    end

    def create_menu_status_window

    # // Method to create the status window.

    x = XAIL::MENU_DELUX::STATUS_WINDOW[0]

    y = XAIL::MENU_DELUX::STATUS_WINDOW[1]

    @status_window = Window_MenuStatus.new(x, y)

    @status_window.z = XAIL::MENU_DELUX::STATUS_WINDOW[2]

    @status_window.opacity = XAIL::MENU_DELUX::STATUS_WINDOW[3]

    end

    def create_menu_details_window

    # // Method to create the details window.

    x = XAIL::MENU_DELUX::DETAILS_WINDOW[0]

    y = XAIL::MENU_DELUX::DETAILS_WINDOW[1]

    @details_window = Window_Menu_Details.new(x, y)

    @details_window.z = XAIL::MENU_DELUX::DETAILS_WINDOW[2]

    @details_window.opacity = XAIL::MENU_DELUX::DETAILS_WINDOW[3]

    end

    def create_menu_playtime_window

    # // Method to create the playtime window.

    x = XAIL::MENU_DELUX::pLAYTIME_WINDOW[0]

    y = XAIL::MENU_DELUX::pLAYTIME_WINDOW[1]

    @playtime_window = Window_Menu_Playtime.new(x, y)

    @playtime_window.z = XAIL::MENU_DELUX::pLAYTIME_WINDOW[2]

    @playtime_window.opacity = XAIL::MENU_DELUX::pLAYTIME_WINDOW[3]

    end

    def create_menu_help_window

    # // Method to create the help window.

    @help_window = Window_Menu_Help.new(2)

    @help_window.viewport = @viewport

    @help_window.windowskin = Cache.system(XAIL::MENU_DELUX::MENU_SKIN) unless XAIL::MENU_DELUX::MENU_SKIN.nil?

    @help_window.index = @command_window.index

    @help_window.x = XAIL::MENU_DELUX::HELP_WINDOW[0]

    @help_window.y = XAIL::MENU_DELUX::HELP_WINDOW[1]

    @help_window.z = XAIL::MENU_DELUX::HELP_WINDOW[2]

    @help_window.opacity = XAIL::MENU_DELUX::HELP_WINDOW[3]

    end

    def play_menu_music

    # // Method to play menu music.

    @last_bgm = RPG::BGM.last

    @last_bgs = RPG::BGS.last

    bgm = XAIL::MENU_DELUX::MUSIC_BGM

    bgs = XAIL::MENU_DELUX::MUSIC_BGS

    Sound.play(bgm[0], bgm[1], bgm[2], :bgm)

    Sound.play(bgs[0], bgs[1], bgs[2], :bgs)

    end

    alias xail_upd_menu_delux_upd update

    def update(*args, &block)

    # // Method for updating the scene.

    xail_upd_menu_delux_upd(*args, &block)

    if XAIL::MENU_DELUX::HELP_WINDOW[4]

    old_index = @help_window.index

    if old_index != @command_window.index

    help_update(@command_window.index)

    end

    end

    end

    def help_update(index)

    # // If index changes update help window text.

    list = XAIL::MENU_DELUX::MENU_LIST

    icon = list.values[index][2].nil? ? "" : list.values[index][2]

    name = list.values[index][0] == "" ? list.keys[index].id2name.capitalize : list.values[index][0]

    if icon == "" ; title = name ; else ; title = '\i[' + icon.to_s + ']' + name ; end

    desc = '\c[0]' + list.values[index][1]

    text = "#{title}\n#{desc}"

    enabled = list.values[index][3]

    @help_window.index = index

    @help_window.set_text(text, enabled)

    end

    def on_personal_ok

    # // Method override on personal ok.

    scene = "Scene_#{@command_window.current_symbol.to_s.capitalize}".to_class

    SceneManager.call(scene)

    end

    def command_custom

    # // Method to call a custom command. (Don't remove)

    if @command_window.current_ext.is_a?(Integer)

    $game_temp.reserve_common_event(@command_window.current_ext)

    return command_map

    end

    SceneManager.call(@command_window.current_ext)

    end

    def command_map

    # // command_map (Don't remove)

    if $game_system.get_menu.empty?

    Sound.play_buzzer

    $game_message.texts << XAIL::MENU_DELUX::EMPTY

    end

    SceneManager.call(Scene_Map)

    end

    def pre_terminate

    # // Method to pre terminate scene menu.

    # // Play last bgm and bgs if menu music is enabled.

    if XAIL::MENU_DELUX::MUSIC

    @last_bgm.replay rescue nil

    @last_bgs.replay rescue nil

    end

    end

    end # END OF FILE

    #=*==========================================================================*=#

    # ** END OF FILE

    #=*==========================================================================*=#
    I don't really have any other scripts that directly influence the main menu....
     
    #17
  18. Nicke

    Nicke Fortune seeker Veteran

    Messages:
    535
    Likes Received:
    516
    Location:
    Sweden
    First Language:
    Swedish
    Primarily Uses:
    RMMV
    The exact script works for me. It must be something on your end.
     
    #18
    joeyhugg likes this.
  19. Choco-Elliot Wyvern

    Choco-Elliot Wyvern Numbah 1 Konata Izumi fan Veteran

    Messages:
    750
    Likes Received:
    72
    Location:
    Fat Chocobo's forest
    First Language:
    Chocobo
    Okay I'll try testing it with some scripts and come back to you...
     
    Last edited by a moderator: Dec 31, 2012
    #19
  20. Puppet of Fate

    Puppet of Fate Master Puppeteer Veteran

    Messages:
    174
    Likes Received:
    1
    First Language:
    English
    The screenshot. I don't know if its me or what but it isn't displaying a picture, just "posted image".
     
    #20

Share This Page