Tetsune

Professional Procrastinator™
Veteran
Joined
Jul 13, 2013
Messages
51
Reaction score
10
First Language
English
Primarily Uses
RMVXA
I'd like to start of saying I don't know a dang thing about Ruby script LOL
So, up until now, I haven't had an issue because I modified 3 menu scripts (The Luna Engine Menu Scripts, Galv's Menu Themes, and Galv's Menu Layout) to fit together and keep all the elements of each...
Except one issue I just discovered.

433e55d99a5a4dbba9e8e9c94e6dbbcf.png


In order to get the Luna Engine to work with Galv's scripts, I had to rip out some of the code in order to get the main menu to work, but now it's reading the main menu when I use an item (I think?).I cannot scroll over to other actors either.

Is there anything I can do to remedy this?
I want to keep Galv's because I love the main menu, and I needed the Luna Engine to customize the inner menus, but I really need to fix this issue (and customize it orz)

#------------------------------------------------------------------------------#
# Galv's Menu Themes Engine
#------------------------------------------------------------------------------#
# For: RPGMAKER VX ACE
# Version 1.6
#------------------------------------------------------------------------------#
# NOTICE: This script is NOT free for commercial use.
# Contact Galv via PM at one of the following forums:
# http://www.rpgmakervxace.net/
# http://forums.rpgmakerweb.com/
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# 2013-06-27 - Version 1.6 - compatibility fix for xp rate
# 2013-06-11 - Version 1.5 - bug fixed with help menu text on incorrect menu
# 2013-06-09 - Version 1.4 - bug missed with last fix... now fixed. I hope.
# 2013-06-08 - Version 1.3 - fixed bug with hidden menu items
# - made disabled buttons text transparent
# 2013-04-16 - Version 1.2 - fixed a graphic object bug. Also included
# - Killozappit's Cache Back script in the demo to
# - help with lag on slower computers.
# 2013-04-15 - Version 1.1 - fixed a bug with using items/skills on actors
# 2013-04-15 - Version 1.0 - release
#------------------------------------------------------------------------------#
# This script replaces the default menu and thus will not be compatible with
# other scripts that do the same. The new changes to the menu offer a few
# things such as:
# - Image controlled menu scenes (including moving backgrounds)
# - 'Themes' allow you to customize the look of the menu and change it in game
# - Other scenes can change with theme (eg. item, equip, custom scenes, etc.)
# - Customisable menu commands (icons, visibility switches, order, vocab)
# - Animated (sliding) commands
# - Help window for selected command
# - Information bar with gold, current location and play time
# - Modified actor status to include exp and tp (for actors with preserve tp)
#------------------------------------------------------------------------------#

#-------------------------------------------------------------------------------
# SCRIPT CALL
#-------------------------------------------------------------------------------
#
# theme("Theme_Name") # Changes your menu theme to use the specified one.
#
#-------------------------------------------------------------------------------

($imported ||= {})["Galv_Menu_Themes"] = true
module GMENU
COMMAND_LIST = [ # don't touch

#-------------------------------------------------------------------------------
#
# * MENU - COMMAND SETUP
#
#-------------------------------------------------------------------------------
# Below list is your in-game menu commands. This replaces the database vocab
# names and adds more control over customizing your game menu.
#-------------------------------------------------------------------------------

# ["Menu Text", :command_type, :Scene, switch1, switch2, help txt, icon]
["Items", :cmd, :Scene_Item, 0, 0, "View or use items from your inventory.",270],
["Abilities", :sel, :Scene_Skill, 0, 0, "View or use character skills.",112],
["Gear", :sel, :Scene_Equip, 0, 0, "Equip your characters with weapons and armor.",170],
["Status", :sel, :Scene_Status, 0, 0, "View status of your characters.",117],
["Formation", :sel, :Formation, 0, 0, "Change your character order",121],
["Records",:cmd, :Scene_CSCA_Encyclopedia, 0, 0, "View your records of characters, places, etc",278],
["Save", :cmd, :Scene_Save, 0, 0, "Record your game progress.",224],
["See Ya!", :cmd, :Scene_End, 0, 0, "End or restart the game.",6],

# ["Example2",:cmd, 1, 0, 0, "Example command - calls common event 1",278],



# Here are examples of adding functionality via script. The script code for
# these examples is in the "Example Script Commands" script in the list.
#["Gold!", :cmd, :custom1, 0, 0, "Scripted custom symbol example",280],
#["Levelup!", :sel, :custom2, 0, 0, "Scripted custom symbol on actor select example",290],

#-------------------------------------------------------------------------------
] # don't touch
#-------------------------------------------------------------------------------
# INSTRUCTIONS
#-------------------------------------------------------------------------------
# "Menu Text"........ the text used for the menu item
# :command_type...... :cmd - goes to the scene when menu item accessed.
# :sel - select actor before going to the scene.
# scene.............. name of the scene as a symbol. eg. :Scene_Item (*)
# make this a number instead to call a common event.
# switch1............ if switch is OFF, item is disabled. 0 to not use
# switch2............ if switch is OFF, item will not appear. 0 to not use
# help txt........... text that appears at the top of the menu screen
# icon............... the icon id to use an icon next to your menu command
#-------------------------------------------------------------------------------
# (*) Scripters can use a custom symbol here to do other functions by aliasing
# or overwriting methods found on
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
#
# * MENU SETTINGS
#
#-------------------------------------------------------------------------------


SHOW_TP = false # Show TP if actor has 'preserve tp' feature true or false

ACTORS_SHOWN = 4 # Number of actors visible in the menu before scrolling

DEFAULT_THEME = "Theme_Default" # The theme your game will use to begin.


#-------------------------------------------------------------------------------
# THEME SETUP - DEFAULT THEME
#-------------------------------------------------------------------------------
module Theme_Default

# Gerenal Options
FONT = "Aller" # Font used throughout theme.
FONT_SIZE = 22 # Font size used throughout theme.
WINDOW_TONE = [0,0,0,0] # Color tone of scenes that use windowskins

# Background
BACK1_XY = [0,1] # X,Y movement for background1 (default stars)
BACK1_OPACITY = 190 # Background opacity

BACK2_XY = [0,0] # X,Y movement for background2 (default top bar)
BACK2_OPACITY = 255 # Background opacity

BACK3_XY = [0,0] # X,Y movement for background2 (default bottom bar)
BACK3_OPACITY = 255 # Background opacity

SCENE_BACK_OPACITY = 255 # Background opacity for other scene background

# Command Menu
MENU_FONT = "Aller Display" # Different font used for the menu text
MENU_FONT_SIZE = 22 # Size of menu text
MENU_TXT_COLOR = Color.new(255, 255, 255, 255) # Color of menu text
MENU_TXT_OUT = Color.new(27, 57, 97, 255) # Color of menu text outline
MENU_TXT_XY = [0,-2] # X,Y offset for text in command menu
MENU_ICON_XY = [35,1] # X,Y offset for icons in command menu
SLIDE_ICON = true # true or false to slide icon with menu text
SLIDE_SPEED = 5 # Speed the menu buttons slide in and out
SLIDE_OFF = -30 # X Position of button when cursor not on it
SLIDE_ON = 0 # X Position of button when cursor is on it
MENU_Y_OFFSET = 58 # Distance Y from top of screen
MENU_WIDTH = 170 # Width reserved for the main menu.

# Help Window
HELP_XY = [50,2] # X,Y offset for help text
HELP_TEXT_COLOR = Color.new(255, 255, 255, 255) # Color of help text

# Game Info Window
INFO_XY = [0,0] # X,Y offset for info text
GAME_INFO_TXT_COLOR = Color.new(200, 235, 255, 255) # Game Info text color
CURRENCY_ICON = 0 # Icon used instead of currency vocab. 0 = vocab

# Actor Status
STAT_COLOR = Color.new(167, 223, 248, 255) # Color used for lvl,hp,mp
GAUGEB_COLOR = Color.new(20, 20, 20, 255) # Color of gauge backs
HP_COLOR1 = Color.new(74, 197, 61, 255) # Color for hp gauge gradient
HP_COLOR2 = Color.new(169, 206, 89, 255)# Color for hp gauge gradient
MP_COLOR1 = Color.new(5, 132, 179, 255) # Color for mp gauge gradient
MP_COLOR2 = Color.new(40, 197, 255, 255)# Color for mp gauge gradient
XP_COLOR1 = Color.new(88, 147, 174, 255) # Color for xp gauge gradient
XP_COLOR2 = Color.new(133, 181, 203, 255)# Color for xp gauge gradient
TP_COLOR1 = Color.new(255, 166, 12, 255) # Color for tp gauge gradient
TP_COLOR2 = Color.new(255, 126, 12, 255)# Color for tp gauge gradient
GAUGE_FONT = "Aller Display" # Font used for hp/mp and amounts.
end

#-------------------------------------------------------------------------------
# CUSTOM THEMES
#-------------------------------------------------------------------------------
# You can make your own custom menu themes and swap between them during the
# game or make them available for others to use. Each theme has it's own folder
# in your project located in /Graphics/GMenu/Theme_Name/
# For example the default theme is:
# /Graphics/GMenu/Theme_Default/
#
# HOW TO MAKE A THEME:
# 1. Make a duplicate of the /Theme_Default/ folder and rename it.
# 2. Modify the graphics how you see fit, using the default as templates
# 3. (Optional) You can use the theme_settings.txt file found in the template
# folder to create new settings for the theme. Copy the script from the
# file and paste it a new script position below this menu script. Change
# "Theme_Default" at the top to the name of your theme's folder.
# 4. If you did that right, now in your game, you can use the script call:
# theme("Theme_Name")
# To change your menu theme during the game to any theme you have installed.
#
# If you do not create your own settings script (step 3) for your custom theme,
# it will use the settings from Theme_Default.
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# THEME SETUP - INNER SCENES
#-------------------------------------------------------------------------------
# Inner scenes (such as item, equip, skills etc) can use the same Background
# (using BACK1 setting) as well as windowskin used in the current theme.
# List scenes below that you wish for this to occur.
#-------------------------------------------------------------------------------
SCENE_THEMES = [ # don't touch
#-------------------------------------------------------------------------------

"Scene_Item",
"Scene_Skill",
"Scene_Equip",
#"Scene_Status",
"Scene_Save",
"Scene_End",
"Scene_Party",
"Scene_System",
"Scene_Load",

#"Scene_File",
#"Scene_Load",
#"Scene_Shop",
#"Scene_Name",
#"Scene_Gameover",
#"Scene_Title",

#-------------------------------------------------------------------------------
] # don't touch
#-------------------------------------------------------------------------------
# In addition to this, the script will check the theme folder for any images.
# with the scene name (above) followed by "_Background" and "_Background2".
# For example if the following file is found in the theme folder:
# Scene_Item_Background.png (or jpg)
# It will use that image INSTEAD of Background.jpg for Background1. It will
# also look for Scene_Item_Background2.png (or jpg) which will appear above
# the first background. This background is static and does not move.
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
#
# * END SETTINGS
#
#-------------------------------------------------------------------------------

end # GMENU


module Check_Theme
def mtheme
Object.const_get("GMENU").const_get($game_system.menu_theme) rescue
GMENU::Theme_Default
end
end # Check_Theme


#----------------------#
#---| GAME_INTERPERTER |----------------------------------------------------
#----------------------#

class Game_Interpreter
def theme(name)
$game_system.menu_theme = name
end
end # Game_Interpreter


#-----------#
#---| CACHE |---------------------------------------------------------------
#-----------#

module Cache
def self.gmenu(filename,theme)
load_bitmap("Graphics/GMenu/" + theme + "/", filename)
end
end # Cache


#-----------------#
#---| GAME_SYSTEM |---------------------------------------------------------
#-----------------#

class Game_System
attr_accessor :menu_theme

alias gmenu_engine_gs_initialize initialize
def initialize
@menu_theme = GMENU::DEFAULT_THEME
gmenu_engine_gs_initialize
end
end # Game_System


#---------------#
#---| GAME_TEMP |-----------------------------------------------------------
#---------------#

class Game_Temp
attr_accessor :themed_scene
attr_accessor :menuindexes

alias gmenu_engine_gt_initialize initialize
def initialize
@themed_scene = false
gmenu_engine_gt_initialize
end
end # Game_Temp


#----------------#
#---| GAME_ACTOR |----------------------------------------------------------
#----------------#

class Game_Actor < Game_Battler
def xp_rate
a = (exp.to_f - current_level_exp.to_f)
b = (next_level_exp.to_f - current_level_exp.to_f)
if exp > 0 && b > 0
return a / b
else
return 0
end
end
end # Game_Actor < Game_Battler


#----------------#
#---| SCENE_MENU |----------------------------------------------------------
#----------------#

class Scene_Menu < Scene_MenuBase
attr_accessor :command_window
include Check_Theme

# OVERWRITE
def start
super
create_graphics
create_help_window
create_new_command_window
create_gameinfo_window
create_status_window
end

#---| CREATE WINDOWS |

def create_help_window
@help_window = Window_MenuHelp.new
end

# OVERWRITE
def create_status_window
@status_window = Window_MainMenuStatus.new(@command_window.width,
@help_window.height,Graphics.height - @help_window.height -
@gameinfo_window.height)
end

# OVERWRITE
def create_new_command_window
@command_window = Window_MenuCommand.new(0,@help_window.height)
@command_window.help_window = @help_window
menu_array = Array.new(GMENU::COMMAND_LIST)
menu_array.each { |cmd|
handle = cmd[0].delete(' ').downcase.to_sym
@command_window.set_handler(handle, method(cmd[1]))
}
@command_window.set_handler:)cancel, method:)return_scene))
end

def create_gameinfo_window
@gameinfo_window = Window_GameInfo.new
@gameinfo_window.x = 0
@gameinfo_window.y = Graphics.height - @gameinfo_window.height
end

#---| CREATE GRAPHICS |

def create_graphics
create_background2
create_background3
end

def create_background2
@background2 = Plane.new
@background2.bitmap = Cache.gmenu("Background2",$game_system.menu_theme)
@background2.opacity = mtheme::BACK2_OPACITY
end

def create_background3
@background3 = Plane.new
@background3.bitmap = Cache.gmenu("Background3",$game_system.menu_theme)
@background3.opacity = mtheme::BACK3_OPACITY
@background3.oy = -Graphics.height
end

#---| UPDATING |

def update
super
update_background2
update_background3
update_gameinfo
end

def update_background2
@background2.ox -= mtheme::BACK2_XY[0]
@background2.oy -= mtheme::BACK2_XY[1]
end
def update_background3
@background3.ox -= mtheme::BACK3_XY[0]
@background3.oy -= mtheme::BACK3_XY[1]
end
def update_gameinfo
@gameinfo_window.refresh
end

#---| FUNCTIONALITY |

alias gmenu_engine_sm_dispose_background dispose_background
def dispose_background
gmenu_engine_sm_dispose_background
if @background2
@background2.bitmap.dispose
@background2.dispose
end
if @background3
@background3.bitmap.dispose
@background3.dispose
end
end

def cmd
cmd = $game_temp.menuindexes[@command_window.index]
symbol = GMENU::COMMAND_LIST[cmd][2]
if GMENU::COMMAND_LIST[cmd][2].is_a?(Integer)
common_event_command(GMENU::COMMAND_LIST[cmd][2])
elsif custom_symbol(symbol)
custom_on_command_ok(symbol)
else
SceneManager.call(GMENU::COMMAND_LIST[cmd][2])
end
end

def common_event_command(id)
$game_temp.reserve_common_event(id)
SceneManager.return
end

def sel
command_personal
end

# OVERWRITE
def command_personal
@status_window.select_last
@status_window.activate
@status_window.set_handler:)ok, method:)on_personal_ok))
@status_window.set_handler:)cancel, method:)on_personal_cancel))
end

# OVERWRITE
def on_personal_ok
cmd = $game_temp.menuindexes[@command_window.index]
symbol = GMENU::COMMAND_LIST[cmd][2]
if symbol == :Formation
on_formation_ok
elsif custom_symbol(symbol)
custom_on_personal_ok(symbol)
else
SceneManager.call(symbol)
end
end

def custom_symbol(symbol)
# Alias/overwrite this method for custom symbols.
# Make this method return true if symbol equals your custom symbol.
end

def custom_on_command_ok(symbol)
# Alias/overwrite this method for custom symbols. (For 'ok' on command)
# Add your functionality here including if symbol equals your custom symbol.
end

def custom_on_personal_ok(symbol)
# Alias/overwrite this method for custom symbols. (For 'ok' on actor)
# Add your functionality here including if symbol equals your custom symbol.
end

def custom_on_personal_cancel(symbol)
# Alias/overwrite this method for custom symbols. (Cancelling on actor)
# Add your cancel code here including if symbol equals your custom symbol.
end

# OVERWRITE
def on_personal_cancel
cmd = @command_window.index
symbol = GMENU::COMMAND_LIST[cmd][2]
if symbol == :Formation
on_formation_cancel
elsif custom_symbol(symbol)
custom_on_personal_cancel(symbol)
else
@status_window.unselect
@command_window.activate
end
end
end # Scene_Menu < Scene_MenuBase


#------------------------#
#---| WINDOW_MENUCOMMAND |--------------------------------------------------
#------------------------#

class Window_MenuCommand < Window_Command

#OVERWRITE
def initialize(x,y)
@menu_buttons = []
super(x, y)
select_last
self.opacity = 0
end

def draw_item(index)
@menu_buttons << MenuBtn.new(@viewport,index)
end

def visible_line_number
item_max
end

def window_width
return mtheme::MENU_WIDTH
end

def update
super
@menu_buttons.each { |btn| btn.update(index) }
end

def dispose
@menu_buttons.each { |btn| btn.dispose }
super
end

def update_cursor
if @cursor_all
cursor_rect.empty
self.top_row = 0
elsif @index < 0
cursor_rect.empty
else
ensure_cursor_visible
cursor_rect.empty
end
end

def add_new_main_commands
$game_temp.menuindexes = []
menu_array = Array.new(GMENU::COMMAND_LIST)
menu_array.each_with_index { |cmd,i|
next if cmd[4] > 0 && !$game_switches[cmd[4]]
$game_temp.menuindexes << i
text = cmd[0]
active = get_active(cmd[2],cmd[3])
handle = cmd[0].delete(' ').downcase.to_sym
add_command(text, handle, active)
}
end

def get_active(symbol,switch)
return false if switch > 0 && !$game_switches[switch]
case symbol
when :Formation
formation_enabled
when :Scene_Save
save_enabled
else
main_commands_enabled
end
end

def make_command_list
add_new_main_commands
end

end # Window_MenuCommand < Window_Command


#----------------------#
#---| WINDOW_MENUSTATUS |----------------------------------------------------
#----------------------#

class Window_MainMenuStatus < Window_MenuStatus
include Check_Theme

def initialize(x, y, h = 0)
@height = h
super(x, y)
self.opacity = 0
end

def window_width
Graphics.width - mtheme::MENU_WIDTH
end

def standard_padding
return 6
end

def window_height
@height
end
end


#--------------------#
#---| WINDOW_MENUHELP |------------------------------------------------------
#--------------------#

class Window_MenuHelp < Window_Help
include Check_Theme

def initialize
super(1)
self.opacity = 0
end

def standard_padding
return 6
end

def clear
ind = $game_temp.menuindexes[SceneManager.scene.command_window.index]
set_text(GMENU::COMMAND_LIST[ind][5])
end

def refresh
contents.clear
draw_text_ex(mtheme::HELP_XY[0], mtheme::HELP_XY[1], @text)
end

def draw_text_ex(x, y, text)
reset_font_settings
change_color(mtheme::HELP_TEXT_COLOR)
self.contents.font.name = mtheme::FONT
self.contents.font.size = mtheme::FONT_SIZE
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
end


#---------------------#
#---| WINDOW_GAMEINFO |-----------------------------------------------------
#---------------------#

class Window_GameInfo < Window_Base
include Check_Theme

def initialize
super(0, 0, Graphics.width, fitting_height(1))
self.opacity = 0
refresh
end

def standard_padding
return 6
end

def refresh
contents.clear
self.contents.font.name = mtheme::FONT
self.contents.font.size = mtheme::FONT_SIZE
draw_gld
draw_location
draw_playtime
end

def draw_gld
value = $game_party.gold
if mtheme::CURRENCY_ICON > 0
i = draw_icon(mtheme::CURRENCY_ICON, contents.width / 4 - 43, -1, true)
draw_currency_value(value,i,tx+4,ty,contents.width / 4 - 45)
else
draw_currency_value(value,Vocab::currency_unit,tx+4,ty,contents.width / 4 - 18)
end
end

def tx
mtheme::INFO_XY[0]
end
def ty
mtheme::INFO_XY[1]
end

def draw_location
change_color(mtheme::GAME_INFO_TXT_COLOR)
draw_text(tx,ty,Graphics.width,line_height,$game_map.display_name,1)
end

def draw_playtime
draw_text(tx,ty,Graphics.width - 20,line_height,time_text,2)
end

def time_text
sprintf("%02d:%02d:%02d", (Graphics.frame_count / 60**2) / 60,
Graphics.frame_count / 60**2 % 60,
Graphics.frame_count / 60 % 60)
end

def draw_currency_value(value, unit, x, y, width)
cx = text_size(unit).width
change_color(mtheme::GAME_INFO_TXT_COLOR)
draw_text(x, y, width - cx - 2, line_height, value, 2)
change_color(system_color)
draw_text(x, y, width, line_height, unit, 2)
end

def open
refresh
super
end
end


#-----------------#
#---| WINDOW_BASE |---------------------------------------------------------
#-----------------#

class Window_Base < Window
include Check_Theme

alias galv_gmenu_engine_wb_initialize initialize
def initialize(x, y, width, height)
galv_gmenu_engine_wb_initialize(x, y, width, height)
if $game_temp.themed_scene
self.windowskin = Cache.gmenu("Windowskin",$game_system.menu_theme) rescue
Cache.system("Window")
set_theme_tone
end
end

alias galv_gmenu_engine_wb_system_color system_color
def system_color
if $game_temp.themed_scene
mtheme::STAT_COLOR
else
galv_gmenu_engine_wb_system_color
end
end

alias galv_gmenu_engine_wb_gauge_back_color gauge_back_color
def gauge_back_color
if $game_temp.themed_scene
mtheme::GAUGEB_COLOR
else
galv_gmenu_engine_wb_gauge_back_color
end
end

def set_theme_tone
a,b,c,d = mtheme::WINDOW_TONE
self.tone.set(a,b,c,d)
end

alias galv_gmenu_engine_wb_update_tone update_tone
def update_tone
if $game_temp.themed_scene
set_theme_tone
else
galv_gmenu_engine_wb_update_tone
end
end

def draw_back_graphics(ind,height,width,enabled = true)
if enabled
bitmap = Cache.gmenu("ActorBackground",$game_system.menu_theme)
else
bitmap = Cache.gmenu("ActorBackgroundDisabled",$game_system.menu_theme)
end
rect = Rect.new(1,0,width - 2,bitmap.height + 2)
y = (rect.y + height) * ind - (bitmap.height - height) - 2
contents.blt(rect.x, y, bitmap, rect, 255)
bitmap.dispose
end

def draw_gsimple_status(actor, x, y, height)
contents.font.name = mtheme::FONT
contents.font.size = mtheme::FONT_SIZE
draw_actor_name(actor, x, y + height - 30)
draw_glevel(actor, x, y + height - 30 - line_height * 1)
draw_gicons(actor, x - 108, y + line_height * 2 + 3)
draw_gclass(actor, x, y + height - 30)
contents.font.size = 20
contents.font.name = mtheme::GAUGE_FONT
w = contents.width - 260
h = (height - 80) / 2
draw_ghp(actor, x + 140, y + h / 2 , w)
draw_gmp(actor, x + 140, y + line_height - 4 + h,w)
if actor.preserve_tp? && GMENU::SHOW_TP
draw_gtp(actor, x + 75, y + line_height - 4 + h,40)
end
draw_gxp(actor, x + 6, y + height - 23, contents.width - 120)
end

def draw_gtp(actor, x, y, width = 124)
draw_gauge(x, y, width, actor.tp_rate,mtheme::TP_COLOR1,mtheme::TP_COLOR1)
change_color(system_color)
draw_text(x - 30, y + 7, 30, line_height, Vocab::tp_a,2)
change_color(tp_color(actor))
draw_text(x + width - 42, y + 3, 42, line_height, actor.tp.to_i, 2)
end

def draw_gxp(actor,x,y,width = 124)
draw_xpgauge(x, y, width, actor.xp_rate, mtheme::XP_COLOR1, mtheme::XP_COLOR2)
end

def draw_xpgauge(x, y, width, rate, color1, color2)
fill_w = (width * rate).to_i
gauge_y = y + line_height - 8
contents.fill_rect(x, gauge_y, width, 4, gauge_back_color)
contents.gradient_fill_rect(x, gauge_y, fill_w, 4, color1, color2)
end

def draw_ghp(actor, x, y, width = 124)
draw_gauge(x, y, width, actor.hp_rate, mtheme::HP_COLOR1, mtheme::HP_COLOR2)
change_color(system_color)
draw_text(x - 30, y + 7, 30, line_height, Vocab::hp_a,2)
draw_current_and_max_values(x, y + 3, width, actor.hp, actor.mhp,
hp_color(actor), normal_color)
end

def draw_gmp(actor, x, y, width = 124)
draw_gauge(x, y, width, actor.mp_rate, mtheme::MP_COLOR1, mtheme::MP_COLOR2)
change_color(system_color)
draw_text(x - 30, y + 7, 30, line_height, Vocab::mp_a,2)
draw_current_and_max_values(x, y + 3, width, actor.mp, actor.mmp,
mp_color(actor), normal_color)
end

def draw_gicons(actor, x, y, width = 96)
icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
icons.each_with_index {|n, i| draw_icon(n, x, y - 16 * i) }
end

def draw_gface(face_name, face_index, x, y, height, enabled = true)
bitmap = Cache.face(face_name)
h = [height,96].min - 1
y_offset = GMENU::ACTORS_SHOWN > 4 ? 1.25 : 1
h2 = 96 - h * y_offset
rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96 + h2, 96, h)
contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
bitmap.dispose
end

def draw_glevel(actor, x, y)
wid = Graphics.width - 300
change_color(system_color)
draw_text(x, y, wid, line_height, Vocab::level_a + " " + actor.level.to_s, 0)
end

def draw_gclass(actor, x, y)
change_color(normal_color)
draw_text(x, y, Graphics.width - 290, line_height, actor.class.name,2)
end
end # Window_Base < Window


#-----------------#
#---| SCENEMANAGER |---------------------------------------------------------
#-----------------#

module SceneManager
class << self
alias gmenu_engine_sm_call call
end

def self.call(scene_class)
if scene_class.is_a?(Symbol)
@stack.push(@scene)
@scene = Kernel.const_get(scene_class).new
else
gmenu_engine_sm_call(scene_class)
end
end

def self.themed_scene
array = ["Scene_Menu"] + GMENU::SCENE_THEMES
return true if array.include?(@scene.name)
return false
end
end # SceneManager


class Scene_MenuBase < Scene_Base
include Check_Theme

alias gmenu_engine_sb_start start
def start
gmenu_engine_sb_start
if SceneManager.themed_scene
$game_temp.themed_scene = true
create_theme_backgrounds
end
end

def create_theme_backgrounds
create_background1
create_themebg2
end

def create_background1
@background1 = Plane.new
@background1.bitmap = Cache.gmenu(name + "_Background",$game_system.menu_theme) rescue
Cache.gmenu("Background",$game_system.menu_theme)
@background1.opacity = mtheme::BACK1_OPACITY
@background1.z = -1
@background_sprite.z = -2
end

def create_themebg2
@themebg2 = Sprite.new
if !SceneManager.scene_is?(Scene_Menu)
@themebg2.bitmap = Cache.gmenu(name + "_Background2",$game_system.menu_theme) rescue
Cache.gmenu("Scene_Generic_Background2",$game_system.menu_theme) rescue
nil
end
@themebg2.opacity = mtheme::SCENE_BACK_OPACITY
if @themebg2.bitmap
@themebg2.x = [(Graphics.width - @themebg2.bitmap.width) / 2,0].max
end
@themebg2.z = 0
end

alias gmenu_engine_sb_update update
def update
gmenu_engine_sb_update
if @background1
@background1.ox -= mtheme::BACK1_XY[0]
@background1.oy -= mtheme::BACK1_XY[1]
end
end

alias gmenu_engine_sb_terminate terminate
def terminate
gmenu_engine_sb_terminate
$game_temp.themed_scene = false
@background1.dispose if @background1
@themebg2.dispose if @themebg2
end

def name
if self.to_s =~ /#<(.*):/i
return $1
else
return ""
end
end
end # Scene_Base


#--------------------#
#---| SPRITE_MENUBTN |------------------------------------------------------
#--------------------#

class MenuBtn
include Check_Theme

def initialize(viewport,index)
@index1 = index
@index = 0
create_bitmap
create_text
create_icon
end

def dispose
@text.dispose
@icon.dispose
@btn.dispose
@text.bitmap.dispose
@icon.bitmap.dispose
@btn.bitmap.dispose
end

def update(index)
@index = $game_temp.menuindexes[index]
update_position
end

def menuitem
GMENU::COMMAND_LIST[$game_temp.menuindexes[@index1]]
end

def create_bitmap
if SceneManager.scene.command_window
cmd_index = SceneManager.scene.command_window.index
else
cmd_index = 0
end
@btn = Sprite.new
@btn.bitmap = Cache.gmenu("MenuButton",$game_system.menu_theme)
@btn.y = mtheme::MENU_Y_OFFSET + @index1 * @btn.bitmap.height
@btn.x = @index1 == cmd_index ? mtheme::SLIDE_ON : mtheme::SLIDE_OFF
@btn.opacity = @index1 == cmd_index ? 255 : 255
end

def create_icon
@icon = Sprite.new
@icon.bitmap = Bitmap.new(800,800)
@tempicon = Sprite.new
@tempicon.bitmap = Cache.system("Iconset")
icon_index = menuitem[6]
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
@icon.bitmap.blt(mtheme::MENU_ICON_XY[0], mtheme::MENU_ICON_XY[1],
@tempicon.bitmap, rect, 255)
@tempicon.bitmap.dispose if @tempicon.bitmap
@tempicon.dispose
@icon.x = @btn.x if mtheme::SLIDE_ICON
@icon.y = @btn.y
@icon.z = 100
end

def create_text
@text = Sprite.new
@text.bitmap = Bitmap.new(180,35)
@text.bitmap.font.name = mtheme::MENU_FONT
@text.bitmap.font.color = mtheme::MENU_TXT_COLOR
@text.bitmap.font.out_color = mtheme::MENU_TXT_OUT
@text.bitmap.font.size = mtheme::MENU_FONT_SIZE
text = menuitem[0]
@text.bitmap.draw_text(mtheme::MENU_TXT_XY[0],
mtheme::MENU_TXT_XY[1],150,35, text,2)
@text.x = @btn.x
@text.y = @btn.y
@text.opacity = 100 if menuitem[3] > 0 && !$game_switches[menuitem[3]]
end

def update_position
if $game_temp.menuindexes[@index1] == @index
@btn.opacity = 255
return if @btn.x >= mtheme::SLIDE_ON
@btn.x += mtheme::SLIDE_SPEED
@text.x += mtheme::SLIDE_SPEED
@icon.x += mtheme::SLIDE_SPEED if mtheme::SLIDE_ICON
else
@btn.opacity = 255
return if @btn.x <= mtheme::SLIDE_OFF
@btn.x -= mtheme::SLIDE_SPEED
@text.x -= mtheme::SLIDE_SPEED
@icon.x -= mtheme::SLIDE_SPEED if mtheme::SLIDE_ICON
end
end
end # Sprite_MenuBtn < Sprite_Base
 
Last edited:

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
3,228
Reaction score
731
First Language
English
Primarily Uses
RMVXA
If you want anybody to help you, you will probably have to put your modified script up for ruby coders to see what you did. That would not be me, but there are a couple out there.
 

Tetsune

Professional Procrastinator™
Veteran
Joined
Jul 13, 2013
Messages
51
Reaction score
10
First Language
English
Primarily Uses
RMVXA
Not sure if I'm allowed to post the Luna Script since it's a paid feature? Could be wrong.
But I can post Galv's edited script at least and say what I pulled out?
 

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
3,228
Reaction score
731
First Language
English
Primarily Uses
RMVXA
Not sure if I'm allowed to post the Luna Script since it's a paid feature? Could be wrong.
But I can post Galv's edited script at least and say what I pulled out?

That is wise of you. Don't post the paid for scripts. If there is a coder that has that script then they should be able to help you. The galv's scripts are available so posting those should be fine. If you're worried about somebody trying to copy your work, then you can post a small portion that you are working on, or wait for a coder to see this and offer help in a message mode and not in this thread.
 

Latest Threads

Latest Profile Posts

A surprising number of plugins have appeared for MZ since last year. I'm currently making a "shopping list" so that I'll know what I need to test when I switch over to MZ later this year. Much of it is stuff updated from MV plugins, but there are also a good number of new things. It'll be fun to test it all out.
A little dental dilemma this week. One my temp crowns was sized incorrectly and needs some sanding. And dentist was out till Tuesday. Pain is minimal though. Hope everyone here is well. :)
Got like a sudden surge of wish lists overnight. :)
headshot_headshot.jpg
The theory has been proved. Based on an invisible image's data(the big red dot in the previous image), RM can identify different parts of an enemy and do something respectively. :kaojoy:

Forum statistics

Threads
115,382
Messages
1,089,451
Members
150,104
Latest member
Zwloky
Top