#==============================================================================
# XaiL System - Icon Menu
# Auteur: Nicke
# Créer le: 07/04/2012
# Edité le: 06/05/2012
# Version: 1.0c
#==============================================================================
# Instructions
# -----------------------------------------------------------------------------
# Pour installer ce script, ouvrez l'éditeur de script et copiez / collez ce script
# en dessous de ? Materials mais au dessus de ? Main. N'oubliez pas de sauvegarder.
#
# Un menu très personnalisé qui affiche les icônes pour les commandes.
#
# *** Que pour RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-XS-ICON_MENU"] = true
module XAIL
module ICON_MENU
#--------------------------------------------------------------------------#
# * Configuration
#--------------------------------------------------------------------------#
# MENU_FONT = [nom, taille, couleur, gras, ombre]
MENU_FONT = [["Anklada
", "Verdana"], 24, Color.new(255,255,25), true, true]
# MENU_WINDOW [x, y, z, opacity]
MENU_WINDOW = [0, 0, 200, 255]
# Centrer le menu.
# Note: Si ce n'est sur ??la coordonnées x et y n'est pas disponible.
# MENU_CENTER = true/false
MENU_CENTER = true
# Le windowskin pour faire les fenêtre.
# nul pour désactiver.
# MENU_SKIN = chaîne
MENU_SKIN = nil
# Menu list - L'icon_index (peut-être nul) et custom_scene est optionel.
# MENU_LIST:
# ID = ['Title', description, :symbol, :command, icon_index, active, custom ]
MENU_LIST = []
MENU_LIST[0] = ["Equipement", "Changer votre équipement.", :equip, :command_equip, 170, true]
MENU_LIST[1] = ["Compétences", "Gérer vos compétences disponibles.", :skill, :command_skill, 230, true]
MENU_LIST[2] = ["Objets", "Parcourez vos objets acquis.", :item, :command_item, 264, true]
MENU_LIST[3] = ["Statut", "Voir le statut actuel de votre héro.", :status, :command_status, 122, true]
MENU_LIST[4] = ["Sauvegarder", "Sauvegardez votre progression.", :save, :command_save, 233, true]
MENU_LIST[5] = ["Charger", "Charger un partie existante.", :load, :command_custom, 230, true, Scene_Load]
MENU_LIST[6] = ["Quitter", "Quitter le jeu.", :game_end, :command_game_end, 1, true]
MENU_LIST[7] = ["Ecran Titre", "Retourner à l'écran titre.", :title, :command_custom, 12, true, Scene_Title]
# Si MENU_CUSTOM est sur True, vous devrez ajouter vous-même les commandes
# dans le jeu, qui peut être utile pour des trucs comme des quête connexe ou si vous
# désactiver temporairement les commandes.
# Pour ajouter / supprimer une commande dans le jeu, suivre ces instructions:
#
# Pour appeller un script faire ceci:
# menu_scene(2,:add) # Pour ajouter l'ID 2 au menu.
# menu_scene(3,:del) # Pour enlever l'ID 3 du menu.
#
# Dans un branchement conditionnel faire comme ceci pour vérifier si un id est actif:
# menu_active?(5) # Remettre true si ID 5 est activé.
#
# Pour définir un ID doit être activé faire ceci:
# menu_active(1, true) # Mettre ID 1 pour activer.
#
# Pour ajouter / supprimer chaque élément du menu, utiliser cette méthode:
# menu_scene_all(type = :add/:del)
#
# MENU_CUSTOM = true/false
MENU_CUSTOM = false
# Le texte à afficher si aucun élément de menu est disponible.
# MENU_EMPTY = ""
MENU_EMPTY = "Le menu n'est pas disponible en ce moment."
# Animer la fenêtre d'aide. 0 = pas d'animation.
# Se produit uniquement lorsque la commande de menu a changé.
# ANIMATE_TIMER = nombre
ANIMATE_TIMER = 10
# Fenêtre d'aide.
# Aide = [x, y, z, opacity, activer]
HELP = [0, 0, 200, 255, true]
# Fenêtre de l'argent.
# nul pour désactiver l'icone.
# GOLD = [x, y, z, opacity, icon_index, activer]
GOLD = [0, 368, 200, 255, 361, true]
# Weight de la fenpetre.
# Note: XS - Weightde inventaire est nécessaire pour l'utiliser.
# WEIGHT = [x, y, z, opacity, icon_index, activer]
WEIGHT = [384, 368, 200, 255, 116, true]
# Transition, nul si c'est ppar défaut.
# TRANSITION [speed, transition, opacity]
# TRANSITION = [40, "Graphics/Transitions/4", 50]
TRANSITION = nil
# L'image du fond du menu (dossier système)
BACK = nil
# Note: Non actif si le fond du menu est en cours d'utilisation.
# Type de Fond:
# 0 = flou normale (défaut)
# 1 = flou radial
# 2 = changement de teinte
# 3 = couleur personnalisée
# 4 = dégradé personnalisé
# BACK_TYPE = [type, opacity, enabled]
BACK_TYPE = [1, 200, true]
# BACK_RADIAL_BLUR = 0-360, 2-100
BACK_RADIAL_BLUR = [10, 10]
# BACK_HUE = 0-360
BACK_HUE = 15
# BACK_COLOR = 0-255 (Red, Green, Blue, Alpha)
BACK_COLOR = Color.new(255,0,255,128)
# BACK_GRADIENT = [ Color1, Color2, Vertical ]
BACK_GRADIENT = [Color.new(0,0,250,128), Color.new(255,0,0,128), true]
end
end
# *** Ne pas modifier ce qui est en dessous si vous ne savez ce que vous faites. ***
#==============================================================================#
# ** Game_System
#==============================================================================#
class Game_System
attr_accessor :menu_list
alias xail_icon_menu_sys_initialize initialize unless $@
def initialize(*args, &block)
xail_icon_menu_sys_initialize(*args, &block)
@menu_list = []
end
end
#==============================================================================#
# ** Game_Interpreter
#==============================================================================#
class Game_Interpreter
def menu_scene(id, type)
# // Méthode pour ajouter un objet à la lise.
case type
when :add # // Ajouter l'ID du menu.
unless $game_system.menu_list.include?(XAIL::ICON_MENU::MENU_LIST[id])
$game_system.menu_list.push(XAIL::ICON_MENU::MENU_LIST[id])
end unless XAIL::ICON_MENU::MENU_LIST[id].nil?
when :del # // Enlever l'ID du menu.
unless XAIL::ICON_MENU::MENU_LIST[id].nil?
$game_system.menu_list.delete(XAIL::ICON_MENU::MENU_LIST[id])
end
end
end
def menu_active?(id)
# // Méthode pour voir si l'ID est activer.
return if $game_system.menu_list[id].nil?
return $game_system.menu_list[id][5]
end
def menu_active(id, enabled)
# // Méthode pour activer l'ID.
$game_system.menu_list[id][5] = enabled
end
def menu_scene_all(type = :add)
# // Méthode pour ajouter ou supprimer tous les ID de la liste du menu.
id = 0
while id < XAIL::ICON_MENU::MENU_LIST.size
case type
when :add
menu_scene(id, :add)
else
menu_scene(id, :del)
end
id += 1
end
end
end
#==============================================================================
# ** Window_MenuCommand
#==============================================================================
class Window_MenuCommand < Window_Command
alias xail_icon_menu_window_width_cmd window_width
def window_width(*args, &block)
# // Méthode pour revenir à la largeur par défaut.
xail_icon_menu_window_width_cmd(*args, &block)
return 48 if get_menu.size == 1
return 74 if get_menu.size == 2
return 32 * get_menu.size
end
alias xail_icon_menu_window_height_cmd window_height
def window_height(*args, &block)
# // Méthode pour retrouver a hauteur par défaut.
xail_icon_menu_window_height_cmd(*args, &block)
return fitting_height(1)
end
alias xail_icon_menu_col_max_cmd col_max
def col_max(*args, &block)
# // Méthode pour déterminer col max.
xail_icon_menu_col_max_cmd(*args, &block)
return get_menu.size
end
alias xail_icon_menu_item_max_cmd item_max
def item_max(*args, &block)
xail_icon_menu_item_max_cmd(*args, &block)
return get_menu.size
end
alias xail_icon_menu_spacing_cmd spacing
def spacing(*args, &block)
# // Méthode pour déterminer l'espacement.
xail_icon_menu_spacing_cmd(*args, &block)
return 0
end
alias xail_icon_menu_contents_width_cmd contents_width
def contents_width(*args, &block)
# // Méthode pour déterminer la largeur .
xail_icon_menu_contents_width_cmd(*args, &block)
(item_width + spacing) * item_max - spacing
end
alias xail_icon_menu_contents_height_cmd contents_height
def contents_height(*args, &block)
# // Méthode pour déterminer la hauteur.
xail_icon_menu_contents_height_cmd(*args, &block)
item_height
end
def get_menu
# // Méthode pour obtenir la liste des menus.
if XAIL::ICON_MENU::MENU_CUSTOM
return @menu_list = $game_system.menu_list
else
return @menu_list = XAIL::ICON_MENU::MENU_LIST
end
end
def draw_menu_icon(icon_index, x, y, enabled = true)
# // Méthode pour afficher l'icône.
bitmap = Cache.system("Iconset")
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
contents.blt(x, y, bitmap, rect, enabled ? 255 : 20)
end
def draw_item(index)
# // Méthode override pour afficherl'élément de commande.
x = (get_menu.size < 5) ? 0 : 2
for i in get_menu
icon = i[4] unless i[4].nil?
draw_menu_icon(icon, x, 0, i[5])
x += item_width
end
end
def make_command_list
# // Méthode override pour ajouter les commandes.
for i in get_menu
case i[2]
when :save
add_command(i[0], i[2], save_enabled, i[6])
else
add_command(i[0], i[2], i[5], i[6])
end
end
end
end
#==============================================================================#
# ** Window_Gold
#==============================================================================#
class Window_Gold < Window_Base
alias xail_icon_menu_wingold_refresh refresh
def refresh(*args, &block)
contents.clear
# // Rafraîchir la méthode override, affiche une icône et la valeur.
unless XAIL::ICON_MENU::GOLD[4].nil?
draw_icon(XAIL::ICON_MENU::GOLD[4], 116, -2)
draw_currency_value(value, currency_unit, -10, 0, contents.width - 8)
else
xail_icon_menu_wingold_refresh(*args, &block)
end
end
end
#==============================================================================#
# ** Window_Weight
#==============================================================================#
class Window_Weight < Window_Base
def initialize
# // Méthode pour initialiser.
super(0, 0, window_width, fitting_height(1))
refresh
end
def window_width
# // Méthode pour faire revenir à la largeur par défaut.
return 160
end
def refresh
# // Méthode pour actualiser.
contents.clear
draw_weight
end
def draw_weight
# // Méthode pour afficher le weight.
weight = $game_party.weight
max_weight = $game_party.max_weight
value = "#{weight} / #{max_weight}"
contents.font.name = XAIL::ICON_MENU::MENU_FONT[0]
contents.font.size = XAIL::ICON_MENU::MENU_FONT[1]
contents.font.color = XAIL::ICON_MENU::MENU_FONT[2]
contents.font.bold = XAIL::ICON_MENU::MENU_FONT[3]
contents.font.shadow = XAIL::ICON_MENU::MENU_FONT[4]
unless XAIL::ICON_MENU::WEIGHT[4].nil?
draw_icon(XAIL::ICON_MENU::WEIGHT[4], 116, 0)
draw_text(-44, -2, window_width, fitting_height(0), value, 2)
else
draw_text(-24, -2, window_width, fitting_height(0), value, 2)
end
reset_font_settings
end
end
#==============================================================================#
# ** Window_Help
#==============================================================================#
class Window_Icon_Help < Window_Help
attr_accessor :index
alias xail_icon_menu_winhelp_init initialize
def initialize(*args, &block)
xail_icon_menu_winhelp_init(*args, &block)
@menu_list = get_menu
@index = nil
end
def get_menu
# // Méthode pour obtenir la liste des menus.
if XAIL::ICON_MENU::MENU_CUSTOM
@menu_list = $game_system.menu_list
else
@menu_list = XAIL::ICON_MENU::MENU_LIST
end
end
alias xail_icon_menu_winhelp_set_text set_text
def set_text(text, enabled)
# // Méthode pour définir un nouveau texte TP à la fenêtre.
xail_icon_menu_winhelp_set_text(text)
if text != @text
menu_color(XAIL::ICON_MENU::MENU_FONT[2], enabled)
@text = text
refresh
end
end
def refresh
# // Actualiser les contenus d'aide.
contents.clear
draw_help_text
end
def draw_help_text
# // Méthode pour afficher le texte d'aide.
contents.font.name = XAIL::ICON_MENU::MENU_FONT[0]
contents.font.size = XAIL::ICON_MENU::MENU_FONT[1]
menu_color(XAIL::ICON_MENU::MENU_FONT[2], menu_enabled?(@index))
contents.font.bold = XAIL::ICON_MENU::MENU_FONT[3]
contents.font.shadow = XAIL::ICON_MENU::MENU_FONT[4]
# // Afficher un titre et une description pour le menu.
draw_help_ex(0, -4, @text)
reset_font_settings
end
def draw_help_ex(x, y, text)
# // Méthode spéciale pour afficher un texte.
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
def menu_enabled?(index)
# // Méthode pour vérifier si le menu des objets est activé.
return get_menu[index][5]
end
def menu_color(color, enabled = true)
# // Méthode pour définir la couleur et alpha si elle n'est pas activée.
contents.font.color.set(color)
contents.font.color.alpha = 150 unless enabled
end
end
#==============================================================================#
# ** Scene_MenuBase
#------------------------------------------------------------------------------
# Nouvelle scène :: Scene_MenuBase
#==============================================================================#
class Scene_MenuBase < Scene_Base
alias xail_icon_menubase_start start
def start(*args, &block)
# // Méthode pour commencer la scène.
xail_icon_menubase_start(*args, &block)
@menu_list = get_menu
end
alias xail_icon_menubase_post_start post_start
def post_start(*args, &block)
# // Méthode pour la scène post_start.
xail_icon_menubase_post_start(*args, &block)
perform_transition unless @menu_list.empty?
end
def get_menu
# // Méthode pour obtenir la liste des menus.
if XAIL::ICON_MENU::MENU_CUSTOM
return @menu_list = $game_system.menu_list
else
return @menu_list = XAIL::ICON_MENU::MENU_LIST
end
end
alias xail_icon_menubase_terminate terminate
def terminate(*args, &block)
# // Méthode pour mettre fin à la scène.
xail_icon_menubase_terminate(*args, &block)
dispose_help
end
def dispose_help
# // Enlever la fenêtre d'aide.
@help_window.dispose unless @help_window.nil?
@help_window = nil
end
def create_background
# // Méthode pour créer de fond personnalisée.
@background_sprite = Sprite.new
if XAIL::ICON_MENU::BACK.nil?
@background_sprite.bitmap = SceneManager.background_bitmap
if XAIL::ICON_MENU::BACK_TYPE[2]
source = SceneManager.background_bitmap
bitmap = Bitmap.new(Graphics.width, Graphics.height)
bitmap.stretch_blt(bitmap.rect, source, source.rect) unless SceneManager.scene_is?(Scene_Load)
case XAIL::ICON_MENU::BACK_TYPE[0]
when 0 ; bitmap.blur # // Défault
when 1 ; bitmap.radial_blur(XAIL::ICON_MENU::BACK_RADIAL_BLUR[0], XAIL::ICON_MENU::BACK_RADIAL_BLUR[0])
when 2 ; bitmap.hue_change(XAIL::ICON_MENU::BACK_HUE)
when 3 ; bitmap.fill_rect(bitmap.rect, XAIL::ICON_MENU::BACK_COLOR)
when 4 ; bitmap.gradient_fill_rect(bitmap.rect, XAIL::ICON_MENU::BACK_GRADIENT[0],
XAIL::MENU::BACK_GRADIENT[1], XAIL::ICON_MENU::BACK_GRADIENT[2])
end
@background_sprite.opacity = XAIL::ICON_MENU::BACK_TYPE[1]
@background_sprite.bitmap = bitmap
end
else
@background_sprite.bitmap = Cache.system(XAIL::ICON_MENU::BACK)
end
end
alias xail_icon_menubase_transition perform_transition
def perform_transition(*args, &block)
# // Méthod pour créer la transition.
if XAIL::ICON_MENU::TRANSITION.nil?
xail_icon_menubase_transition(*args, &block)
else
Graphics.transition(XAIL::ICON_MENU::TRANSITION[0],XAIL::ICON_MENU::TRANSITION[1],XAIL::ICON_MENU::TRANSITION[2])
end
end
end
#==============================================================================#
# ** Scene_Menu
#------------------------------------------------------------------------------
# Nouvelle Scene :: Scene_Menu
#==============================================================================#
class Scene_Menu < Scene_MenuBase
def start
super
# // Méthode pour démarrer la scène.
@menu_list = get_menu
return command_map if @menu_list.empty?
@anim_timer = XAIL::ICON_MENU::ANIMATE_TIMER
create_menu_command_window
if XAIL::ICON_MENU::HELP[4]
create_menu_help_window
help_update(@command_window.index)
end
create_menu_gold_window if XAIL::ICON_MENU::GOLD[5]
create_menu_weight_window if XAIL::ICON_MENU::WEIGHT[5] and $imported["XAIL-INVENTORY-WEIGHT"]
end
def create_menu_command_window
# // Méthode pour créer la fenêtre de commande.
@command_window = Window_MenuCommand.new
@command_window.windowskin = Cache.system(XAIL::ICON_MENU::MENU_SKIN) unless XAIL::ICON_MENU::MENU_SKIN.nil?
if XAIL::ICON_MENU::MENU_CENTER
@command_window.x = (Graphics.width - @command_window.width) / 2
@command_window.y = (Graphics.height - @command_window.height) / 2
else
@command_window.x = XAIL::ICON_MENU::MENU_WINDOW[1]
@command_window.y = XAIL::ICON_MENU::MENU_WINDOW[2]
end
@command_window.z = XAIL::ICON_MENU::MENU_WINDOW[2]
@command_window.opacity = XAIL::ICON_MENU::MENU_WINDOW[3]
for i in @menu_list
@command_window.set_handler(i[2], method(i[3]))
end
@command_window.set_handler(:cancel, method(:return_scene))
end
def create_menu_help_window
# // Créer la fenêtre d'aide.
@help_window = Window_Icon_Help.new(2)
@help_window.viewport = @viewport
@help_window.windowskin = Cache.system(XAIL::ICON_MENU::MENU_SKIN) unless XAIL::ICON_MENU::MENU_SKIN.nil?
@help_window.index = @command_window.index
@help_window.x = XAIL::ICON_MENU::HELP[0]
@help_window.y = XAIL::ICON_MENU::HELP[1]
@help_window.z = XAIL::ICON_MENU::HELP[2]
@help_window.opacity = @help_window.contents_opacity = XAIL::ICON_MENU::HELP[3]
end
def create_menu_message_window
# // Méthode pour créer la fenêtre de descriptif.
@message_window = Window_Message.new
end
def create_menu_gold_window
# // Méthode pour créer la fenêtre pour l'argent.
@gold_window = Window_Gold.new
@gold_window.windowskin = Cache.system(XAIL::ICON_MENU::MENU_SKIN) unless XAIL::ICON_MENU::MENU_SKIN.nil?
@gold_window.x = XAIL::ICON_MENU::GOLD[0]
@gold_window.y = XAIL::ICON_MENU::GOLD[1]
@gold_window.z = XAIL::ICON_MENU::GOLD[2]
@gold_window.opacity = XAIL::ICON_MENU::GOLD[3]
end
def create_menu_weight_window
# // Méthode pour créer la fenêtre.
@weight_window = Window_Weight.new
@weight_window.windowskin = Cache.system(XAIL::ICON_MENU::MENU_SKIN) unless XAIL::ICON_MENU::MENU_SKIN.nil?
@weight_window.x = XAIL::ICON_MENU::WEIGHT[0]
@weight_window.y = XAIL::ICON_MENU::WEIGHT[1]
@weight_window.z = XAIL::ICON_MENU::WEIGHT[2]
@weight_window.opacity = XAIL::ICON_MENU::WEIGHT[3]
end
def get_menu
# // Méthode pour obtenir liste de menu.
if XAIL::ICON_MENU::MENU_CUSTOM
return @menu_list = $game_system.menu_list
else
return @menu_list = XAIL::ICON_MENU::MENU_LIST
end
end
alias xail_upd_icon_menu_index_change update
def update(*args, &block)
# // Méthode pour mettre à jour la scéne.
xail_upd_icon_menu_index_change(*args, &block)
if XAIL::ICON_MENU::HELP[4]
old_index = @help_window.index
if old_index != @command_window.index
# // Animez la fenêtre d'aide.
help_animate
# // Mettre à jour la fenêtre d'aide.
help_update(@command_window.index)
# // Redémarrer l'animation de la fenêtre d'aide.
help_animate_reset
end
end
end
def help_animate
# // Méthode pour appeller la fenêtre d'aide.
for i in 1..@anim_timer
break if scene_changing?
update_basic
@help_window.contents_opacity = 255 - i * (255 / @anim_timer * 2)
end
end
def help_animate_reset
# // Méthode pour redémarrer.
for i in 1..@anim_timer
break if scene_changing?
update_basic
@help_window.contents_opacity = i * (255 / @anim_timer * 2)
end
end
def help_update(index)
# // Si l'index change le texte de fenêtre d'aide ce met à jour.
icon = get_menu[index][4]
title = '\i[' + icon.to_s + ']' + get_menu[index][0]
desc = '\c[0]' + get_menu[index][1]
text = "#{title}\n#{desc}"
enabled = get_menu[index][5]
@help_window.index = index
@help_window.set_text(text, enabled)
end
def command_status
# // command_status (NE PAS EFFACER)
SceneManager.call(Scene_Status)
end
def command_skill
# // command_skill (NE PAS EFFACER)
SceneManager.call(Scene_Skill)
end
def command_equip
# // command_equip (NE PAS EFFACER)
SceneManager.call(Scene_Equip)
end
def command_custom
# // Méthode pour appeler une commande personnalisé.
SceneManager.call(@command_window.current_ext)
end
def command_map
# // command_map (NE PAS EFFACER)
create_menu_message_window
$game_message.texts << XAIL::ICON_MENU::MENU_EMPTY
SceneManager.call(Scene_Map)
end
end
#=*==========================================================================*=#
# ** Fin du Script
#=*==========================================================================*