Partagez
Aller en bas
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 30
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Problème de son dans un menu

le Dim 21 Fév 2016 - 16:48
Coucou, jamais deux sans trois.^^

J'ai également un problème de son de curseur dans l'un de mes menus. J'utilise le script de Yanfly - Ace status menu avec lequel j'ai intégré un menu personnalisé qui permet de voir la maîtrise du type d'armes des personnage. Quand on va dans le menu Statut et qu'on sélectionne l'option Maîtrise, il y a deux possibilités :
- Soit la liste des types d'armes pour le personnage sélectionné est longue et dans ce cas, on peut cliquer sur Maîtrise pour ensuite naviguer avec les flèches de défilement haut et bas (ça marche sans soucis)
- Soit la liste des types d'armes pour le personnage sélectionné est courte (ce qui est le cas généralement), et dans ce cas, on ne peut pas cliquer sur Maîtrise. Ce point-là marche mais on entend quand même le bruit du curseur. Or, il ne faudrait pas l'entendre (c'est le cas pour certaines autres options comme par exemple Général ou Propriétés). Et je n'ai pas trouvé dans les scripts ce qui gère les bruits de curseur.

Je vous mets les scripts impactés, à savoir celui de Yanfly, l'addon de BlackMorning et la gestion des types d'armes :

http://www.mediafire.com/download/7m52nqb0bo9ez62/Yanfly.txt
http://www.mediafire.com/download/bm1ovg0fb3fy5ly/BM.txt
http://www.mediafire.com/download/u6vvo6arjnkch5k/Vincent.txt

Edit : une démo à jour pour tester : http://www.mediafire.com/download/b4wozyau96uhb49/Ace+menu4.exe


Dernière édition par Nérylis le Mar 23 Fév 2016 - 18:19, édité 1 fois
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Problème de son dans un menu

le Lun 22 Fév 2016 - 20:05
c'est un comportement natif des Window_Command, si l'option n'est pas désactivé l'appui sur enter provoque le son de sélection. Difficilement contournable.
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 30
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Problème de son dans un menu

le Lun 22 Fév 2016 - 21:08
Je ne comprends pas. Certaines options du menu Statut n'amènent pas le joueur sur une nouvelle fenêtre (comme je disais, c'est le cas de Général ou Propriétés). Dans ces cas-là, si on appuie sur la touche de validation, il ne se passe rien et on n'entend aucun bruit de curseur. Il doit être possible de faire la même chose pour l'option Maîtrise, non ?

Edit : Il y a un bug lorsqu'un personnage a un menu défilant, qu'on sélectionne Maîtrise, qu'on descend en bas de l'écran, qu'on revient en arrière et qu'on veut passer au personnage suivant avec les touches :L ou :R, le jeu plante avec ce message d'erreur :

Problème de son dans un menu Captur10
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Problème de son dans un menu

le Mar 23 Fév 2016 - 10:37
pour le soucis du son, c'est réglé.

Je suis entrain de regarder pour le bug.

Par contre, j'ai mis en place le backtrace de l'erreur sur le projet, car ya trop de couches empilées pour s'y retrouver. Du coup, voila ce que j'ai maintenant quant je reproduit l'erreur :

Code:
2016-02-23 10:35:17 +0100:
-------------------
undefined method `-' for nil:NilClass
Vincent26 - Weapon's type upgrade :427:in `block in draw_arme_usable'
Vincent26 - Weapon's type upgrade :424:in `each'
Vincent26 - Weapon's type upgrade :424:in `draw_arme_usable'
Vincent26 - Weapon's type upgrade :374:in `draw_maitrise_block'
Yanfly - Ace status menu :785:in `call'
Yanfly - Ace status menu :785:in `draw_custom'
Yanfly - Ace status menu :484:in `draw_window_contents'
Blackmorning - Ace status menu addon :1083:in `draw_window_contents'
Yanfly - Ace status menu :465:in `refresh'
Vincent26 - Weapon's type upgrade :353:in `refresh'
Yanfly - Ace status menu :455:in `actor='
Yanfly - Ace status menu :1005:in `on_actor_change'
Scene_MenuBase :56:in `prev_actor'
Window_Selectable :212:in `call'
Window_Selectable :212:in `call_handler'
Window_Selectable :355:in `process_pageup'
Window_Selectable :300:in `process_handling'
Window_Selectable :276:in `update'
Yanfly - Ace status menu :361:in `update'
Scene_Base :95:in `block in update_all_windows'
Scene_Base :93:in `each'
Scene_Base :93:in `update_all_windows'
Scene_Base :49:in `update_basic'
MOG_Wallpaper_EX :337:in `update_basic'
Scene_Base :41:in `update'
Blackmorning - Ace status menu addon :1407:in `update'
Vincent26 - Weapon's type upgrade :282:in `update'
Scene_Base :14:in `main'
SceneManager :23:in `run'
Main :10:in `block in <main>'
:1:in `block in rgss_main'
:1:in `loop'
:1:in `rgss_main'
Main :10:in `<main>'
ruby:in `eval'

Beaucoup plus d'information utile à la correction.

Edit avec scripts corrigés :

* Yanfly Engine Ace - Ace Status Menu v1.02
Code:
#==============================================================================
#
# ▼ Yanfly Engine Ace - Ace Status Menu v1.02
# -- Last Updated: 2011.12.26
# -- Level: Normal
# -- Requires: n/a
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-StatusMenu"] = true

#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.08.06 - Fix Sp Paramater TCR
# 2011.12.26 - Compatibility Update: Rename Actor
# 2011.12.23 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script changes the status screen completely to something the player can
# interact with more and be able to view actor data with more clarity. The
# player is able to view the general information for an actor (parameters and
# experience), a parameters bar graph, the various hidden extra parameters
# (named properties in the script), and a customizable biography for the actor.
# Also with this script, biographies can be changed at any time using a script
# call to add more of a personal touch to characters.
#
#==============================================================================
# ▼ 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.
#
# -----------------------------------------------------------------------------
# Script Calls - These commands are used with script calls.
# -----------------------------------------------------------------------------
# $game_actors[x].description = string
# Changes the biography description for actor x to that of the string. Use \n
# to designate linebreaks in the string. If you wish to use text codes, write
# them in the strings as \\n[2] or \\c[3] to make them work properly.
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================

module YEA
  module STATUS
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Command Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This section adjusts the commands that appear in the command window used
    # for the status screen. Rearrange the commands, add new ones, remove them
    # as you see fit.
    #
    # -------------------------------------------------------------------------
    # :command        Description
    # -------------------------------------------------------------------------
    # :general        Adds general page.
    # :parameters      Adds parameters page.
    # :properties      Adds properties page.
    # :biography      Adds biography page.
    #
    # :rename          Requires YEA - Rename Actor
    # :retitle        Requires YEA - Retitle Actor
    #
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    COMMANDS =[ # The order at which the menu items are shown.
    # [ :command,            "Display"],
      [ :general,            "Général"],
    # [ :parameters,      "Paramètres"],
      [ :bmproperties,    "Propriétés"],
      [ :element,            "Eléments"],
      [ :state,              "Statuts"],
      [ :maitrise,          "Maitrise"],
    # [ :infliction,        "Attributs"],
    # [ :resistance,      "Résistances"],
    # [ :custom1,              "Skills"],
    # [ :custom2,          "Equipement"],
    # [ :custom3,              "Classe"],
      [ :biography,        "Biographie"],
    # [ :rename,              "Rename"],  # Requires YEA - Rename Actor
    # [ :retitle,            "Retitle"],  # Requires YEA - Rename Actor
    ] # Do not remove this.
   
    #--------------------------------------------------------------------------
    # - Status Custom Commands -
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # For those who use scripts to that may produce unique effects for the
    # status menu, use this hash to manage the custom commands for the Status
    # Command Window. You can disable certain commands or prevent them from
    # appearing by using switches. If you don't wish to bind them to a switch,
    # set the proper switch to 0 for it to have no impact.
    #--------------------------------------------------------------------------
    CUSTOM_STATUS_COMMANDS ={
    # :command  => [EnableSwitch, ShowSwitch, Handler Method, Window Draw, handler ok_enable],
      :maitrise => [          0,          0, :maitrise_commande,:draw_maitrise_block, :maitrise_enable]
    # :custom2  => [          0,          0, :command_name2, :draw_custom2, nil],
    # :custom3  => [          0,          0, :command_name3, :draw_custom3, nil],
    } # Do not remove this.
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - General Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the general window visually appears.
    # Not many changes need to be done here other than vocab changes.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    PARAMETERS_VOCAB = "Paramètres"        # Title used for Parameters.
    EXPERIENCE_VOCAB = "Expérience"        # Title used for Experience.
    NEXT_TOTAL_VOCAB = "%s Total EXP"  # Label used for total experience.
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Parameters Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the parameters window visually appears.
    # Each of the stats have a non-window colour. Adjust them as you see fit.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    PARAM_COLOUR ={
    # ParamID => [:stat,      Colour1,                  Colour2          ],
            2 => [ :atk, Color.new(225, 100, 100), Color.new(240, 150, 150)],
            3 => [ :def, Color.new(250, 150,  30), Color.new(250, 180, 100)],
            4 => [ :mat, Color.new( 70, 140, 200), Color.new(135, 180, 230)],
            5 => [ :mdf, Color.new(135, 130, 190), Color.new(170, 160, 220)],
            6 => [ :agi, Color.new( 60, 180,  80), Color.new(120, 200, 120)],
            7 => [ :luk, Color.new(255, 240, 100), Color.new(255, 250, 200)],
    } # Do not remove this.
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Properties Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the properties window visually appears.
    # The properties have abbreviations, but leaving them as such makes things
    # confusing (as it's sometimes hard to figure out what the abbreviations
    # mean). Change the way the appear, whether or not they appear, and what
    # order they will appear in.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    PROPERTIES_FONT_SIZE = 16        # Font size used for properties.
   
    # These are the properties that appear in column 1.
    PROPERTIES_COLUMN1 =[
    # [:hit, "Précision"],
    # [:eva, "Esquive"],
    # [:cri, "Critique"],
    # [:cev, "Esquive Cri"],
    # [:mev, "Esquive Mag"],
    # [:mrf, "Magic Reflect"],
    # [:cnt, "Counter Rate"],
    # [:tgr, "Target Rate"],
    ] # Do not remove this.
   
    # These are the properties that appear in column 2.
    PROPERTIES_COLUMN2 =[
    # [:hrg, "Regain HP"],
    # [:mrg, "Regain MP"],
    # [:trg, "Regain TP"],
    # [:rec, "Recovery"],
    # [:grd, "Guard Rate"],
    # [:pha, "Item Boost"],
    # [:exr, "EXP Rate"],
    # [:tcr, "TP Charge"],
    ] # Do not remove this.
   
    # These are the properties that appear in column 3.
    PROPERTIES_COLUMN3 =[
    # [:hcr, "HP Cost Rate"],    # Requires YEA - Skill Cost Manager
    # [:mcr, "MP Cost Rate"],
    # [:tcr_y, "TP Cost Rate"],  # Requires YEA - Skill Cost Manager
    # [:cdr, "Cooldown Rate"],  # Requires YEA - Skill Restrictions
    # [:wur, "Warmup Rate"],    # Requires YEA - Skill Restrictions
    # [:pdr, "Physical Damage"],
    # [:mdr, "Magical Damage"],
    # [:fdr, "Floor Damage"],
    ] # Do not remove this.
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Biography Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the biography appears including the title
    # used at the top, the font size, and whatnot.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    BIOGRAPHY_NICKNAME_TEXT = "%s %s"      # How the nickname will appear.
    BIOGRAPHY_NICKNAME_SIZE = 32            # Size of the font used.
   
  end # STATUS
end # YEA

#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

#==============================================================================
# ■ Numeric
#==============================================================================

class Numeric
 
  #--------------------------------------------------------------------------
  # new method: group_digits
  #--------------------------------------------------------------------------
  unless $imported["YEA-CoreEngine"]
  def group; return self.to_s; end
  end # $imported["YEA-CoreEngine"]
   
end # Numeric

#==============================================================================
# ■ Game_Temp
#==============================================================================

class Game_Temp
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :scene_status_index
  attr_accessor :scene_status_oy
 
end # Game_Temp

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
 
  #--------------------------------------------------------------------------
  # new method: description=
  #--------------------------------------------------------------------------
  def description=(text)
    @description = text
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: description
  #--------------------------------------------------------------------------
  def description
    return @description unless @description.nil?
    return actor.description
  end
 
end # Game_Actor

#==============================================================================
# ■ Window_StatusCommand
#==============================================================================

class Window_StatusCommand < Window_Command
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :item_window
 
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy)
    super(dx, dy)
    @actor = nil
  end
 
  #--------------------------------------------------------------------------
  # window_width
  #--------------------------------------------------------------------------
  def window_width; return 160; end
 
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
 
  #--------------------------------------------------------------------------
  # visible_line_number
  #--------------------------------------------------------------------------
  def visible_line_number; return 4; end
 
  #--------------------------------------------------------------------------
  # ok_enabled?
  #--------------------------------------------------------------------------
  def ok_enabled?
    #recherche commande
    cmdFind = false
    if !YEA::STATUS::CUSTOM_STATUS_COMMANDS[current_symbol].nil?
      if !YEA::STATUS::CUSTOM_STATUS_COMMANDS[current_symbol][4].nil?
        return @item_window.enable_custom
      end
    end
    return handle?(current_symbol)
  end
 
  #--------------------------------------------------------------------------
  # make_command_list
  #--------------------------------------------------------------------------
  def make_command_list
    return unless @actor
    for command in YEA::STATUS::COMMANDS
      case command[0]
      #--- Default ---
      when :general, :parameters, :properties, :biography, :bmproperties
        add_command(command[1], command[0])
      #--- Yanfly Engine Ace ---
      when :rename
        next unless $imported["YEA-RenameActor"]
        add_command(command[1], command[0], @actor.rename_allow?)
      when :retitle
        next unless $imported["YEA-RenameActor"]
        add_command(command[1], command[0], @actor.retitle_allow?)
      #--- Custom Commands ---
      else
        process_custom_command(command)
      end
    end
    if !$game_temp.scene_status_index.nil?
      select($game_temp.scene_status_index)
      self.oy = $game_temp.scene_status_oy
    end
    $game_temp.scene_status_index = nil
    $game_temp.scene_status_oy = nil
  end
 
  #--------------------------------------------------------------------------
  # process_ok
  #--------------------------------------------------------------------------
  def process_ok
    $game_temp.scene_status_index = index
    $game_temp.scene_status_oy = self.oy
    super
  end
 
  #--------------------------------------------------------------------------
  # process_custom_command
  #--------------------------------------------------------------------------
  def process_custom_command(command)
    return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0])
    show = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][1]
    continue = show <= 0 ? true : $game_switches[show]
    return unless continue
    text = command[1]
    switch = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][0]
    enabled = switch <= 0 ? true : $game_switches[switch]
    add_command(text, command[0], enabled)
  end
 
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    update_item_window
  end
 
  #--------------------------------------------------------------------------
  # update_item_window
  #--------------------------------------------------------------------------
  def update_item_window
    return if @item_window.nil?
    return if @current_index == current_symbol
    @current_index = current_symbol
    @item_window.refresh
  end
 
  #--------------------------------------------------------------------------
  # item_window=
  #--------------------------------------------------------------------------
  def item_window=(window)
    @item_window = window
    update
  end
 
  #--------------------------------------------------------------------------
  # update_help
  #--------------------------------------------------------------------------
  def update_help
    return if @actor.nil?
    @help_window.set_text(@actor.actor.description)
  end
 
end # Window_StatusCommand

#==============================================================================
# ■ Window_StatusActor
#==============================================================================

class Window_StatusActor < Window_Base
 
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy)
    super(dx, dy, window_width, fitting_height(4))
    @actor = nil
  end
 
  #--------------------------------------------------------------------------
  # window_width
  #--------------------------------------------------------------------------
  def window_width; return Graphics.width - 160; end
 
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
 
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    return unless @actor
    draw_actor_face(@actor, 0, 0)
    draw_actor_simple_status(@actor, 108, line_height / 2)
  end
 
end # Window_StatusActor

#==============================================================================
# ■ Window_StatusItem
#==============================================================================

class Window_StatusItem < Window_Base
 
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy, command_window)
    super(dx, dy, Graphics.width, Graphics.height - dy)
    @command_window = command_window
    @actor = nil
    refresh
  end
 
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
 
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    reset_font_settings
    return unless @actor
    draw_window_contents
  end
 
  #--------------------------------------------------------------------------
  # draw_window_contents
  #--------------------------------------------------------------------------
  def draw_window_contents
    case @command_window.current_symbol
    when :general
      draw_actor_general
    when :parameters
      draw_parameter_graph
    when :properties
      draw_properties_list
    when :biography, :rename, :retitle
      draw_actor_biography
    when :bmproperties
      draw_bmprop
    else
      draw_custom
    end
  end
 
  #--------------------------------------------------------------------------
  # draw_actor_general
  #--------------------------------------------------------------------------
  def draw_actor_general
    change_color(system_color)
    text = YEA::STATUS::PARAMETERS_VOCAB
    draw_text(0, 0, contents.width/2, line_height, text, 1)
    text = YEA::STATUS::EXPERIENCE_VOCAB
    draw_text(contents.width/2, 0, contents.width/2, line_height, text, 1)
    draw_general_parameters
    draw_general_experience
  end
 
  #--------------------------------------------------------------------------
  # draw_general_parameters
  #--------------------------------------------------------------------------
  def draw_general_parameters
    dx = 24
    dy = line_height / 2
    draw_actor_level(dx, line_height*1+dy, contents.width/2 - 24)
    draw_actor_param(0, dx, line_height*2+dy, contents.width/2 - 24)
    draw_actor_param(1, dx, line_height*3+dy, contents.width/2 - 24)
    draw_actor_param(2, dx, line_height*4+dy, contents.width/4 - 12)
    draw_actor_param(4, dx, line_height*5+dy, contents.width/4 - 12)
    draw_actor_param(6, dx, line_height*6+dy, contents.width/4 - 12)
    dx += contents.width/4 - 12
    draw_actor_param(3, dx, line_height*4+dy, contents.width/4 - 12)
    draw_actor_param(5, dx, line_height*5+dy, contents.width/4 - 12)
    draw_actor_param(7, dx, line_height*6+dy, contents.width/4 - 12)
  end
 
  #--------------------------------------------------------------------------
  # draw_actor_level
  #--------------------------------------------------------------------------
  def draw_actor_level(dx, dy, dw)
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, Vocab::level)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, @actor.level.group, 2)
  end
 
  #--------------------------------------------------------------------------
  # draw_actor_param
  #--------------------------------------------------------------------------
  def draw_actor_param(param_id, dx, dy, dw)
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, Vocab::param(param_id))
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, @actor.param(param_id).group, 2)
  end
 
  #--------------------------------------------------------------------------
  # draw_general_experience
  #--------------------------------------------------------------------------
  def draw_general_experience
    if @actor.max_level?
      s1 = @actor.exp.group
      s2 = "-------"
      s3 = "-------"
    else
      s1 = @actor.exp.group
      s2 = (@actor.next_level_exp - @actor.exp).group
      s3 = @actor.next_level_exp.group
    end
    s_next = sprintf(Vocab::ExpNext, Vocab::level)
    total_next_text = sprintf(YEA::STATUS::NEXT_TOTAL_VOCAB, Vocab::level)
    change_color(system_color)
    dx = contents.width/2 + 12
    dy = line_height * 3 / 2
    dw = contents.width/2 - 36
    draw_text(dx, dy + line_height * 0, dw, line_height, Vocab::ExpTotal)
    draw_text(dx, dy + line_height * 2, dw, line_height, s_next)
    draw_text(dx, dy + line_height * 4, dw, line_height, total_next_text)
    change_color(normal_color)
    draw_text(dx, dy + line_height * 1, dw, line_height, s1, 2)
    draw_text(dx, dy + line_height * 3, dw, line_height, s2, 2)
    draw_text(dx, dy + line_height * 5, dw, line_height, s3, 2)
  end
 
  #--------------------------------------------------------------------------
  # draw_parameter_graph
  #--------------------------------------------------------------------------
  def draw_parameter_graph
    draw_parameter_title
    dy = line_height * 3/2
    maximum = 1
    minimum = @actor.param_max(2)
    for i in 2..7
      maximum = [@actor.param(i), maximum].max
      minimum = [@actor.param(i), minimum].min
    end
    maximum += minimum * 0.33 unless maximum == minimum
    for i in 2..7
      rate = calculate_rate(maximum, minimum, i)
      dy = line_height * i - line_height/2
      draw_param_gauge(i, dy, rate)
      change_color(system_color)
      draw_text(28, dy, contents.width - 56, line_height, Vocab::param(i))
      dw = (contents.width - 48) * rate - 8
      change_color(normal_color)
      draw_text(28, dy, dw, line_height, @actor.param(i).group, 2)
    end
  end
 
  #--------------------------------------------------------------------------
  # calculate_rate
  #--------------------------------------------------------------------------
  def calculate_rate(maximum, minimum, param_id)
    return 1.0 if maximum == minimum
    rate = (@actor.param(param_id).to_f - minimum) / (maximum - minimum).to_f
    rate *= 0.67
    rate += 0.33
    return rate
  end
 
  #--------------------------------------------------------------------------
  # draw_param_gauge
  #--------------------------------------------------------------------------
  def draw_param_gauge(param_id, dy, rate)
    dw = contents.width - 48
    colour1 = param_gauge1(param_id)
    colour2 = param_gauge2(param_id)
    draw_gauge(24, dy, dw, rate, colour1, colour2)
  end
 
  #--------------------------------------------------------------------------
  # param_gauge1
  #--------------------------------------------------------------------------
  def param_gauge1(param_id)
    return YEA::STATUS::PARAM_COLOUR[param_id][1]
  end
 
  #--------------------------------------------------------------------------
  # param_gauge2
  #--------------------------------------------------------------------------
  def param_gauge2(param_id)
    return YEA::STATUS::PARAM_COLOUR[param_id][2]
  end
 
  #--------------------------------------------------------------------------
  # draw_parameter_title
  #--------------------------------------------------------------------------
  def draw_parameter_title
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(0, 0, contents.width, contents.height)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    text = YEA::STATUS::PARAMETERS_VOCAB
    draw_text(0, line_height/3, contents.width, line_height, text, 1)
  end
 
  #--------------------------------------------------------------------------
  # draw_properties_list
  #--------------------------------------------------------------------------
  def draw_properties_list
    contents.font.size = YEA::STATUS::PROPERTIES_FONT_SIZE
    draw_properties_column1
    draw_properties_column2
    draw_properties_column3
    reset_font_settings
  end
 
  #--------------------------------------------------------------------------
  # draw_properties_column1
  #--------------------------------------------------------------------------
  def draw_properties_column1
    dx = 24
    dw = (contents.width - 24) / 3 - 24
    dy = 0
    for property in YEA::STATUS::PROPERTIES_COLUMN1
      dy = draw_property(property, dx, dy, dw)
    end
  end
 
  #--------------------------------------------------------------------------
  # draw_properties_column2
  #--------------------------------------------------------------------------
  def draw_properties_column2
    dx = 24 + (contents.width - 24) / 3
    dw = (contents.width - 24) / 3 - 24
    dy = 0
    for property in YEA::STATUS::PROPERTIES_COLUMN2
      dy = draw_property(property, dx, dy, dw)
    end
  end
 
  #--------------------------------------------------------------------------
  # draw_properties_column3
  #--------------------------------------------------------------------------
  def draw_properties_column3
    dx = 24 + (contents.width - 24) / 3 * 2
    dw = (contents.width - 24) / 3 - 24
    dy = 0
    for property in YEA::STATUS::PROPERTIES_COLUMN3
      dy = draw_property(property, dx, dy, dw)
    end
  end
 
  #--------------------------------------------------------------------------
  # draw_property
  #--------------------------------------------------------------------------
  def draw_property(property, dx, dy, dw)
    fmt = "%1.2f%%"
    case property[0]
    #---
    when :hit
      value = sprintf(fmt, @actor.hit * 100)
    when :eva
      value = sprintf(fmt, @actor.eva * 100)
    when :cri
      value = sprintf(fmt, @actor.cri * 100)
    when :cev
      value = sprintf(fmt, @actor.cev * 100)
    when :mev
      value = sprintf(fmt, @actor.mev * 100)
    when :mrf
      value = sprintf(fmt, @actor.mrf * 100)
    when :cnt
      value = sprintf(fmt, @actor.cnt * 100)
    when :hrg
      value = sprintf(fmt, @actor.hrg * 100)
    when :mrg
      value = sprintf(fmt, @actor.mrg * 100)
    when :trg
      value = sprintf(fmt, @actor.trg * 100)
    when :tgr
      value = sprintf(fmt, @actor.tgr * 100)
    when :grd
      value = sprintf(fmt, @actor.grd * 100)
    when :rec
      value = sprintf(fmt, @actor.rec * 100)
    when :pha
      value = sprintf(fmt, @actor.pha * 100)
    when :mcr
      value = sprintf(fmt, @actor.mcr * 100)
    when :tcr
      value = sprintf(fmt, @actor.tcr * 100)
    when :pdr
      value = sprintf(fmt, @actor.pdr * 100)
    when :mdr
      value = sprintf(fmt, @actor.mdr * 100)
    when :fdr
      value = sprintf(fmt, @actor.fdr * 100)
    when :exr
      value = sprintf(fmt, @actor.exr * 100)
    when :hcr
      return dy unless $imported["YEA-SkillCostManager"]
      value = sprintf(fmt, @actor.hcr * 100)
    when :tcr_y
      return dy unless $imported["YEA-SkillCostManager"]
      value = sprintf(fmt, @actor.tcr_y * 100)
    when :gcr
      return dy unless $imported["YEA-SkillCostManager"]
      value = sprintf(fmt, @actor.gcr * 100)
    when :cdr
      return dy unless $imported["YEA-SkillRestrictions"]
      value = sprintf(fmt, @actor.cdr * 100)
    when :wur
      return dy unless $imported["YEA-SkillRestrictions"]
      value = sprintf(fmt, @actor.wur * 100)
    #---
    else; return dy
    end
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, property[1], 0)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, value, 2)
    return dy + line_height
  end
 
  #--------------------------------------------------------------------------
  # draw_actor_biography
  #--------------------------------------------------------------------------
  def draw_actor_biography
    fmt = YEA::STATUS::BIOGRAPHY_NICKNAME_TEXT
    text = sprintf(fmt, @actor.name, @actor.nickname)
    contents.font.size = YEA::STATUS::BIOGRAPHY_NICKNAME_SIZE
    draw_text(0, 0, contents.width, line_height*2, text, 1)
    reset_font_settings
    draw_text_ex(24, line_height*2, @actor.description)
  end
 
  #--------------------------------------------------------------------------
  # draw_custom
  #--------------------------------------------------------------------------
  def draw_custom
    current_symbol = @command_window.current_symbol
    return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(current_symbol)
    method(YEA::STATUS::CUSTOM_STATUS_COMMANDS[current_symbol][3]).call
  end
 
  #--------------------------------------------------------------------------
  # draw_custom
  #--------------------------------------------------------------------------
  def enable_custom
    current_symbol = @command_window.current_symbol
    return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(current_symbol)
    method(YEA::STATUS::CUSTOM_STATUS_COMMANDS[current_symbol][4]).call
  end
 
  #--------------------------------------------------------------------------
  # draw_custom1
  #--------------------------------------------------------------------------
  def draw_custom1
    dx = 0; dy = 0
    for skill in @actor.skills
      next if skill.nil?
      next unless @actor.added_skill_types.include?(skill.stype_id)
      draw_item_name(skill, dx, dy)
      dx = dx == contents.width / 2 + 16 ? 0 : contents.width / 2 + 16
      dy += line_height if dx == 0
      return if dy + line_height > contents.height
    end
  end
 
  #--------------------------------------------------------------------------
  # draw_custom2
  #--------------------------------------------------------------------------
  def draw_custom2
    dx = 4; dy = 0; slot_id = 0
    for equip in @actor.equips
      change_color(system_color)
      text = Vocab.etype(@actor.equip_slots[slot_id])
      draw_text(dx, dy, contents.width - dx, line_height, text)
      reset_font_settings
      draw_item_name(equip, dx+92, dy) unless equip.nil?
      slot_id += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
    dw = Graphics.width * 2 / 5 - 24
    dx = contents.width - dw; dy = 0
    param_id = 0
    8.times do
      colour = Color.new(0, 0, 0, translucent_alpha/2)
      rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2)
      contents.fill_rect(rect, colour)
      size = $imported["YEA-AceEquipEngine"] ? YEA::EQUIP::STATUS_FONT_SIZE : 20
      contents.font.size = size
      change_color(system_color)
      draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id))
      change_color(normal_color)
      dwa = (Graphics.width * 2 / 5 - 2) / 2
      draw_text(dx, dy, dwa, line_height, @actor.param(param_id).group, 2)
      reset_font_settings
      change_color(system_color)
      draw_text(dx + dwa, dy, 22, line_height, "→", 1)
      param_id += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
  end
 
  #--------------------------------------------------------------------------
  # draw_custom3
  #--------------------------------------------------------------------------
  def draw_custom3
    return unless $imported["YEA-ClassSystem"]
    data = []
    for class_id in YEA::CLASS_SYSTEM::CLASS_ORDER
      next if $data_classes[class_id].nil?
      item = $data_classes[class_id]
      next unless @actor.unlocked_classes.include?(item.id) or
        YEA::CLASS_SYSTEM::DEFAULT_UNLOCKS.include?(item.id)
      data.push(item)
    end
    dx = 0; dy = 0; class_index = 0
    for class_id in data
      item = data[class_index]
      reset_font_settings
      if item == @actor.class
        change_color(text_color(YEA::CLASS_SYSTEM::CURRENT_CLASS_COLOUR))
      elsif item == @actor.subclass
        change_color(text_color(YEA::CLASS_SYSTEM::SUBCLASS_COLOUR))
      else
        change_color(normal_color)
      end
      icon = item.icon_index
      draw_icon(icon, dx, dy)
      text = item.name
      draw_text(24, dy, contents.width-24, line_height, text)
      next if YEA::CLASS_SYSTEM::MAINTAIN_LEVELS
      level = @actor.class_level(item.id)
      contents.font.size = YEA::CLASS_SYSTEM::LEVEL_FONT_SIZE
      text = sprintf(YEA::CLASS_SYSTEM::CLASS_LEVEL, level.group)
      dwa = contents.width - (Graphics.width * 2 / 5 - 24) - 28
      draw_text(dx, dy, dwa, line_height, text, 2)
      class_index += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
    dw = Graphics.width * 2 / 5 - 24
    dx = contents.width - dw; dy = 0
    param_id = 0
    8.times do
      colour = Color.new(0, 0, 0, translucent_alpha/2)
      rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2)
      contents.fill_rect(rect, colour)
      contents.font.size = YEA::CLASS_SYSTEM::PARAM_FONT_SIZE
      change_color(system_color)
      draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id))
      change_color(normal_color)
      dwa = (Graphics.width * 2 / 5 - 2) / 2
      draw_text(dx, dy, dwa, line_height, @actor.param(param_id).group, 2)
      reset_font_settings
      change_color(system_color)
      draw_text(dx + dwa, dy, 22, line_height, "→", 1)
      param_id += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
  end
 
end # Window_StatusItem

#==============================================================================
# ■ Scene_Status
#==============================================================================

class Scene_Status < Scene_MenuBase
 
  #--------------------------------------------------------------------------
  # start
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_command_window
    create_status_window
    create_item_window
    relocate_windows
  end
 
  #--------------------------------------------------------------------------
  # create_command_window
  #--------------------------------------------------------------------------
  def create_command_window
    wy = @help_window.height
    @command_window = Window_StatusCommand.new(0, wy)
    @command_window.viewport = @viewport
    @command_window.actor = @actor
    @command_window.help_window = @help_window
    @command_window.set_handler(:cancel,  method(:return_scene))
    @command_window.set_handler(:pagedown, method(:next_actor))
    @command_window.set_handler(:pageup,  method(:prev_actor))
    process_custom_status_commands
  end
 
  #--------------------------------------------------------------------------
  # process_custom_status_commands
  #--------------------------------------------------------------------------
  def process_custom_status_commands
    for command in YEA::STATUS::COMMANDS
      next unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0])
      called_method = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][2]
      @command_window.set_handler(command[0], method(called_method))
    end
  end
 
  #--------------------------------------------------------------------------
  # create_status_window
  #--------------------------------------------------------------------------
  def create_status_window
    wy = @help_window.height
    @status_window = Window_StatusActor.new(@command_window.width, wy)
    @status_window.viewport = @viewport
    @status_window.actor = @actor
  end
 
  #--------------------------------------------------------------------------
  # create_item_window
  #--------------------------------------------------------------------------
  def create_item_window
    dy = @command_window.y + @command_window.height
    @item_window = Window_StatusItem.new(0, dy, @command_window)
    @item_window.viewport = @viewport
    @item_window.actor = @actor
    @command_window.item_window = @item_window
  end
 
  #--------------------------------------------------------------------------
  # relocate_windows
  #--------------------------------------------------------------------------
  def relocate_windows
    return unless $imported["YEA-AceMenuEngine"]
    case Menu.help_window_location
    when 0 # Top
      @help_window.y = 0
      @command_window.y = @help_window.height
      @item_window.y = @command_window.y + @command_window.height
    when 1 # Middle
      @command_window.y = 0
      @help_window.y = @command_window.height
      @item_window.y = @help_window.y + @help_window.height
    else # Bottom
      @command_window.y = 0
      @item_window.y = @command_window.height
      @help_window.y = @item_window.y + @item_window.height
    end
    @status_window.y = @command_window.y
  end
 
  #--------------------------------------------------------------------------
  # on_actor_change
  #--------------------------------------------------------------------------
  def on_actor_change
    @command_window.actor = @actor
    @status_window.actor = @actor
    @item_window.actor = @actor
    @command_window.activate
  end
 
  #--------------------------------------------------------------------------
  # new method: command_name1
  #--------------------------------------------------------------------------
  def command_name1
    SceneManager.call(Scene_Skill)
  end
 
  #--------------------------------------------------------------------------
  # new method: command_name2
  #--------------------------------------------------------------------------
  def command_name2
    SceneManager.call(Scene_Equip)
  end
 
  #--------------------------------------------------------------------------
  # new method: command_name3
  #--------------------------------------------------------------------------
  def command_name3
    unless $imported["YEA-ClassSystem"]
      @command_window.activate
      return
    end
    SceneManager.call(Scene_Class)
  end
 
end # Scene_Status

#==============================================================================
#
# ▼ End of File
#
#==============================================================================

* Vincent26 - Weapon's type upgrade
[code:1:a5e6]=begin
##############################################################
Weapon_Upgrade
####
Vincent26
####
Description:
Ce script permet de monter en level pour l'utilisation de catégorie d'armes.
Le principe est que chaque coup donné avec un type d'armes particulier augmente
son expérience. Une fois un niveau passé, le personnage reçoit une amélioration
définitive d'une de ses caractéristiques.
Un menu secondaire est ajouté au menu status à l'appui de la touche Shift.
Le niveau de compétence pour une arme du héros est associé à un nom descriptif.
####
Utilisation :
Configurer le module suivant pour mettre en place ce script.
=end
module Weapon_Upgrade

#Ne pas modifier
CARACTERISTIQUE = {:max_hp => 0,:max_mp => 1,:force => 2,:defense => 3,
:magic_atk => 4,:magic_def => 5,:agilité => 6,:chance => 7}

#LISTE DES TYPES D'ARMES DANS LE LEXIQUE DE LA BDD
#
#
# Liste des upgrades des types d'armes :
# TYPE => [[NBR_COUP,VALEUR,CARACTERISTIQUE,[ID_PERSONNAGE]],...]
#
# TYPE est le type d'arme (l'id associé dans la BDD)
# VALEUR est la valeur à ajouter à la caractéristique du perso
# CARACTERISTIQUE est la caractéristique à modifier
# ID_PERSONNAGE est la liste des personnages à qui peut s'appliquer cet upgrade
UPGRADE_LIST = {
1 => [[50,2,:force,[1,2,3,4,5,6,7,8,9,10]],
[100,3,:force,[1,2,3,4,5,6,7,8,9,10]],
[500,5,:force,[1,2,3,4,5,6,7,8,9,10]],
[1000,10,:force,[1,2,3,4,5,6,7,8,9,10]],
[2000,15,:force,[1,2,3,4,5,6,7,8,9,10]],
[5000,20,:force,[1,2,3,4,5,6,7,8,9,10]],
[9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
2 => [[50,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[100,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[500,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[1000,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[2000,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[5000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
3 => [[50,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[100,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[500,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[1000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[2000,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[5000,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
4 => [[50,1,:force,[1,2,3,4,5,6,7,8,9,10]],
[100,2,:force,[1,2,3,4,5,6,7,8,9,10]],
[500,3,:force,[1,2,3,4,5,6,7,8,9,10]],
[1000,5,:force,[1,2,3,4,5,6,7,8,9,10]],
[2000,8,:force,[1,2,3,4,5,6,7,8,9,10]],
[5000,10,:force,[1,2,3,4,5,6,7,8,9,10]],
[9999,25,:force,[1,2,3,4,5,6,7,8,9,10]]],
5 => [[50,2,:force,[1,2,3,4,5,6,7,8,9,10]],
[100,3,:force,[1,2,3,4,5,6,7,8,9,10]],
[500,5,:force,[1,2,3,4,5,6,7,8,9,10]],
[1000,10,:force,[1,2,3,4,5,6,7,8,9,10]],
[2000,15,:force,[1,2,3,4,5,6,7,8,9,10]],
[5000,20,:force,[1,2,3,4,5,6,7,8,9,10]],
[9999,50,:force,[1,2,3,4,5,6,7,8,9,10]]],
6 => [[50,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[100,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[500,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[1000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[2000,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[5000,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
7 => [[50,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[100,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[500,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[1000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[2000,15,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[5000,20,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[9999,50,:agilité,[1,2,3,4,5,6,7,8,9,10]]],
8 => [[50,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[100,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[500,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[1000,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[2000,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[5000,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
9 => [[50,2,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[100,3,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[500,5,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[1000,10,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[2000,15,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[5000,20,:magic_atk,[1,2,3,4,5,6,7,8,9,10]],
[9999,50,:magic_atk,[1,2,3,4,5,6,7,8,9,10]]],
10 => [[50,1,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[100,2,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[500,3,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[1000,5,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[2000,8,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[5000,10,:agilité,[1,2,3,4,5,6,7,8,9,10]],
[9999,20,:force,[1,2,3,4,5,6,7,8,9,10]]],
}

#Nombre de type d'arme
NBR_TYPE_ARME = 10

#Liste des types d'armes
LIST_TYPE_ARME = ["Hache","Griffes","Lance","Epée","Katana","Arc","Dague",
"Massue","Bâton","Arme à feu"]

#Description des levels de maitrisse
LVL_DESCRIPTION = {0=>"Néophyte",50=>"Initié",100=>"Apprenti",500=>"Confirmé",
1000=>"Expert",2000=>"Prodige",5000=>"Maître",9999=>"Légende"}
#Pour définir une autre attaque que celle de base pour le décompte des point
#ajouter cela dans la note d'un personnage :
#<Basic_Skill = ID>
#ID est l'id de la compétence prise pour base

end
class Scene_Battle

alias start_weapon_upgrade start
def start
@attaque_standard = false
start_weapon_upgrade
end

alias use_item_weapon_upgrade use_item
def use_item
@attaque_standard = false
item = @subject.current_action.item
if @subject.actor?
if @subject.actor.note =~ /<Basic_Skill = (\d+)>/
skill_id = $1.to_i
@attaque_standard = true if item.id == skill_id
else
@attaque_standard = true if item.animation_id < 0
end
end
use_item_weapon_upgrade
end

alias apply_item_effects_weapon_uprade apply_item_effects
def apply_item_effects(target, item)
apply_item_effects_weapon_uprade(target, item)
if target.result.hit? && target.result.success && @attaque_standard
if @subject.actor?
@subject.upgrade_weapon_skill
end
end
end

end
module BattleManager

class << self

alias gain_exp_weapon_update gain_exp
alias process_abort_weapon_update process_abort

def gain_exp
new = false
for i in $game_party.members
for j in i.texte_fin_combat
$game_message.new_page if new = false
new = true
$game_message.add(j)
end
i.texte_fin_combat = []
end
gain_exp_weapon_update
end

def process_abort
new = false
for i in $game_party.members
for j in i.texte_fin_combat
$game_message.new_page if new = false
new = true
$game_message.add(j)
end
i.texte_fin_combat = []
end
process_abort_weapon_update
end
end
end
class Game_Actor

attr_reader :upgrade_list
attr_accessor :texte_fin_combat

alias initialize_weapon_upgrade initialize
def initialize(actor_id)
initialize_weapon_upgrade(actor_id)
@weapon_upgrade = {}
@texte_fin_combat = []
@upgrade_list = {}
Weapon_Upgrade::UPGRADE_LIST.each do |key,value|
li = []
for list in value
if list[3].include?(actor_id)
li.push([list[0],list[1],list[2],true])
end
end
@upgrade_list[key] = li if li != []
end
end

def upgrade_weapon_skill
for i in 1..Weapon_Upgrade::NBR_TYPE_ARME
if wtype_equipped?(i)
@weapon_upgrade[i.to_s] = 0 if !@weapon_upgrade.include?(i.to_s)
@weapon_upgrade[i.to_s] += 1
test_upgrade_weapon(i)
end
end
end

def level_up_weapon(name,lvl)
id = (Weapon_Upgrade::LIST_TYPE_ARME.index(name)+1).to_s
@weapon_upgrade[id] = 0 if !@weapon_upgrade.include?(id)
@weapon_upgrade[id] += lvl
@upgrade_list.each do |key,lis|
next if key.to_s != id
for j in 0..lis.length-1
liste = lis[j]
if liste[3]
if @weapon_upgrade[id.to_s] >= liste[0]
param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
add_param(param, liste[1])
@upgrade_list[key][j][3] = false
end
end
end
end
end

def weapon_upgrade
return @weapon_upgrade
end

def test_upgrade_weapon(id)
@upgrade_list.each do |key,lis|
next if key != id
for j in 0..lis.length-1
liste = lis[j]
if liste[3]
if @weapon_upgrade[id.to_s] >= liste[0]
param = Weapon_Upgrade::CARACTERISTIQUE[liste[2]]
add_param(param, liste[1])
#NOMPERSO | NOUVEAU RANG | | NOM ARME | | NOM DU PARAMETRE| | VALEUR AUG |
@texte_fin_combat.push(@name +" devient "+Weapon_Upgrade::LVL_DESCRIPTION[liste[0]].to_s+" en "+Weapon_Upgrade::LIST_TYPE_ARME[id-1]+ ", "+Vocab.param(param)+" +"+liste[1].to_s+".")
@upgrade_list[key][j][3] = false
end
end
end
end
end
end
class Scene_Status


alias update_weapon_upgrade update
def update
if Input.trigger?(:UP) && @item_window.menu == 1
Sound.play_cursor
@item_window.ligne_actuel -= 1
@item_window.refresh
elsif Input.trigger?(:DOWN) && @item_window.menu == 1
Sound.play_cursor
@item_window.ligne_actuel += 1
@item_window.refresh
end
if Input.trigger?(:B) && @item_window.menu == 1
@item_window.menu = 0
@command_window.activate
else
update_weapon_upgrade
end
end

alias terminate_vincent26_weapon_type terminate
def terminate
terminate_vincent26_weapon_type
$game_temp.scene_status_index = nil
end

def maitrise_commande
if @item_window.line_nbr_max == 0
@item_window.menu = 0
@command_window.activate
else
@item_window.menu = 1
end
end

end
class Window_StatusItem < Window_Base

attr_accessor :menu
attr_reader :ligne_actuel

NRB_LINE = 7


alias initialize_weapon_upgrade initialize
def initialize(*args)
@ligne_actuel = 0
@table_upgrade = []
@menu = 0
initialize_weapon_upgrade(*args)
end

def ligne_actuel=(value)
table = []
for feat in @actor.class.features
if feat.code == 51
table.push(feat.data_id)
end
end
table.uniq!
@ligne_actuel = [[value,table.length-NRB_LINE].min,0].max
end

def line_nbr_max
table = []
for feat in @actor.class.features
if feat.code == 51
table.push(feat.data_id)
end
end
table.uniq!
[table.length-NRB_LINE,0].max
end

alias contents_height_weapon_upgrade contents_height
def contents_height
if @upgrade_weapon_contents
@table_upgrade.length*24+24
else
contents_height_weapon_upgrade
end
end

alias refresh_weapon_upgrade refresh
def refresh
@upgrade_weapon_contents = false
create_contents
refresh_weapon_upgrade
end

def maitrise_enable
actif = self.line_nbr_max() != 0
return actif
end

def draw_maitrise_block
if @actor_save != @actor
@ligne_actuel = 0
@actor_save = @actor
end

table = []
for feat in @actor.class.features
if feat.code == 51
table.push(feat.data_id)
end
end
table.uniq!
@table_upgrade = table
@upgrade_weapon_contents = true
create_contents
y = @ligne_actuel*24
self.oy = y
draw_arme_usable(32,y,table)
draw_arme_lvl(270,y,table)
draw_arme_param(380,y,table)
draw_arme_rang(150,y,table)
end


def draw_arme_rang(x,y,table)
for i in 0..table.length
next if i > NRB_LINE
if i != 0
nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
rang = Weapon_Upgrade::LVL_DESCRIPTION[0]
Weapon_Upgrade::LVL_DESCRIPTION.each do |key , value|
break if nbr < key
rang = value
end
rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(table[i-1+@ligne_actuel])
else
rang = "Rang"
end
draw_text_ex(x, y+i*line_height, rang)
end
end

def draw_arme_param(x,y,table)
for i in 0..table.length
next if i > NRB_LINE
if i != 0
if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
if j[3] == true
value = j[1]
param = Weapon_Upgrade::CARACTERISTIQUE[j[2]]
texte = Vocab::param(param)+" +"+value.to_s
break
end
texte = "-----"
end
else
texte = "-----"
end
else
texte = "Bonus suivant"
end
draw_text_ex(x, y+i*line_height, texte)
end
end

def draw_arme_usable(x,y,table)
for i in 0..table.length
if i != 0
next if i > NRB_LINE
texte = Weapon_Upgrade::LIST_TYPE_ARME[table[i-1+@ligne_actuel]-1]
else
texte = "Type"
end
draw_text_ex(x, y+i*line_height, texte)
end
end

def draw_arme_lvl(x,y,table)
for i in 0..table.length
if i != 0
next if i > NRB_LINE
nbr = @actor.weapon_upgrade[table[i-1+@ligne_actuel].to_s] || 0
if @actor.upgrade_list.has_key?(table[i-1+@ligne_actuel])
for j in @actor.upgrade_list[table[i-1+@ligne_actuel]]
if j[3] == true
lvl = j[0]
texte = nbr.to_s+"/"+lvl.to_s
break
end
texte = "-/-"
end
else
texte = "-/-"
end
else
texte = "Points"
end
draw_text_ex(x, y+i*line_height, texte)
end
end
end

class Game_Interpreter

def get_rang_lvl_actor(id, weapon_id)
nbr = $game_actors[id].weapon_upgrade[weapon_id.to_s] || 0
rang = Weapon_Upgrade::LVL_DESCRIPTION[0]
Weapon_Upgrade::LVL_DESCRIPTION.each do |key , value|
break if nbr < key
rang = value
end
rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
return rang
end

def get_rang_lvl_member(id, weapon_id)
nbr = $game_party.members[id].weapon_upgrade[weapon_id.to_s] || 0
rang = Weapon_Upgrade::LVL_DESCRIPTION[0]
Weapon_Upgrade::LVL_DESCRIPTION.each do |key , value|
break if nbr < key
rang = value
end
rang = "" if !Weapon_Upgrade::UPGRADE_LIST.has_key?(weapon_id)
return rang
end

end[/cod
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 30
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Problème de son dans un menu

le Mar 23 Fév 2016 - 18:18
Nickel, ça marche à la perfection. Merci beaucoup. Smile
Contenu sponsorisé

Résolu Re: Problème de son dans un menu

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum