- mysteriousMembre
- Nombre de messages : 400
Age : 34
Distinction : aucune
Date d'inscription : 24/07/2008
Invocation en event / script
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 :
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 :
( 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 :
(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 :
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 :
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
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
- ibiky-ushihaMembre
- Nombre de messages : 314
Age : 35
Distinction : *3ème au mapping show session 75
Date d'inscription : 17/03/2014
Re: Invocation en event / script
Jeu 17 Juil 2014 - 19:54
Cool merci du partage du coup ^^, je vois que tu na plus besoin du chrono.
- mysteriousMembre
- Nombre de messages : 400
Age : 34
Distinction : aucune
Date d'inscription : 24/07/2008
Re: Invocation en event / script
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
- MrGREGMembre
- Nombre de messages : 71
Age : 41
Localisation : loir et cher (41)
Distinction : aucune
Date d'inscription : 20/08/2013
Re: Invocation en event / script
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.
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.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|