- NaasmarMembre
- Nombre de messages : 185
Age : 27
Distinction : aucune
Date d'inscription : 15/03/2008
Petit problème...
Dim 12 Avr 2009 - 15:47
Bonjour ! J'ai un problème avec le script de ASHKA... enfin, plutôt comment mettre les ressources :
ASHKA a écrit:Nom : Competences via accessoires
Auteur : ASHKA
Info : Ce script est à la fois une mise à jour et un regroupement de mes scripts "Cristaux de competences".
Au programme :
- Pas de bugs ( enfin, j'espere ... ).
- Plus de possibilité de configuration.
- Peu de risque d'incompatibilité.
- Deux scripts en un !!
- Spoiler:
- Code:
###################################
#
# 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 = 2
# Configurer ici les differents accessoires qui permettent d'obtenir des competences.
# ID ACC EXP/ID skill ... EXP/ID skill
Tab_skill = { 32 => [[10, 59], [25, 60], [50, 61], [100, 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 = false # 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
###################################
Il y a une petite modification à faire dans les scripts de base ( Game_Actor ) :
- Code:
result |= add_skillacc
Visuellement, pas grand chose à montrer ...
Juste une petite modification dans l'option "Status" :
Vous avez le choix : comme à gauche, comme à droite, ou mix des deux.
Voila le fichier pour les "étoiles" :
Celle-Là ressources ----->
Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !!
ASHKA
- NaasmarMembre
- Nombre de messages : 185
Age : 27
Distinction : aucune
Date d'inscription : 15/03/2008
Re: Petit problème...
Mer 15 Avr 2009 - 19:15
UP !
- DarKalimHeroMembre
- Nombre de messages : 15
Distinction : aucune
Date d'inscription : 15/04/2009
Re: Petit problème...
Mer 15 Avr 2009 - 20:37
Salut,
Quelque chose me dit que c'est par là :
Quelque chose me dit que c'est par là :
- Code:
if HK_skillacc::Icone
bitmap = Cache.system(HK_skillacc::Nom_icone)
- NaasmarMembre
- Nombre de messages : 185
Age : 27
Distinction : aucune
Date d'inscription : 15/03/2008
Re: Petit problème...
Sam 18 Avr 2009 - 9:42
Merci mais... c'est à quelle ligne ?
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|