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 Besoin d'une toute petite amélioration sur un script

le Sam 2 Jan 2016 - 21:53
Re coucou, j'aurais besoin d'avoir une petite modification de script pour améliorer un message en fin de combat. J'utilise le Skill mastery de NewMaker pour faire évoluer mes skills et en apprendre de nouveaux. Au bout d'une certaine quantité de points acquis à force d'utiliser ces sorts, j'apprends de nouveaux skills et un message en fin de combat s'affiche. Actuellement, ça me met juste "Sort appris". Je souhaiterai que le message devienne "Sort appris par le personnage en question". Mais je ne sais pas comment m'y prendre. Quelqu'un peut-il m'aider ?

Le script est ici :

Code:
# ==============================================================================
# Skill_Mastery
#
# Auteur: NewMaker
# Version: 1.6
# Description: Permet d'ajouter un attribut aux compétence (le niveau de
#              maîtrise de la compétence).
#
# Crédits:
#      - Joke (qui a énormément aidé)
#      - Celestiel (pour quelques infos utiles)
#      - Zangther (pour quelques infos utiles)
#      - Vincent26 (pour la mise à jour du script)
# ==============================================================================

# Fonctionnement de la configuration :

# XX => [[YY, ZZ, true or false]],
# XX = ID du skill à améliorer
# YY = ID du skill à obtenir à partir du skill XX
# ZZ = Nombre de fois que le skill XX doit être utilisé avant de débloquer
#      le skill YY
# true or false = true : le skill XX sera supprimé une fois le skill YY obtenu
#                 false : le skill XX sera conservé une fois le skill YY obtenu

module SkillsToUpgrade
  
  SKILL_LIST = Hash.new(0)
  SKILL_LIST = {
    25 => [[26, 30, false]],
    26 => [[27, 80, false]],
    27 => [[28, 100, false]],
    29 => [[30, 30, false]],
    33 => [[34, 30, false]],
    51 => [[53, 50, false],[52, 80, false]],
    52 => [[54, 100, false]],
    55 => [[57, 50, false],[56, 80, false]],
    56 => [[58, 100, false]],
    59 => [[61, 50, false],[60, 80, false]],
    60 => [[62, 100, false]],
    63 => [[64, 100, false]],
    65 => [[66, 100, false]],
    67 => [[68, 100, false]],
    69 => [[70, 75, false]],
    71 => [[72, 75, false]],
    73 => [[74, 25, false],[75, 50, false]],
    75 => [[79, 100, false]]
  }
  
end

# ------------------------------------------------------
# Ne rien mettre entre les guillemets de nsm, si vous voulez que
# rien ne s'affiche quand une compétence ne demande pas de points de maîtrise.
# ------------------------------------------------------
module Vocab
  def self.sm;          "";    end
  def self.nsm;          "-/-";  end
end

module BattleManager
  
  class << self
    # ------------------------------------------------------
    # alias
    # ------------------------------------------------------
    alias :old_gain_exp :gain_exp
    alias :old_process_abort :process_abort
    # ------------------------------------------------------
    # appel d'update_skills après la victoire
    # ------------------------------------------------------
    def gain_exp
      update_skills
      old_gain_exp
    end
    # ------------------------------------------------------
    # appel d'update_skills après la fuite
    # ------------------------------------------------------
    def process_abort
      update_skills
      old_process_abort
    end
    # ------------------------------------------------------
    # méthode update_skills pour tous les membres de l'équipe
    # ------------------------------------------------------
    def update_skills
      $game_party.all_members.each do |actor|
        actor.upgrade_skills
      end
      wait_for_message
    end
  end
  
end

class Game_Actor
  
  include SkillsToUpgrade
  
  # ------------------------------------------------------
  # Alias et accesseurs
  # ------------------------------------------------------
  attr_accessor :skill_mastery
  alias :old_init_skills :init_skills
  alias :old_learn_skill :learn_skill
  alias :old_forget_skill :forget_skill
  # ------------------------------------------------------
  # méthode pour l'utilisation d'une compétence
  # ------------------------------------------------------
  def use_item(item)
    super
    if item.is_a?(RPG::Skill)
      upgrade_skill_mastery(item.id) if SceneManager.scene_is?(Scene_Battle)
    end
  end
  # ------------------------------------------------------
  # initialisation du Hash
  # ------------------------------------------------------
  def init_skills
    @skill_mastery = Hash.new(0)
    old_init_skills
  end
  # ------------------------------------------------------
  # la nouvelle compétence prend 0 en niveau de maitrise
  # ------------------------------------------------------
  def learn_skill(skill_id)
    unless skill_learn?($data_skills[skill_id])
      @skill_mastery[skill_id] = 0
    end
    old_learn_skill(skill_id)
  end
  # ------------------------------------------------------
  # suppresion de la clé de l'ancienne compétence
  # ------------------------------------------------------
  def forget_skill(skill_id)
    @skill_mastery.delete(skill_id)
    old_forget_skill(skill_id)
  end
  # ------------------------------------------------------
  # permet d'augmenter de 1 la maitrise d'une compétence
  # ------------------------------------------------------
  def upgrade_skill_mastery(skill_id)
    if SKILL_LIST[skill_id]
      value = 0
      for up in SKILL_LIST[skill_id]
        value = up[1] if up[1] > value
      end
      if @skill_mastery[skill_id] < value
        @skill_mastery[skill_id] += 1
      end
    end
  end
  # ------------------------------------------------------
  # permet d'évoluer une compétence
  # ------------------------------------------------------
  def upgrade_skill(old_skill_id, new_skills_id,forget)
    forget_skill(old_skill_id) if forget
    $game_message.new_page
    new_skills_id.each do |skill_id|
      learn_skill(skill_id)
      $game_message.add(sprintf(Vocab::ObtainSkill,
                        $data_skills[skill_id].name))
    end
  end
  # ------------------------------------------------------
  # évolue les compétences
  # ------------------------------------------------------
  def upgrade_skills
    SKILL_LIST.each do |skill, upgrade|
      ok = false
      result = []
      for up in upgrade
        if @skill_mastery[skill] && @skill_mastery[skill] >= up[1] && !skill_learn?($data_skills[up[0]])
          result.push(up[0])
          ok = true if up[2]
        end
      end
      upgrade_skill(skill, result,ok) if result != []
    end
  end
  
end

class Window_SkillList
  
  include SkillsToUpgrade
  alias :old_initialize :initialize
  def initialize(x, y, width, height)
    @mastery_or_cost = false
    old_initialize(x, y, width, height)
  end
  # ------------------------------------------------------
  # affichage des stats
  # ------------------------------------------------------
  alias nerylis_draw_skill_cost draw_skill_cost
def draw_skill_cost(rect, skill)
  if @mastery_or_cost
    change_color(crisis_color, enable?(skill))
    if SKILL_LIST[skill.id]
      if @actor.skill_tp_cost(skill) > 0
        value = @actor.skill_mastery[skill.id]
        for up in SKILL_LIST[skill.id]
          if value < up[1]
            value = up[1]
            break
          end
        end
        draw_text(rect, "#{Vocab.sm} #{@actor.skill_mastery[skill.id]}/\
#{value}", 2)
      elsif @actor.skill_mp_cost(skill) > 0
        value = @actor.skill_mastery[skill.id]
        for up in SKILL_LIST[skill.id]
          if value < up[1]
            value = up[1]
            break
          end
        end
        draw_text(rect, "#{Vocab.sm} #{@actor.skill_mastery[skill.id]}/\
#{value}", 2)
      end
    else
      draw_text(rect, "#{Vocab.nsm}", 2)
    end
  else
    if !$imported["YEA-SkillCostManager"]
      if @actor.skill_tp_cost(skill) > 0
        change_color(tp_cost_color, enable?(skill))
        draw_text(rect, "#{@actor.skill_tp_cost(skill)}", 2)
      elsif @actor.skill_mp_cost(skill) > 0
        change_color(mp_cost_color, enable?(skill))
        draw_text(rect, "#{@actor.skill_mp_cost(skill)}", 2)
      end
    else
      nerylis_draw_skill_cost(rect, skill)
    end
  end
end
  # ------------------------------------------------------
  # changement de l'affichage si la touche majuscule est pressée
  # ------------------------------------------------------
  def process_handling
    super
    return process_costormastery if Input.trigger?(:SHIFT) && self.visible
  end
  # ------------------------------------------------------
  # change l'affichage points de maitrise ou cout en mana
  # ------------------------------------------------------
  def process_costormastery
    Sound.play_cursor; Input.update
    @mastery_or_cost ? @mastery_or_cost = false : @mastery_or_cost = true
    create_contents
    draw_all_items
  end  
end


Dernière édition par Nérylis le Mar 12 Jan 2016 - 18:12, édité 1 fois
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: Besoin d'une toute petite amélioration sur un script

le Lun 11 Jan 2016 - 20:12
Petit up
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: Besoin d'une toute petite amélioration sur un script

le Lun 11 Jan 2016 - 21:04
Alors, j'ai pas VxAce sous le coude, mais essaye cette modification :

Code:
# ==============================================================================
# Skill_Mastery
#
# Auteur: NewMaker
# Version: 1.6
# Description: Permet d'ajouter un attribut aux compétence (le niveau de
#              maîtrise de la compétence).
#
# Crédits:
#      - Joke (qui a énormément aidé)
#      - Celestiel (pour quelques infos utiles)
#      - Zangther (pour quelques infos utiles)
#      - Vincent26 (pour la mise à jour du script)
# ==============================================================================

# Fonctionnement de la configuration :

# XX => [[YY, ZZ, true or false]],
# XX = ID du skill à améliorer
# YY = ID du skill à obtenir à partir du skill XX
# ZZ = Nombre de fois que le skill XX doit être utilisé avant de débloquer
#      le skill YY
# true or false = true : le skill XX sera supprimé une fois le skill YY obtenu
#                 false : le skill XX sera conservé une fois le skill YY obtenu

module SkillsToUpgrade
  
  SKILL_LIST = Hash.new(0)
  SKILL_LIST = {
    25 => [[26, 30, false]],
    26 => [[27, 80, false]],
    27 => [[28, 100, false]],
    29 => [[30, 30, false]],
    33 => [[34, 30, false]],
    51 => [[53, 50, false],[52, 80, false]],
    52 => [[54, 100, false]],
    55 => [[57, 50, false],[56, 80, false]],
    56 => [[58, 100, false]],
    59 => [[61, 50, false],[60, 80, false]],
    60 => [[62, 100, false]],
    63 => [[64, 100, false]],
    65 => [[66, 100, false]],
    67 => [[68, 100, false]],
    69 => [[70, 75, false]],
    71 => [[72, 75, false]],
    73 => [[74, 25, false],[75, 50, false]],
    75 => [[79, 100, false]]
  }
  
end

# ------------------------------------------------------
# Ne rien mettre entre les guillemets de nsm, si vous voulez que
# rien ne s'affiche quand une compétence ne demande pas de points de maîtrise.
# ------------------------------------------------------
module Vocab
  def self.sm;          "";    end
  def self.nsm;          "-/-";  end
end

module BattleManager
  
  class << self
    # ------------------------------------------------------
    # alias
    # ------------------------------------------------------
    alias :old_gain_exp :gain_exp
    alias :old_process_abort :process_abort
    # ------------------------------------------------------
    # appel d'update_skills après la victoire
    # ------------------------------------------------------
    def gain_exp
      update_skills
      old_gain_exp
    end
    # ------------------------------------------------------
    # appel d'update_skills après la fuite
    # ------------------------------------------------------
    def process_abort
      update_skills
      old_process_abort
    end
    # ------------------------------------------------------
    # méthode update_skills pour tous les membres de l'équipe
    # ------------------------------------------------------
    def update_skills
      $game_party.all_members.each do |actor|
        actor.upgrade_skills
      end
      wait_for_message
    end
  end
  
end

class Game_Actor
  
  include SkillsToUpgrade
  
  # ------------------------------------------------------
  # Alias et accesseurs
  # ------------------------------------------------------
  attr_accessor :skill_mastery
  alias :old_init_skills :init_skills
  alias :old_learn_skill :learn_skill
  alias :old_forget_skill :forget_skill
  # ------------------------------------------------------
  # méthode pour l'utilisation d'une compétence
  # ------------------------------------------------------
  def use_item(item)
    super
    if item.is_a?(RPG::Skill)
      upgrade_skill_mastery(item.id) if SceneManager.scene_is?(Scene_Battle)
    end
  end
  # ------------------------------------------------------
  # initialisation du Hash
  # ------------------------------------------------------
  def init_skills
    @skill_mastery = Hash.new(0)
    old_init_skills
  end
  # ------------------------------------------------------
  # la nouvelle compétence prend 0 en niveau de maitrise
  # ------------------------------------------------------
  def learn_skill(skill_id)
    unless skill_learn?($data_skills[skill_id])
      @skill_mastery[skill_id] = 0
    end
    old_learn_skill(skill_id)
  end
  # ------------------------------------------------------
  # suppresion de la clé de l'ancienne compétence
  # ------------------------------------------------------
  def forget_skill(skill_id)
    @skill_mastery.delete(skill_id)
    old_forget_skill(skill_id)
  end
  # ------------------------------------------------------
  # permet d'augmenter de 1 la maitrise d'une compétence
  # ------------------------------------------------------
  def upgrade_skill_mastery(skill_id)
    if SKILL_LIST[skill_id]
      value = 0
      for up in SKILL_LIST[skill_id]
        value = up[1] if up[1] > value
      end
      if @skill_mastery[skill_id] < value
        @skill_mastery[skill_id] += 1
      end
    end
  end
  # ------------------------------------------------------
  # permet d'évoluer une compétence
  # ------------------------------------------------------
  def upgrade_skill(old_skill_id, new_skills_id,forget)
    forget_skill(old_skill_id) if forget
    $game_message.new_page
    new_skills_id.each do |skill_id|
      learn_skill(skill_id)
      $game_message.add(sprintf(@name + " : " + Vocab::ObtainSkill,
                        $data_skills[skill_id].name))
    end
  end
  # ------------------------------------------------------
  # évolue les compétences
  # ------------------------------------------------------
  def upgrade_skills
    SKILL_LIST.each do |skill, upgrade|
      ok = false
      result = []
      for up in upgrade
        if @skill_mastery[skill] && @skill_mastery[skill] >= up[1] && !skill_learn?($data_skills[up[0]])
          result.push(up[0])
          ok = true if up[2]
        end
      end
      upgrade_skill(skill, result,ok) if result != []
    end
  end
  
end

class Window_SkillList
  
  include SkillsToUpgrade
  alias :old_initialize :initialize
  def initialize(x, y, width, height)
    @mastery_or_cost = false
    old_initialize(x, y, width, height)
  end
  # ------------------------------------------------------
  # affichage des stats
  # ------------------------------------------------------
  alias nerylis_draw_skill_cost draw_skill_cost
def draw_skill_cost(rect, skill)
  if @mastery_or_cost
    change_color(crisis_color, enable?(skill))
    if SKILL_LIST[skill.id]
      if @actor.skill_tp_cost(skill) > 0
        value = @actor.skill_mastery[skill.id]
        for up in SKILL_LIST[skill.id]
          if value < up[1]
            value = up[1]
            break
          end
        end
        draw_text(rect, "#{Vocab.sm} #{@actor.skill_mastery[skill.id]}/\
#{value}", 2)
      elsif @actor.skill_mp_cost(skill) > 0
        value = @actor.skill_mastery[skill.id]
        for up in SKILL_LIST[skill.id]
          if value < up[1]
            value = up[1]
            break
          end
        end
        draw_text(rect, "#{Vocab.sm} #{@actor.skill_mastery[skill.id]}/\
#{value}", 2)
      end
    else
      draw_text(rect, "#{Vocab.nsm}", 2)
    end
  else
    if !$imported["YEA-SkillCostManager"]
      if @actor.skill_tp_cost(skill) > 0
        change_color(tp_cost_color, enable?(skill))
        draw_text(rect, "#{@actor.skill_tp_cost(skill)}", 2)
      elsif @actor.skill_mp_cost(skill) > 0
        change_color(mp_cost_color, enable?(skill))
        draw_text(rect, "#{@actor.skill_mp_cost(skill)}", 2)
      end
    else
      nerylis_draw_skill_cost(rect, skill)
    end
  end
end
  # ------------------------------------------------------
  # changement de l'affichage si la touche majuscule est pressée
  # ------------------------------------------------------
  def process_handling
    super
    return process_costormastery if Input.trigger?(:SHIFT) && self.visible
  end
  # ------------------------------------------------------
  # change l'affichage points de maitrise ou cout en mana
  # ------------------------------------------------------
  def process_costormastery
    Sound.play_cursor; Input.update
    @mastery_or_cost ? @mastery_or_cost = false : @mastery_or_cost = true
    create_contents
    draw_all_items
  end  
end
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: Besoin d'une toute petite amélioration sur un script

le Mar 12 Jan 2016 - 17:59
C'est presque ça. Là actuellement, ça donne "Perso : Sort appris." J'ai voulu modifier l'ordre des termes pour obtenir "Sort appris par Perso" mais je ne comprends pas où est géré le terme "appris". Tu peux m'orienter s'il te plaît ?

Edit : C'est bon, j'ai trouvé. J'ai enlevé le lien vers le module Vocab et mis à jour le message en fin de combat lorsque j'apprends un nouveau skill. Merci pour ton aide.
Contenu sponsorisé

Résolu Re: Besoin d'une toute petite amélioration sur un script

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