- DiouMembre
- Nombre de messages : 23
Distinction : aucune
Date d'inscription : 27/07/2010
[résolu] rapport de combat blockade incompatible avec competence via accessoire
Dim 26 Sep 2010 - 18:19
Bon et bien tout d'abord je ne sait pas si je doit poster ici... si ce n'est pas le bon endroit dite le moi merci
alors le probleme est le suivant (comme c'est écris dans le titre), le systeme de rapport de combat de blockade ne fonctionne pas avec le systeme de competence via acessoire. Car a la fin du combat je n'obtiens aucun "pc" pour l'accessoire que je porte donc il faudrait qu'on me mette les pc a aparaitre a coté de exp et gils dans le rapport et qu'il donne ces pc au objet ce qui n'est plus le cas si quelqu'un pourrai m'aider merci
Edit: Suite à la réclamation de dricc je reécris le probleme
j'utilise le script de blockade de rapport de combat v.3
ainsi que le script de competence via accessoire qui permet d'atribué des niveau a un accessoire. à la fin du combat les monstre en plus de l'exp pour mon perso et des gils me donne des "points de competence" "PC" qui font évolué mon accessoire équipé quand l'acessoire passe de niveau je gagne une competence bref
ce que je voudrais c'est qu'il soit compatible car actuelment je ne reçoit aucun pc a la fin du combat sur le plan visuel atravers du rapport qui s'affiche ni sur l'objet qui reste a 0 PC si quelqu'un peut m'aider merci en espérant que ce message soit plus clair
voici les deux script:
rapport de combat blockade :
competence via accesoire :
alors le probleme est le suivant (comme c'est écris dans le titre), le systeme de rapport de combat de blockade ne fonctionne pas avec le systeme de competence via acessoire. Car a la fin du combat je n'obtiens aucun "pc" pour l'accessoire que je porte donc il faudrait qu'on me mette les pc a aparaitre a coté de exp et gils dans le rapport et qu'il donne ces pc au objet ce qui n'est plus le cas si quelqu'un pourrai m'aider merci
Edit: Suite à la réclamation de dricc je reécris le probleme
j'utilise le script de blockade de rapport de combat v.3
ainsi que le script de competence via accessoire qui permet d'atribué des niveau a un accessoire. à la fin du combat les monstre en plus de l'exp pour mon perso et des gils me donne des "points de competence" "PC" qui font évolué mon accessoire équipé quand l'acessoire passe de niveau je gagne une competence bref
ce que je voudrais c'est qu'il soit compatible car actuelment je ne reçoit aucun pc a la fin du combat sur le plan visuel atravers du rapport qui s'affiche ni sur l'objet qui reste a 0 PC si quelqu'un peut m'aider merci en espérant que ce message soit plus clair
voici les deux script:
rapport de combat blockade :
- Spoiler:
- #===============================================================
# ● [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"
# > Alignement du texte (0:Gauche, 1:Milieu, 2: Droite)
Alignement_texte = 0
# > Texte pour le temps de combat :
Texte_temps_combat = "Temps : "
# > Alignement du Texte_temps_combat (0:Gauche, 1:Milieu, 2: Droite)
Alignement_texte_temps_combat = 2
# > Expérience (abrégée)
Exp = "Exp : "
# > Monnaie (abrégée)
Gold = "Gils : "
# > 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 = "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::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_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
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
#--------------------------------------------------------------------------
# * Affiche les informations
#--------------------------------------------------------------------------
def afficher_info
@level_up = false
last_lvl = @actor.level
last_hp = @actor.maxhp
last_mp = @actor.maxmp
last_atk = @actor.atk
last_def = @actor.def
last_spi = @actor.spi
last_agi = @actor.agi
last_skill = @actor.skills
@actor.gain_exp(@exp,false)
if @actor.level > last_lvl
@level_up = true
@old_carac = [last_lvl,last_hp,last_mp, last_atk, last_def, last_spi, last_agi]
@new_carac =[@actor.level, @actor.maxhp,@actor.maxmp,@actor.atk,@actor.def,@actor.spi,@actor.agi]
@new_skills = @actor.skills - last_skill
end
draw_character(@actor.character_name, @actor.character_index, 20, 40)
draw_actor_exp_meter(@actor,40,20)
self.contents.draw_text(40,0, 60, WLH, @actor.name)
self.contents.draw_text(110,0,60,WLH,Blockade::Config_Report::Lvl + @actor.level.to_s)
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
competence via accesoire :
- Spoiler:
- ###################################
#
# Competences via accessoires
# ( Version 2.0 )
#
###################################
=begin MODE D'EMPLOI
Ce script est à la fois une mise à jour et un regroupement des scripts :
- "Accessoires permettant d'acquerir des comptences"
- "Accessoires permettant d'utiliser des competences"
Dans le premier, à l'instar de FF9, les competences etaient toujours utilisables
même apres avoir retiré l'accessoire.
Dans le second, à l'instar de FF7 ( matéria ), les competences n'etaient plus utilisables
apres avoir retiré l'accessoire.
Dans ce script, il est possible d'avoir des accessoires des deux types.
Par defaut, les accessoires sont de type "FF9".
Pour avoir un accessoires de type "FF7", il suffit d'inscrire USE_SLT dans la note.
Les accessoires de type "FF7" doivent etre des exemplaires uniques !!
( Pour en avoir plusieurs identiques, créez en plusieurs dans la base de donnée )
Pour le reste, les deux types d'accessoires se configurent de la même façon.
L'experience accumulé par les accessoires depend des ennemis rencontrés.
Pour determiner le montant d'experience donné par un monstre, il suffit d'inscrire :
# PSA=2 ( tout collé ) dans la note ( il donnera ici deux points ).
=end
###################################
module HK_skillacc
# Nom donné aux points d'experience pour accessoires.
Name = "PC"
# Indiquer ici le montant de PSA par defaut ( si rien n'est indiqué dans la base de donnée )
# A noter : mettre PSA=0 dans la note n'entraine pas l'utilisation de la valeur par defaut !!
Defaut_PSA = 1
# Configurer ici les differents accessoires qui permettent d'obtenir des competences.
# ID ACC EXP/ID skill ... EXP/ID skill
Tab_skill = { 23 => [[10, 59], [150, 60]],
24 => [[20, 61], [60, 62]],
29 => [[20, 61], [60, 62]],
32 => [[10, 9], [50, 59], [150, 60], [300, 61], [500, 62]],
33 => [[0, 63], [150, 64], [200, 65], [250, 66]],
# L'accessoire 33 offre directement 1 competences ( mais chez moi, il est de type USE_SLT )
34 => [[50, 67], [100, 68], [150, 69], [200, 70]],
35 => [[250, 71], [500, 72]]
}
# Inscrivez ici le message qui apparaitra à la fin des combats
Battle_message = "Vous recevez" # la suite est le nombre et le nom des PSA obtenu
# Emplacement X/Y des informations complementaires de l'option "Status"
Coord_win = [290, 305]
# Mettre sur "true" si vous voulez une barre pour indiquer l'exp plutôt qu'un simple affichage
Barre = true # reglage des couleurs à la ligne 260
# Mettre sur "true" si vous voulez des icones pour indiquer le niveau plutôt qu'un simple affichage
Icone = false
# Indiquez ici le nom du fichier où se trouve les icones
Nom_icone = "etoile" # Repertoire system
end # Modif in script "Game_Actor" methode "skills" !!!
###################################
class String
def decoupe
bloc = []
self.split(/[\r\n]+/).each { |line| bloc.push(line) }
return bloc
end
end
###################################
class Game_Troop < Game_Unit
def total_psa
num = 0
for enemy in dead_members
num += enemy.psa unless enemy.hidden
end
return num
end
end
###################################
class Game_Party < Game_Unit
attr_accessor :skillacc_exp
alias hk_skillacc_init initialize
def initialize
hk_skillacc_init
@skillacc_exp = Hash.new(0)
end
end
###################################
class Game_Enemy < Game_Battler
def psa
return enemy.psa
end
end
###################################
class Game_Actor < Game_Battler
attr_accessor :skillacc_exp
alias hk_skillacc_setup setup
def setup(actor_id)
@skillacc_exp = {}
hk_skillacc_setup(actor_id)
if @armor4_id != 0
acc = $data_armors[@armor4_id]
@skillacc_exp[@armor4_id] = 0 if acc.acquisition?
if acc.utilisation?
$game_party.skillacc_exp[@armor4_id] = 0
end
end
end
def add_skillacc
result = []
for id in @skillacc_exp.keys
result |= get_skillacc(id, "skill", false)
end
acc = $data_armors[@armor4_id]
if @armor4_id != 0 and acc.utilisation?
result |= get_skillacc(@armor4_id, "skill", true)
end
return result
end
def get_skillacc(acc_id, type, use)
if use
exp = $game_party.skillacc_exp[acc_id]
else
exp = @skillacc_exp[acc_id]
end
tab = HK_skillacc::Tab_skill[acc_id]
max_lv = tab.size - 1
skill = []
lv = 0
ref = tab[lv]
while exp >= ref[0]
exp -= ref[0]
skill.push($data_skills[ref[1]])
break if lv == max_lv
lv += 1
ref = tab[lv]
end
case type
when "lv"
return lv + 1
when "max_lv"
return max_lv + 1
when "skill"
return skill
when "exp"
return exp
when "next_lv"
return ref[0]
when "til_next_lv"
return ref[0] - exp
end
end
alias hk_skillacc_change_equip change_equip
def change_equip(equip_type, item, test = false)
hk_skillacc_change_equip(equip_type, item, test)
if @armor4_id != 0 and not test
acc = $data_armors[@armor4_id]
if acc.utilisation?
$game_party.skillacc_exp[@armor4_id] = 0 unless $game_party.skillacc_exp.keys.include?(@armor4_id)
else
@skillacc_exp[@armor4_id] = 0 unless @skillacc_exp.keys.include?(@armor4_id)
end
end
end
def skill_learn?(skill)
return skills.include?(skill)
end
end
###################################
class Scene_Battle < Scene_Base
alias hk_skillacc_display_exp display_exp_and_gold
def display_exp_and_gold
hk_skillacc_display_exp
psa = $game_troop.total_psa
if psa > 0
text = HK_skillacc::Battle_message + " #{psa} #{HK_skillacc::Name}."
$game_message.texts.push('\.' + text)
for actor in $game_party.existing_members
if actor.armors[3] != nil
if actor.armors[3].utilisation?
$game_party.skillacc_exp[actor.armors[3].id] += psa
else
actor.skillacc_exp[actor.armors[3].id] += psa
end
end
end
end
wait_for_message
end
end
###################################
module RPG
class Armor < BaseItem
def utilisation?
text = @note.decoupe
for line in text
return true if line.include?("USE_SLT")
end
return false
end
def acquisition?
return false if utilisation?
return true
end
end
class Enemy
def psa
text = @note.decoupe
for line in text
if line.include?("PSA=")
num = line.delete("PSA=")
return num.to_i
end
end
return HK_skillacc::Defaut_PSA
end
end
end
###################################
class Window_Skillacc < Window_Base
def initialize(actor)
x = HK_skillacc::Coord_win[0]
y = HK_skillacc::Coord_win[1]
super(x, y, 250, 2*24 + 32)
@actor = actor
refresh
end
def refresh
self.contents.clear
acc = @actor.armors[3]
if acc != nil
if acc.utilisation?
draw_skillacc_info(true)
else
draw_skillacc_info(false)
end
end
end
def draw_skillacc_info(use)
acc = @actor.armors[3]
lv = @actor.get_skillacc(acc.id, "lv", use)
max_lv = @actor.get_skillacc(acc.id, "max_lv", use)
exp = @actor.get_skillacc(acc.id, "exp", use)
til_next_lv = @actor.get_skillacc(acc.id, "til_next_lv", use)
if HK_skillacc::Icone
bitmap = Cache.system(HK_skillacc::Nom_icone)
self.contents.draw_text(0, 0, 150, 24, "Nv.")
for x in 0..(lv-1)
self.contents.blt(50+x*24, 0, bitmap, Rect.new(0, 0, 24, 24))
end
if max_lv > lv
for x in (lv-1)..(max_lv-1)
self.contents.blt(50+x*24, 0, bitmap, Rect.new(24, 0, 24, 24))
end
end
else
text = "Nv. #{lv} / #{max_lv}"
self.contents.draw_text(0, 0, self.width-32, 24, text, 1)
end
if HK_skillacc::Barre
self.contents.draw_text(0, 24, self.width-32, 24, "Exp.")
self.contents.fill_rect(50, 24, 154, 24, Color.new(0, 0, 0, 255))
if lv != max_lv
num = (exp * 150) / til_next_lv
else
num = 150
end
self.contents.gradient_fill_rect(52, 26, num, 20, Color.new(255, 255, 0, 255), Color.new(255, 0, 0, 255))
else
if lv != max_lv
text = "Exp. : #{exp} / #{til_next_lv}"
else
text = "Exp. : -/-"
end
self.contents.draw_text(0, 24, self.width-32, 24, text, 1)
end
end
end
###################################
class Scene_Status < Scene_Base
alias hk_skillacc_start start
def start
hk_skillacc_start
@win_info = Window_Skillacc.new(@actor)
@win_info.opacity = 0
end
alias hk_skillacc_terminate terminate
def terminate
hk_skillacc_terminate
@win_info.dispose
end
end
###################################
- driccMembre
- Nombre de messages : 2760
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009
Re: [résolu] rapport de combat blockade incompatible avec competence via accessoire
Lun 27 Sep 2010 - 11:04
Ouf , j'ai eu du mal à te lire ... fait gaffe quand tu écris .
Bon , l'incompatibilité est pas surprenant quend on regarde un peu . Le deuxieme script se sert de l'affichage du gain d'exp/gold(display_exp_and_gold) pour faire sont boulot . Or le premier script court-circuite cet affichage .
Suffit de déplacer le code et ça devrait marcher , ajoute ça aprés les 2 scripts :
class Heros_Window < Window_Base
def donner_drop
for item in @drop
$game_party.gain_item(item, 1)
end
psa = $game_troop.total_psa
if psa > 0
text = HK_skillacc::Battle_message + " #{psa} #{HK_skillacc::Name}."
$game_message.texts.push('\.' + text)
for actor in $game_party.existing_members
if actor.armors[3] != nil
if actor.armors[3].utilisation?
$game_party.skillacc_exp[actor.armors[3].id] += psa
else
actor.skillacc_exp[actor.armors[3].id] += psa
end
end
end
end
end
J'ai pas testé . A toi de le faire .
Bon , l'incompatibilité est pas surprenant quend on regarde un peu . Le deuxieme script se sert de l'affichage du gain d'exp/gold(display_exp_and_gold) pour faire sont boulot . Or le premier script court-circuite cet affichage .
Suffit de déplacer le code et ça devrait marcher , ajoute ça aprés les 2 scripts :
class Heros_Window < Window_Base
def donner_drop
for item in @drop
$game_party.gain_item(item, 1)
end
psa = $game_troop.total_psa
if psa > 0
text = HK_skillacc::Battle_message + " #{psa} #{HK_skillacc::Name}."
$game_message.texts.push('\.' + text)
for actor in $game_party.existing_members
if actor.armors[3] != nil
if actor.armors[3].utilisation?
$game_party.skillacc_exp[actor.armors[3].id] += psa
else
actor.skillacc_exp[actor.armors[3].id] += psa
end
end
end
end
end
J'ai pas testé . A toi de le faire .
- DiouMembre
- Nombre de messages : 23
Distinction : aucune
Date d'inscription : 27/07/2010
Re: [résolu] rapport de combat blockade incompatible avec competence via accessoire
Lun 27 Sep 2010 - 18:00
alors j'ai testé
et ça n'as rien changer. les pc n'apparaissent toujours pas dans le rapports de combat
et aucun pc n'est atribuié a l'objet que je porte qui reste toujours a 0 donc....
jespère avoir été clair...
et ça n'as rien changer. les pc n'apparaissent toujours pas dans le rapports de combat
et aucun pc n'est atribuié a l'objet que je porte qui reste toujours a 0 donc....
jespère avoir été clair...
- DiouMembre
- Nombre de messages : 23
Distinction : aucune
Date d'inscription : 27/07/2010
Re: [résolu] rapport de combat blockade incompatible avec competence via accessoire
Mar 19 Oct 2010 - 13:04
Il n'y as vraiment personne qui puisse m'aider a rendre ces deux scripts compatible s'il vous plait?
- Elisa'Staffeux retraité
- Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' ]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]
Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009
Re: [résolu] rapport de combat blockade incompatible avec competence via accessoire
Sam 30 Oct 2010 - 16:56
Évite les doubles-posts s'il te plaît, tu peux utiliser la fonction pour éviter ça
Sinon, je vois que le résolu est dans le titre, ça veut dire que tu as trouvé tout seul ? Car je ne vois pas en quoi c'est résolu là.
Bref, je déplace ?
Sinon, je vois que le résolu est dans le titre, ça veut dire que tu as trouvé tout seul ? Car je ne vois pas en quoi c'est résolu là.
Bref, je déplace ?
- DiouMembre
- Nombre de messages : 23
Distinction : aucune
Date d'inscription : 27/07/2010
Re: [résolu] rapport de combat blockade incompatible avec competence via accessoire
Lun 1 Nov 2010 - 18:42
oui oui tu peu déplacer j'ai directement demander a la source, désolé pour le double post je voulais up le topic
- Elisa'Staffeux retraité
- Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' ]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]
Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009
Re: [résolu] rapport de combat blockade incompatible avec competence via accessoire
Lun 1 Nov 2010 - 18:49
Okay, je déplace alors
- Contenu sponsorisé
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|