Partagez
Aller en bas
avatar
mysterious
Membre

Nombre de messages : 400
Age : 28
Distinction : aucune
Date d'inscription : 24/07/2008

Invocation en event / script

le Jeu 17 Juil 2014 - 19:25
Mon système est simple, une compétence permet de faire apparaître une entité sur le terrain qui combat avec vous jusqu'à la mort de celle-ci ou jusqu'à la fin du combat.

pour commencer créer dans la section héro un personnage ainsi qu'une classe à votre invocation :
Spoiler:

l'avantage qu'il y a à créer un héro et une classe pour chaque invocation est que votre invocation gagnera des niveaux et des capacités aux même titre que vos héros.

Ensuite créer un événement commun que vous appellerez par le nom de l'invocation ( pour plus de lisibilité), puis suivez l'ordre :
Spoiler:

( la condition n'est utile que si vous voulez ne pouvoir faire qu'une invocation par combat )

ensuite créer un deuxième événement commun que vous monterez de cette façon-ci :
Spoiler:


(la désactivation de l'interupteur ne sers que si vous voulez ne pouvoir faire qu'une invocation par combat)

cela fait créer une compétence du nom de l'invocation  qui appelle le 1er événement commun :
Spoiler:

le plus dur est fait, maintenant il va nous falloir un script pour pouvoir appelé notre deuxième evenement commun à chaque fin de combat et pour cela j'ai utiliser le script de Yanfly d'après combat;

insérez ce script au dessus de main :
Spoiler:
#==============================================================================
#
# ▼ Yanfly Engine Ace - Victoire AprèsCombat v1.00
# -- Traduit par UltimaSasuke pour rpgmakervx-fr.com
# -- Dérnière Mise à Jour: 2011.12.16
# -- Niveaux: Easy, Normal, Hard
# -- Requière : n/a
#
#==============================================================================

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

#==============================================================================
# ▼ Mise à Jour
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.16 - Début et fin du script.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# A la fin de chaque combat, RPG Maker VX Ace, par défaut, affiche du texte
# pour chaque fin de combat en disant l'EXP gagné et les objets obtenue.
# Ce script sert à rendre cette fin de combat plus visuel pour vos joueur.
# Vous pourrais voir tout ce que la fin de combat de base vous présente mais
# en plus compréhensible et design. (Cf. Screens rpgmakervx-fr.com).
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pour installer ce script inséré le en ouvrant l'éditeur de script (F11)
# en dessous de Matérial et au dessus de Main.
#
# -----------------------------------------------------------------------------
# Instruction pour la citation de Acteurs - Ces Mots Clé vont dans les notes
# des acteurs dans la base de données.
# -----------------------------------------------------------------------------
#
#  Corp
#  Corp
#

# Définie la citation de l'acteur quand il gagne. Le corp du code
# est continue, vous pouvez utiliser les codes de texte. Utilisez \n pour faire
# un saut de ligne. Tapez ce que vous voulez que l'acteur dise pour la citation
# Utilisez [New Quote] entre les deux balises pour démmarer une nouvelle citation.
#
# // EXEMPLE :
#
# "Je suis le meilleur!"
# [new quote]
# "Ils ne font pas le poid.\n Je resterais le meilleur!"
#

# FIN DE L'EXEMPLE \\
#
#
#  Corp
#  Corp
#

# Définie la citation de l'acteur quand il gagne des niveaux. Le corp du code
# est continue, vous pouvez utiliser les codes de texte. Utilisez
# \n pour faire un saut de ligne. Tapez ce que vous voulez que l'acteur dise pour
# la citation. Utilisez [New Quote] entre les deux balises pour démmarer une
# nouvelle citation.
#
# //EXEMPLE :
#
# "Je suis plus puissant!"
# [new quote]
# "Déjà que les combat sont simple, \n Maintenant sa va être de la tarte!"
#

# FIN DE L'EXEMPLE \\
#
#
#  Corp
#  Corp
#

# Définie la citation de l'acteur quand il gagne des objets. Le corp du code
# est continue, vous pouvez utiliser les codes de texte. Utilisez
# \n pour faire un saut de ligne. Tapez ce que vous voulez que l'acteur dise pour
# la citation. Utilisez [New Quote] entre les deux balises pour démmarer une
# nouvelle citation.
#
# //EXEMPLE :
#
# "Intéréssant ce qu'il y a!"
# [new quote]
# "Tout ça rien que pour moi. \n Je vais vite devenir riche!!"
#

# FIN DE L'EXEMPLE \\
#
# -----------------------------------------------------------------------------
# Instruction pour la citation des classes - Ces Mots Clé vont dans les notes
# des classes dans la base de données.
# -----------------------------------------------------------------------------
#
#  corp
#  corp
#

# Définie la citation de la classe quand elle gagne. Le corp du code
# est continue, vous pouvez utiliser les codes de texte. Utilisez \n pour faire
# un saut de ligne. Tapez ce que vous voulez que l'acteur dise pour la citation
# Utilisez [New Quote] entre les deux balises pour démmarer une nouvelle citation.
#
# // EXEMPLE :
#
# "Les Chevaliers sont les meilleurs!"
# [new quote]
# "Ils ne font pas le poid.\n Les Chevaliers en font des conféties!"
#

# FIN DE L'EXEMPLE \\
#
#
#  corp
#  corp
#

# Définie la citation de la classe quand elle gagne des niveaux. Le corp du code
# est continue, vous pouvez utiliser les codes de texte. Utilisez
# \n pour faire un saut de ligne. Tapez ce que vous voulez que l'acteur dise pour
# la citation. Utilisez [New Quote] entre les deux balises pour démmarer une
# nouvelle citation.
#
# //EXEMPLE :
#
# "Les chevaliers deviennent plus puissant!"
# [new quote]
# "Déjà que les combat sont simple, \n Maintenant sa va être de la tarte!"
#

# FIN DE L'EXEMPLE \\
#
#
#  corp
#  corp
#

# Définie la citation de la classe quand elle gagne des objets. Le corp du code
# est continue, vous pouvez utiliser les codes de texte. Utilisez
# \n pour faire un saut de ligne. Tapez ce que vous voulez que l'acteur dise pour
# la citation. Utilisez [New Quote] entre les deux balises pour démmarer une
# nouvelle citation.
#
# //EXEMPLE :
#
# "Intéréssant ce qu'il y a!"
# [new quote]
# "Tout ça rien que pour nous. \n Nous allons vite devenir riche!!"
#

# FIN DE L'EXEMPLE \\
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Ce script est fait pour RPG Maker VX Ace et il est peut probable qu'il
# fonction sous RPG Maker VX sans ajustement.
#
#==============================================================================

module YEA
 module VICTORY_AFTERMATH
   
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # - Paramétre Général -
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # Ce sont des paramétre différent utilisé par le script, modifiez les
   # comme bon vous sembles.
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   VICTORY_BGM  = RPG::BGM.new("Field1", 100, 100)    # Effet de Victoire (BGM)
   VICTORY_TICK = RPG::SE.new("Decision1", 100, 150)  # Effet d'EXP (SE)
   LEVEL_SOUND  = RPG::SE.new("Up4", 80, 150)         # Effet de niveaux (SE)
   SKILLS_TEXT  = "Nouvelle compétence!"              # Nouvelles compétences
   
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # - Paramétre important -
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # Ce sont des paramétres important, configurez les correctement. Il y a
   # un intérupteur qui permet de sauté la phase de script après le combat.
   # (pour ne plus voir la phase de résumé de victoire) et vous permet
   # d'appeller un évenement commun après chaque combat. Si vous ne souhaitez
   # pas faire appelle à ces fonctionalité, les mettre à 0. L'événement se
   # déroulera indépendamment de gagner ou s'échapper.
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   SKIP_AFTERMATH_SWITCH  = 0  # Si l'intérupteur est activé, cela sautera la
        # phase de résumé de victoire après le combat. Mettre à 0 pour
        # désactiver cette fonctionalité.
   AFTERMATH_COMMON_EVENT = 6  # Appelle un évenement commun après le combat.
        # Mettre à 0 pour désactiver cette fonctionalité.
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # - Paramétre du texte du haut -
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # Ici, vous pouvez ajuster les différents textes qui s'affiche dans la
   # fenêtre qui apparaît en haut de l'écran.
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   TOP_TEAM         = "Equipe de %s"           # Nom de l'équipe utilisé.
   TOP_VICTORY_TEXT = "%s sort victorieuse!"   # Texte de victoire.
   TOP_LEVEL_UP     = "%s a monté de niveau!"  # Text de niveau gagné.
   TOP_SPOILS       = "Butin gagné!"           # Texte pour le butins.
   
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # - Paramétre de la jauge d'EXP -
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # Ajustez la façon que la Jauge d'EXP apparaît pour le script. Ca comprend
   # l'affichage du texte, la taille de la police, la couleur des jauges, et
   # plus encore. Réglez tout ça ici.
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   VICTORY_EXP  = "+%sEXP"      # Texte affiché pour l'EXP
   EXP_PERCENT  = "%1.2f%%"     # L'EXP en % affiché.
   LEVELUP_TEXT = "Niveau Gagné!"   # Texte qui remplace le % d'EXP quand le
                                    # le niveau monte.
   MAX_LVL_TEXT = "Niveau Maximum Atteint!"   # Texte pour dire que le niveau
                                              # max est atteint
   FONTSIZE_EXP = 20            # Taille de la police pour l'EXP
   EXP_TICKS    = 15            # Ticks to full EXP
   EXP_GAUGE1   = 12            # "Fenêtre" Couleur de la texture du text
                                # pour la jauge.
   EXP_GAUGE2   = 4             # "Fenêtre" Couleur de la texture du text
                                # pour la jauge.
   LEVEL_GAUGE1 = 13            # "Fenêtre" Couleur de la texture du text
                                # pour le gain de niveau.
   LEVEL_GAUGE2 = 5             # "Fenêtre" Couleur de la texture du text
                                # pour le gain de niveau.
   
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # - Messages de victoire -
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   # Dans ce script, les acteurs peuvent avoir des citations unique. Ceci est
   # "bassin" de citation utilisé par les acteurs qui n'ont pas de citations
   # personel (voir instruction sur les citations d'acteurs). Sachez que les
   # citations personalisé au acteurs est prioritaire sur les citations de
   # classe qui elle sont prioritaire sur les citations par défaut
   # (ci-dessous). Utilisez \n pour un saut de ligne dans les citations.
   #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   HEADER_TEXT = "\e>\eC[6]%s\eC[0]\e<\n"  # Toujours au début des messages.
   FOOTER_TEXT = ""                        # Toujours à la fin des messages.
   
   # Les citations par défauts, ce que les acteurs disent quand ils gagnent.
   VICTORY_QUOTES ={
   # :type   => Citations
     #------------------------------------------------------------------------
     :win    => [ # Survient au début de la citation de victoire.
                  '"Nous avons gagné! C\'était un beau combat."',
                  '"Je ne suis même pas fatigué."',
                  '"Ce n\'était pas si difficile."',
                  '"Allons chercher plus fort!"',
                ],# Ne pas enlever ça.
     #------------------------------------------------------------------------
     :level  => [ # Survient au début de la citation de victoire.
                  '"Oui! Niveau gagné!"',
                  '"Je deviens plus fort!"',
                  '"Essayez de me suivre!"',
                  '"Je deviens encore plus fort!"',
                ],# Ne pas enlever ça.
     #------------------------------------------------------------------------
     :drops  => [ # Survient au début de la citation de victoire.
                  '"Je vais prendre ça."',
                  '"Il y a le butin pour le vainqueur."',
                  '"Les ennemies ont fait tomber quelque chose!"',
                  '"Hey! C\'est quoi ça?!"',
                ],# Ne pas enlever ça.
     #------------------------------------------------------------------------
   } # Ne pas enlever ça.
   
 end # VICTORY_AFTERMATH
end # YEA

#==============================================================================
# ▼ Ne pas éditez ce qu'il y a plus bas, sinon vous pourrez rentre dans le coma
# et/ou mourrir. (Petite touche d'humour du scripteur).
#==============================================================================

module YEA
 module REGEXP
 module BASEITEM
   
   NEW_QUOTE = /\[(?:NEW_QUOTE|new quote)\]/i
   
   WIN_QUOTE_ON    = /<(?:WIN_QUOTES|win quote)>/i
   WIN_QUOTE_OFF   = /<\/(?:WIN_QUOTES|win quote)>/i
   LEVEL_QUOTE_ON  = /<(?:LEVEL_QUOTES|level quote)>/i
   LEVEL_QUOTE_OFF = /<\/(?:LEVEL_QUOTES|level quote)>/i
   DROPS_QUOTE_ON  = /<(?:DROPS_QUOTES|drops quote)>/i
   DROPS_QUOTE_OFF = /<\/(?:DROPS_QUOTES|drops quote)>/i
   
 end # BASEITEM
 end # REGEXP
end # YEA

#==============================================================================
# ■ Switch
#==============================================================================

module Switch
 
 #--------------------------------------------------------------------------
 # self.skip_aftermath
 #--------------------------------------------------------------------------
 def self.skip_aftermath
   return false if YEA::VICTORY_AFTERMATH::SKIP_AFTERMATH_SWITCH <= 0
   return $game_switches[YEA::VICTORY_AFTERMATH::SKIP_AFTERMATH_SWITCH]
 end
   
end # Switch

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

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

#==============================================================================
# ■ DataManager
#==============================================================================

module DataManager
 
 #--------------------------------------------------------------------------
 # alias method: load_database
 #--------------------------------------------------------------------------
 class < def self.load_database
   load_database_va
   load_notetags_va
 end
 
 #--------------------------------------------------------------------------
 # new method: load_notetags_va
 #--------------------------------------------------------------------------
 def self.load_notetags_va
   groups = [$data_actors, $data_classes]
   for group in groups
     for obj in group
       next if obj.nil?
       obj.load_notetags_va
     end
   end
 end
 
end # DataManager

#==============================================================================
# ■ RPG::BaseItem
#==============================================================================

class RPG::BaseItem
 
 #--------------------------------------------------------------------------
 # public instance variables
 #--------------------------------------------------------------------------
 attr_accessor :win_quotes
 attr_accessor :level_quotes
 attr_accessor :drops_quotes
 
 #--------------------------------------------------------------------------
 # common cache: load_notetags_va
 #--------------------------------------------------------------------------
 def load_notetags_va
   @win_quotes = [""]
   @level_quotes = [""]
   @drops_quotes = [""]
   @victory_quote_type = nil
   #---
   self.note.split(/[\r\n]+/).each { |line|
     case line
     #---
     when YEA::REGEXP::BASEITEM::WIN_QUOTE_ON
       @victory_quote_type = :win_quote
     when YEA::REGEXP::BASEITEM::WIN_QUOTE_OFF
       @victory_quote_type = nil
     when YEA::REGEXP::BASEITEM::LEVEL_QUOTE_ON
       @victory_quote_type = :level_quote
     when YEA::REGEXP::BASEITEM::LEVEL_QUOTE_OFF
       @victory_quote_type = nil
     when YEA::REGEXP::BASEITEM::DROPS_QUOTE_ON
       @victory_quote_type = :drops_quote
     when YEA::REGEXP::BASEITEM::DROPS_QUOTE_OFF
       @victory_quote_type = nil
     #---
     when YEA::REGEXP::BASEITEM::NEW_QUOTE
       case @victory_quote_type
       when nil; next
       when :win_quote;   @win_quotes.push("")
       when :level_quote; @level_quotes.push("")
       when :drops_quote; @drops_quotes.push("")
       end
     #---
     else
       case @victory_quote_type
       when nil; next
       when :win_quote;   @win_quotes[@win_quotes.size-1] += line.to_s
       when :level_quote; @level_quotes[@level_quotes.size-1] += line.to_s
       when :drops_quote; @drops_quotes[@drops_quotes.size-1] += line.to_s
       end
     end
   } # self.note.split
   #---
   return unless self.is_a?(RPG::Class)
   quotes = YEA::VICTORY_AFTERMATH::VICTORY_QUOTES
   @win_quotes = quotes[:win].clone if @win_quotes == [""]
   @level_quotes = quotes[:level].clone if @level_quotes == [""]
   @drops_quotes = quotes[:drops].clone if @drops_quotes == [""]
 end
 
end # RPG::BaseItem

#==============================================================================
# ■ BattleManager
#==============================================================================

module BattleManager
 
 #--------------------------------------------------------------------------
 # overwrite method: self.process_victory
 #--------------------------------------------------------------------------
 def self.process_victory
   if Switch.skip_aftermath
     skip_aftermath
     return
   end
   play_battle_end_me
   display_exp
   gain_exp
   gain_gold
   gain_drop_items
   close_windows
   SceneManager.return
   replay_bgm_and_bgs
   battle_end(0)
   return true
 end
 
 #--------------------------------------------------------------------------
 # new method: self.skip_aftermath
 #--------------------------------------------------------------------------
 def self.skip_aftermath
   $game_party.all_members.each do |actor|
     actor.gain_exp($game_troop.exp_total)
   end
   $game_party.gain_gold($game_troop.gold_total)
   $game_troop.make_drop_items.each do |item|
     $game_party.gain_item(item, 1)
   end
   close_windows
   SceneManager.return
   replay_bgm_and_bgs
   battle_end(0)
 end
 
 #--------------------------------------------------------------------------
 # overwrite method: self.play_battle_end_me
 #--------------------------------------------------------------------------
 def self.play_battle_end_me
   $game_system.battle_end_me.play
   YEA::VICTORY_AFTERMATH::VICTORY_BGM.play
 end
 
 #--------------------------------------------------------------------------
 # new method: self.set_victory_text
 #--------------------------------------------------------------------------
 def self.set_victory_text(actor, type)
   text = "" + sprintf(YEA::VICTORY_AFTERMATH::HEADER_TEXT, actor.name)
   text += actor.victory_quotes(type)[rand(actor.victory_quotes(type).size)]
   text += YEA::VICTORY_AFTERMATH::FOOTER_TEXT
   $game_message.face_name = actor.face_name
   $game_message.face_index = actor.face_index
   $game_message.add(text)
   wait_for_message
 end
 
 #--------------------------------------------------------------------------
 # overwrite method: self.display_exp
 #--------------------------------------------------------------------------
 def self.display_exp
   SceneManager.scene.show_victory_display_exp
   actor = $game_party.random_target
   @victory_actor = actor
   set_victory_text(@victory_actor, :win)
 end
 
 #--------------------------------------------------------------------------
 # overwrite method: self.gain_exp
 #--------------------------------------------------------------------------
 def self.gain_exp
   $game_party.all_members.each do |actor|
     temp_actor = Marshal.load(Marshal.dump(actor))
     actor.gain_exp($game_troop.exp_total)
     next if actor.level == temp_actor.level
     SceneManager.scene.show_victory_level_up(actor, temp_actor)
     set_victory_text(actor, :level)
     wait_for_message
   end
 end
 
 #--------------------------------------------------------------------------
 # overwrite method: self.gain_gold
 #--------------------------------------------------------------------------
 def self.gain_gold
   $game_party.gain_gold($game_troop.gold_total)
 end
 
 #--------------------------------------------------------------------------
 # overwrite method: self.gain_drop_items
 #--------------------------------------------------------------------------
 def self.gain_drop_items
   drops = []
   $game_troop.make_drop_items.each do |item|
     $game_party.gain_item(item, 1)
     drops.push(item)
   end
   SceneManager.scene.show_victory_spoils($game_troop.gold_total, drops)
   set_victory_text(@victory_actor, :drops)
   wait_for_message
 end
 
 #--------------------------------------------------------------------------
 # new method: self.close_windows
 #--------------------------------------------------------------------------
 def self.close_windows
   SceneManager.scene.close_victory_windows
 end
 
 #--------------------------------------------------------------------------
 # alias method: load_database
 #--------------------------------------------------------------------------
 class < def self.battle_end(result)
   battle_end_va(result)
   return if result == 2
   return if YEA::VICTORY_AFTERMATH::AFTERMATH_COMMON_EVENT <= 0
   event_id = YEA::VICTORY_AFTERMATH::AFTERMATH_COMMON_EVENT
   $game_temp.reserve_common_event(event_id)
 end
 
end # BattleManager

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

class Game_Actor < Game_Battler
 
 #--------------------------------------------------------------------------
 # overwrite method: gain_exp
 #--------------------------------------------------------------------------
 def gain_exp(exp)
   enabled = !SceneManager.scene_is?(Scene_Battle)
   change_exp(self.exp + (exp * final_exp_rate).to_i, enabled)
 end
 
 #--------------------------------------------------------------------------
 # new method: victory_quotes
 #--------------------------------------------------------------------------
 def victory_quotes(type)
   case type
   when :win
     return self.actor.win_quotes if self.actor.win_quotes != [""]
     return self.class.win_quotes
   when :level
     return self.actor.level_quotes if self.actor.level_quotes != [""]
     return self.class.level_quotes
   when :drops
     return self.actor.drops_quotes if self.actor.drops_quotes != [""]
     return self.class.drops_quotes
   else
     return ["NOTEXT"]
   end
 end
 
end # Game_Actor

#==============================================================================
# ■ Window_VictoryTitle
#==============================================================================

class Window_VictoryTitle < Window_Base
 
 #--------------------------------------------------------------------------
 # initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, Graphics.width, fitting_height(1))
   self.z = 200
   self.openness = 0
 end
 
 #--------------------------------------------------------------------------
 # refresh
 #--------------------------------------------------------------------------
 def refresh(message = "")
   contents.clear
   draw_text(0, 0, contents.width, line_height, message, 1)
 end
 
end # Window_VictoryTitle

#==============================================================================
# ■ Window_VictoryEXP_Back
#==============================================================================

class Window_VictoryEXP_Back < Window_Selectable
 
 #--------------------------------------------------------------------------
 # initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, fitting_height(1), Graphics.width, window_height)
   self.z = 200
   self.openness = 0
 end
 
 #--------------------------------------------------------------------------
 # window_height
 #--------------------------------------------------------------------------
 def window_height
   return Graphics.height - fitting_height(4) - fitting_height(1)
 end
 
 #--------------------------------------------------------------------------
 # col_max
 #--------------------------------------------------------------------------
 def col_max; return item_max; end
 
 #--------------------------------------------------------------------------
 # spacing
 #--------------------------------------------------------------------------
 def spacing; return 8; end
 
 #--------------------------------------------------------------------------
 # item_max
 #--------------------------------------------------------------------------
 def item_max; return $game_party.battle_members.size; end
 
 #--------------------------------------------------------------------------
 # open
 #--------------------------------------------------------------------------
 def open
   @exp_total = $game_troop.exp_total
   super
 end
 
 #--------------------------------------------------------------------------
 # item_rect
 #--------------------------------------------------------------------------
 def item_rect(index)
   rect = Rect.new
   rect.width = item_width
   rect.height = contents.height
   rect.x = index % col_max * (item_width + spacing)
   rect.y = index / col_max * item_height
   return rect
 end
 
 #--------------------------------------------------------------------------
 # draw_item
 #--------------------------------------------------------------------------
 def draw_item(index)
   actor = $game_party.battle_members[index]
   return if actor.nil?
   rect = item_rect(index)
   reset_font_settings
   draw_actor_name(actor, rect)
   draw_exp_gain(actor, rect)
   draw_actor_face(actor, rect)
 end
 
 #--------------------------------------------------------------------------
 # draw_actor_name
 #--------------------------------------------------------------------------
 def draw_actor_name(actor, rect)
   name = actor.name
   draw_text(rect.x, rect.y+line_height, rect.width, line_height, name, 1)
 end
 
 #--------------------------------------------------------------------------
 # draw_actor_face
 #--------------------------------------------------------------------------
 def draw_actor_face(actor, rect)
   face_name = actor.face_name
   face_index = actor.face_index
   bitmap = Cache.face(face_name)
   rw = [rect.width, 96].min
   face_rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, rw, 96)
   rx = (rect.width - rw) / 2 + rect.x
   contents.blt(rx, rect.y + line_height * 2, bitmap, face_rect, 255)
 end
 
 #--------------------------------------------------------------------------
 # draw_exp_gain
 #--------------------------------------------------------------------------
 def draw_exp_gain(actor, rect)
   dw = rect.width - (rect.width - [rect.width, 96].min) / 2
   dy = rect.y + line_height * 3 + 96
   fmt = YEA::VICTORY_AFTERMATH::VICTORY_EXP
   text = sprintf(fmt, actor_exp_gain(actor).group)
   contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP
   change_color(power_up_color)
   draw_text(rect.x, dy, dw, line_height, text, 2)
 end
 
 #--------------------------------------------------------------------------
 # actor_exp_gain
 #--------------------------------------------------------------------------
 def actor_exp_gain(actor)
   n = @exp_total * actor.final_exp_rate
   return n.to_i
 end
 
end # Window_VictoryEXP_Back

#==============================================================================
# ■ Window_VictoryEXP_Front
#==============================================================================

class Window_VictoryEXP_Front < Window_VictoryEXP_Back
 
 #--------------------------------------------------------------------------
 # initialize
 #--------------------------------------------------------------------------
 def initialize
   super
   self.back_opacity = 0
   @ticks = 0
   @counter = 30
   contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP
 end
 
 #--------------------------------------------------------------------------
 # update
 #--------------------------------------------------------------------------
 def update
   super
   update_tick
 end
 
 #--------------------------------------------------------------------------
 # update_tick
 #--------------------------------------------------------------------------
 def update_tick
   return unless self.openness >= 255
   return if complete_ticks?
   @counter -= 1
   return unless @counter <= 0
   return if @ticks >= YEA::VICTORY_AFTERMATH::EXP_TICKS
   YEA::VICTORY_AFTERMATH::VICTORY_TICK.play
   @counter = 4
   @ticks += 1
   refresh
 end
 
 #--------------------------------------------------------------------------
 # complete_ticks?
 #--------------------------------------------------------------------------
 def complete_ticks?
   for actor in $game_party.battle_members
     total_ticks = YEA::VICTORY_AFTERMATH::EXP_TICKS
     bonus_exp = actor_exp_gain(actor) * @ticks / total_ticks
     now_exp = actor.exp - actor.current_level_exp + bonus_exp
     next_exp = actor.next_level_exp - actor.current_level_exp
     rate = now_exp * 1.0 / next_exp
     return false if rate < 1.0
   end
   return true
 end
 
 #--------------------------------------------------------------------------
 # draw_item
 #--------------------------------------------------------------------------
 def draw_item(index)
   actor = $game_party.battle_members[index]
   return if actor.nil?
   rect = item_rect(index)
   draw_actor_exp(actor, rect)
 end
 
 #--------------------------------------------------------------------------
 # exp_gauge1
 #--------------------------------------------------------------------------
 def exp_gauge1; return text_color(YEA::VICTORY_AFTERMATH::EXP_GAUGE1); end
 
 #--------------------------------------------------------------------------
 # exp_gauge2
 #--------------------------------------------------------------------------
 def exp_gauge2; return text_color(YEA::VICTORY_AFTERMATH::EXP_GAUGE2); end
 
 #--------------------------------------------------------------------------
 # lvl_gauge1
 #--------------------------------------------------------------------------
 def lvl_gauge1; return text_color(YEA::VICTORY_AFTERMATH::LEVEL_GAUGE1); end
 
 #--------------------------------------------------------------------------
 # lvl_gauge2
 #--------------------------------------------------------------------------
 def lvl_gauge2; return text_color(YEA::VICTORY_AFTERMATH::LEVEL_GAUGE2); end
 
 #--------------------------------------------------------------------------
 # draw_actor_exp
 #--------------------------------------------------------------------------
 def draw_actor_exp(actor, rect)
   if actor.max_level?
     draw_exp_gauge(actor, rect, 1.0)
     return
   end
   total_ticks = YEA::VICTORY_AFTERMATH::EXP_TICKS
   bonus_exp = actor_exp_gain(actor) * @ticks / total_ticks
   now_exp = actor.exp - actor.current_level_exp + bonus_exp
   next_exp = actor.next_level_exp - actor.current_level_exp
   rate = now_exp * 1.0 / next_exp
   draw_exp_gauge(actor, rect, rate)
 end
 
 #--------------------------------------------------------------------------
 # draw_exp_gauge
 #--------------------------------------------------------------------------
 def draw_exp_gauge(actor, rect, rate)
   dx = (rect.width - [rect.width, 96].min) / 2 + rect.x
   dy = rect.y + line_height * 2 + 96
   dw = [rect.width, 96].min
   colour1 = rate >= 1.0 ? lvl_gauge1 : exp_gauge1
   colour2 = rate >= 1.0 ? lvl_gauge2 : exp_gauge2
   draw_gauge(dx, dy, dw, rate, colour1, colour2)
   fmt = YEA::VICTORY_AFTERMATH::EXP_PERCENT
   text = sprintf(fmt, [rate * 100, 100.00].min)
   if [rate * 100, 100.00].min == 100.00
     text = YEA::VICTORY_AFTERMATH::LEVELUP_TEXT
     text = YEA::VICTORY_AFTERMATH::MAX_LVL_TEXT if actor.max_level?
   end
   draw_text(dx, dy, dw, line_height, text, 1)
 end
 
end # Window_VictoryEXP_Front

#==============================================================================
# ■ Window_VictoryLevelUp
#==============================================================================

class Window_VictoryLevelUp < Window_Base
 
 #--------------------------------------------------------------------------
 # initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, fitting_height(1), Graphics.width, window_height)
   self.z = 200
   hide
 end
 
 #--------------------------------------------------------------------------
 # window_height
 #--------------------------------------------------------------------------
 def window_height
   return Graphics.height - fitting_height(4) - fitting_height(1)
 end
 
 #--------------------------------------------------------------------------
 # refresh
 #--------------------------------------------------------------------------
 def refresh(actor, temp_actor)
   contents.clear
   reset_font_settings
   YEA::VICTORY_AFTERMATH::LEVEL_SOUND.play
   draw_actor_changes(actor, temp_actor)
 end
 
 #--------------------------------------------------------------------------
 # draw_actor_changes
 #--------------------------------------------------------------------------
 def draw_actor_changes(actor, temp_actor)
   dx = contents.width / 16
   draw_actor_image(actor, temp_actor, dx)
   draw_param_names(actor, dx)
   draw_former_stats(temp_actor)
   draw_arrows
   draw_newer_stats(actor, temp_actor)
   draw_new_skills(actor, temp_actor)
 end
 
 #--------------------------------------------------------------------------
 # draw_actor_image
 #--------------------------------------------------------------------------
 def draw_actor_image(actor, temp_actor, dx)
   draw_text(dx, line_height, 96, line_height, actor.name, 1)
   draw_actor_face(actor, dx, line_height * 2)
   exp = actor.exp - temp_actor.exp
   text = sprintf(YEA::VICTORY_AFTERMATH::VICTORY_EXP, exp.group)
   change_color(power_up_color)
   contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP
   draw_text(0, line_height * 2 + 96, dx + 96, line_height, text, 2)
   reset_font_settings
 end
 
 #--------------------------------------------------------------------------
 # draw_param_names
 #--------------------------------------------------------------------------
 def draw_param_names(actor, dx)
   dx += 108
   change_color(system_color)
   text = Vocab.level
   draw_text(dx, 0, contents.width - dx, line_height, text)
   dy = 0
   for i in 0...8
     dy += line_height
     text = Vocab.param(i)
     draw_text(dx, dy, contents.width - dx, line_height, text)
   end
 end
 
 #--------------------------------------------------------------------------
 # draw_former_stats
 #--------------------------------------------------------------------------
 def draw_former_stats(actor)
   dw = contents.width / 2 - 12
   dy = 0
   change_color(normal_color)
   draw_text(0, dy, dw, line_height, actor.level.group, 2)
   for i in 0...8
     dy += line_height
     draw_text(0, dy, dw, line_height, actor.param(i).group, 2)
   end
 end
 
 #--------------------------------------------------------------------------
 # draw_arrows
 #--------------------------------------------------------------------------
 def draw_arrows
   dx = contents.width / 2 - 12
   dy = 0
   change_color(system_color)
   for i in 0..8
     draw_text(dx, dy, 24, line_height, "→", 1)
     dy += line_height
   end
 end
 
 #--------------------------------------------------------------------------
 # draw_newer_stats
 #--------------------------------------------------------------------------
 def draw_newer_stats(actor, temp_actor)
   dx = contents.width / 2 + 12
   dw = contents.width - dx
   dy = 0
   change_color(param_change_color(actor.level - temp_actor.level))
   draw_text(dx, dy, dw, line_height, actor.level.group, 0)
   for i in 0...8
     dy += line_height
     change_color(param_change_color(actor.param(i) - temp_actor.param(i)))
     draw_text(dx, dy, dw, line_height, actor.param(i).group, 0)
   end
 end
 
 #--------------------------------------------------------------------------
 # draw_new_skills
 #--------------------------------------------------------------------------
 def draw_new_skills(actor, temp_actor)
   return if temp_actor.skills.size == actor.skills.size
   dw = 172 + 24
   dx = contents.width - dw
   change_color(system_color)
   text = YEA::VICTORY_AFTERMATH::SKILLS_TEXT
   draw_text(dx, 0, dw, line_height, text, 0)
 end
 
end # Window_VictoryLevelUp

#==============================================================================
# ■ Window_VictorySkills
#==============================================================================

class Window_VictorySkills < Window_Selectable
 
 #--------------------------------------------------------------------------
 # initialize
 #--------------------------------------------------------------------------
 def initialize
   dy = fitting_height(1) + 24
   dw = 172 + 24 + 24
   dh = Graphics.height - fitting_height(4) - fitting_height(1) - 24
   super(Graphics.width - dw, dy, dw, dh)
   self.opacity = 0
   self.z = 200
   hide
 end
 
 #--------------------------------------------------------------------------
 # item_max
 #--------------------------------------------------------------------------
 def item_max; return @data.nil? ? 0 : @data.size; end
 
 #--------------------------------------------------------------------------
 # refresh
 #--------------------------------------------------------------------------
 def refresh(actor, temp_actor)
   contents.clear
   if actor.skills.size == temp_actor.skills.size
     unselect
     @data = []
     create_contents
     return
   end
   @data = actor.skills - temp_actor.skills
   if @data.size > 8
     select(0)
     activate
   else
     unselect
     deactivate
   end
   create_contents
   draw_all_items
 end
 
 #--------------------------------------------------------------------------
 # refresh
 #--------------------------------------------------------------------------
 def draw_item(index)
   rect = item_rect(index)
   skill = @data[index]
   return if skill.nil?
   rect.width -= 4
   draw_item_name(skill, rect.x, rect.y, true)
 end
 
end # Window_VictorySkills

#==============================================================================
# ■ Window_VictorySpoils
#==============================================================================

class Window_VictorySpoils < Window_ItemList
 
 #--------------------------------------------------------------------------
 # initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, fitting_height(1), Graphics.width, window_height)
   self.z = 200
   hide
 end
 
 #--------------------------------------------------------------------------
 # window_height
 #--------------------------------------------------------------------------
 def window_height
   return Graphics.height - fitting_height(4) - fitting_height(1)
 end
 
 #--------------------------------------------------------------------------
 # spacing
 #--------------------------------------------------------------------------
 def spacing; return 32; end
 
 #--------------------------------------------------------------------------
 # make
 #--------------------------------------------------------------------------
 def make(gold, drops)
   @gold = gold
   @drops = drops
   refresh
   select(0)
   activate
 end
 
 #--------------------------------------------------------------------------
 # make_item_list
 #--------------------------------------------------------------------------
 def make_item_list
   @data = [nil]
   items = {}
   weapons = {}
   armours = {}
   @goods = {}
   for item in @drops
     case item
     when RPG::Item
       items[item] = 0 if items[item].nil?
       items[item] += 1
     when RPG::Weapon
       weapons[item] = 0 if weapons[item].nil?
       weapons[item] += 1
     when RPG::Armor
       armours[item] = 0 if armours[item].nil?
       armours[item] += 1
     end
   end
   items = items.sort { |a,b| a[0].id <=> b[0].id }
   weapons = weapons.sort { |a,b| a[0].id <=> b[0].id }
   armours = armours.sort { |a,b| a[0].id <=> b[0].id }
   for key in items; @goods[key[0]] = key[1]; @data.push(key[0]); end
   for key in weapons; @goods[key[0]] = key[1]; @data.push(key[0]); end
   for key in armours; @goods[key[0]] = key[1]; @data.push(key[0]); end
 end
 
 #--------------------------------------------------------------------------
 # draw_item
 #--------------------------------------------------------------------------
 def draw_item(index)
   item = @data[index]
   rect = item_rect(index)
   reset_font_settings
   if item.nil?
     draw_gold(rect)
     return
   end
   rect.width -= 4
   draw_item_name(item, rect.x, rect.y, true, rect.width - 24)
   draw_item_number(rect, item)
 end
 
 #--------------------------------------------------------------------------
 # draw_gold
 #--------------------------------------------------------------------------
 def draw_gold(rect)
   text = Vocab.currency_unit
   draw_currency_value(@gold, text, rect.x, rect.y, rect.width)
 end
 
 #--------------------------------------------------------------------------
 # draw_item_number
 #--------------------------------------------------------------------------
 def draw_item_number(rect, item)
   number = @goods[item].group
   if $imported["YEA-AdjustLimits"]
     contents.font.size = YEA::LIMIT::ITEM_FONT
     text = sprintf(YEA::LIMIT::ITEM_PREFIX, number)
     draw_text(rect, text, 2)
   else
     draw_text(rect, sprintf(":%s", number), 2)
   end
 end
 
end # Window_VictorySpoils

#==============================================================================
# ■ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
 
 #--------------------------------------------------------------------------
 # alias method: create_all_windows
 #--------------------------------------------------------------------------
 alias scene_battle_create_all_windows_va create_all_windows
 def create_all_windows
   scene_battle_create_all_windows_va
   create_victory_aftermath_windows
 end
 
 #--------------------------------------------------------------------------
 # new method: create_victory_aftermath_windows
 #--------------------------------------------------------------------------
 def create_victory_aftermath_windows
   @victory_title_window = Window_VictoryTitle.new
   @victory_exp_window_back = Window_VictoryEXP_Back.new
   @victory_exp_window_front = Window_VictoryEXP_Front.new
   @victory_level_window = Window_VictoryLevelUp.new
   @victory_level_skills = Window_VictorySkills.new
   @victory_spoils_window = Window_VictorySpoils.new
 end
 
 #--------------------------------------------------------------------------
 # new method: show_victory_display_exp
 #--------------------------------------------------------------------------
 def show_victory_display_exp
   @victory_title_window.open
   name = $game_party.battle_members[0].name
   fmt = YEA::VICTORY_AFTERMATH::TOP_TEAM
   name = sprintf(fmt, name) if $game_party.battle_members.size > 1
   fmt = YEA::VICTORY_AFTERMATH::TOP_VICTORY_TEXT
   text = sprintf(fmt, name)
   @victory_title_window.refresh(text)
   #---
   @victory_exp_window_back.open
   @victory_exp_window_back.refresh
   @victory_exp_window_front.open
   @victory_exp_window_front.refresh
 end
 
 #--------------------------------------------------------------------------
 # new method: show_victory_level_up
 #--------------------------------------------------------------------------
 def show_victory_level_up(actor, temp_actor)
   @victory_exp_window_back.hide
   @victory_exp_window_front.hide
   #---
   fmt = YEA::VICTORY_AFTERMATH::TOP_LEVEL_UP
   text = sprintf(fmt, actor.name)
   @victory_title_window.refresh(text)
   #---
   @victory_level_window.show
   @victory_level_window.refresh(actor, temp_actor)
   @victory_level_skills.show
   @victory_level_skills.refresh(actor, temp_actor)
 end
 
 #--------------------------------------------------------------------------
 # new method: show_victory_spoils
 #--------------------------------------------------------------------------
 def show_victory_spoils(gold, drops)
   @victory_exp_window_back.hide
   @victory_exp_window_front.hide
   @victory_level_window.hide
   @victory_level_skills.hide
   #---
   text = YEA::VICTORY_AFTERMATH::TOP_SPOILS
   @victory_title_window.refresh(text)
   #---
   @victory_spoils_window.show
   @victory_spoils_window.make(gold, drops)
 end
 
 #--------------------------------------------------------------------------
 # new method: close_victory_windows
 #--------------------------------------------------------------------------
 def close_victory_windows
   @victory_title_window.close
   @victory_exp_window_back.close
   @victory_exp_window_front.close
   @victory_level_window.close
   @victory_level_skills.close
   @victory_spoils_window.close
   wait(16)
 end
 
end # Scene_Battle

#==============================================================================
#
# ▼ Fin du script
#
#==============================================================================

aller à la ligne 183 du script et remplacer le 0 de la ligne
"AFTERMATH_COMMON_EVENT = 0  # Appelle un évenement commun après le combat."    par le numéro de votre deuxième event commun et voilà le tour est joué votre première invocation est prête a l'emploi ! il ne vous reste plus qu'à faire les même manipulation pour chaque invocation Wink
avatar
ibiky-ushiha
Membre

Nombre de messages : 314
Age : 29
Distinction : *3ème au mapping show session 75
Date d'inscription : 17/03/2014

Re: Invocation en event / script

le Jeu 17 Juil 2014 - 19:54
Cool merci du partage du coup ^^, je vois que tu na plus besoin du chrono.
avatar
mysterious
Membre

Nombre de messages : 400
Age : 28
Distinction : aucune
Date d'inscription : 24/07/2008

Re: Invocation en event / script

le Jeu 17 Juil 2014 - 20:26
j'ai dut me débrouiller autrement mais au final c'est pas plus mal au contraire la solution alternative est bien meilleure je trouve Smile
avatar
MrGREG
Membre

Nombre de messages : 71
Age : 35
Localisation : loir et cher (41)
Distinction : aucune
Date d'inscription : 20/08/2013

Re: Invocation en event / script

le Dim 20 Juil 2014 - 11:37
Ce système m’intéresse, mais j'ai un problème de compatibilité avec le script de Yanfly.

Est-il possible que quelqu'un me donne le script pour juste exécuter un événement commun à la fin du combat.   

Merci d'avance.
Contenu sponsorisé

Re: Invocation en event / script

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