XS - Menu Delux

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
First Language
Swedish
Primarily Uses
RMMV
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

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:

ShinGamix

DS Style 4Ever!
Veteran
Joined
Mar 18, 2012
Messages
3,907
Reaction score
450
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:

hyde9318

RMC Coordinator
Veteran
Joined
Apr 1, 2012
Messages
2,593
Reaction score
680
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.
 

??????

Diabolical Codemaster
Veteran
Joined
May 11, 2012
Messages
6,273
Reaction score
2,335
First Language
Binary
Primarily Uses
RMMV
beautiful , just beautiful !
 

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
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.
 

Mr.Bukashi

Game Designer/Script Editor
Veteran
Joined
Nov 2, 2012
Messages
73
Reaction score
1
First Language
English
Primarily Uses
Some more fine work from you nicke wish i could use this in my game but I'm using the Questlog system and I don't think it is compatible with this. I will try my best to edit it and if it works I'll let you know.
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:

ShinGamix

DS Style 4Ever!
Veteran
Joined
Mar 18, 2012
Messages
3,907
Reaction score
450
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.
 

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
First Language
Swedish
Primarily Uses
RMMV
Great :) Have fun!
 

Shablo5

Veteran
Veteran
Joined
May 23, 2012
Messages
608
Reaction score
23
First Language
English
Primarily Uses
Glad to see you decided to make it. How'd it turn out in your eyes?

Does this include scenes? Shop, etc.
 

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
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:

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
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.
 

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
First Language
Swedish
Primarily Uses
RMMV
Yep, I know. The domain was due to be canceled today. I am going to fix it asap.
 

Choco-Elliot Wyvern

Numbah 1 Konata Izumi fan
Veteran
Joined
Sep 15, 2012
Messages
750
Reaction score
72
First Language
Chocobo
Primarily Uses
I found an error when I started up the script...didn't configure it at all...

 

Puppet of Fate

Master Puppeteer
Veteran
Joined
Dec 18, 2012
Messages
174
Reaction score
1
First Language
English
Primarily Uses
I can't see the image. All I see is "Posted Image".
 

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
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?
 

Choco-Elliot Wyvern

Numbah 1 Konata Izumi fan
Veteran
Joined
Sep 15, 2012
Messages
750
Reaction score
72
First Language
Chocobo
Primarily Uses
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....
 

Nicke

Fortune seeker
Veteran
Joined
Apr 4, 2012
Messages
546
Reaction score
546
First Language
Swedish
Primarily Uses
RMMV
The exact script works for me. It must be something on your end.
 

Choco-Elliot Wyvern

Numbah 1 Konata Izumi fan
Veteran
Joined
Sep 15, 2012
Messages
750
Reaction score
72
First Language
Chocobo
Primarily Uses
Okay I'll try testing it with some scripts and come back to you...
 
Last edited by a moderator:

Puppet of Fate

Master Puppeteer
Veteran
Joined
Dec 18, 2012
Messages
174
Reaction score
1
First Language
English
Primarily Uses
@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?
The screenshot. I don't know if its me or what but it isn't displaying a picture, just "posted image".
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

I was today years old when I realized I could choose where to put choices in VNMaker. Oi.
What if I start to make final boss first then crawl down from there to make lesser bosses
i don't even know why i bother. Trying to to a simple candle light to flicker. Hour later no progress.

Forum statistics

Threads
97,842
Messages
947,294
Members
129,060
Latest member
choibento
Top