Ce script permet de rajouter une nouvelle statistique la défense magique. Le défaut de ce logiciel c'est que l'intelligence agit sur les attaques magiques et la défense magique, désormais grâce à ce script (enfin ses) se seront deux statistiques totalement différence puisque l'intelligence aura un effet sur la puissance des sorts et la défense magique sur la résistance de ses derniers.
Fonctionnalités
-Tout est déjà traduit en français, vous avez rien à faire. ^^ -Rajout la défense magique dans le menu statistique ainsi que la précision, l'évasion et la chance -Rajout la défense magique dans le script boutique de Yanfly -Rajout la défense magique dans le menu équiper de KGC -Rajout les statistiques précision et défense magique dans la forge de Matsuo -Rajout la défense magique dans le Bestiaire -Rajout la défense magique dans le menu aptitude de KGC (un script existe mais il est truffer d'erreur, j'ai donc pris soin de le refaire à neuf par contre je voulais ajouté des icons, mais j'ai pas réussi à faire fonctionner cette fonction.
Compatibilité J'ai testé avec le système de combat de base tout marche, pour le SBS et ATB le seule hic c'est le script Bestiaire et scan, en effet la fenêtre qui donne des informations pendant le combat ne marchent pas, sinon pour le reste tous marchent (normalement). Enfin j'ai aucun problème avec dans mon projet donc bon.
Installation Télécharger cette magnifique demo et C/C les scripts dans l'ordre indiquer. Lien: http://www.mediafire.com/?d5xjydja0bomuh4
Dernière édition par CloudStrife le Ven 30 Juil 2010 - 17:24, édité 1 fois
Zangther
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
Sujet: Re: [VX] Rajout la statistique defense magique, statut, équiper, boutique, ... Ven 30 Juil 2010 - 17:23
Sympa, mais échange Matsuo met ASHKA a la place xD. Matsuo le précise dans son post pourtant xD
Garruk
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
Sujet: Re: [VX] Rajout la statistique defense magique, statut, équiper, boutique, ... Ven 30 Juil 2010 - 17:25
C'est fait, alala en plus j'avais un gros doute, j'ai vu pas mal de post de Matsuo qui disait ne rien comprendre au codage xD Merci Zang et merci pour cette précision. =)
Blockade
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
Sujet: Re: [VX] Rajout la statistique defense magique, statut, équiper, boutique, ... Sam 31 Juil 2010 - 15:16
Bien ca va être utile à pas mal de gens =)
(Comment y'a deux ans je cherchais un script comme ca partout, et que j'en ai trouvé un qui faisais le plus gros, mais pas les intégrations et j'ai du tout faire moi même xD Comme quoi on est jamais mieux servi que par soi même !)
Bon on va te rajouter 1 point en script, et 4 en participation du forum !
Garruk
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
Sujet: Re: [VX] Rajout la statistique defense magique, statut, équiper, boutique, ... Sam 31 Juil 2010 - 15:24
Merci Blockade =), d'ailleurs je viens de réaliser que je n'ai pas rajouté la def. mag. sur le rapport de combat ce qui pourrait être pas mal, bon je verrais ça ce soir ou demain si j'ai le temps.
Oui c'est clair, pour ma part je fais beaucoup de demande de script parce que j'y connais rien xD, mais en apprenant et en regardant certaines réalisations de scripts on y arrive finalement. =)
#=============================================================== # ● [VX] ◦ Rapport de combat V3 #-------------------------------------------------------------- # ◦ Par Blockade # ◦ http://rpg-maker-vx.bbactif.com/forum.htm # ◦ Crée le 06/04/2009 # ◦ Version 3.6 # ◦ 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 #=============================================================== #=============================================================== # 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_res = "Def. mag." # Texte pour la defense magique 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_res = 28 # Id de l'icone pour la defense magique 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::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
#-------------------------------------------------------------------------- # * Processus de victoire #-------------------------------------------------------------------------- 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 @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 super if @fin_combat != true update_block else # Si c'est la fin du combat super @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,70) draw_icon(Blockade::Config_Report::Icone_atk ,0,90) draw_icon(Blockade::Config_Report::Icone_def,0,110) draw_icon(Blockade::Config_Report::Icone_int,0,130) draw_icon(Blockade::Config_Report::Icone_int,0,150) draw_icon(Blockade::Config_Report::Icone_agi,0,170) 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,70, 150, WLH, Blockade::Config_Report::Texte_mp) self.contents.draw_text(25,90, 150, WLH, Blockade::Config_Report::Texte_atk) self.contents.draw_text(25,110, 150, WLH, Blockade::Config_Report::Texte_def) self.contents.draw_text(25,130, 150, WLH, Blockade::Config_Report::Texte_int) self.contents.draw_text(25,150, 150, WLH, Blockade::Config_Report::Texte_res) self.contents.draw_text(25,170, 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
Garruk
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
Sujet: Re: [VX] Rajout la statistique defense magique, statut, équiper, boutique, ... Dim 1 Aoû 2010 - 9:09
Désolé pour le double post, mais je n'ai pas d'autre choix et comme j'aime bien faire le travail correctement pour ceux qui utilise le système de Matéria de Atoa, j'ai également rajouté la défense magique dans le rapport que Doddy avait modifier
Vous l'aurez compris c'est le même que celui juste au-dessus mais il rajoute les APs en fin de combat.
Spoiler:
Code:
#=============================================================== # ● [VX] ◦ Rapport de combat V3 #-------------------------------------------------------------- # ◦ Par Blockade # ◦ http://rpg-maker-vx.bbactif.com/forum.htm # ◦ Crée le 06/04/2009 # ◦ Version 3.6 # ◦ 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 #=============================================================== #=============================================================== # 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"
# > Monnaie (abrégée) Gold = "Gils : " Ap = "Ap : "#ajout de moi # > Niveau (abrégé) Lvl = "Niv. "
# > 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 = "Force " # Texte pour l'attaque Texte_def = "Vitalité " # Texte pour la défense Texte_int = "Magie " # Texte pour l'intelligence Texte_res = "Esprit" # Tecte pour la defense magique Texte_agi = "Dextérité " # 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 = 11664 # Id de l'icone pour les PV Icone_mp = 11665 # Id de l'icone pour les PM Icone_atk = 11603 # Id de l'icone pour l'attaque Icone_def = 11604 # Id de l'icone pour la défense Icone_int = 11605 # Id de l'icone pour l'intelligence Icone_res = 11606 Icone_agi = 11607 # Id de l'icone pour l'agilité
# > Dans la fenêtre des sorts Icone_new_skill = 150 #-------------------------------------------
#------------------------------------------- # >> 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::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
#-------------------------------------------------------------------------- # * Processus de victoire #-------------------------------------------------------------------------- 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 @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,@ap)#ajout de moi @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 super if @fin_combat != true update_block else # Si c'est la fin du combat super @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,70) draw_icon(Blockade::Config_Report::Icone_atk ,0,90) draw_icon(Blockade::Config_Report::Icone_def,0,110) draw_icon(Blockade::Config_Report::Icone_int,0,130) draw_icon(Blockade::Config_Report::Icone_res,0,150) draw_icon(Blockade::Config_Report::Icone_agi,0,170) 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,70, 150, WLH, Blockade::Config_Report::Texte_mp) self.contents.draw_text(25,90, 150, WLH, Blockade::Config_Report::Texte_atk) self.contents.draw_text(25,110, 150, WLH, Blockade::Config_Report::Texte_def) self.contents.draw_text(25,130, 150, WLH, Blockade::Config_Report::Texte_int) self.contents.draw_text(25,150, 150, WLH, Blockade::Config_Report::Texte_res) self.contents.draw_text(25,170, 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#--------pour matéria def initialize(gold,exp,ap=0)#-----ap=0 d'ajouté ap = 0 for enemy in $game_troop.members ap += enemy.ap end for actor in $game_party.existing_members actor.ap =+ ap end#-------pour matéria super(0,350,200,65) self.contents.draw_text(0,-6,200,WLH,Blockade::Config_Report::Exp + exp.to_s) self.contents.draw_text(100,-6,200,WLH,Blockade::Config_Report::Ap + ap.to_s)#ajout de moi 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