- playyesMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 14/06/2008
Script de cristaux de compétences
Ven 20 Juin 2008 - 7:52
Nom : Script pour avoir des accessoires permettant d'utiliser des competences
Nombre de script : 1 script (en 2 partit)
Info : Ce script permet d'avoir des " cristaux de competences " plus ou moins inspiré des oeufs Mana de Grandia ...
Il s'agit d'accessoire qui, une fois equipé, confere au porteur l'usage d'une competence.
Plus le porteur gagne de combat, plus le cristal se " remplit " d'energie/mana/exp/...
Ce " remplissage " permet au porteur d'utiliser de plus en plus de competence !!!
Le cristal " possede " les competences, pas le héros.
( Du moins pas avec ce script là ... [img]http://www.[j'aime faire de la pub].com/forum/images/smilies/icon_wink.gif[/img] )
C'est-a-dire qu'en changeant de cristal, il perd les competences.
Si un autre porteur utilise un cristal déjà " plein ", il beneficie de toutes les competences déjà acquises.
( Le temps où il portera le cristal evidement !! )
Les cristaux sont des exemplaires uniques !!
Pour en avoir plusieurs identiques, il faut en créer plusieurs dans la base de données.
( Chacun d'eux devra alors etre " remplit " ... )
Configuration en debut de script ...
Créer un nouveau script dans " materials " et collez y ceci :
2éme partit a coller juste en dessous la 1ére partit:
Nombre de script : 1 script (en 2 partit)
Info : Ce script permet d'avoir des " cristaux de competences " plus ou moins inspiré des oeufs Mana de Grandia ...
Il s'agit d'accessoire qui, une fois equipé, confere au porteur l'usage d'une competence.
Plus le porteur gagne de combat, plus le cristal se " remplit " d'energie/mana/exp/...
Ce " remplissage " permet au porteur d'utiliser de plus en plus de competence !!!
Le cristal " possede " les competences, pas le héros.
( Du moins pas avec ce script là ... [img]http://www.[j'aime faire de la pub].com/forum/images/smilies/icon_wink.gif[/img] )
C'est-a-dire qu'en changeant de cristal, il perd les competences.
Si un autre porteur utilise un cristal déjà " plein ", il beneficie de toutes les competences déjà acquises.
( Le temps où il portera le cristal evidement !! )
Les cristaux sont des exemplaires uniques !!
Pour en avoir plusieurs identiques, il faut en créer plusieurs dans la base de données.
( Chacun d'eux devra alors etre " remplit " ... )
Configuration en debut de script ...
Créer un nouveau script dans " materials " et collez y ceci :
- Spoiler:
- #===============================================================
#
# rpgmakervx.1fr1.net
#
#===============================================================
# Avoir des accessoires permettant d'utiliser des competences
# Un accessoire, une fois equipé permet au porteur d'utiliser certaines competences.
# Le nombre de competence augmente plus le porteur combat avec l'accessoire equipé.
# Une fois déséquipé, il perd l'usage des competences.
# Les competences " debloqué " par un porteur sont transmise au second porteur.
# Ces accessoires sont des exemplaires unique.
# Pour en avoir plusieurs identiques, il faut en créer plusieurs dans la base de donnée.
# Chacun devra alors etre porté pour debloqué toute les competences qu'il contient.
################################################################################
module Cskill
# Ce tableau stocke l'ID de tout les " cristals "
ID_CRISTAL = [32, 33, 34, 35, 36, 37]
# Ce tableau contient les competences qu'apprend chaque " cristals "
# A l'interieure des crochets, chaque blocs de crochets represente un cristal
# dont l'ordre correspond à celui du tableau precedent !!
SKILL = [[nil, 59, 60, 61, 62], [63, 64, 65, 66], [75, 76], [67, 68, 69, 70], [77, 78], [79, 80]]
# Exp gagné par combat remporter ( si equipé )
EXP = 5
# reference = ID du héros de labase de donnée dont les stats servent de base à la courbe d'exp du " cristal "
REF = 10
# chaque type correspond à une courbe de stats du héros de reference
# 1 = hp / 2 = mp / 3 = force / 4 = defense / 5 = intelligence / 6 = agilité
# distribuer vos cristaux entre ces 6 types d'evolutions
TYPE1 = [32]
TYPE2 = [33]
TYPE3 = [34]
TYPE4 = [35]
TYPE5 = [36]
TYPE6 = [37]
end
################################################################################
class Window_Status < Window_Base
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
for i in 0..4
draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
end
acc = @actor.equips[4].id
if Cskill::ID_CRISTAL.include?(acc)
test = $cristal_skill[acc]
lv = 0
####
ref = $data_actors[CskillREF]
if Cskill::TYPE1.include?(acc)
type = 0
elsif Cskill::TYPE2.include?(acc)
type = 1
elsif Cskill::TYPE3.include?(acc)
type = 2
elsif Cskill::TYPE4.include?(acc)
type = 3
elsif Cskill::TYPE5.include?(acc)
type = 4
elsif Cskill::TYPE6.include?(acc)
type = 5
end
need_exp = ref.parameters[type, (lv + 1)]
while test >= need_exp
test -= need_exp
lv += 1
need_exp = ref.parameters[type, (lv + 1)]
end
####
num = Cskill::ID_CRISTAL.index(acc)
max = Cskill::SKILL[num].size
if Cskill::SKILL[num][0] != nil
lv += 1
end
self.contents.draw_text( x + 16, y + WLH * 5 + 20, 150, 32, "Apprentissage : ")
if lv < max
self.contents.draw_text(x + 16 + 150, y + WLH * 5 + 20, 100, 32, lv.to_s + " / " + max.to_s)
else
self.contents.draw_text(x + 16 + 150, y + WLH * 5 + 20, 100, 32, "MAX")
end
end
end
end
################################################################################
class Scene_Equip < Scene_Base
def update_item_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@equip_window.active = true
@item_window.active = false
@item_window.index = -1
elsif Input.trigger?(Input::C)
Sound.play_equip
last_item = @actor.equips[@equip_window.index]
@actor.change_equip(@equip_window.index, @item_window.item)
if Cskill::ID_CRISTAL.include?(last_item.id)
num = Cskill::ID_CRISTAL.index(last_item.id)
for x in 0..(Cskill::SKILL[num].size - 1)
id = Cskill::SKILL[num][x]
if id != nil #
@actor.forget_skill(id)
end #
end
end
if @equip_window.index == 4
item_id = @item_window.item.id
if Cskill::ID_CRISTAL.include?(item_id)
test = $cristal_skill[item_id]
lv = 0
####
ref = $data_actors[CskillREF]
if Cskill::TYPE1.include?(item_id)
type = 0
elsif Cskill::TYPE2.include?(item_id)
type = 1
elsif Cskill::TYPE3.include?(item_id)
type = 2
elsif Cskill::TYPE4.include?(item_id)
type = 3
elsif Cskill::TYPE5.include?(item_id)
type = 4
elsif Cskill::TYPE6.include?(item_id)
type = 5
end
need_exp = ref.parameters[type, (lv + 1)]
while test >= need_exp
test -= need_exp
lv += 1
need_exp = ref.parameters[type, (lv + 1)]
end
####
for i in 0..lv
num = Cskill::ID_CRISTAL.index(item_id)
unless i >= Cskill::SKILL[num].size
skill_id = Cskill::SKILL[num][i]
if skill_id != nil #
@actor.learn_skill(skill_id)
end #
end
end
end
end
@equip_window.active = true
@item_window.active = false
@item_window.index = -1
@equip_window.refresh
for item_window in @item_windows
item_window.refresh
end
end
end
end
2éme partit a coller juste en dessous la 1ére partit:
- Spoiler:
################################################################################
class Scene_Battle < Scene_Base
def process_victory
@info_viewport.visible = false
@message_window.visible = true
RPG::BGM.stop
$game_system.battle_end_me.play
unless $BTEST
$game_temp.map_bgm.play
$game_temp.map_bgs.play
end
display_exp_and_gold
display_drop_items
display_level_up
for actor in $game_party.existing_members
if Cskill::ID_CRISTAL.include?(actor.armor4_id)
$cristal_skill[actor.armor4_id] += Cskill::EXP
end
end
for actor in $game_party.members
if Cskill::ID_CRISTAL.include?(actor.armor4_id)
test = $cristal_skill[actor.armor4_id]
lv = 0
####
ref = $data_actors[CskillREF]
if Cskill::TYPE1.include?(actor.armor4_id)
type = 0
elsif Cskill::TYPE2.include?(actor.armor4_id)
type = 1
elsif Cskill::TYPE3.include?(actor.armor4_id)
type = 2
elsif Cskill::TYPE4.include?(actor.armor4_id)
type = 3
elsif Cskill::TYPE5.include?(actor.armor4_id)
type = 4
elsif Cskill::TYPE6.include?(actor.armor4_id)
type = 5
end
need_exp = ref.parameters[type, (lv + 1)]
while test >= need_exp
test -= need_exp
lv += 1
need_exp = ref.parameters[type, (lv + 1)]
end
####
for i in 0..lv
num = Cskill::ID_CRISTAL.index(actor.armor4_id)
unless i >= Cskill::SKILL[num].size
skill_id = Cskill::SKILL[num][i]
if skill_id != nil #
actor.learn_skill(skill_id)
end #
end
end
end
end
battle_end(0)
end
end
################################################################################
class Scene_Title < Scene_Base
def start
super
$cristal_skill = Hash.new(0)
load_database # Load database
create_game_objects # Create game objects
check_continue # Determine if continue is enabled
create_title_graphic # Create title graphic
create_command_window # Create command window
play_title_music # Play title screen music
end
def command_new_game
confirm_player_location
Sound.play_decision
for id in Cskill::ID_CRISTAL
$cristal_skill[id] = 0
end
$game_party.setup_starting_members # Initial party
$game_map.setup($data_system.start_map_id) # Initial map position
$game_player.moveto($data_system.start_x, $data_system.start_y)
$game_player.refresh
$scene = Scene_Map.new
RPG::BGM.fade(1500)
close_command_window
Graphics.fadeout(60)
Graphics.wait(40)
Graphics.frame_count = 0
RPG::BGM.stop
$game_map.autoplay
end
end
################################################################################
class Scene_File < Scene_Base
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([actor.character_name, actor.character_index])
end
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($cristal_skill, file)
end
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$cristal_skill = Marshal.load(file)
if $game_system.version_id != $data_system.version_id
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
end
- playyesMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 14/06/2008
Re: Script de cristaux de compétences
Ven 20 Juin 2008 - 7:54
Nouvelle Version :
[ L'auteur du pos original est ASHKA ]
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 !!
Il y a une petite modification à faire dans les scripts de base ( Game_Actor ) :
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" :
Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !! :lol:
ASHKA
[ L'auteur du pos original est ASHKA ]
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 !!
- 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" :
Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !! :lol:
ASHKA
- LhyroMembre
- Nombre de messages : 47
Age : 32
Localisation : Belgique
Distinction : aucune
Date d'inscription : 04/05/2008
Re: Script de cristaux de compétences
Ven 20 Juin 2008 - 9:49
tu ne pourrait pas nous envoyer une image comme exemple s'il te plaît ? Car je ne comprend pas le systeme ^^
- playyesMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 14/06/2008
Re: Script de cristaux de compétences
Sam 21 Juin 2008 - 16:59
Désolé mais je ne arrive pas a placer le script correctement , je vais demander a son créateur , je vous tient au courant !
- LhyroMembre
- Nombre de messages : 47
Age : 32
Localisation : Belgique
Distinction : aucune
Date d'inscription : 04/05/2008
Re: Script de cristaux de compétences
Sam 21 Juin 2008 - 17:24
A propos de l'auteur il faudrait citer son nom^^
Re: Script de cristaux de compétences
Mar 24 Juin 2008 - 15:53
C'est bête d'avoir fait ce script. On aurai bien pu le faire en évent.
Re: Script de cristaux de compétences
Mar 24 Juin 2008 - 16:15
Il n'empêche que si tu ne donne pas le nom de l'auteur, je serais obligé de supprimer ce topic.
Dépèche toi, je te laisse un peu de temps !
Dépèche toi, je te laisse un peu de temps !
_________________
Script de cristaux de compétences
Jeu 26 Juin 2008 - 22:55
Pour vous éclairer, ce script est d' ASHKA .
Re: Script de cristaux de compétences
Jeu 26 Juin 2008 - 23:12
Merci de l'info Arius !
playyes : La prochaine fois que tu poste un script, pense à mettre le nom de l'auteur, ou il sera effacé sur le champ...
playyes : La prochaine fois que tu poste un script, pense à mettre le nom de l'auteur, ou il sera effacé sur le champ...
_________________
- pinguino21vMembre
- Nombre de messages : 199
Age : 35
Localisation : Vous êtes ici
Distinction : aucune
Date d'inscription : 22/07/2008
Re: Script de cristaux de compétences
Mar 19 Aoû 2008 - 23:59
J'aimerai me servir de ce système mais auparavant, y'a-t-il moyen qu'un chef en script le modifie afin de choisir l'experience obtenu pour chaque ennemi? Je souhaiterai que chaque monstre offre 1 ou 2 points et les boss plus. J'ai essayé de modifier mais la seule chose que j'ai réussi à faire est de planter le jeu.
- ASHKAMembre
- Nombre de messages : 242
Age : 42
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008
[MAJ] Competences via accessoires
Mer 3 Déc 2008 - 19:55
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 !!
Il y a une petite modification à faire dans les scripts de base ( Game_Actor ) :
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" :
Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !!
ASHKA
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 !!
- 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" :
Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !!
ASHKA
- ElscortoMembre
- Nombre de messages : 486
Age : 39
Localisation : Dans sa tombe en ce moment
Distinction : Homme de goût en chef.
Date d'inscription : 10/07/2008
Re: Script de cristaux de compétences
Jeu 4 Déc 2008 - 9:17
Pourquoi tu mets qu'on ne l'utilisera pas,ton script m'a bien l'air sympatoche.
Merci de ton travail
Merci de ton travail
- ASHKAMembre
- Nombre de messages : 242
Age : 42
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008
Re: Script de cristaux de compétences
Jeu 4 Déc 2008 - 10:05
Non, tu as mal compris !!
Je parle juste des icones toutes moches, qu'il faudra refaire selon vos gouts.
Enfin, pour les etoiles comme pour le script, vous faites ce que vous voulez !!
ASHKA
Voila le fichier pour les "étoiles" :
[...]
Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !!
Je parle juste des icones toutes moches, qu'il faudra refaire selon vos gouts.
Enfin, pour les etoiles comme pour le script, vous faites ce que vous voulez !!
ASHKA
Re: Script de cristaux de compétences
Jeu 4 Déc 2008 - 16:34
Je viens faire mes courses, hein, faites pas attention à moi ......
Merci ASHKA !!!! x)
Merci ASHKA !!!! x)
_________________
- MuteoMembre
- Nombre de messages : 89
Distinction : aucune
Date d'inscription : 18/11/2008
Re: Script de cristaux de compétences
Mer 4 Nov 2009 - 17:26
UP petit problème : ça ne marche pas !
Jai lu le script à 100%, lorsque je tu un monstre, je ne gagne pas d'exp de cristal.
Je pense que cela vient du cristal lui-même. Comment devons-nous le configurer ?
Jai lu le script à 100%, lorsque je tu un monstre, je ne gagne pas d'exp de cristal.
Je pense que cela vient du cristal lui-même. Comment devons-nous le configurer ?
- MuteoMembre
- Nombre de messages : 89
Distinction : aucune
Date d'inscription : 18/11/2008
Re: Script de cristaux de compétences
Ven 6 Nov 2009 - 19:27
UP
- ASHKAMembre
- Nombre de messages : 242
Age : 42
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008
Re: Script de cristaux de compétences
Sam 7 Nov 2009 - 9:30
Je viens de tester et ça fonctionne parfaitement.
Il y a au minimum deux choses à faire :
- Configurer les accessoires dans l'entête du script.
( En partant du principe qu'ils existent déjà dans la BDD evidement ).
- Equiper le/les héros avec ces accessoires avant d'aller combattre.
En ce qui concerne la configuration :
Le nombre avant le symbole "=>" represente l'ID des accessoires.
Ensuite, ils y a plusieurs blocs entre crochets.
Chaques blocs representent une competence "accessible".
Le premier nombre est l'experience necessaire à l'acquisition, le second, l'ID de la competence à acquerir.
Donc, ici, si j'equipe l'accessoire d'ID 33, je pourrais directement utiliser la competence d'ID 63 ( car 0 exp necessaire ).
Par contre, si j'equipe l'accessoire 32, il faudra que je combatte un peu avant de pouvoir utiliser la competence d'ID 59.
( Le nombre d'exp obtenu par defaut etant fixé à 2, je devrait tuer au moins 5 ennemis avant "d'apprendre" cette competence. )
Il y a au minimum deux choses à faire :
- Configurer les accessoires dans l'entête du script.
( En partant du principe qu'ils existent déjà dans la BDD evidement ).
- Equiper le/les héros avec ces accessoires avant d'aller combattre.
En ce qui concerne la configuration :
# 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]]
}
Le nombre avant le symbole "=>" represente l'ID des accessoires.
Ensuite, ils y a plusieurs blocs entre crochets.
Chaques blocs representent une competence "accessible".
Le premier nombre est l'experience necessaire à l'acquisition, le second, l'ID de la competence à acquerir.
Donc, ici, si j'equipe l'accessoire d'ID 33, je pourrais directement utiliser la competence d'ID 63 ( car 0 exp necessaire ).
Par contre, si j'equipe l'accessoire 32, il faudra que je combatte un peu avant de pouvoir utiliser la competence d'ID 59.
( Le nombre d'exp obtenu par defaut etant fixé à 2, je devrait tuer au moins 5 ennemis avant "d'apprendre" cette competence. )
- MuteoMembre
- Nombre de messages : 89
Distinction : aucune
Date d'inscription : 18/11/2008
Re: Script de cristaux de compétences
Sam 7 Nov 2009 - 13:06
Oui j'ai compris mais merci quand même !
Sauf que je n'arrive pas à gagner d'expérience avec les script ! Mon experience de cristal reste à Zero !
Edit : même pour les compétences qui requiert 0 exp, je ne les ai pas, bien que mon cristal montre que je suis au niveau 2 !
Sauf que je n'arrive pas à gagner d'expérience avec les script ! Mon experience de cristal reste à Zero !
Edit : même pour les compétences qui requiert 0 exp, je ne les ai pas, bien que mon cristal montre que je suis au niveau 2 !
- MuteoMembre
- Nombre de messages : 89
Distinction : aucune
Date d'inscription : 18/11/2008
Re: Script de cristaux de compétences
Mar 10 Nov 2009 - 22:01
UP
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum