AccueilAccueil  PortailPortail  CalendrierCalendrier  TutorielsTutoriels  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  ConnexionConnexion  

Partagez | 
 

 Systeme d'affichage des stats augmenté après un gain d'exp.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jordinateur
Blob
Blob
avatar

Nombre de messages : 260
Localisation : Devant mon ordinateur !(enfin sa dépend, peut-être avec ma copine aussi ^^)
Humeur/Caractère : Aller a l'école T_T
Date d'inscription : 12/05/2006

MessageSujet: Systeme d'affichage des stats augmenté après un gain d'exp.   Dim 21 Mai - 0:38

Bien souvent, dans des aventures, une fois une quête réussie, la récompense vient en espèces sonnantes et trébuchantes et aussi en XP (points d'expérience).

C'est bien et c'est... normal.

Et en plus, c'est facile à faire ! Dans un event il suffit de choisir l'option "Ajouter des XP au groupe".

Bien. Mais... si vous donnez un certain nombre de XP au groupe, peut-être voulez-vous savoir, en tant que joueur, si quelqu'un de votre équipe a passé un niveau,... comme à la fin de combats et savoir si une nouvelle technique a été apprise, etc...
Eh bien, voici un petit script qui va permettre d'avoir cette information et qui va préciser, par la même occasion, le nombre de XP reçus. Et comme toujours, le script est très commenté.

Arrow tout d'abord créez un nouveau script dans l'éditeur que vous nommerez "Passer Niveau"

Arrow Collez-y le script suivant :
Code:
# Script créé par Corwin
# http://www.pellnet.ch/9S
# version 1
# 15.12.2005
# script optimisé pour un team de 1 à 5 compagnons
# contact : yann@pellissier.ch
# --------------------------------------------------------------------------
#
# Ce script va afficher une fenêtre lorsque dans un event
# on attribue des points d'expérience à l'équipe.
# Si, avec ces nouveaux XP, l'un des membres de l'équipe passe
# un ou des niveaux, c'est indiqué.
#
# par contre, il ne faut PAS passer par l'ajout de XP standard dans
# l'event, sinon cette fenêtre ne va pas s'afficher.
#
# Il faut appeler la fonction ainsi dans un event :
# --> Insérer un script :
#  <> call_XP(alpha)
#
# en remplaçant la variable "alpha" par le nombre de XP qu'il faut donner à l'équipe
#
# Attention, ce script donne des XP à TOUTE L'EQUIPE, sans distinction.
# Donc, si vous souhaitez donner des XP à seulement 1 membre de l'équipe
# il faut passer par l'attibution standard de XP et tant pis pour cette fenêtre d'info...
#
# Projet version 2 : préciser à qui on veut donner des XP


#--------------------------------------------------------------------------
class Scene_LvL_UP
#--------------------------------------------------------------------------

def main


   
   
    # lancement de la fenêtre d'info des XP
    @lvlup_window = Window_LvL_UP.new


    # Boucle de transition, mise à jour graphique et entré clavier
    Graphics.transition
    # boucle

    loop do
    # Mise à jour graphique
    Graphics.update
    # Mise à jour des entrées clavier

    Input.update
    # Mise à jour de la class
    update

    # Si la scene n'existe plus, alors sortir de la boucle
    if $scene != self
    break
    end
    end
    # figer les graphiques
    Graphics.freeze
    # destruction des objets
    if @lvlup_window.dispose != nil
    @lvlup_window.dispose
    end

end

#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update

# Gestion des entrées clavier
# Si B ou C est appuyé
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
 
# jouer le son d'annulation
$game_system.se_play($data_system.cancel_se)
# Revenir à la carte
$scene = Scene_Map.new

return
end
end
end



# ---------------------------------------- 
# on définit la fonction à appeler,
# avec la variable alpha qui représente les XP à donner
# ----------------------------------------
  def call_XP(alpha)
    if alpha != nil
        $XP_gained = alpha
    else
        $XP_gained = 1
  end
 
    # on lance la scene en question
    $scene = Scene_LvL_UP.new

end



#--------------------------------------------------------------------------
class Window_LvL_UP < Window_Base
#--------------------------------------------------------------------------

#-rajout images des battlers
# attention, il faut avoir créé des icônes, images, visages
# des personnages. Ces images devront se trouver dans le répertoire
# adéquat (pictures) et se nommer avec le nom du personnage avec _small à la fin

# si vous ne souhaitez pas avoir ces images, supprimez simplement cette petite partie

def draw_actor_visage(actor, x, y)
f_name = actor.battler_name + "_small.png"
f_hue = actor.battler_hue
bitmap = RPG::Cache.battler(f_name, f_hue)
cw = 120; ch = 75
src_rect = Rect.new(-18, -18, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end

 #- fin rajout images battlers



def initialize

 
  super(0, 0, 640, 480)
  self.contents = Bitmap.new(width - 32, height - 32)
  self.visible = true
  # self.back_opacity =0 
  self.opacity = 160 
 
 

    # calcul de la largeur du texte
  self.contents.font.name = $fontface
    self.contents.font.size = $fontsize+6
    self.contents.font.color = system_color
    the_niveau_text = "Vous recevez #{$XP_gained} Points d'expérience" 
    the_niveau = contents.text_size(the_niveau_text).width   
    self.contents.font.size = $fontsize
    self.contents.font.color = normal_color
    self.contents.clear

 
        self.contents.font.color = gold_color
        self.contents.font.name = $fontface
        self.contents.font.size = $fontsize+6
        self.contents.draw_text(0, 0, the_niveau, 32, the_niveau_text, 2)   
   
   
    team_levelup = 0  # variable qui va préciser si au moins un persg du team monte d'un niveau
 

    for i in 0...$game_party.actors.size      # on passe tous les persg en revue
      actor = $game_party.actors[i]
     
      class_id = actor.class_id  # information de l'ID de la classe de chaque personnage
     
      actor_x = i * 125 + 4            # largeur des infos par persg
      y = 32                                        # hauteur standard de ligne
 
   
      old_level = actor.level          # on variabilise le niveau du persg avant de donner les XP
      old_maxhp = actor.maxhp      # max PV avant niveau
      old_maxsp = actor.maxsp      # max MP avant niveau
      old_str = actor.str                    # force avant niveau
      old_dex = actor.dex                #  dextérité avant niveau
      old_agi = actor.agi                  # agilité avant niveau
      old_int = actor.int                      # intelligence avant niveau

     
      # on attribue les XP au persg
      actor.exp += $XP_gained   

     
     
      new_level = actor.level        # on variabilise le nouveau niveau du persg après lesXP
      new_maxhp = actor.maxhp      # max PV après niveau
      new_maxsp = actor.maxsp      # max MP après niveau
      new_str = actor.str                    # force après niveau
      new_dex = actor.dex                #  dextérité après niveau
      new_agi = actor.agi                  # agilité après niveau
      new_int = actor.int                      # intelligence après niveau       
     
     
      # on calcul les valeurs ajoutées
      add_maxhp = new_maxhp - old_maxhp    # différence des PV
      add_maxsp = new_maxsp - old_maxsp    # différence des MP
      add_str = new_str - old_str    # différence force
      add_dex = new_dex - old_dex    # différence dextérité
      add_agi = new_agi - old_agi    # différence agilité
      add_int = new_int - old_int    # différence intelligence
     
     
      if new_level > old_level
        # le nouveau niveau est plus élevé que l'ancien niveau
        # donc le persg a pasé un niveau !
         
         
         
         
        # on affiche, par persg les informations du nouveau niveau
               
        self.contents.font.color = normal_color
        self.contents.font.size = $fontsize
        draw_actor_visage(actor, actor_x+32, y*2+32)
        draw_actor_name(actor, actor_x, y*3)
        draw_actor_class(actor, actor_x,y*4)
       
        self.contents.font.color = green_color
        self.contents.font.size = $fontsize-2
        self.contents.draw_text(actor_x, y*5, the_niveau, 32, "Niveau gagné !", 0)
        self.contents.font.size = $fontsize
        self.contents.draw_text(actor_x, y*6, the_niveau, 32, "De #{old_level} à #{new_level}", 0)
        self.contents.font.size = $fontsize-4
        self.contents.font.color = system_color
        self.contents.draw_text(actor_x, y*7, the_niveau, 32, "#{$data_system.words.hp}: +#{add_maxhp}", 0)
        self.contents.draw_text(actor_x, y*7+16, the_niveau, 32, "#{$data_system.words.sp}: +#{add_maxsp}", 0)
        self.contents.draw_text(actor_x, y*8, the_niveau, 32, "#{$data_system.words.str[0,3]}: +#{add_str}", 0)
        self.contents.draw_text(actor_x, y*8+16, the_niveau, 32, "#{$data_system.words.dex[0,3]}: +#{add_dex}", 0)
        self.contents.draw_text(actor_x, y*9, the_niveau, 32, "#{$data_system.words.agi[0,3]}: +#{add_agi}", 0)
        self.contents.draw_text(actor_x, y*9+16, the_niveau, 32, "#{$data_system.words.int[0,3]}: + #{add_int}", 0)
       
        # on incrémente la variable
        team_levelup += 1
       
      end
     
     
      # on checke si une nouvelle SKILL est apprise
     
      for i in 0...$data_classes[class_id].learnings.size  # on passe en revue les skills des persg
        skill_lv = $data_classes[class_id].learnings[i].level
     
        if skill_lv > old_level and skill_lv <= new_level    # on teste le niveau du la skill et du persg
     
              #skill obtenue, on l'affiche
            skill_nom = $data_skills[$data_classes[class_id].learnings[i].skill_id].name
            self.contents.font.name = $fontface
            self.contents.font.size = $fontsize-6
            self.contents.font.color = normal_color
            self.contents.draw_text(actor_x, y*11, the_niveau, 32, "Technique apprise:")
            self.contents.draw_text(actor_x, y*11+16, the_niveau, 32, skill_nom)
       
        end
     
     
     
    end
   
 # ...     
        end
   
         
  if  team_levelup < 1    #personne ne monte de niveau

        self.contents.font.color = red_color
        self.contents.font.size = $fontsize+2
        self.contents.draw_text(-120, 80, self.width, 32,"malheureusement, personne ne monte de niveau.", 2)
 
    end
   
   
    end

end

Arrow A noter les points suivants :

Like a Star @ heaven Attention, il faut avoir créé des icônes, images, visages des personnages. Ces images devront se trouver dans le répertoire adéquat (pictures) et se nommer avec le nom du personnage avec _small à la fin (détails dans le script)
Like a Star @ heaven Pour appeler ce script, mettre dans l'event en question ceci :
Code:
Insérer un script :
<> call_XP(alpha)
en remplaçant la variable "alpha" par le nombre de XP qu'il faut donner à l'équipe (détails dans le script).
Et voici le résultat :

http://img206.imageshack.us/my.php?image=niveaua3hq.jpg

http://img206.imageshack.us/my.php?image=niveaub1tn.jpg

Script V.1 by Corwin
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zelda_PL
Blob Jaune
Blob Jaune
avatar

Masculin
Nombre de messages : 797
Age : 24
Localisation : En train d'éliminé les deadras de Cyrodiil
Date d'inscription : 09/05/2006

MessageSujet: Re: Systeme d'affichage des stats augmenté après un gain d'exp.   Dim 21 Mai - 0:51

Il est bien beau Exclamation Exclamation

C'est émouvent Sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jordinateur
Blob
Blob
avatar

Nombre de messages : 260
Localisation : Devant mon ordinateur !(enfin sa dépend, peut-être avec ma copine aussi ^^)
Humeur/Caractère : Aller a l'école T_T
Date d'inscription : 12/05/2006

MessageSujet: Re: Systeme d'affichage des stats augmenté après un gain d'exp.   Dim 21 Mai - 1:51

Merci, merci (j'ai du mal a croire ça...Sa ne serait pas de l'ironie par pur hasard Question lol!)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Systeme d'affichage des stats augmenté après un gain d'exp.   

Revenir en haut Aller en bas
 
Systeme d'affichage des stats augmenté après un gain d'exp.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Arrondir un réel à deux chiffres après la virgule
» Problème d'affichage lors d'un copier coller
» probleme affichage sous IE suite a restauration theme origine
» Problème d'affichage après changement du CSS
» Problème affichage après modification template

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Ultima Graphisme :: Aide, Tuto, Script & Recrutement :: Script-
Sauter vers: