Voilà un script qui permet à vos personnages d'augmenter leur caractéristiques:
Créer un script Window_caracplus.
Ensuite mettez-y le code suivant:
Pour finir je vous donne les conseils pour le mettre en route.
Créer un evenement et mettez le code suivant.
IMPORTANT: x=nombre de points de caractéristiques
REMARQUE: Si vous voulez donner des points aux autres persos il faut coller ce code:
Autant de X que de personnages!!!
UTILISATION:
Vous pouvez faire un evenement commun pour qu'à chaque niveau cela distribue des points de caractéristiques!!!
Screen :
Bonne journée.
Créer un script Window_caracplus.
Ensuite mettez-y le code suivant:
- Code:
#=======================================================================
# ■ Distribution de point de caractéristiques
# ■ Scene_caracplus v1.0 par h2o74
#=======================================================================
# Ecrit par Krazplay, remastoriser par h2o74. Cadeaux ^^# A la base Krazplay l'a crer mais bourrer de bu, donc remodifier ^^
# Nécessite : le scrîpt Window_caracplus
# Description :
# Permet de donner des points à distribuer à n'importe quel personnage de l'équipe entre ses
# 4 caractéristiques principales (force, agilité, dextérité et intelligence).
# Utilisation :
# A l'aide de la ligne de scrîpt suivante dans n'importe quel scrîpt ou évènement :
# $scene = Scene_caracplus.new(acteurs, points à distribuer)
# Attention, ces deux variables doivent être des arrays (tableaux).
# MAUVAIS exemples : acteurs = $game_party.actors[0] points = 10
# BONS exemples : acteurs = [$game_party.actors[0]] points = [10]
# Ainsi pour donner 8 point au premier héro de l'équipe et 5 points au troisième, la bonne commande sera :
# $scene = Scene_caracplus.new([$game_party.actors[0], $game_party.actors[2]], [8,5])
# Pour donner 10 points à toute l'équipe on écrirait :
# $scene = Scene_caracplus.new($game_party.actors, [10,10,10,10])
# Oui $game_party.actors est déjà un tableau donc il n'a pas besoin de crochets supplémentaires
# Eviter de distribuer 0 ou nil point, enlever plutôt l'acteur de la variable.
#script PERMETTANT DE DEPENSER DE3S POIINTS DE CARCTERISTIK
#=======================================================================
class Scene_caracplus
def initialize(actors, pointgagnés, n=0)
@n = n
@actors = actors
@pg = pointgagnés
@pointgagnés = pointgagnés[n]
@actor = actors[n]
@confirmation = false
end
def main
@caracplus_window = Window_Caracplus.new(@actor,@pointgagnés)
Graphics.transition
loop do
Graphics.update
Input.update
update_command
if $scene != self
@caracplus_window.dispose
Graphics.update
if @actors.size > @n+1 and @pg[@n+1] != nil
$scene = Scene_caracplus.new(@actors, @pg, @n+1)
else if @actors.size > @n+2 and @pg[@n+2] != nil
$scene = Scene_caracplus.new(@actors, @pg, @n+2)
else if @actors.size > @n+3 and @pg[@n+3] != nil
$scene = Scene_caracplus.new(@actors, @pg, @n+3)
end
end
end
break
end
end
end #main
def update_command
if Input.trigger?(Input::DOWN) and @confirmation != true
@caracplus_window.ligneplusun
@caracplus_window.refresh
end
if Input.trigger?(Input::UP) and @confirmation != true
@caracplus_window.lignemoinsun
@caracplus_window.refresh
end
if Input.trigger?(Input::LEFT) and @confirmation != true
@caracplus_window.pointmoinsun
@caracplus_window.refresh
end
if Input.trigger?(Input::RIGHT) and @confirmation != true
@caracplus_window.pointplusun
@caracplus_window.refresh
end
if Input.trigger?(Input::B) and @confirmation != true #Cancel
@caracplus_window.pointazero
@caracplus_window.refresh
end
if Input.trigger?(Input::B) and @confirmation == true #Cancel
@confirmation = false
@confirmer_window.dispose
end
if Input.trigger?(Input::C) #Confirmer
if @confirmation == true
@confirmation = false
@confirmer_window.dispose
@caracplus_window.terminer
$scene = Scene_Map.new
else
if @caracplus_window.toutestbon? == true and @confirmation != true
@confirmer_window = Window_confirmer.new(450,20)
@confirmation = true
end
end
end
if Input.trigger?(Input::X) #Touche A
for i in 0..14
@caracplus_window.pointmoinsun
end
@caracplus_window.refresh
end
if Input.trigger?(Input::A) #Touche Z
for i in 0..14
@caracplus_window.pointplusun
end
@caracplus_window.refresh
end
end
end
#=======================================================================
# ■ Distribution de point de caractéristiques
# ■ Window_caracplus v1.0 par Krazplay
#=======================================================================
# Ecrit par Krazplay, version la plus à jour disponible sur le forum du site rpgmakerxp.free.fr
# Nécessite : le scrîpt Scene_caracplus
# Description et Utilisation décris dans le scrîpt Scene_caraplus
#=======================================================================
class Window_Caracplus < Window_Base
def initialize(actor,pointgagnés)
super(5, 5, 630, 470)
@ligne = 0
@actor = actor
@statplus = [0,0,0,0]
@pointgagnés = pointgagnés
@pointarépartir = pointgagnés
self.contents = Bitmap.new(width-32, height-32)
self.contents.font.name = "Arial"
self.contents.font.size = 24
self.contents.clear
deséquipement
@str = actor.str
@dex = actor.dex
@agi = actor.agi
@int = actor.int
@carac = [@str, @dex, @agi, @int]
refresh
end
def refresh
self.contents.clear
self.cursor_rect.set(190, (240 + 30*@ligne), 175, 30)
actor = @actor
self.contents.font.name = "Arial"
self.contents.font.color = normal_color
self.draw_actor_battler(actor, 90, 270)
self.draw_actor_graphic(actor, 80, 140)
self.contents.font.size = 26
longueur = contents.text_size(actor.name).width
self.draw_actor_name(actor, self.width/2-longueur/2, 10)
self.contents.font.size = 24
self.contents.draw_text(0, 50, self.width, 32, actor.class_name.to_s+" Lv "+actor.level.to_s, 1)
self.draw_actor_exp(actor, 200, 78)
self.draw_actor_hp(actor, 200, 101, width = 144)
self.draw_actor_sp(actor, 200, 124, width = 144)
équiper
self.draw_actor_parameter(actor, 200, 150, 0)
self.draw_actor_parameter(actor, 200, 175, 1)
self.draw_actor_parameter(actor, 200, 200, 2)
deséquipement
self.contents.font.color = system_color
self.contents.draw_text(200, 240, 120, 32, $data_system.words.str)
self.contents.draw_text(200, 270, 120, 32, $data_system.words.dex)
self.contents.draw_text(200, 300, 120, 32, $data_system.words.agi)
self.contents.draw_text(200, 330, 120, 32, $data_system.words.int)
self.contents.font.color = normal_color
self.contents.draw_text(320, 240, 36, 32, @str.to_s, 2)
self.contents.draw_text(320, 270, 36, 32, @dex.to_s, 2)
self.contents.draw_text(320, 300, 36, 32, @agi.to_s, 2)
self.contents.draw_text(320, 330, 36, 32, @int.to_s, 2)
for i in 0..3
self.contents.font.color = Color.new(255, 155, 155, 255)
self.contents.draw_text(370, 240+30*i, 36, 32, "+")
self.contents.draw_text(390, 240+30*i, 36, 32, @statplus[i].to_s, 2)
self.contents.font.color = Color.new(155, 255, 155, 255)
self.contents.draw_text(450, 240+30*i, 36, 32, "=")
stat = @carac[i] + @statplus[i]
self.contents.draw_text(490, 240+30*i, 36, 32, stat.to_s, 2)
end
self.contents.font.color = normal_color
self.contents.draw_text(50, 380, 320, 32, "Nombre de points à répartir :")
self.contents.draw_text(330, 380, 36, 32, @pointarépartir.to_s, 2)
self.contents.draw_text(430, 150, 108, 32, "[A/Z = (-15)/(+15)]")
self.contents.draw_text(430, 175, 72, 32, "[X = Reset]")
end
def ligneplusun
if @ligne<3
@ligne += 1
end
end
def lignemoinsun
if @ligne>0
@ligne -= 1
end
end
def pointmoinsun
i = @ligne
if @statplus[i]-1 > -1
@statplus[i] -= 1
@pointarépartir += 1
end
end
def pointplusun
i = @ligne
if @pointarépartir > 0 and @statplus[i]+@carac[i]+1 < 1000
@statplus[i] += 1
@pointarépartir -= 1
end
end
def pointazero
@statplus = [0,0,0,0]
@pointarépartir = @pointgagnés
end
def toutestbon?
if @pointarépartir == 0
return true
else
return false
end
end
def terminer
$game_actors[@actor.id].str += @statplus[0]
$game_actors[@actor.id].dex += @statplus[1]
$game_actors[@actor.id].agi += @statplus[2]
$game_actors[@actor.id].int += @statplus[3]
@actor.equip(0, @weapon_id)
@actor.equip(1, @armor1_id)
@actor.equip(2, @armor2_id)
@actor.equip(3, @armor3_id)
@actor.equip(4, @armor4_id)
end
def équiper
@actor.equip(0, @weapon_id)
@actor.equip(1, @armor1_id)
@actor.equip(2, @armor2_id)
@actor.equip(3, @armor3_id)
@actor.equip(4, @armor4_id)
end
def deséquipement
@weapon_id = @actor.weapon_id
@armor1_id = @actor.armor1_id
@armor2_id = @actor.armor2_id
@armor3_id = @actor.armor3_id
@armor4_id = @actor.armor4_id
@actor.equip(0, 0)
@actor.equip(1, 0)
@actor.equip(2, 0)
@actor.equip(3, 0)
@actor.equip(4, 0)
end
def draw_actor_battler(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect)
end
end
class Window_confirmer < Window_Base
def initialize(x,y)
super(x, y, 150, 64)
self.contents = Bitmap.new(width-32, height-32)
self.contents.font.name = "Arial"
self.contents.font.size = 24
self.contents.draw_text(0, 0, 120, 32, "Confirmer ?")
end
end
Pour finir je vous donne les conseils pour le mettre en route.
Créer un evenement et mettez le code suivant.
- Code:
$scene = Scene_caracplus.new($game_party.actors, [x])
IMPORTANT: x=nombre de points de caractéristiques
REMARQUE: Si vous voulez donner des points aux autres persos il faut coller ce code:
- Code:
$scene = Scene_caracplus.new($game_party.actors, [x,x,x,x])
Autant de X que de personnages!!!
UTILISATION:
Vous pouvez faire un evenement commun pour qu'à chaque niveau cela distribue des points de caractéristiques!!!
Screen :
Bonne journée.