Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Point de caractéristiques

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

1RPG Maker XP Point de caractéristiques le Sam 18 Oct - 11:39

Grégory


Membre Royal
Membre Royal
Voilà un script qui permet à vos personnages d'augmenter leur caractéristiques:

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.

Voir le profil de l'utilisateur http://zgk-software.forumactif.info/forum.htm

2RPG Maker XP Re: Point de caractéristiques le Sam 18 Oct - 11:46

Venox


Fondateur
Fondateur
Très bon script mais tu a oublier de mettre l'auteur :surp: !

Voir le profil de l'utilisateur

3RPG Maker XP Re: Point de caractéristiques le Sam 18 Oct - 11:58

Grégory


Membre Royal
Membre Royal
# ■ Distribution de point de caractéristiques
# ■ Scene_caracplus v1.0 par h2o74

Regarde l'entête du script la prochaine fois :p

Voir le profil de l'utilisateur http://zgk-software.forumactif.info/forum.htm

4RPG Maker XP Re: Point de caractéristiques le Sam 18 Oct - 15:17

Zack Fair


Membre Actif
Membre Actif
Oui , bon script.
Je vais pas te dire de mettre l'auteur , car mes coquipiers l'ont fait. Mais la prochaine fois , faut lire les régles avant de poster n'importe chose. Méme si l'auteur est présent sur l'entéte , tu dois le mettre. :)
Merci

Voir le profil de l'utilisateur http://www.google.com

5RPG Maker XP Re: Point de caractéristiques le Sam 18 Oct - 15:25

Grégory


Membre Royal
Membre Royal
Heuu c'est pas parce que c'est dans l'entête qu'on doit forcément le mettre, tout les auteurs sont sur l'entête des script, donc ce n'est pas important, faut lire l'entête...
Sinon oui c'est un bon script, permet de monter les caractéristiques que l'ont veut. J'lavais utiliser y'a pas mal de temps.

Voir le profil de l'utilisateur http://zgk-software.forumactif.info/forum.htm

6RPG Maker XP Re: Point de caractéristiques le Sam 18 Oct - 15:32

Zack Fair


Membre Actif
Membre Actif
ouais si tu le dis

Voir le profil de l'utilisateur http://www.google.com

7RPG Maker XP Re: Point de caractéristiques le Sam 18 Oct - 20:23

J aime bien ce script mais je voulais savoir qi il etait compatible avec le menu mog hunter?

Voir le profil de l'utilisateur

8RPG Maker XP Re: Point de caractéristiques le Dim 19 Oct - 7:29

Grégory


Membre Royal
Membre Royal
Tu peut le mettre dans le menu via une commande, donc ben je pense qu'il est compatible oui.

Voir le profil de l'utilisateur http://zgk-software.forumactif.info/forum.htm

9RPG Maker XP Re: Point de caractéristiques le Jeu 23 Oct - 14:19

Zack Fair


Membre Actif
Membre Actif
Oui , absolument , mais je ne préfére pas cela , car avec un event ca sera mieux. Enfin , c'est votre choix


***********Signature************

N'hésitez pas a me poser des questions , je peux toujours vous aider.
Vous débutez en Ruby ? Vous voulez créer vos propres scripts ? Alors , c'est la :http://make-and-graph.superforum.fr/cours-de-ruby-f53/?sid=e4ead003bf5ada2435676a0d824bc275
Suivez les cours que je poste , et vous allez surement étre des bons scripteurs !!
Voir le profil de l'utilisateur http://www.google.com

10RPG Maker XP Re: Point de caractéristiques le Jeu 23 Oct - 14:31

Grégory


Membre Royal
Membre Royal
Oui, le mieux se serais de l'activer quand le héros monte d'un niveau ^^

Voir le profil de l'utilisateur http://zgk-software.forumactif.info/forum.htm

11RPG Maker XP Re: Point de caractéristiques Aujourd'hui à 7:42

Contenu sponsorisé


Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum