-comme il l'a dit on ne se retransforme pas en humain apres avoir tuer tout les enemi ce qui fait que c'est notre transformation qui prend l'xp et pas nous.
Petite question :
A ce jour existe il un moyen en évent ou même un script permettant de redevenir humain après avoir tuer tout les ennemies dans un combat ( a la manière du script a la ff10 de Blockade ) ?
T'as essayer de faire que si tout les monstres sont mort, tu retrouves ta forme normal ? ( Dans les groupe de combat, tu peux mettre cette condition normalement. )
le script de combat par defaut block les event commun qui sont appeller a la toute fin du combat, des qui ny a plus de monstre il execute plus les event commun donc je crois pas que ce sois possible sans script si tu utilise le system de combat par defaut tu peut utiliser ce script :
Code:
class Scene_Battle < Scene_Base
def process_victory
@info_viewport.visible = false @message_window.visible = true RPG::BGM.stop $game_system.battle_end_me.play unless $BTEST $game_temp.map_bgm.play $game_temp.map_bgs.play end $game_temp.common_event_id = 1 #ici le common event utiliser pour retransformer #normalement le meme que dans le tutorial devrais marcher (fin dragon) process_battle_event_mod display_exp_and_gold display_drop_items display_level_up battle_end(0) end
def process_battle_event_mod loop do return if $game_temp.next_scene != nil $game_troop.interpreter.update $game_troop.setup_battle_event wait_for_message process_action if $game_troop.forcing_battler != nil return unless $game_troop.interpreter.running? update_basic end end
#=============================================================== # ● [VX] ◦ Rapport de combat V3 #-------------------------------------------------------------- # ◦ Par Blockade # ◦ http://rpg-maker-vx.bbactif.com/forum.htm # ◦ Crée le 06/04/2009 # ◦ Version 3.7 # ◦ Remerciment à Woratana, Moghunter #-------------------------------------------------------------- #=============================================================== #=============================================================== # Notes de version : #--------------------------------------------------------------- # ~ Version 1.0 : # - Création du script # ~ Version 2.0 : # - Interface revue # - Regroupement et classement des objets gagnés # - Ajouts d'options de personalisations # ~ Version 3.0 : # - Le script distibue l'argent gagné correctement. # - Module de configuration entiérement revu # - Compatibilité améliorée # - Pop-up lors d'un level up qui affiche les caractéristiques # - Affiche les sorts gagnés # ~ Version 3.5 # - Meilleur affichage des caractéristiques quand le héros gagne un niveau # - Affichage du temps de combat # ~ Version 3.6 # - Mise à la norme de mes scripts # - Compatible avec 3 systèmes de combat : Combat VX, SBS, SBS avec ATB # - Détecte automatiquement le SBS # ~ Version 3.7 # - Correction d'un bug avec le SBS avec ATB, le rapport d'affichais deux fois #=============================================================== #=============================================================== # Utilisation : # Plug & Play, inserez le au dessus de Main ! # Jettez un coup d'oeil au module de configuration ! #=============================================================== module Blockade module Config_Report #=============================================================== # Blockade::Config_Report Début du Module de configuration #=============================================================== #------------------------------------------- # >> Configuration du texte #-------------------------------------------- # > Texte contenu dans l'help_window Text_help_window = "Rapport de Combat"
# > Dans la fenêtre de drop Drop_nil = "Aucun objet trouvé." # Si pas d'objet à la fin du combat Drop_objets = "Objets trouvés :" # Si des objets sont trouvées Drop_armures = "Armures trouvées :" # Si des armures sont trouvées Drop_armes = "Armes trouvées :" # Si des armes sont trouvées
# > Dans la fenêtre de changement de niveau Texte_hp = "HP " # Texte pour les Hp Texte_mp = "MP " # Texte pour les Mp Texte_atk = "Attaque " # Texte pour l'attaque Texte_def = "Défense " # Texte pour la défense Texte_int = "Intelligence " # Texte pour l'intelligence Texte_agi = "Agilité " # Texte pour l'agilité
# > Couleur des noms de caracteristiques Couleur_nom_carac = 4
# > Dans la fenêtre des nouveaux sorts Couleur_new_skill = 4 # Couleur de Texte_new_skill Texte_new_skill = "Nouveaux sorts : " # Texte pour introduire les nouveaux sorts #-------------------------------------------
#------------------------------------------- # >> Configuration des icones #-------------------------------------------- # > Dans la fenêtre de changement de niveau Icone_hp = 99 # Id de l'icone pour les PV Icone_mp = 100 # Id de l'icone pour les PM Icone_atk = 2 # Id de l'icone pour l'attaque Icone_def = 52 # Id de l'icone pour la défense Icone_int = 21 # Id de l'icone pour l'intelligence Icone_agi = 48 # Id de l'icone pour l'agilité
# > Dans la fenêtre des sorts Icone_new_skill = 130 #-------------------------------------------
#------------------------------------------- # >> Configuration des sons #-------------------------------------------- # > Quand un héros gagne un niveau Lvl_up_sound = "Recovery" # Nom du SE Lvl_up_volume = 80 # Volume entre 50-150 Lvl_up_tempo = 100 # Tempo entre 50-150
#=============================================================== # Blockade"EDIT"::Config_EVENEMENT commun utiliser pour ce detransformer #=============================================================== Event = 1 #=============================================================== # Blockade::Config_Report Fin du Module de configuration #=============================================================== end end
$imported = {} if $imported == nil $imported["Rapport_CombatV3"] = true
#============================================================================== # ** Scene_Battle #------------------------------------------------------------------------------ # Scene qui gère les combats #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # * Prend le temps au début du combat #-------------------------------------------------------------------------- alias start_battle_block start def start start_battle_block @temps = Time.now end
#-------------------------------------------------------------------------- # * Enpêche le rapport de s'afficher 2 fois (ATB fix) #-------------------------------------------------------------------------- alias judge_win_loss_block judge_win_loss unless $@ def judge_win_loss if defined?(::N02) return unless @fin_combat.nil? end judge_win_loss_block end #-------------------------------------------------------------------------- # * Processus de victoire #--------------------------------------------------------------------------
def process_battle_event_mod loop do return if $game_temp.next_scene != nil $game_troop.interpreter.update $game_troop.setup_battle_event wait_for_message process_action if $game_troop.forcing_battler != nil return unless $game_troop.interpreter.running? update_basic end end
def process_victory if defined?(::N01) @status_window.visible = true @message_window.visible = false # ボスコラプスはウエイトを長く挟む for enemy in $game_troop.members break boss_wait = true if enemy.collapse_type == 3 end wait(440) if boss_wait wait(N01::WIN_WAIT) unless boss_wait # 動けないアクターを除いて勝利アクション for actor in $game_party.members unless actor.restriction >= 4 @spriteset.set_action(true, actor.index,actor.win) end end end $game_temp.common_event_id = Blockade::Config_Report::Event process_battle_event_mod @info_viewport.visible = false @message_window.visible = false RPG::BGM.stop $game_system.battle_end_me.play unless $BTEST $game_temp.map_bgm.play $game_temp.map_bgs.play end new_temps = Time.now temps = new_temps- @temps if temps >= 60 @temps_combat = (temps / 60).truncate @suffixe = @temps_combat > 1 ? "minutes" : "minute" else @temps_combat = temps.truncate @suffixe = "secondes" end @exp =$game_troop.exp_total @gold = $game_troop.gold_total @drop = $game_troop.make_drop_items $game_party.gain_gold(@gold) ini_variable Graphics.fadeout(30) afficher_rapport Graphics.fadein(20) end
#-------------------------------------------------------------------------- # * Initialise les variables #-------------------------------------------------------------------------- def ini_variable @fin_combat = true @actors_lvl_up = [] @num_passage= 0 end
#-------------------------------------------------------------------------- # * Afficher le rapport de combat #-------------------------------------------------------------------------- def afficher_rapport @help_window = Window_Help_Combat.new @heros_window = [] y=55 ; i=0 for actor in $game_party.members @heros_window[i] = Heros_Window.new(actor,y,@exp) @actors_lvl_up.push([actor,@heros_window[i].get_old_carac,@heros_window[i].get_new_carac,@heros_window[i].get_new_skills]) if @heros_window[i].level_up y +=74; i += 1 end @gold_exp_window = Gold_Exp_Window.new(@gold,@exp) @butin_window = Drop_Window.new(@drop) @help_window.set_text(Blockade::Config_Report::Text_help_window,Blockade::Config_Report::Alignement_texte,Blockade::Config_Report::Texte_temps_combat + "#{@temps_combat} #{@suffixe} ",Blockade::Config_Report::Alignement_texte_temps_combat) if @actors_lvl_up != [] RPG::SE.new(Blockade::Config_Report::Lvl_up_sound, Blockade::Config_Report::Lvl_up_volume, Blockade::Config_Report::Lvl_up_tempo).play @actor_window = Carac_Window.new(@actors_lvl_up[@num_passage]) new_skill = @actors_lvl_up[@num_passage] @actor_window2 = Skills_Window.new(@actors_lvl_up[@num_passage]) if @actors_lvl_up[@num_passage][3].size > 0 end end
#-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- alias update_block update unless $@ def update if @fin_combat != true update_block else # Si c'est la fin du combat @help_window.update @message_window.update for i in 0...@heros_window.size @heros_window[i].update end if @actors_lvl_up != [] @actor_window.update @actor_window2.update if @actors_lvl_up[@num_passage][3].size > 0 # if @heros_window[@num_passage].get_new_skills.size > 0 if Input.trigger?(Input::C) @num_passage += 1 @actor_window.dispose @actor_window2.visible = false if @actor_window2 != nil if @num_passage + 1 > @actors_lvl_up.size Input.update @actors_lvl_up = [] end # fin @num_passage if @actors_lvl_up != [] RPG::SE.new(Blockade::Config_Report::Lvl_up_sound, Blockade::Config_Report::Lvl_up_volume, Blockade::Config_Report::Lvl_up_tempo).play @actor_window = Carac_Window.new(@actors_lvl_up[@num_passage]) @actor_window2 = Skills_Window.new(@actors_lvl_up[@num_passage]) if @actors_lvl_up[@num_passage][3].size >0 # if @heros_window[@num_passage].get_new_skills.size > 0 end # fin @actors_lvl_up end # fin input else # si pas de lvl up end # Si on appuye sur Entrée if Input.trigger?(Input::C) and @actors_lvl_up == [] @help_window.dispose for i in 0...@heros_window.size @heros_window[i].dispose end @gold_exp_window.dispose @butin_window.dispose if $BTEST $scene = nil else Graphics.fadeout(30) battle_end(0) suppr_variables end end end end
#-------------------------------------------------------------------------- # * Reinitialise les variables #-------------------------------------------------------------------------- def suppr_variables @fin_combat = false @actors_lvl_up = [] end end
#============================================================================== # ** Window_Help_Combat #------------------------------------------------------------------------------ # This window shows skill and item explanations along with actor status. #============================================================================== class Window_Help_Combat < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, 544, WLH + 32) end #-------------------------------------------------------------------------- # * Set Text # text : character string displayed in window # align : alignment (0..flush left, 1..center, 2..flush right) #-------------------------------------------------------------------------- def set_text(text1, align1,text2,align2) if text1 != @text1 or align1 != @align1 or text2 != @text2 or align2 != @align2 self.contents.clear self.contents.font.color = normal_color self.contents.draw_text(4, 0, self.width - 40, WLH, text1, align1) self.contents.draw_text(4, 0, self.width - 40, WLH, text2, align2) @text1 = text1 ; @align = align2 @text2 = text2 ; @align2 = align2 end end end
#============================================================================== # ** Skills_Window #------------------------------------------------------------------------------ # Affiche les sorts #============================================================================== class Skills_Window < Window_Base def initialize(actor_info) @new_skills = actor_info[3] super(300,58,244,230) afficher_sorts end
#-------------------------------------------------------------------------- # * Affiche les nouveaux sorts #-------------------------------------------------------------------------- def afficher_sorts self.contents.font.color = text_color(Blockade::Config_Report::Couleur_new_skill) self.contents.draw_text(25,0, 200, WLH, Blockade::Config_Report::Texte_new_skill) draw_icon(Blockade::Config_Report::Icone_new_skill,0,0) y = 25 for skills in @new_skills draw_item_name(skills,0,y) y += 25 end end end
#============================================================================== # ** Carac_Window #------------------------------------------------------------------------------ # Affiche les caractérisqtiques #============================================================================== class Carac_Window < Window_Base def initialize(actor) @actor = actor[0] @old_carac = actor[1] @new_carac = actor[2] @new_skills = actor[3] x = 100 x = 0 if @new_skills.size > 0 super(x,58,300,230) afficher_info_actor afficher_icone afficher_carac end
#-------------------------------------------------------------------------- # * Affiche le nom et le niveau du héros #-------------------------------------------------------------------------- def afficher_info_actor draw_character(@actor.character_name, @actor.character_index, 20, 40) self.contents.draw_text(40,0, 200, WLH, @actor.name) self.contents.draw_text(40,20,200,WLH,Blockade::Config_Report::Lvl + @old_carac[0].to_s + " > " + Blockade::Config_Report::Lvl + @new_carac[0].to_s) end
#-------------------------------------------------------------------------- # * Affiche les icones #-------------------------------------------------------------------------- def afficher_icone draw_icon(Blockade::Config_Report::Icone_hp,0,50) draw_icon(Blockade::Config_Report::Icone_mp ,0,75) draw_icon(Blockade::Config_Report::Icone_atk ,0,100) draw_icon(Blockade::Config_Report::Icone_def,0,125) draw_icon(Blockade::Config_Report::Icone_int,0,150) draw_icon(Blockade::Config_Report::Icone_agi,0,175) end
#-------------------------------------------------------------------------- # * Affiche les caractéristiques #-------------------------------------------------------------------------- def afficher_carac self.contents.font.color = text_color(Blockade::Config_Report::Couleur_nom_carac) self.contents.draw_text(25,50, 150, WLH, Blockade::Config_Report::Texte_hp) self.contents.draw_text(25,75, 150, WLH, Blockade::Config_Report::Texte_mp) self.contents.draw_text(25,100, 150, WLH, Blockade::Config_Report::Texte_atk) self.contents.draw_text(25,125, 150, WLH, Blockade::Config_Report::Texte_def) self.contents.draw_text(25,150, 150, WLH, Blockade::Config_Report::Texte_int) self.contents.draw_text(25,175, 150, WLH, Blockade::Config_Report::Texte_agi) self.contents.font.color = normal_color y = 50 for i in 1...@new_carac.size self.contents.draw_text(150,y, 105, WLH, @old_carac[i],0) self.contents.draw_text(150,y, 110, WLH, "> ",1) self.contents.font.color = power_up_color if @old_carac[i] < @new_carac[i] self.contents.font.color.alpha = 128 if @old_carac[i] == @new_carac[i] self.contents.draw_text(150,y, 105, WLH, @new_carac[i],2) self.contents.font.color.alpha = 255 self.contents.font.color = normal_color y +=25 end end end
#============================================================================== # ** Gold_Exp_Window #------------------------------------------------------------------------------ # Affiche l'argent et l'exp obtenus #============================================================================== class Gold_Exp_Window < Window_Base def initialize(gold,exp) super(0,350,200,65) self.contents.draw_text(0,-6,200,WLH,Blockade::Config_Report::Exp + exp.to_s) self.contents.draw_text(0,14,200,WLH,Blockade::Config_Report::Gold + gold.to_s) end end
#============================================================================== # ** Heros_Window #------------------------------------------------------------------------------ # Affiche les informations d'exp sur les héros #============================================================================== class Heros_Window < Window_Base def initialize(actor,y,exp) super(0,y,200,75) @actor = actor @exp = exp afficher_info end
#-------------------------------------------------------------------------- # * Renvoie les anciennes caractérisques #-------------------------------------------------------------------------- def get_old_carac return @old_carac end
#-------------------------------------------------------------------------- # * Renvoie les nouvelles caractérisques #-------------------------------------------------------------------------- def get_new_carac return @new_carac end
#-------------------------------------------------------------------------- # * Renvoie les nouveaux sorts #-------------------------------------------------------------------------- def get_new_skills if @new_skills.size > 0 return @new_skills else return [] end end #-------------------------------------------------------------------------- # * Determine si le heros a pris un ou plusieurs niveaux #-------------------------------------------------------------------------- def level_up return @level_up end #-------------------------------------------------------------------------- # * Couleur 1 de la barre #-------------------------------------------------------------------------- def exp_gauge_color1 return text_color(30) end
#-------------------------------------------------------------------------- # * Couleur 1 de la barre #-------------------------------------------------------------------------- def exp_gauge_color2 return text_color(31) end
#-------------------------------------------------------------------------- # * Dessine la barre d'exp #------------------------------------------------------------------------- def draw_actor_exp_meter(actor, x, y, width = 100) if actor.next_exp != 0 exp = actor.now_exp else exp = 1 end gw = width * exp / [actor.next_exp, 1].max gc1 = exp_gauge_color1 gc2 = exp_gauge_color2 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, "Exp") self.contents.font.color = normal_color xr = x + width self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2) end end
#============================================================================== # ** Drop_Window #------------------------------------------------------------------------------ # Affiche les objets obtenus #============================================================================== class Drop_Window < Window_Base def initialize(drop) super(200,55,344,360) @drop = drop if @drop != [] trier_drop regrouper afficher_drop donner_drop else afficher_mess end end
#-------------------------------------------------------------------------- # * Trie le drop en fonction du type d'objet #------------------------------------------------------------------------- def trier_drop @armes = [] @armures = [] @items = [] for item in @drop if item.is_a?(RPG::Item) @items.push(item) end if item.is_a?(RPG::Armor) @armures.push(item) end if item.is_a?(RPG::Weapon) @armes.push(item) end end end
#-------------------------------------------------------------------------- # * Regroupe les objets par nombre #------------------------------------------------------------------------- def regrouper #------------------------------------------------------- # Pour les objets #------------------------------------------------------ if @items != [] @items_unique = @items.uniq @regroupement_item = {} for item in @items_unique @regroupement_item[item] = 0 end for item in @items if @regroupement_item.include?(item) @regroupement_item[item] += 1 end end end
#------------------------------------------------------- # Pour les armures #------------------------------------------------------ if @armures != [] @armure_unique = @armures.uniq @regroupement_armures = {} for armure in @armure_unique @regroupement_armures[armure] = 0 end for armure in @armures if @regroupement_armures.include?(armure) @regroupement_armures[armure] += 1 end end end
#------------------------------------------------------- # Pour les armes #------------------------------------------------------ if @armes != [] @armes_unique = @armes.uniq @regroupement_armes = {} for arme in @armes_unique @regroupement_armes[arme] = 0 end for arme in @armes if @regroupement_armes.include?(arme) @regroupement_armes[arme] += 1 end end end end
#-------------------------------------------------------------------------- # * Affiche les objets #------------------------------------------------------------------------- def afficher_drop y=0 # Initialisation de la coordonée y #------------------------------------------------------- # Pour les objets #------------------------------------------------------ if @items != [] self.contents.draw_text(0,y,200,WLH,Blockade::Config_Report::Drop_objets) y += 25 for item in @regroupement_item draw_icon(item[0].icon_index, 0, y) if item[1] > 1 quantite = " x" + item[1].to_s else quantite = "" end self.contents.draw_text(24, y, 172, WLH, item[0].name + quantite) y+=25 end end
y += 5 if @items.nil? == false # Si les objets on été affiché augmenter y de 5
#------------------------------------------------------- # Pour les armures #------------------------------------------------------ if @armures != [] self.contents.draw_text(0,y,200,WLH,Blockade::Config_Report::Drop_armures) y += 25 for armure in @regroupement_armures draw_icon(armure[0].icon_index, 0, y) if armure[1] > 1 quantite = " x" + armure[1].to_s else quantite = "" end self.contents.draw_text(24, y, 172, WLH, armure[0].name + quantite) y +=25 end end
y += 5 if @armures.nil? == false # Si les armures on été affichées augmenter y de 5
#------------------------------------------------------- # Pour les armes #------------------------------------------------------ if @armes != [] self.contents.draw_text(0,y,200,WLH,Blockade::Config_Report::Drop_armes) y += 25 for arme in @regroupement_armes draw_icon(arme[0].icon_index, 0, y) if arme[1] > 1 quantite = " x" + arme[1].to_s else quantite = "" end self.contents.draw_text(24, y, 172, WLH, arme[0].name + quantite) y +=25 end end end
#------------------------------------------------------- # Afficher un message si pas de drop #------------------------------------------------------ def afficher_mess self.contents.draw_text(0,0,360,WLH,Blockade::Config_Report::Drop_nil) end
#------------------------------------------------------- # Donne le drop à l'équipe #------------------------------------------------------ def donner_drop for item in @drop $game_party.gain_item(item, 1) end end end
#============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # Gére les données système sur les héros. #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Calcul de l'exp accumulée #-------------------------------------------------------------------------- def now_exp return @exp - @exp_list[@level] end
#-------------------------------------------------------------------------- # * Calcul de l'exp a avoir pour gagner un niveau #-------------------------------------------------------------------------- def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end
end
tien c'est le script modifier de rapport de combat v3 de Blockade, pour quil fonctionne, si tu utilise un autre system de combat que celui par defaut comme jai dit dans lautre poste c'est possible que ca fonctionne pas, donc si jamais c'est le cas poste les script relier au combat que tu utilise
juste a modifier dans la config en haut du script l'evenement commun a utiliser pour redevenir humain
Code:
#=============================================================== # Blockade"EDIT"::Config_EVENEMENT commun utiliser pour ce detransformer #=============================================================== Event = 1
j'utilise le sbs tankentai 3.4e sans atb (car bug avec un autre script de rajout de commande)
(je ne peut pas poster les script sa me refuse car la longueur du post est trop long)
EDIT : je vien de tester, la détransformation ne se voit pas juste après que les ennemi soit mort mais on voit bien le héros prendre l'xp mais pas la transformation, de plus la musique de fin de combat ne ce lance pas si je gagne le combat étant transformer
Jai trouver le probleme, hier jetais un peu occupé jai pas pu repondre :s
Code:
#=============================================================== # ● [VX] ◦ Rapport de combat V3 #-------------------------------------------------------------- # ◦ Par Blockade # ◦ http://rpg-maker-vx.bbactif.com/forum.htm # ◦ Crée le 06/04/2009 # ◦ Version 3.7 # ◦ Remerciment à Woratana, Moghunter #-------------------------------------------------------------- #=============================================================== #=============================================================== # Notes de version : #--------------------------------------------------------------- # ~ Version 1.0 : # - Création du script # ~ Version 2.0 : # - Interface revue # - Regroupement et classement des objets gagnés # - Ajouts d'options de personalisations # ~ Version 3.0 : # - Le script distibue l'argent gagné correctement. # - Module de configuration entiérement revu # - Compatibilité améliorée # - Pop-up lors d'un level up qui affiche les caractéristiques # - Affiche les sorts gagnés # ~ Version 3.5 # - Meilleur affichage des caractéristiques quand le héros gagne un niveau # - Affichage du temps de combat # ~ Version 3.6 # - Mise à la norme de mes scripts # - Compatible avec 3 systèmes de combat : Combat VX, SBS, SBS avec ATB # - Détecte automatiquement le SBS # ~ Version 3.7 # - Correction d'un bug avec le SBS avec ATB, le rapport d'affichais deux fois #=============================================================== #=============================================================== # Utilisation : # Plug & Play, inserez le au dessus de Main ! # Jettez un coup d'oeil au module de configuration ! #=============================================================== module Blockade module Config_Report #=============================================================== # Blockade::Config_Report Début du Module de configuration #=============================================================== #------------------------------------------- # >> Configuration du texte #-------------------------------------------- # > Texte contenu dans l'help_window Text_help_window = "Rapport de Combat"
# > Dans la fenêtre de drop Drop_nil = "Aucun objet trouvé." # Si pas d'objet à la fin du combat Drop_objets = "Objets trouvés :" # Si des objets sont trouvées Drop_armures = "Armures trouvées :" # Si des armures sont trouvées Drop_armes = "Armes trouvées :" # Si des armes sont trouvées
# > Dans la fenêtre de changement de niveau Texte_hp = "HP " # Texte pour les Hp Texte_mp = "MP " # Texte pour les Mp Texte_atk = "Attaque " # Texte pour l'attaque Texte_def = "Défense " # Texte pour la défense Texte_int = "Intelligence " # Texte pour l'intelligence Texte_agi = "Agilité " # Texte pour l'agilité
# > Couleur des noms de caracteristiques Couleur_nom_carac = 4
# > Dans la fenêtre des nouveaux sorts Couleur_new_skill = 4 # Couleur de Texte_new_skill Texte_new_skill = "Nouveaux sorts : " # Texte pour introduire les nouveaux sorts #-------------------------------------------
#------------------------------------------- # >> Configuration des icones #-------------------------------------------- # > Dans la fenêtre de changement de niveau Icone_hp = 99 # Id de l'icone pour les PV Icone_mp = 100 # Id de l'icone pour les PM Icone_atk = 2 # Id de l'icone pour l'attaque Icone_def = 52 # Id de l'icone pour la défense Icone_int = 21 # Id de l'icone pour l'intelligence Icone_agi = 48 # Id de l'icone pour l'agilité
# > Dans la fenêtre des sorts Icone_new_skill = 130 #-------------------------------------------
#------------------------------------------- # >> Configuration des sons #-------------------------------------------- # > Quand un héros gagne un niveau Lvl_up_sound = "Recovery" # Nom du SE Lvl_up_volume = 80 # Volume entre 50-150 Lvl_up_tempo = 100 # Tempo entre 50-150
#=============================================================== # Blockade"EDIT"::Config_EVENEMENT commun utiliser pour ce detransformer #=============================================================== Event = 2 #=============================================================== # Blockade::Config_Report Fin du Module de configuration #=============================================================== end end
$imported = {} if $imported == nil $imported["Rapport_CombatV3"] = true
#============================================================================== # ** Scene_Battle #------------------------------------------------------------------------------ # Scene qui gère les combats #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # * Prend le temps au début du combat #-------------------------------------------------------------------------- alias start_battle_block start def start start_battle_block @temps = Time.now end
#-------------------------------------------------------------------------- # * Enpêche le rapport de s'afficher 2 fois (ATB fix) #-------------------------------------------------------------------------- alias judge_win_loss_block judge_win_loss unless $@ def judge_win_loss if defined?(::N02) return unless @fin_combat.nil? end judge_win_loss_block end #-------------------------------------------------------------------------- # * Processus de victoire #-------------------------------------------------------------------------- def process_battle_event_mod loop do return if $game_temp.next_scene != nil $game_troop.interpreter.update $game_troop.setup_battle_event wait_for_message process_action if $game_troop.forcing_battler != nil return unless $game_troop.interpreter.running? update_basic end end
def process_victory if defined?(::N01) $game_temp.common_event_id = Blockade::Config_Report::Event process_battle_event_mod @status_window.visible = true @message_window.visible = false # ボスコラプスはウエイトを長く挟む for enemy in $game_troop.members break boss_wait = true if enemy.collapse_type == 3 end wait(440) if boss_wait wait(N01::WIN_WAIT) unless boss_wait # 動けないアクターを除いて勝利アクション for actor in $game_party.members unless actor.restriction >= 4 @spriteset.set_action(true, actor.index,actor.win) end end end @info_viewport.visible = false @message_window.visible = false RPG::BGM.stop $game_system.battle_end_me.play unless $BTEST $game_temp.map_bgm.play $game_temp.map_bgs.play end new_temps = Time.now temps = new_temps- @temps if temps >= 60 @temps_combat = (temps / 60).truncate @suffixe = @temps_combat > 1 ? "minutes" : "minute" else @temps_combat = temps.truncate @suffixe = "secondes" end @exp =$game_troop.exp_total @gold = $game_troop.gold_total @drop = $game_troop.make_drop_items $game_party.gain_gold(@gold) ini_variable Graphics.fadeout(30) afficher_rapport Graphics.fadein(20) end
#-------------------------------------------------------------------------- # * Initialise les variables #-------------------------------------------------------------------------- def ini_variable @fin_combat = true @actors_lvl_up = [] @num_passage= 0 end
#-------------------------------------------------------------------------- # * Afficher le rapport de combat #-------------------------------------------------------------------------- def afficher_rapport @help_window = Window_Help_Combat.new @heros_window = [] y=55 ; i=0 for actor in $game_party.members @heros_window[i] = Heros_Window.new(actor,y,@exp) @actors_lvl_up.push([actor,@heros_window[i].get_old_carac,@heros_window[i].get_new_carac,@heros_window[i].get_new_skills]) if @heros_window[i].level_up y +=74; i += 1 end @gold_exp_window = Gold_Exp_Window.new(@gold,@exp) @butin_window = Drop_Window.new(@drop) @help_window.set_text(Blockade::Config_Report::Text_help_window,Blockade::Config_Report::Alignement_texte,Blockade::Config_Report::Texte_temps_combat + "#{@temps_combat} #{@suffixe} ",Blockade::Config_Report::Alignement_texte_temps_combat) if @actors_lvl_up != [] RPG::SE.new(Blockade::Config_Report::Lvl_up_sound, Blockade::Config_Report::Lvl_up_volume, Blockade::Config_Report::Lvl_up_tempo).play @actor_window = Carac_Window.new(@actors_lvl_up[@num_passage]) new_skill = @actors_lvl_up[@num_passage] @actor_window2 = Skills_Window.new(@actors_lvl_up[@num_passage]) if @actors_lvl_up[@num_passage][3].size > 0 end end
#-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- alias update_block update unless $@ def update if @fin_combat != true update_block else # Si c'est la fin du combat @help_window.update @message_window.update for i in 0...@heros_window.size @heros_window[i].update end if @actors_lvl_up != [] @actor_window.update @actor_window2.update if @actors_lvl_up[@num_passage][3].size > 0 # if @heros_window[@num_passage].get_new_skills.size > 0 if Input.trigger?(Input::C) @num_passage += 1 @actor_window.dispose @actor_window2.visible = false if @actor_window2 != nil if @num_passage + 1 > @actors_lvl_up.size Input.update @actors_lvl_up = [] end # fin @num_passage if @actors_lvl_up != [] RPG::SE.new(Blockade::Config_Report::Lvl_up_sound, Blockade::Config_Report::Lvl_up_volume, Blockade::Config_Report::Lvl_up_tempo).play @actor_window = Carac_Window.new(@actors_lvl_up[@num_passage]) @actor_window2 = Skills_Window.new(@actors_lvl_up[@num_passage]) if @actors_lvl_up[@num_passage][3].size >0 # if @heros_window[@num_passage].get_new_skills.size > 0 end # fin @actors_lvl_up end # fin input else # si pas de lvl up end # Si on appuye sur Entrée if Input.trigger?(Input::C) and @actors_lvl_up == [] @help_window.dispose for i in 0...@heros_window.size @heros_window[i].dispose end @gold_exp_window.dispose @butin_window.dispose if $BTEST $scene = nil else Graphics.fadeout(30) battle_end(0) suppr_variables end end end end
#-------------------------------------------------------------------------- # * Reinitialise les variables #-------------------------------------------------------------------------- def suppr_variables @fin_combat = false @actors_lvl_up = [] end end
#============================================================================== # ** Window_Help_Combat #------------------------------------------------------------------------------ # This window shows skill and item explanations along with actor status. #============================================================================== class Window_Help_Combat < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, 544, WLH + 32) end #-------------------------------------------------------------------------- # * Set Text # text : character string displayed in window # align : alignment (0..flush left, 1..center, 2..flush right) #-------------------------------------------------------------------------- def set_text(text1, align1,text2,align2) if text1 != @text1 or align1 != @align1 or text2 != @text2 or align2 != @align2 self.contents.clear self.contents.font.color = normal_color self.contents.draw_text(4, 0, self.width - 40, WLH, text1, align1) self.contents.draw_text(4, 0, self.width - 40, WLH, text2, align2) @text1 = text1 ; @align = align2 @text2 = text2 ; @align2 = align2 end end end
#============================================================================== # ** Skills_Window #------------------------------------------------------------------------------ # Affiche les sorts #============================================================================== class Skills_Window < Window_Base def initialize(actor_info) @new_skills = actor_info[3] super(300,58,244,230) afficher_sorts end
#-------------------------------------------------------------------------- # * Affiche les nouveaux sorts #-------------------------------------------------------------------------- def afficher_sorts self.contents.font.color = text_color(Blockade::Config_Report::Couleur_new_skill) self.contents.draw_text(25,0, 200, WLH, Blockade::Config_Report::Texte_new_skill) draw_icon(Blockade::Config_Report::Icone_new_skill,0,0) y = 25 for skills in @new_skills draw_item_name(skills,0,y) y += 25 end end end
#============================================================================== # ** Carac_Window #------------------------------------------------------------------------------ # Affiche les caractérisqtiques #============================================================================== class Carac_Window < Window_Base def initialize(actor) @actor = actor[0] @old_carac = actor[1] @new_carac = actor[2] @new_skills = actor[3] x = 100 x = 0 if @new_skills.size > 0 super(x,58,300,230) afficher_info_actor afficher_icone afficher_carac end
#-------------------------------------------------------------------------- # * Affiche le nom et le niveau du héros #-------------------------------------------------------------------------- def afficher_info_actor draw_character(@actor.character_name, @actor.character_index, 20, 40) self.contents.draw_text(40,0, 200, WLH, @actor.name) self.contents.draw_text(40,20,200,WLH,Blockade::Config_Report::Lvl + @old_carac[0].to_s + " > " + Blockade::Config_Report::Lvl + @new_carac[0].to_s) end
#-------------------------------------------------------------------------- # * Affiche les icones #-------------------------------------------------------------------------- def afficher_icone draw_icon(Blockade::Config_Report::Icone_hp,0,50) draw_icon(Blockade::Config_Report::Icone_mp ,0,75) draw_icon(Blockade::Config_Report::Icone_atk ,0,100) draw_icon(Blockade::Config_Report::Icone_def,0,125) draw_icon(Blockade::Config_Report::Icone_int,0,150) draw_icon(Blockade::Config_Report::Icone_agi,0,175) end
#-------------------------------------------------------------------------- # * Affiche les caractéristiques #-------------------------------------------------------------------------- def afficher_carac self.contents.font.color = text_color(Blockade::Config_Report::Couleur_nom_carac) self.contents.draw_text(25,50, 150, WLH, Blockade::Config_Report::Texte_hp) self.contents.draw_text(25,75, 150, WLH, Blockade::Config_Report::Texte_mp) self.contents.draw_text(25,100, 150, WLH, Blockade::Config_Report::Texte_atk) self.contents.draw_text(25,125, 150, WLH, Blockade::Config_Report::Texte_def) self.contents.draw_text(25,150, 150, WLH, Blockade::Config_Report::Texte_int) self.contents.draw_text(25,175, 150, WLH, Blockade::Config_Report::Texte_agi) self.contents.font.color = normal_color y = 50 for i in 1...@new_carac.size self.contents.draw_text(150,y, 105, WLH, @old_carac[i],0) self.contents.draw_text(150,y, 110, WLH, "> ",1) self.contents.font.color = power_up_color if @old_carac[i] < @new_carac[i] self.contents.font.color.alpha = 128 if @old_carac[i] == @new_carac[i] self.contents.draw_text(150,y, 105, WLH, @new_carac[i],2) self.contents.font.color.alpha = 255 self.contents.font.color = normal_color y +=25 end end end
#============================================================================== # ** Gold_Exp_Window #------------------------------------------------------------------------------ # Affiche l'argent et l'exp obtenus #============================================================================== class Gold_Exp_Window < Window_Base def initialize(gold,exp) super(0,350,200,65) self.contents.draw_text(0,-6,200,WLH,Blockade::Config_Report::Exp + exp.to_s) self.contents.draw_text(0,14,200,WLH,Blockade::Config_Report::Gold + gold.to_s) end end
#============================================================================== # ** Heros_Window #------------------------------------------------------------------------------ # Affiche les informations d'exp sur les héros #============================================================================== class Heros_Window < Window_Base def initialize(actor,y,exp) super(0,y,200,75) @actor = actor @exp = exp afficher_info end
#-------------------------------------------------------------------------- # * Renvoie les anciennes caractérisques #-------------------------------------------------------------------------- def get_old_carac return @old_carac end
#-------------------------------------------------------------------------- # * Renvoie les nouvelles caractérisques #-------------------------------------------------------------------------- def get_new_carac return @new_carac end
#-------------------------------------------------------------------------- # * Renvoie les nouveaux sorts #-------------------------------------------------------------------------- def get_new_skills if @new_skills.size > 0 return @new_skills else return [] end end #-------------------------------------------------------------------------- # * Determine si le heros a pris un ou plusieurs niveaux #-------------------------------------------------------------------------- def level_up return @level_up end #-------------------------------------------------------------------------- # * Couleur 1 de la barre #-------------------------------------------------------------------------- def exp_gauge_color1 return text_color(30) end
#-------------------------------------------------------------------------- # * Couleur 1 de la barre #-------------------------------------------------------------------------- def exp_gauge_color2 return text_color(31) end
#-------------------------------------------------------------------------- # * Dessine la barre d'exp #------------------------------------------------------------------------- def draw_actor_exp_meter(actor, x, y, width = 100) if actor.next_exp != 0 exp = actor.now_exp else exp = 1 end gw = width * exp / [actor.next_exp, 1].max gc1 = exp_gauge_color1 gc2 = exp_gauge_color2 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, "Exp") self.contents.font.color = normal_color xr = x + width self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2) end end
#============================================================================== # ** Drop_Window #------------------------------------------------------------------------------ # Affiche les objets obtenus #============================================================================== class Drop_Window < Window_Base def initialize(drop) super(200,55,344,360) @drop = drop if @drop != [] trier_drop regrouper afficher_drop donner_drop else afficher_mess end end
#-------------------------------------------------------------------------- # * Trie le drop en fonction du type d'objet #------------------------------------------------------------------------- def trier_drop @armes = [] @armures = [] @items = [] for item in @drop if item.is_a?(RPG::Item) @items.push(item) end if item.is_a?(RPG::Armor) @armures.push(item) end if item.is_a?(RPG::Weapon) @armes.push(item) end end end
#-------------------------------------------------------------------------- # * Regroupe les objets par nombre #------------------------------------------------------------------------- def regrouper #------------------------------------------------------- # Pour les objets #------------------------------------------------------ if @items != [] @items_unique = @items.uniq @regroupement_item = {} for item in @items_unique @regroupement_item[item] = 0 end for item in @items if @regroupement_item.include?(item) @regroupement_item[item] += 1 end end end
#------------------------------------------------------- # Pour les armures #------------------------------------------------------ if @armures != [] @armure_unique = @armures.uniq @regroupement_armures = {} for armure in @armure_unique @regroupement_armures[armure] = 0 end for armure in @armures if @regroupement_armures.include?(armure) @regroupement_armures[armure] += 1 end end end
#------------------------------------------------------- # Pour les armes #------------------------------------------------------ if @armes != [] @armes_unique = @armes.uniq @regroupement_armes = {} for arme in @armes_unique @regroupement_armes[arme] = 0 end for arme in @armes if @regroupement_armes.include?(arme) @regroupement_armes[arme] += 1 end end end end
#-------------------------------------------------------------------------- # * Affiche les objets #------------------------------------------------------------------------- def afficher_drop y=0 # Initialisation de la coordonée y #------------------------------------------------------- # Pour les objets #------------------------------------------------------ if @items != [] self.contents.draw_text(0,y,200,WLH,Blockade::Config_Report::Drop_objets) y += 25 for item in @regroupement_item draw_icon(item[0].icon_index, 0, y) if item[1] > 1 quantite = " x" + item[1].to_s else quantite = "" end self.contents.draw_text(24, y, 172, WLH, item[0].name + quantite) y+=25 end end
y += 5 if @items.nil? == false # Si les objets on été affiché augmenter y de 5
#------------------------------------------------------- # Pour les armures #------------------------------------------------------ if @armures != [] self.contents.draw_text(0,y,200,WLH,Blockade::Config_Report::Drop_armures) y += 25 for armure in @regroupement_armures draw_icon(armure[0].icon_index, 0, y) if armure[1] > 1 quantite = " x" + armure[1].to_s else quantite = "" end self.contents.draw_text(24, y, 172, WLH, armure[0].name + quantite) y +=25 end end
y += 5 if @armures.nil? == false # Si les armures on été affichées augmenter y de 5
#------------------------------------------------------- # Pour les armes #------------------------------------------------------ if @armes != [] self.contents.draw_text(0,y,200,WLH,Blockade::Config_Report::Drop_armes) y += 25 for arme in @regroupement_armes draw_icon(arme[0].icon_index, 0, y) if arme[1] > 1 quantite = " x" + arme[1].to_s else quantite = "" end self.contents.draw_text(24, y, 172, WLH, arme[0].name + quantite) y +=25 end end end
#------------------------------------------------------- # Afficher un message si pas de drop #------------------------------------------------------ def afficher_mess self.contents.draw_text(0,0,360,WLH,Blockade::Config_Report::Drop_nil) end
#------------------------------------------------------- # Donne le drop à l'équipe #------------------------------------------------------ def donner_drop for item in @drop $game_party.gain_item(item, 1) end end end
#============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # Gére les données système sur les héros. #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Calcul de l'exp accumulée #-------------------------------------------------------------------------- def now_exp return @exp - @exp_list[@level] end
#-------------------------------------------------------------------------- # * Calcul de l'exp a avoir pour gagner un niveau #-------------------------------------------------------------------------- def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end
end
dans le fond c'est le meme script jai juste mis les ligne a la mauvaise place, cette fois ca marche il ce detransforme de la meme facon quil ce transforme a la toute fin du combat jai testé avec SBS le tankentai
a remplacer le "Rapport de combat V3" par cette version et il dois ce trouver sous les scripts de Tankentai avant le main