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




Partagez | 
 

 [VX] Fenêtre de Quête

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 12:07

Bonjour à tous!

Je viens ici pour partager mon tout premier script! Un script de Quête!

Attention, ce script n'est que pour ce forum, et merci de mettre mon pseudo dans les crédits Wink

Ce script ne sert pas à accepter ou à valider des quêtes. Il affiche simplement les objets nécessaire pour compléter la quête, et les récompenses. Chaque quête peut avoir une description(vous pouvez mettre autant de ligne que vous le souhaitez! ), une liste d'objet(facultatif, encore une fois, vous pouvez mettre autant d'objet que vous le souhaitez)

L'espace est infini! Votre quête peut avoir au total 100 lignes voir 200 lignes si vous voulez!

Le principe est simple, le joueur regarde dans la fenêtre de quête quelle quête il doit faire. Ensuite, quand il l'a accomplie, activer l'interrupteur de la quête(vous pouvez mettre n'importe quel interrupteur).
Attention, avec ce script, le joueur ne peut pas faire plusieurs quêtes en même temps. En effet, tant que le joueur n'a pas fini une quête, il ne pourras pas faire la suivante. Ce n'est qu'une fois la précédente de faite, qu'il pourras voir les informations de la quête suivante. Ainsi, on as un meilleur contrôle du parcourt du joueur.

Voici quelques screens:

Spoiler:
 

Et voici le script:

Code:

#==============================================================================
# Script de Quêtes pour RPG Maker VX Version2 par Raitosan [23/08/2010] rpg-maker-vx.bbactif.com
#==============================================================================
# Class Quete
#==============================================================================
class Quete
  attr_accessor:nom
  attr_accessor:description
  attr_accessor:objets
  attr_accessor:nb_objets
  attr_accessor:interrupteur
  attr_accessor:recompenses
 
  def initialize
    # Variables d'information de la quête
    @nom = ""
    @description = []
    @objets = []
    @nb_objets = []
    @interrupteur = 0
    @recompenses = []
  end # end of initialize
end # end of class Quete
#==============================================================================
# Module M_Quete
#==============================================================================
module M_Quete
  attr_accessor:Quetes
 
  # Vocabulaire
  Quete_terminee = "Terminée"
  Quete_bloquee = "Bloquée"
  Quete_indisponible = "Aucune quête n'est disponible"
  Indisponible = "Indisponible"
  Nom_Quete_indisponible = "Aucune quête disponible"
  Recompenses = "Récompenses:" # Mot ou phrase avant les récompenses
  Points_exp = "points d'Exp" # Vous avez gagner X "points d'Exp"
  Argent = "Po" # Nom de l'argent
 
  # Couleurs
  Couleur_Base = Color.new(255,255,255) # Couleur de base
  Objets_Non_Possede = Color.new(170,170,170) # Le joueur ne possède pas l'objet
  Objets_Possede = Color.new(255,255,255) # Le joueur possède au moins un objet, mais pas le nombre requis
  Objets_Complets = Color.new(0,255,0) # Le joueur possède le bon nombre d'objet(ou plus)
 
  # Nom des images contenu dans Pictures/
  Img_Exp = "exp" # Icone de l'exp
  Img_Po = "po" # Icone de l'argent
 
  # Variables pour les récompenses
  Exp = 0
  Po = 1
  Objet = 2
  Arme = 3
  Armure = 4
 
  # Autres
  Position_Menu = 5 # Indique la position du curseur lorsque vous retournez dans le menu
 
  # On créer les quetes ici
  Quetes = []
 
  Quetes.push(Quete.new) # On créer la première quête
  Quetes[0].nom = "iTi Maison?" # Nom de la quête
  Quetes[0].description.push("Trouvez la maison des quêtes. Elle se") # On créer la première ligne de description
  Quetes[0].description.push("trouve dans le village, et possède une") # On créer la deuxième ligne de description
  Quetes[0].description.push("insigne avec un livre. Elle vous attend!") # On créer la deuxième ligne de description
  Quetes[0].objets.push(false) # Aucuns objets n'est requis pour finir la quête
  Quetes[0].interrupteur = 40 # Quand l'interrupteur 40 sera activer, la quête sera marquée comme Terminée
  Quetes[0].recompenses.push(false) # Aucunes récompenses
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[1].nom = "Nom de la Quête" # Nom de la quête
  #Ici, j'ai créer une boucle qui ajoute les commentaires à ma place, désoler j'avais la flème de le faire^^
  for x in 1...9
    Quetes[1].description.push("Ligne de description " + x.to_s) # On créer la première ligne de description
  end
  Quetes[1].objets.push([Objet,25])
  Quetes[1].objets.push([Objet,15])
  Quetes[1].objets.push([Objet,7])
  Quetes[1].objets.push([Arme,17])
  Quetes[1].objets.push([Armure,2])
  Quetes[1].nb_objets.push(1)
  Quetes[1].nb_objets.push(5)
  Quetes[1].nb_objets.push(3)
  Quetes[1].nb_objets.push(1)
  Quetes[1].nb_objets.push(2)
  Quetes[1].interrupteur = 41
  Quetes[1].recompenses.push([Objet, 15])
  Quetes[1].recompenses.push([Objet, 5])
  Quetes[1].recompenses.push([Arme, 7])
  Quetes[1].recompenses.push([Arme, 9])
  Quetes[1].recompenses.push([Arme, 13])
  Quetes[1].recompenses.push([Armure, 17])
  Quetes[1].recompenses.push([Exp, 25])
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[2].nom = "La vie en poudre" # Nom de la quête
  Quetes[2].description.push("Sortez à l'Est du village et tuez des Slime") # On créer la première ligne de description
  Quetes[2].description.push("Mutan pour obtenir des Poudres de Vie") # On créer la deuxième ligne de description
  Quetes[2].objets.push([Objet,27]) # L'objet avec l'ID 27 est requis pour terminer la quête
  Quetes[2].nb_objets.push(6) # Il faut 6 fois l'objet avec l'ID 27 pour terminer la quête
  Quetes[2].interrupteur = 42 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[2].recompenses.push([Objet, 1]) # 1ère récompense: 1 fois l'objet avec l'ID 1 (potion)
  Quetes[2].recompenses.push([Po, 350]) # 2ème récompense: 350 PO
  Quetes[2].recompenses.push([Exp, 50]) # 3ème récompense: 50 points d'Exp
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[3].nom = "Takaya...ki?" # Nom de la quête
  Quetes[3].description.push("Trouvez Takayami, et lui parler. Il se") # On créer la première ligne de description
  Quetes[3].description.push("trouve en dehors du village, vers l'Est.") # On créer la deuxième ligne de description
  Quetes[3].objets.push(false) # Pas d'objets requis pour terminer la quête
  Quetes[3].interrupteur = 43 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[3].recompenses.push(false) # Pas de récompenses
 
end
#==============================================================================
# Class Scene_Quete
#==============================================================================
class Scene_Quete < Scene_Base
  def start   
    create_menu_background # Fond transparent
   
    create_pictures
   
    @quetes = M_Quete::Quetes # On ajoutes les quêtes
    @marge = 10 # Marge à gauche dans la fenêtre d'info de la quête
    @espace = 24 # Taille des lignes, et taille des sauts de lignes
    @nb_lines = 0 # Nombre de ligne qu'utilise la quête
   
    create_tab
   
    @liste = Window_Command.new(150, @tab,1,16) # Liste des quêtes
   
    @quete = Window_Informations.new(394, [""], 1, 16) # Informations de la Quête
    @quete.x = 150
    @quete.y = 0
    @quete.active = false
    @quete.visible = false
   
    #@quete = Window_Base.new(150,0,394, 416) # Informations de la Quête
  end # end of def start
 
  def terminate
    dispose_menu_background
    @liste.dispose
    @quete.dispose
  end # end of def terminate
 
#===========================================================================
# def create_pictures
#===========================================================================

  def create_pictures
    @quete_terminee = Cache.picture(M_Quete::Img_Quete_terminee) # Image des quêtes terminées
    @quete_bloquee = Cache.picture(M_Quete::Img_Quete_bloquee) # Image des quêtes bloquées
    @exp_img = Cache.picture(M_Quete::Img_Exp) # Icone de l'exp
    @po_img = Cache.picture(M_Quete::Img_Po) #Icone des PO (pièces d'or)
  end
 
#===========================================================================
# def create_tab
#===========================================================================

  def create_tab
    @tab = []
   
    if @quetes.size > 0
      for x in 0...@quetes.size
        if $game_switches[@quetes[x].interrupteur] == true
          @tab.push(M_Quete::Quete_terminee) # Quête terminée
        else
          if $game_switches[@quetes[x-1].interrupteur] == true
            @tab.push(@quetes[x].nom) # Liste des noms de quêtes
          else
            if x == 0
              @tab.push(@quetes[x].nom)
            else
              @tab.push(M_Quete::Quete_bloquee) # Liste des quêtes bloquées
            end # en of if x == 0
          end # end of $game_switches[@quetes[x-1].interrupteur] == true
        end # end of if $game_switches[@quetes[x].interrupteur] == true
      end # end of for x in 0...@quetes.size
    else
      tab.push(M_Quete::Indisponible)
      @quetes = [ [M_Quete::Nom_Quete_indisponible, [M_Quete::Quete_indisponible], [], [], []] ]
    end # end of if @quetes.size > 0
  end
 
#==========================================================================
# def create_window_information
#==========================================================================

  def create_window_information(abscisses, ordonnees, w, nb_lignes, nb_colonnes, nb_lignes_afficher)
   
    tableau = []   
    for x in 0...nb_lignes
      tableau.push("")
    end
   
    @quete.dispose
   
    @quete = Window_Informations.new(w, tableau, nb_colonnes, nb_lignes_afficher) # Informations de la Quête
    @quete.x = abscisses
    @quete.y = ordonnees
    @quete.active = true
    @quete.visible = true
  end
 
#==========================================================================
# def objets_requis?
#==========================================================================
 
  def objets_requis?
    if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
      return true
    end
  end
 
#==========================================================================
# def recompense?
#==========================================================================
 
  def recompense?
    if @quetes[@liste.index].recompenses[0] != false
      return true
    end
  end
 
#==========================================================================
# def saut_de_ligne
#==========================================================================
 
  def saut_de_ligne
    @nb_lines += 1
  end
 
#==========================================================================
# def afficher_nom
#==========================================================================

  def afficher_nom
    @quete.contents.draw_text(0,0,362,20, @quetes[@liste.index].nom, 1) # Nom de la Quête
    @nb_lines += 1
    saut_de_ligne
  end
 
#==========================================================================
# def afficher_description
#==========================================================================

  def afficher_description
    description = ""
    for x in 0...@quetes[@liste.index].description.size
      # Description de la Quête
      description = @quetes[@liste.index].description[x]
      hauteur = @espace*@nb_lines
      @quete.contents.draw_text(@marge, hauteur, 394, @espace, description, 0)
      @nb_lines += 1
    end # end of for x in 0...@quetes[@liste.index].description.size
 
    if objets_requis?
      saut_de_ligne
    elsif recompense?
      saut_de_ligne
    end
  end
 
#==========================================================================
# def afficher_objets
#==========================================================================
 
  def afficher_objets
    if objets_requis?
      for x in 0...@quetes[@liste.index].objets.size       
        # Couleurs
        if $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) <= 0
          @quete.contents.font.color = M_Quete::Objets_Non_Possede # Objet non possédé
        elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) < @quetes[@liste.index].nb_objets[x]
          @quete.contents.font.color = M_Quete::Objets_Possede # Objet possédé
        elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) >= @quetes[@liste.index].nb_objets[x]
          @quete.contents.font.color = M_Quete::Objets_Complets # Le nombre d'objet est suffisant
        end # end of if $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) <= 0
       
        case @quetes[@liste.index].objets[x][0]
          when M_Quete::Objet
            # Image de l'objet
            icone = $data_items[@quetes[@liste.index].objets[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge, hauteur)
           
            # Nom de l'objet, nombre d'objet possédé, et requis
            nom = $data_items[@quetes[@liste.index].objets[x][1]].name
            nb_objets_posseder = $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]])
            nb_objets_requis = @quetes[@liste.index].nb_objets[x]
            texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )"
            @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0)
          when M_Quete::Arme
            # Image de l'objet
            icone = $data_weapons[@quetes[@liste.index].objets[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge, hauteur)
           
            # Nom de l'objet, nombre d'objet possédé, et requis
            nom = $data_weapons[@quetes[@liste.index].objets[x][1]].name
            nb_objets_posseder = $game_party.item_number($data_weapons[@quetes[@liste.index].objets[x][1]])
            nb_objets_requis = @quetes[@liste.index].nb_objets[x]
            texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )"
            @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0)
          when M_Quete::Armure
            # Image de l'objet
            icone = $data_armors[@quetes[@liste.index].objets[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge, hauteur)
           
            # Nom de l'objet, nombre d'objet possédé, et requis
            nom = $data_armors[@quetes[@liste.index].objets[x][1]].name
            nb_objets_posseder = $game_party.item_number($data_armors[@quetes[@liste.index].objets[x][1]])
            nb_objets_requis = @quetes[@liste.index].nb_objets[x]
            texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )"
            @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0)
        end
       
        @nb_lines+=1
      end # end of for x in 0...@quetes[@liste.index].objets.size
      saut_de_ligne
    end # end of if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
  end
 
#==========================================================================
# def afficher_objets
#==========================================================================
 
  def afficher_recompenses
    if recompense?
      #On remet la couleur de base
      @quete.contents.font.color = M_Quete::Couleur_Base
     
      # Récompenses
      hauteur = @espace*@nb_lines
      @quete.contents.draw_text(@marge, hauteur, 362, @espace, M_Quete::Recompenses, 0)
     
      @nb_lines += 1
     
      for x in 0...@quetes[@liste.index].recompenses.size
        case @quetes[@liste.index].recompenses[x][0]
          when M_Quete::Exp # Exp
            # Icone
            hauteur = @espace*@nb_lines
            @quete.contents.blt(4+@marge, hauteur,@exp_img,@exp_img.rect)
            # Texte
            texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Points_exp
            @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0)
          when M_Quete::Po # Argent
            # Icone
            hauteur = @espace*@nb_lines
            @quete.contents.blt(1+@marge, hauteur, @po_img, @po_img.rect)
            # Texte
            texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Argent
            @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0)
          when M_Quete::Objet # Objet
            # Icone
            icone = $data_items[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge ,hauteur)
            # Nom_Objet
            nom = $data_items[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur, 394, @espace, nom, 0)
          when M_Quete::Arme # Arme
            # Icone
            icone = $data_weapons[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, 0+@marge, hauteur)
            # Nom_Arme
            nom = $data_weapons[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0)             
          when M_Quete::Armure # Armure
            # Icone
            icone = $data_armors[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, 0+@marge, hauteur)
            # Nom_Armure
            nom = $data_armors[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0)
        end # end of case @quetes[@liste.index].recompenses[x][0]
        @nb_lines += 1
      end # end of for x in 0...@quetes[@liste.index].recompenses.size
      @nb_lines -= 1 # On supprime le dernier retour à la ligne
    end # end of if recompense?
  end
 
#==========================================================================
# def afficher_contenu
#==========================================================================

  def afficher_contenu
    afficher_nom
    afficher_description
    afficher_objets
    afficher_recompenses
  end
 
  def nb_line_quest(quete)
    nb_line_quest = 2 # Titre+saut de ligne
    nb_line_quest += @quetes[quete].description.size # description
    if objets_requis?
      nb_line_quest += 1 # saut de ligne
      nb_line_quest += @quetes[quete].objets.size # Objets
    end
    if recompense?
      nb_line_quest += 2 #saut de ligne et le mot Recompenses:
      nb_line_quest += @quetes[quete].recompenses.size # recompenses
    end
    return nb_line_quest
  end
 
  def terminee?
    if @tab[@liste.index] == M_Quete::Quete_terminee
      # Quête terminée
    elsif @tab[@liste.index] == M_Quete::Quete_bloquee
      # Quête bloquée
    else
      @nb_lines = 0
      afficher_contenu
    end # end of if @tab[@liste.index] == M_Quete::Quete_terminee
  end
 
  def update
    update_menu_background # Fond transparent
    @liste.update
    if @quete != nil
      @quete.update
    end
     
    if Input.trigger?(Input::B) # Annulation
      Sound.play_cancel
      if @quete.active
        @quete.active = false
        @quete.visible = false
        @liste.active = true
      else
        $scene = Scene_Menu.new(M_Quete::Position_Menu) # On retroune dans le menu
      end
    elsif Input.trigger?(Input::C) # Validation
     
      if @tab[@liste.index] != M_Quete::Quete_bloquee && @tab[@liste.index] != M_Quete::Quete_terminee
        Sound.play_decision
        @liste.active = false
        create_window_information(150, 0, 394, nb_line_quest(@liste.index), 1, 16)
      else
        Sound.play_buzzer
      end

      @quete.contents.font.color = M_Quete::Couleur_Base # On met la couleur du texte de base.
     
      terminee?
    end # end of if Input.trigger?(Input::B)
  end # end of def update
end # end of class Scene_Quete < Scene_Base

class Window_Informations < Window_Command
  def refresh
    create_contents
  end
end

Si vous avez des problèmes, n'hésitez pas à m'en parler Wink
J'espère que mon tout premier script vous plaira Smile

Bonne journée Wink

_________________
SMS interdit, veuillez écrire en français.


Dernière édition par Raito-san le Dim 29 Aoû 2010 - 17:39, édité 6 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Maître des Duels
Maître des Duels
avatar


Masculin Age : 25
Inscrit le : 29/07/2009
Messages : 7838

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 12:13

Petit script simpliste. On regrettera l'unique objectif possible ( collecte d'objets ), le fait que ne pas pouvoir cumuler les quêtes et la consommation d'un interrupteur par quête.

De plus, d'autres scripts sur le forum font bien mieux.

Merci quand même du partage.

_________________
Gimme a hell yeah.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 12:18

Oui, mais celui-ci est léger et simple.

Ensuite, ce qui limite ce script, est votre événement Wink
Avec ce script on peux faire une récolte d'objet, parler à un NPC, visiter un endroit ou n'importe quoi, sachant que ce sont les événements qui actives les intérrupteurs.

Pour ne pas cumuler les quêtes, c'est voulue Wink Je peux aussi créer une version qui le permet. Le script en sera encore plus simple.(ça dépend des besoins des projets)

Pour les autres scripts -> J'ai u des problèmes de compatibilité avec presque tous, alors que celui là passe comme du beurre Smile

Si vous avez des idées d'amélioration, merci de m'en faire part Wink

Merci Zang pour ton commentaire.

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Citadin Lv.7
Citadin Lv.7
avatar


Masculin Age : 24
Inscrit le : 19/08/2010
Messages : 153

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 12:24

Si tu améliores ton scripts pour cumuler des quêtes, tu mettra à jour ? En tout cas moi je prends ce script car il mérite d'être testé ^^

Mais si j'ai bien compris, en créant plusieurs interrupteurs on peu cumuler les quêtes déja non ? c'est juste qu'elles ne seront pas sur le même tableau.

_________________
Je crois au salut de l'homme... à l'avenir du cyanure.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 12:52

Non, Si un interrupteur de quête est activer, alors la quête correspondante est déclaré Terminée.

Je vais mettre la deuxième version, où on peut accumuler les quêtes Wink

Si vous avez d'autres améliorations à proposés, merci de le signaler Wink

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Gardien des Scripts
Gardien des Scripts
avatar


Féminin Age : 21
Inscrit le : 30/12/2009
Messages : 1067

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 13:21

Waouh !
Sa gère en tant que premier script Wink
L'amélioré ? Je ne vois pas quoi...
Je vais réfléchir Smile

Biward

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://vx-fan.1fr1.net
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 13:24

Merci Biward Smile

Pour l'instant, je fais en sorte à ce qu'une quête bloquée puisse être débloquer par un interrupteur, ou par une autre quête(si elle devient terminée).

Si j'y arrive, je pense que ça pourrais m'avoir été super utile en tant expérience, et pour d'autre, utile pour leurs jeux Wink

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Maître des Duels
Maître des Duels
avatar


Masculin Age : 25
Inscrit le : 29/07/2009
Messages : 7838

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 13:31

Comment l'améliorer ?
Simple, tout d'abord virer les interrupteurs du jeu de la gestion des quêtes et utiliser un hash qui contiendra ces données à la place.

Utilise un module pour faire la configuration des quêtes, ça évitera à un maker novice de fouiller dans les scripts.

Commente plus ton script. Met des en-tête à tes methodes, note la signification des end ( end d'un condition, end d'une boucle, end d'une class ).

Allège ta méthode start en déplaçant la création des quêtes dans de nouvelles méthodes.

_________________
Gimme a hell yeah.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 13:32

Ok, je vais voir ça
Mais pour les interrupteurs, je préfères les laissez, car ça donne plus de possibilités selon moi.

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Maître des Duels
Maître des Duels
avatar


Masculin Age : 25
Inscrit le : 29/07/2009
Messages : 7838

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 13:41

En fait, je parlais d'utiliser des interrupteurs oui, mais pas ceux du jeu. De nouveaux. Imagine que y'a 100 quêtes. On serait obligé d'avoir 100 interrupteurs gachés a cause de ça ?

_________________
Gimme a hell yeah.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 13:42

Mh... c'est vrai.

Je vais essayer, mais je ne promet rien... N'oubliez pas que je débutes^^
Vous savez comment modifier une variable en jeu?

Onyx31 ->
Voilà le script, c'est bien ça que tu voulais?

Code:
#==============================================================================
# Script de Quêtes pour RPG Maker VX Version1 par Raitosan [23/08/2010] rpg-maker-vx.bbactif.com
#==============================================================================
# Fonctionnement:
=begin

Pour signaler que la quête est terminée, il suffit d'activer son interrupeur.

Pour ajouter une quête, c'est très simple. Vous avez juste à rajouter une case au tableau en entrant
les informations de votre quêtes:

@quetes = [
    ["Quête1",[
    "Allez chercher le mot de Sakamoto dans", #Ligne 1 de la description
    "sa maison au Nord-Est du village"], #Ligne 2 de la description
    [25], [1], 41],
   
    ["Quête2",
    ["Sortez à l'Est du village et tuez des Slime",
    "Mutan pour obtenir des Poudres de Vie"],
    [27], [6], 42],
    .
    .
    .   
    ["QuêteX",
    ["Faire nananinananeneninena"],
    [], [], Y]
    ]
   
["Nom de la Quête",[
    "Ligne1 de la description",
    "Ligne2 de la description",
    "Ligne3 de la description", etc...],
    [ID_objet1, ID_objet2, etc...], [Nombre_Objet1_requis, Nombre_Objet2_requis, etc...], ID_interrupteur_Quête_fini]
   
Vous pouvez mettre autant de ligne de description que vous voulez(et d'objets nécessaire, mais attention,
l'espace est limité ;)
Bien sur, vous pouvez aussi mettre autant de quête que vous le souhaitez.

Pour appelé le script, il vous suffit de copier/coller ce code:

$scene = Scene_Quete.new

=end
#==============================================================================
# Module Quete
#==============================================================================
module M_Quete
  Quete_terminee = "Terminée"
  Quete_indisponible = "Aucune quête n'est disponible"
end
#==============================================================================
# Class Scene_Quete
#==============================================================================
class Scene_Quete < Scene_Base
  def start
    create_menu_background # Fond transparent
    @quete_terminee = Cache.picture("Quete_terminee")
    # On créer les quêtes ici
    @quetes = [
    ["Quête1",[
    "Allez chercher le mot de Sakamoto dans", #Ligne 1 de la description
    "sa maison au Nord-Est du village"], #Ligne 2 de la description
    [25], [1], 41],
   
    ["Quête2",
    ["Sortez à l'Est du village et tuez des Slime",
    "Mutan pour obtenir des Poudres de Vie"],
    [27], [6], 42],
   
    ["Quête3",
    ["Trouvez 2 Elixir"],
    [8], [2], 43],
   
    ["Quête4",
    ["Parlez à Takayami"],
    [], [], 44]
    ]
   
    @tab = []
    if @quetes.size > 0
      for x in 0...@quetes.size
        if $game_switches[@quetes[x][4]] == true
          @tab.push(M_Quete::Quete_terminee) # Quête terminée
        else
          @tab.push(@quetes[x][0]) # Liste des noms de quêtes
        end
      end
    else
      tab.push("Indisponible")
      @quetes =[ ["Aucune Quête Disponible", [M_Quete::Quete_indisponible], [], [], []] ]
    end
   
    @liste = Window_Command.new(150, @tab,1,16) # Liste des quêtes
    @quete = Window_Base.new(150,0,394, 416)
  end
  def terminate
    dispose_menu_background
    @liste.dispose
    @quete.dispose
    @quete_terminee
    @quete_bloquee
  end
  def update
    update_menu_background
   
    @liste.update
    @quete.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Menu.new(4)
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @quete.contents.clear
      @quete.contents.font.color = Color.new(255,255,255)
     
      if @tab[@liste.index] == M_Quete::Quete_terminee
        # Quête terminée
        @quete.contents.blt(4,4,@quete_terminee,@quete_terminee.rect)
      else
        @quete.contents.draw_text(0,0,362,20, @quetes[@liste.index][0], 1) # Nom de la Quête
        for x in 0...@quetes[@liste.index][1].size
          @quete.contents.draw_text(0, 40+20*x, 394, 20, @quetes[@liste.index][1][x], 0) # Description de la Quête
        end
        if @quetes[@liste.index][2].size > 0
          for x in 0...@quetes[@liste.index][2].size
            # Image de l'objet
            @quete.draw_icon($data_items[@quetes[@liste.index][2][x]].icon_index, 0,
            60+20*@quetes[@liste.index][1].size+25*x)
           
            # Nom de l'objet
            if $game_party.item_number($data_items[@quetes[@liste.index][2][x]]) <= 0
              @quete.contents.font.color = Color.new(170,170,170)
            elsif $game_party.item_number($data_items[@quetes[@liste.index][2][x]]) < @quetes[@liste.index][3][x]
              @quete.contents.font.color = Color.new(255,255,255)
            elsif $game_party.item_number($data_items[@quetes[@liste.index][2][x]]) >= @quetes[@liste.index][3][x]
              @quete.contents.font.color = Color.new(0,255,0)
            end
            #Nombre d'objet possédé, et requis
            @quete.contents.draw_text(32,60+20*@quetes[@liste.index][1].size+25*x, 394,20,
            $data_items[@quetes[@liste.index][2][x]].name + " ( " +
            ($game_party.item_number($data_items[@quetes[@liste.index][2][x]])).to_s + " / " +
            @quetes[@liste.index][3][x].to_s + " )" , 0)
          end
         
        end
       
      end
    end
  end
end

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Citadin Lv.7
Citadin Lv.7
avatar


Masculin Age : 24
Inscrit le : 19/08/2010
Messages : 153

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 17:38

Ben le script il était plus haut O_o

Donc non je ne te demandais pas le script. Je voulais juste savoir si imaginons je crée deux types qui donne des quêtes différentes. On peut pas cumuler deux quête d'un même demandeur, mais si il y a deux demandeurs on peut avoir deux quêtes non ?

bref je sais pas si c'est clair mais c'est pas grave, va ! Fais ton chemin de scripteur et ponds nous des merveilles à en faire pâlir biward !

_________________
Je crois au salut de l'homme... à l'avenir du cyanure.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 18:07

Ah ok!

je pense que c'est tout à fait possible Smile
Je vais y travailler Smile

Edit: Onyx31 -> Voilà, rajoute ce qui est en gras rouge dans le Script Scene_Map:


class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------

alias start_pnj start

def start
super
$game_map.refresh
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new

start_pnj
$pnj = nil


end

---------------------------------------------------------------------

Pour appeler le script, met ça dans l'évènement:

Code:
$pnj = 1
$scene = Scene_Quete.new

Tu peux ensuite rajouter des PNJ, ou en enlever. La modification des quête est la même.

Voici donc le nouveau script:

Code:
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
 
  alias start_pnj start
 
  def start
    super
    $game_map.refresh
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
   
    start_pnj
    $pnj = nil
   
  end
  #--------------------------------------------------------------------------
  # * Execute Transition
  #--------------------------------------------------------------------------
  def perform_transition
    if Graphics.brightness == 0      # After battle or loading, etc.
      fadein(30)
    else                              # Restoration from menu, etc.
      Graphics.transition(15)
    end
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    if $scene.is_a?(Scene_Battle)    # If switching to battle screen
      @spriteset.dispose_characters  # Hide characters for background creation
    end
    snapshot_for_background
    @spriteset.dispose
    @message_window.dispose
    if $scene.is_a?(Scene_Battle)    # If switching to battle screen
      perform_battle_transition      # Execute pre-battle transition
    end
  end
  #--------------------------------------------------------------------------
  # * Basic Update Processing
  #--------------------------------------------------------------------------
  def update_basic
    Graphics.update                  # Update game screen
    Input.update                      # Update input information
    $game_map.update                  # Update map
    @spriteset.update                # Update sprite set
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    $game_map.interpreter.update      # Update interpreter
    $game_map.update                  # Update map
    $game_player.update              # Update player
    $game_system.update              # Update timer
    @spriteset.update                # Update sprite set
    @message_window.update            # Update message window
    unless $game_message.visible      # Unless displaying a message
      update_transfer_player
      update_encounter
      update_call_menu
      update_call_debug
      update_scene_change
    end
  end
  #--------------------------------------------------------------------------
  # * Fade In Screen
  #    duration : time
  #    If you use Graphics.fadeout directly on the map screen, a number of
  #    problems can occur, such as weather effects and parallax  scrolling
  #    being stopped. So instead, perform a dynamic fade-in.
  #--------------------------------------------------------------------------
  def fadein(duration)
    Graphics.transition(0)
    for i in 0..duration-1
      Graphics.brightness = 255 * i / duration
      update_basic
    end
    Graphics.brightness = 255
  end
  #--------------------------------------------------------------------------
  # * Fade Out Screen
  #    duration : time
  #    As with the fadein above, Graphics.fadein is not used directly.
  #--------------------------------------------------------------------------
  def fadeout(duration)
    Graphics.transition(0)
    for i in 0..duration-1
      Graphics.brightness = 255 - 255 * i / duration
      update_basic
    end
    Graphics.brightness = 0
  end
  #--------------------------------------------------------------------------
  # * Player Transfer  Processing
  #--------------------------------------------------------------------------
  def update_transfer_player
    return unless $game_player.transfer?
    fade = (Graphics.brightness > 0)
    fadeout(30) if fade
    @spriteset.dispose              # Dispose of sprite set
    $game_player.perform_transfer  # Execute player transfer
    $game_map.autoplay              # Automatically switch BGM and BGS
    $game_map.update
    Graphics.wait(15)
    @spriteset = Spriteset_Map.new  # Recreate sprite set
    fadein(30) if fade
    Input.update
  end
  #--------------------------------------------------------------------------
  # * Encounter Processing
  #--------------------------------------------------------------------------
  def update_encounter
    return if $game_player.encounter_count > 0        # Check steps
    return if $game_map.interpreter.running?          # Event being executed?
    return if $game_system.encounter_disabled        # Encounters forbidden?
    troop_id = $game_player.make_encounter_troop_id  # Determine troop
    return if $data_troops[troop_id] == nil          # Troop is invalid?
    $game_troop.setup(troop_id)
    $game_troop.can_escape = true
    $game_temp.battle_proc = nil
    $game_temp.next_scene = "battle"
    preemptive_or_surprise
  end
  #--------------------------------------------------------------------------
  # * Determine Preemptive Strike and Surprise Attack Chance
  #--------------------------------------------------------------------------
  def preemptive_or_surprise
    actors_agi = $game_party.average_agi
    enemies_agi = $game_troop.average_agi
    if actors_agi >= enemies_agi
      percent_preemptive = 5
      percent_surprise = 3
    else
      percent_preemptive = 3
      percent_surprise = 5
    end
    if rand(100) < percent_preemptive
      $game_troop.preemptive = true
    elsif rand(100) < percent_surprise
      $game_troop.surprise = true
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if Menu is Called due to Cancel Button
  #--------------------------------------------------------------------------
  def update_call_menu
    if Input.trigger?(Input::B)
      return if $game_map.interpreter.running?        # Event being executed?
      return if $game_system.menu_disabled            # Menu forbidden?
      $game_temp.menu_beep = true                    # Set SE play flag
      $game_temp.next_scene = "menu"
    end
  end
  #--------------------------------------------------------------------------
  # * Determine Bug Call Due to F9 key
  #--------------------------------------------------------------------------
  def update_call_debug
    if $TEST and Input.press?(Input::F9)    # F9 key during test play
      $game_temp.next_scene = "debug"
    end
  end
  #--------------------------------------------------------------------------
  # * Execute Screen Switch
  #--------------------------------------------------------------------------
  def update_scene_change
    return if $game_player.moving?    # Is player moving?
    case $game_temp.next_scene
    when "battle"
      call_battle
    when "shop"
      call_shop
    when "name"
      call_name
    when "menu"
      call_menu
    when "save"
      call_save
    when "debug"
      call_debug
    when "gameover"
      call_gameover
    when "title"
      call_title
    else
      $game_temp.next_scene = nil
    end
  end
  #--------------------------------------------------------------------------
  # * Switch to Battle Screen
  #--------------------------------------------------------------------------
  def call_battle
    @spriteset.update
    Graphics.update
    $game_player.make_encounter_count
    $game_player.straighten
    $game_temp.map_bgm = RPG::BGM.last
    $game_temp.map_bgs = RPG::BGS.last
    RPG::BGM.stop
    RPG::BGS.stop
    Sound.play_battle_start
    $game_system.battle_bgm.play
    $game_temp.next_scene = nil
    $scene = Scene_Battle.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Shop Screen
  #--------------------------------------------------------------------------
  def call_shop
    $game_temp.next_scene = nil
    $scene = Scene_Shop.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Name Input Screen
  #--------------------------------------------------------------------------
  def call_name
    $game_temp.next_scene = nil
    $scene = Scene_Name.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Menu Screen
  #--------------------------------------------------------------------------
  def call_menu
    if $game_temp.menu_beep
      Sound.play_decision
      $game_temp.menu_beep = false
    end
    $game_temp.next_scene = nil
    $scene = Scene_Menu.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Save Screen
  #--------------------------------------------------------------------------
  def call_save
    $game_temp.next_scene = nil
    $scene = Scene_File.new(true, false, true)
  end
  #--------------------------------------------------------------------------
  # * Switch to Debug Screen
  #--------------------------------------------------------------------------
  def call_debug
    Sound.play_decision
    $game_temp.next_scene = nil
    $scene = Scene_Debug.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Game Over Screen
  #--------------------------------------------------------------------------
  def call_gameover
    $game_temp.next_scene = nil
    $scene = Scene_Gameover.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Title Screen
  #--------------------------------------------------------------------------
  def call_title
    $game_temp.next_scene = nil
    $scene = Scene_Title.new
    fadeout(60)
  end
  #--------------------------------------------------------------------------
  # * Execute Pre-battle Transition
  #--------------------------------------------------------------------------
  def perform_battle_transition
    Graphics.transition(80, "Graphics/System/BattleStart", 80)
    Graphics.freeze
  end
end

En revanche, ça n'affiche que les quêtes du personnage à qui tu parles(j'ai pensé que ce serait mieux). Si tu veux en revanche qu'on les voies toutes, dit le moi.

Si tu as quelques choses qui ne vas pas, dit le moi Wink

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Ex-Admin Cruelle
Ex-Admin Cruelle
avatar


Féminin Age : 25
Inscrit le : 03/07/2008
Messages : 2441

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 19:15

Pas mal pour un premier script ! Je te rajoute 4 points, si t'a pas déjà fait =)

Alors pour l'améliorer, y'a plein de chose à faire xD Après ca dépend de ce que t'es motivé à faire et si tu veux une tâche plus ou moins difficile =)

_________________

Ma librairie de scripts

♥ Tata blockie vous conseille :

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Lun 23 Aoû 2010 - 19:16

Pour l'instant, je rajoute l'affichage des récompenses Smile

Merci pour les points(non, je ne m'en suis pas mis XD) Wink

Edit:

Et voilà! Le script a été mis à jour! J'ai améliorer grandement la facilitée pour qu'un débutant puisse utiliser le script. Il n'a plus besoin de chercher partout pour modifier un petit truc, et il n'a pas besoin de se compliquer la vie pour créer une quête. Tout est au début du script. La création d'une quête se fait maintenant dans le module M_Quete, et prend cette forme là:

Code:
Quetes.push(Quete.new) # On créer la troisième quête
  Quetes[2].nom = "La vie en poudre" # Nom de la quête
  Quetes[2].description.push("Sortez à l'Est du village et tuez des Slime") # On créer la première ligne de description
  Quetes[2].description.push("Mutan pour obtenir des Poudres de Vie") # On créer la deuxième ligne de description
  Quetes[2].objets.push(27) # L'objet avec l'ID 27 est requis pour terminer la quête
  Quetes[2].nb_objets.push(6) # Il faut 6 fois l'objet avec l'ID 27 pour terminer la quête
  Quetes[2].interrupteur = 42 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[2].recompenses.push([Objet, 1]) # 1ère récompense: 1 fois l'objet avec l'ID 1 (potion)
  Quetes[2].recompenses.push([Arme, 6]) # 1ère récompense: 1 fois l'arme avec l'ID 6
  Quetes[2].recompenses.push([Armure, 17]) # 1ère récompense: 1 fois l'armure avec l'ID 17
  Quetes[2].recompenses.push([Po, 350]) # 2ème récompense: 350 PO
  Quetes[2].recompenses.push([Exp, 50]) # 3ème récompense: 50 points d'Exp

Voici un petit screen, et le nouveau code:

Code:
#==============================================================================
# Script de Quêtes pour RPG Maker VX Version1 par Raitosan [23/08/2010] rpg-maker-vx.bbactif.com
#==============================================================================
# Class Quete
#==============================================================================
class Quete
  attr_accessor:nom
  attr_accessor:description
  attr_accessor:objets
  attr_accessor:nb_objets
  attr_accessor:interrupteur
  attr_accessor:recompenses

  def initialize
    # Variables d'information de la quête
    @nom = ""
    @description = []
    @objets = []
    @nb_objets = []
    @interrupteur = 0
    @recompenses = []
  end # end of initialize
end # end of class Quete
#==============================================================================
# Module M_Quete
#==============================================================================
module M_Quete
  attr_accessor:Quetes

  # Vocabulaire
  Quete_terminee = "Terminée"
  Quete_bloquee = "Bloquée"
  Quete_indisponible = "Aucune quête n'est disponible"
  Indisponible = "Indisponible"
  Nom_Quete_indisponible = "Aucune quête disponible"
  Recompenses = "Récompenses:" # Mot ou phrase avant les récompenses
  Points_exp = "points d'Exp" # Vous avez gagner X "points d'Exp"
  Argent = "Po" # Nom de l'argent

  # Couleurs
  Couleur_Base = Color.new(255,255,255) # Couleur de base
  Objets_Non_Possede = Color.new(170,170,170) # Le joueur ne possède pas l'objet
  Objets_Possede = Color.new(255,255,255) # Le joueur possède au moins un objet, mais pas le nombre requis
  Objets_Complets = Color.new(0,255,0) # Le joueur possède le bon nombre d'objet(ou plus)

  # Nom des images contenu dans Pictures/
  Img_Quete_terminee = "Quete_terminee"
  Img_Quete_bloquee = "Quete_bloquee"
  Img_Exp = "exp" # Icone de l'exp
  Img_Po = "po" # Icone de l'argent

  # Variables pour les récompenses
  Exp = 0
  Po = 1
  Objet = 2
  Arme = 3
  Armure = 4

  # Autres
  Position_Menu = 5 # Indique la position du curseur lorsque vous retournez dans le menu

  # On créer les quetes ici
  Quetes = []

  Quetes.push(Quete.new) # On créer la première quête
  Quetes[0].nom = "iTi Maison?" # Nom de la quête
  Quetes[0].description.push("Trouvez la maison des quêtes. Elle se") # On créer la première ligne de description
  Quetes[0].description.push("trouve dans le village, et possède une") # On créer la deuxième ligne de description
  Quetes[0].description.push("insigne avec un livre. Elle vous attend!") # On créer la deuxième ligne de description
  Quetes[0].objets.push(false) # Aucuns objets n'est requis pour finir la quête
  Quetes[0].interrupteur = 40 # Quand l'interrupteur 40 sera activer, la quête sera marquée comme Terminée
  Quetes[0].recompenses.push(false) # Aucunes récompenses

  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[1].nom = "Mot perdu" # Nom de la quête
  Quetes[1].description.push("Allez chercher le mot de Sakamoto dans") # On créer la première ligne de description
  Quetes[1].description.push("sa maison au Nord-Est du village") # On créer la deuxième ligne de description
  Quetes[1].objets.push(25) # L'objet avec l'ID 25 est requis pour terminer la quête
  Quetes[1].nb_objets.push(1) # Il faut 1 fois l'objet avec l'ID 25 pour terminer la quête
  Quetes[1].interrupteur = 41 # Quand l'interrupteur 41 sera activer, la quête sera marquée comme Terminée
  Quetes[1].recompenses.push([Po, 100]) # 1ère récompense: 100 PO
  Quetes[1].recompenses.push([Exp, 25]) # 2ème récompense: 25 points d'Exp

  Quetes.push(Quete.new) # On créer la troisième quête
  Quetes[2].nom = "La vie en poudre" # Nom de la quête
  Quetes[2].description.push("Sortez à l'Est du village et tuez des Slime") # On créer la première ligne de description
  Quetes[2].description.push("Mutan pour obtenir des Poudres de Vie") # On créer la deuxième ligne de description
  Quetes[2].objets.push(27) # L'objet avec l'ID 27 est requis pour terminer la quête
  Quetes[2].nb_objets.push(6) # Il faut 6 fois l'objet avec l'ID 27 pour terminer la quête
  Quetes[2].interrupteur = 42 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[2].recompenses.push([Objet, 1]) # 1ère récompense: 1 fois l'objet avec l'ID 1 (potion)
  Quetes[2].recompenses.push([Arme, 6]) # 1ère récompense: 1 fois l'arme avec l'ID 6
  Quetes[2].recompenses.push([Armure, 17]) # 1ère récompense: 1 fois l'armure avec l'ID 17 (potion)
  Quetes[2].recompenses.push([Po, 350]) # 2ème récompense: 350 PO
  Quetes[2].recompenses.push([Exp, 50]) # 3ème récompense: 50 points d'Exp

  Quetes.push(Quete.new) # On créer la quatrième quête
  Quetes[3].nom = "Takaya...ki?" # Nom de la quête
  Quetes[3].description.push("Trouvez Takayami, et lui parler. Il se") # On créer la première ligne de description
  Quetes[3].description.push("trouve en dehors du village, vers l'Est.") # On créer la deuxième ligne de description
  Quetes[3].objets.push(false) # Pas d'objets requis pour terminer la quête
  Quetes[3].interrupteur = 43 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[3].recompenses.push(false) # Pas de récompenses

end
#==============================================================================
# Class Scene_Quete
#==============================================================================
class Scene_Quete < Scene_Base
  def start   
    create_menu_background # Fond transparent
    @quete_terminee = Cache.picture(M_Quete::Img_Quete_terminee) # Image des quêtes terminées
    @quete_bloquee = Cache.picture(M_Quete::Img_Quete_bloquee) # Image des quêtes bloquées
    @exp_img = Cache.picture(M_Quete::Img_Exp) # Icone de l'exp
    @po_img = Cache.picture(M_Quete::Img_Po) #Icone des PO (pièces d'or)
   
    @quetes = M_Quete::Quetes # On ajoutes les quêtes

    @tab = []
    if @quetes.size > 0
      for x in 0...@quetes.size
        if $game_switches[@quetes[x].interrupteur] == true
          @tab.push(M_Quete::Quete_terminee) # Quête terminée
        else
          if $game_switches[@quetes[x-1].interrupteur] == true
            @tab.push(@quetes[x].nom) # Liste des noms de quêtes
          else
            if x == 0
              @tab.push(@quetes[x].nom)
            else
              @tab.push(M_Quete::Quete_bloquee) # Liste des quêtes bloquées
            end # en of if x == 0
          end # end of $game_switches[@quetes[x-1].interrupteur] == true
        end # end of if $game_switches[@quetes[x].interrupteur] == true
      end # end of for x in 0...@quetes.size
    else
     
      tab.push(M_Quete::Indisponible)
      @quetes = [ [M_Quete::Nom_Quete_indisponible, [M_Quete::Quete_indisponible], [], [], []] ]
    end # end of if @quetes.size > 0
   
    @liste = Window_Command.new(150, @tab,1,16) # Liste des quêtes
    @quete = Window_Base.new(150,0,394, 416) # Informations de la Quête
  end # end of def start
 
  def terminate
    dispose_menu_background
    @liste.dispose
    @quete.dispose
    @quete_terminee.dispose
    @quete_bloquee.dispose
  end # end of def terminate
 
  def update
    update_menu_background # Fond transparent
    @liste.update
    @quete.update
    if Input.trigger?(Input::B) # Annulation
      Sound.play_cancel
      $scene = Scene_Menu.new(M_Quete::Position_Menu) # On retroune dans le menu
    elsif Input.trigger?(Input::C) # Validation
      Sound.play_decision
      @quete.contents.clear # On vide la fenêtre
      @quete.contents.font.color = M_Quete::Couleur_Base # On met la couleur du texte de base.
     
      if @tab[@liste.index] == M_Quete::Quete_terminee
        # Quête terminée
        @quete.contents.blt(4,4,@quete_terminee,@quete_terminee.rect)
       
      elsif @tab[@liste.index] == M_Quete::Quete_bloquee
        # Quête bloquée
        @quete.contents.blt(4,4,@quete_bloquee,@quete_bloquee.rect)
       
      else
        @quete.contents.draw_text(0,0,362,20, @quetes[@liste.index].nom, 1) # Nom de la Quête
        for x in 0...@quetes[@liste.index].description.size
          @quete.contents.draw_text(0, 40+20*x, 394, 20, @quetes[@liste.index].description[x], 0) # Description de la Quête
        end # end of for x in 0...@quetes[@liste.index].description.size
        if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
          for x in 0...@quetes[@liste.index].objets.size
            # Image de l'objet
            @quete.draw_icon($data_items[@quetes[@liste.index].objets[x]].icon_index, 0,
            60+20*@quetes[@liste.index].description.size+25*x)
           
            # Couleurs
            if $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) <= 0
              @quete.contents.font.color = M_Quete::Objets_Non_Possede # Objet non possédé
            elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) < @quetes[@liste.index].nb_objets[x]
              @quete.contents.font.color = M_Quete::Objets_Possede # Objet possédé
            elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) >= @quetes[@liste.index].nb_objets[x]
              @quete.contents.font.color = M_Quete::Objets_Complets # Le nombre d'objet est suffisant
            end # end of if $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) <= 0
            # Nom de l'objet, nombre d'objet possédé, et requis
            @quete.contents.draw_text(32,60+20*@quetes[@liste.index].description.size+25*x, 394,20,
            $data_items[@quetes[@liste.index].objets[x]].name + " ( " +
            ($game_party.item_number($data_items[@quetes[@liste.index].objets[x]])).to_s + " / " +
            @quetes[@liste.index].nb_objets[x].to_s + " )" , 0)           
          end # end of for x in 0...@quetes[@liste.index].objets.size
        end # end of if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
       
        if @quetes[@liste.index].recompenses[0] != false
       
          #On remet la couleur de base
          @quete.contents.font.color = M_Quete::Couleur_Base
         
          # Récompenses
          @quete.contents.draw_text(0,80+20*@quetes[@liste.index].description.size+
          25*@quetes[@liste.index].objets.size,362,20, M_Quete::Recompenses, 0)
         
          for x in 0...@quetes[@liste.index].recompenses.size
            case @quetes[@liste.index].recompenses[x][0]
              when 0 # Exp
                # Icone
                @quete.contents.blt(4,98+20*@quetes[@liste.index].description.size+25*@quetes[@liste.index].objets.size+
                25*x,@exp_img,@exp_img.rect)
                # Texte
                @quete.contents.draw_text(30,100+20*@quetes[@liste.index].description.size+
                25*@quetes[@liste.index].objets.size+25*x,362,20,
                @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Points_exp, 0)
              when 1 # Argent
                # Icone
                @quete.contents.blt(1,98+20*@quetes[@liste.index].description.size+25*@quetes[@liste.index].objets.size+
                25*x,@po_img,@po_img.rect)
                # Texte
                @quete.contents.draw_text(30,100+20*@quetes[@liste.index].description.size+
                25*@quetes[@liste.index].objets.size+25*x,362,20,
                @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Argent, 0)
              when 2 # Objet
                # Icone
                @quete.draw_icon($data_items[@quetes[@liste.index].recompenses[x][1]].icon_index, 0,
                100+20*@quetes[@liste.index].description.size+25*@quetes[@liste.index].objets.size+25*x)
                # Nom_Objet
                @quete.contents.draw_text(30,100+20*@quetes[@liste.index].description.size+
                25*@quetes[@liste.index].objets.size+25*x,394, 20,
                $data_items[@quetes[@liste.index].recompenses[x][1]].name, 0)
              when 3 # Arme
                # Icone
                @quete.draw_icon($data_weapons[@quetes[@liste.index].recompenses[x][1]].icon_index, 0,
                100+20*@quetes[@liste.index].description.size+25*@quetes[@liste.index].objets.size+25*x)
                # Nom_Arme
                @quete.contents.draw_text(30,100+20*@quetes[@liste.index].description.size+
                25*@quetes[@liste.index].objets.size+25*x,394, 20,
                $data_weapons[@quetes[@liste.index].recompenses[x][1]].name, 0)             
              when 4 # Armure
                # Icone
                @quete.draw_icon($data_armors[@quetes[@liste.index].recompenses[x][1]].icon_index, 0,
                100+20*@quetes[@liste.index].description.size+25*@quetes[@liste.index].objets.size+25*x)
                # Nom_Armure
                @quete.contents.draw_text(30,100+20*@quetes[@liste.index].description.size+
                25*@quetes[@liste.index].objets.size+25*x,394, 20,
                $data_armors[@quetes[@liste.index].recompenses[x][1]].name, 0)
            end # end of case @quetes[@liste.index].recompenses[x][0]
             
          end # end of for x in 0...@quetes[@liste.index].recompenses.size
         
        end # end of if @quetes[@liste.index].recompenses[0] != false
      end # end of if @tab[@liste.index] == M_Quete::Quete_terminee
    end # end of if Input.trigger?(Input::B)
  end # end of def update
end # end of class Scene_Quete < Scene_Base

Voilà Smile Donnez moi vos impressions Smile

_________________
SMS interdit, veuillez écrire en français.


Dernière édition par Raito-san le Mar 24 Aoû 2010 - 19:50, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Gardien des Scripts
Gardien des Scripts
avatar


Féminin Age : 21
Inscrit le : 30/12/2009
Messages : 1067

MessageSujet: Re: [VX] Fenêtre de Quête   Mar 24 Aoû 2010 - 17:56

O_°
C'est beaucoup plus méga mieux que l'autre (plus élaboré quoi !).
En tout cas, la création d'une quête et facile Razz

Cordialement,
Biward

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://vx-fan.1fr1.net
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Mar 24 Aoû 2010 - 18:16

Merci Smile
ça fait plaisir de savoir que je sais faire quelque chose de potable U_U

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Fenêtre de Quête   Mar 24 Aoû 2010 - 18:25

La nouvelle classe "quête" est beaucoup plus élégante! MAIS La tag spoiler éliminel'indentation du code, et ca rend sa lecture TRÈS pénible ^_^

_________________






Dernière édition par jebbou le Mar 24 Aoû 2010 - 18:28, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Mar 24 Aoû 2010 - 18:27

Voilà, j'ai changer pour la balise Code.

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Maître des Duels
Maître des Duels
avatar


Masculin Age : 25
Inscrit le : 29/07/2009
Messages : 7838

MessageSujet: Re: [VX] Fenêtre de Quête   Mar 24 Aoû 2010 - 18:29

En effet, le script est mieux. Tu as ajouté plusieurs éléments bien.
Utiliser une structure pour créer tes quêtes est une bonne idée, ça permet d'avoir la forme et d'éviter les array et hashs a ralonge.

Niveau configuration c'est mieux aussi.

Par contre niveau code, c'est vraiment fouillis. Tu met tout dans le trio start / update / terminate. C'est bien trop illisible, apprends à utiliser les méthode pour alléger certaines parties.
En regardant ton code, dans fois je trouve des lignes à rallonge. Tu devrais essayer de réduire.

Exemple :
Code:
@quete.draw_icon($data_items[@quetes[@liste.index].recompenses[x][1]].icon_index, 0,100+20*@quetes[@liste.index].description.size+25*@quetes[@liste.index].objets.size+25*x)

deviendrait
Code:
item = $data_items[@quetes[@liste.index].recompenses[x][1]].icon_index
taille_description = 20*@quetes[@liste.index].description.size
taille_liste = @quetes[@liste.index].objets.size
@quete.draw_icon(item, 0,100+taille_description+25*taille_liste+25*x)


Ah aussi, ton script a perdu sa mise en forme, et c'est assez lourd a lire, tu pourrais essayer de la remetttre ?

_________________
Gimme a hell yeah.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Mar 24 Aoû 2010 - 18:30

Ok, je vais essayer de faire ça Smile

Merci Jebbou

PS: Comment ça la mise en forme du script?

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Maître des Duels
Maître des Duels
avatar


Masculin Age : 25
Inscrit le : 29/07/2009
Messages : 7838

MessageSujet: Re: [VX] Fenêtre de Quête   Mar 24 Aoû 2010 - 18:38

En gros, sur le script que tu as mis, toutes les commadnes sont collées sur la gauche.
Un code clair et compréhensible est organisé avec des tabulations.

_________________
Gimme a hell yeah.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Mer 25 Aoû 2010 - 8:44

La version 1.5 est là!

Dans cette version, le code est plus simple, plus partitionné, et donc plus facile à modifier.
Le fonctionnement est pareil qu'avant Smile

Code:
#==============================================================================
# Script de Quêtes pour RPG Maker VX Version1.5 par Raitosan [23/08/2010] rpg-maker-vx.bbactif.com
#==============================================================================
# Class Quete
#==============================================================================
class Quete
  attr_accessor:nom
  attr_accessor:description
  attr_accessor:objets
  attr_accessor:nb_objets
  attr_accessor:interrupteur
  attr_accessor:recompenses
 
  def initialize
    # Variables d'information de la quête
    @nom = ""
    @description = []
    @objets = []
    @nb_objets = []
    @interrupteur = 0
    @recompenses = []
  end # end of initialize
end # end of class Quete
#==============================================================================
# Module M_Quete
#==============================================================================
module M_Quete
  attr_accessor:Quetes
 
  # Vocabulaire
  Quete_terminee = "Terminée"
  Quete_bloquee = "Bloquée"
  Quete_indisponible = "Aucune quête n'est disponible"
  Indisponible = "Indisponible"
  Nom_Quete_indisponible = "Aucune quête disponible"
  Recompenses = "Récompenses:" # Mot ou phrase avant les récompenses
  Points_exp = "points d'Exp" # Vous avez gagner X "points d'Exp"
  Argent = "Po" # Nom de l'argent
 
  # Couleurs
  Couleur_Base = Color.new(255,255,255) # Couleur de base
  Objets_Non_Possede = Color.new(170,170,170) # Le joueur ne possède pas l'objet
  Objets_Possede = Color.new(255,255,255) # Le joueur possède au moins un objet, mais pas le nombre requis
  Objets_Complets = Color.new(0,255,0) # Le joueur possède le bon nombre d'objet(ou plus)
 
  # Nom des images contenu dans Pictures/
  Img_Quete_terminee = "Quete_terminee"
  Img_Quete_bloquee = "Quete_bloquee"
  Img_Exp = "exp" # Icone de l'exp
  Img_Po = "po" # Icone de l'argent
 
  # Variables pour les récompenses
  Exp = 0
  Po = 1
  Objet = 2
  Arme = 3
  Armure = 4
 
  # Autres
  Position_Menu = 5 # Indique la position du curseur lorsque vous retournez dans le menu
 
  # On créer les quetes ici
  Quetes = []
 
  Quetes.push(Quete.new) # On créer la première quête
  Quetes[0].nom = "iTi Maison?" # Nom de la quête
  Quetes[0].description.push("Trouvez la maison des quêtes. Elle se") # On créer la première ligne de description
  Quetes[0].description.push("trouve dans le village, et possède une") # On créer la deuxième ligne de description
  Quetes[0].description.push("insigne avec un livre. Elle vous attend!") # On créer la deuxième ligne de description
  Quetes[0].objets.push(false) # Aucuns objets n'est requis pour finir la quête
  Quetes[0].interrupteur = 40 # Quand l'interrupteur 40 sera activer, la quête sera marquée comme Terminée
  Quetes[0].recompenses.push(false) # Aucunes récompenses
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[1].nom = "Mot perdu" # Nom de la quête
  Quetes[1].description.push("Allez chercher le mot de Sakamoto dans") # On créer la première ligne de description
  Quetes[1].description.push("sa maison au Nord-Est du village") # On créer la deuxième ligne de description
  Quetes[1].objets.push(25) # L'objet avec l'ID 25 est requis pour terminer la quête
  Quetes[1].nb_objets.push(1) # Il faut 1 fois l'objet avec l'ID 25 pour terminer la quête
  Quetes[1].interrupteur = 41 # Quand l'interrupteur 41 sera activer, la quête sera marquée comme Terminée
  Quetes[1].recompenses.push([Po, 100]) # 1ère récompense: 100 PO
  Quetes[1].recompenses.push([Exp, 25]) # 2ème récompense: 25 points d'Exp
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[2].nom = "La vie en poudre" # Nom de la quête
  Quetes[2].description.push("Sortez à l'Est du village et tuez des Slime") # On créer la première ligne de description
  Quetes[2].description.push("Mutan pour obtenir des Poudres de Vie") # On créer la deuxième ligne de description
  Quetes[2].objets.push(27) # L'objet avec l'ID 27 est requis pour terminer la quête
  Quetes[2].nb_objets.push(6) # Il faut 6 fois l'objet avec l'ID 27 pour terminer la quête
  Quetes[2].interrupteur = 42 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[2].recompenses.push([Objet, 1]) # 1ère récompense: 1 fois l'objet avec l'ID 1 (potion)
  Quetes[2].recompenses.push([Po, 350]) # 2ème récompense: 350 PO
  Quetes[2].recompenses.push([Exp, 50]) # 3ème récompense: 50 points d'Exp
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[3].nom = "Takaya...ki?" # Nom de la quête
  Quetes[3].description.push("Trouvez Takayami, et lui parler. Il se") # On créer la première ligne de description
  Quetes[3].description.push("trouve en dehors du village, vers l'Est.") # On créer la deuxième ligne de description
  Quetes[3].objets.push(false) # Pas d'objets requis pour terminer la quête
  Quetes[3].interrupteur = 43 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[3].recompenses.push(false) # Pas de récompenses
 
end
#==============================================================================
# Class Scene_Quete
#==============================================================================
class Scene_Quete < Scene_Base
  def start   
    create_menu_background # Fond transparent
   
    create_pictures
   
    @quetes = M_Quete::Quetes # On ajoutes les quêtes
    @marge = 10 # Marge à gauche dans la fenêtre d'info de la quête
    @espace = 24 # Taille des lignes, et taille des sauts de lignes
    @nb_lines = 0 # nombre de ligne qu'utilise la quête
   
    create_tab
   
    @liste = Window_Command.new(150, @tab,1,16) # Liste des quêtes
    @quete = Window_Base.new(150,0,394, 416) # Informations de la Quête
  end # end of def start
 
  def terminate
    dispose_menu_background
    @liste.dispose
    @quete.dispose
    @quete_terminee.dispose
    @quete_bloquee.dispose
  end # end of def terminate
 
#===========================================================================
# def create_pictures
#===========================================================================

  def create_pictures
    @quete_terminee = Cache.picture(M_Quete::Img_Quete_terminee) # Image des quêtes terminées
    @quete_bloquee = Cache.picture(M_Quete::Img_Quete_bloquee) # Image des quêtes bloquées
    @exp_img = Cache.picture(M_Quete::Img_Exp) # Icone de l'exp
    @po_img = Cache.picture(M_Quete::Img_Po) #Icone des PO (pièces d'or)
  end
 
#===========================================================================
# def create_tab
#===========================================================================

  def create_tab
    @tab = []
   
    if @quetes.size > 0
      for x in 0...@quetes.size
        if $game_switches[@quetes[x].interrupteur] == true
          @tab.push(M_Quete::Quete_terminee) # Quête terminée
        else
          if $game_switches[@quetes[x-1].interrupteur] == true
            @tab.push(@quetes[x].nom) # Liste des noms de quêtes
          else
            if x == 0
              @tab.push(@quetes[x].nom)
            else
              @tab.push(M_Quete::Quete_bloquee) # Liste des quêtes bloquées
            end # en of if x == 0
          end # end of $game_switches[@quetes[x-1].interrupteur] == true
        end # end of if $game_switches[@quetes[x].interrupteur] == true
      end # end of for x in 0...@quetes.size
    else
      tab.push(M_Quete::Indisponible)
      @quetes = [ [M_Quete::Nom_Quete_indisponible, [M_Quete::Quete_indisponible], [], [], []] ]
    end # end of if @quetes.size > 0
  end
 
#==========================================================================
# def objets_requis?
#==========================================================================
 
  def objets_requis?
    if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
      return true
    end
  end
 
#==========================================================================
# def recompense?
#==========================================================================
 
  def recompense?
    if @quetes[@liste.index].recompenses[0] != false
      return true
    end
  end
 
#==========================================================================
# def saut_de_ligne
#==========================================================================
 
  def saut_de_ligne
    @nb_lines += 1
  end
 
#==========================================================================
# def afficher_nom
#==========================================================================

  def afficher_nom
    @quete.contents.draw_text(0,0,362,20, @quetes[@liste.index].nom, 1) # Nom de la Quête
    @nb_lines += 1
    saut_de_ligne
  end
 
#==========================================================================
# def afficher_description
#==========================================================================

  def afficher_description
    description = ""
    for x in 0...@quetes[@liste.index].description.size
      # Description de la Quête
      description = @quetes[@liste.index].description[x]
      hauteur = @espace*@nb_lines
      @quete.contents.draw_text(@marge, hauteur, 394, @espace, description, 0)
      @nb_lines += 1
    end # end of for x in 0...@quetes[@liste.index].description.size
 
    if objets_requis?
      saut_de_ligne
    elsif recompense?
      saut_de_ligne
    end
  end
 
#==========================================================================
# def afficher_objets
#==========================================================================
 
  def afficher_objets
    if objets_requis?
      for x in 0...@quetes[@liste.index].objets.size
        # Image de l'objet
        icone = $data_items[@quetes[@liste.index].objets[x]].icon_index
        hauteur = @espace*@nb_lines
        @quete.draw_icon(icone, @marge, hauteur)
       
        # Couleurs
        if $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) <= 0
          @quete.contents.font.color = M_Quete::Objets_Non_Possede # Objet non possédé
        elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) < @quetes[@liste.index].nb_objets[x]
          @quete.contents.font.color = M_Quete::Objets_Possede # Objet possédé
        elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) >= @quetes[@liste.index].nb_objets[x]
          @quete.contents.font.color = M_Quete::Objets_Complets # Le nombre d'objet est suffisant
        end # end of if $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) <= 0
       
        # Nom de l'objet, nombre d'objet possédé, et requis
        nom = $data_items[@quetes[@liste.index].objets[x]].name
        nb_objets_posseder = $game_party.item_number($data_items[@quetes[@liste.index].objets[x]])
        nb_objets_requis = @quetes[@liste.index].nb_objets[x]
        texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )"
       
        @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0)
       
        @nb_lines+=1
      end # end of for x in 0...@quetes[@liste.index].objets.size
      saut_de_ligne
    end # end of if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
  end
 
#==========================================================================
# def afficher_objets
#==========================================================================
 
  def afficher_recompenses
    if recompense?
      #On remet la couleur de base
      @quete.contents.font.color = M_Quete::Couleur_Base
     
      # Récompenses
      hauteur = @espace*@nb_lines
      @quete.contents.draw_text(@marge, hauteur, 362, @espace, M_Quete::Recompenses, 0)
     
      @nb_lines += 1
     
      for x in 0...@quetes[@liste.index].recompenses.size
        case @quetes[@liste.index].recompenses[x][0]
          when 0 # Exp
            # Icone
            hauteur = @espace*@nb_lines
            @quete.contents.blt(4+@marge, hauteur,@exp_img,@exp_img.rect)
            # Texte
            texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Points_exp
            @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0)
          when 1 # Argent
            # Icone
            hauteur = @espace*@nb_lines
            @quete.contents.blt(1+@marge, hauteur, @po_img, @po_img.rect)
            # Texte
            texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Argent
            @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0)
          when 2 # Objet
            # Icone
            icone = $data_items[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge ,hauteur)
            # Nom_Objet
            nom = $data_items[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur, 394, @espace, nom, 0)
          when 3 # Arme
            # Icone
            icone = $data_weapons[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, 0+@marge, hauteur)
            # Nom_Arme
            nom = $data_weapons[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0)             
          when 4 # Armure
            # Icone
            icone = $data_armors[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, 0+@marge, hauteur)
            # Nom_Armure
            nom = $data_armors[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0)
        end # end of case @quetes[@liste.index].recompenses[x][0]
        @nb_lines += 1
      end # end of for x in 0...@quetes[@liste.index].recompenses.size
     
    end # end of if @quetes[@liste.index].recompenses[0] != false
  end
 
#==========================================================================
# def afficher_contenu
#==========================================================================

  def afficher_contenu
    afficher_nom
    afficher_description
    afficher_objets
    afficher_recompenses
  end
 
  def terminee?
    if @tab[@liste.index] == M_Quete::Quete_terminee
      # Quête terminée
      @quete.contents.blt(4,4,@quete_terminee,@quete_terminee.rect)
    elsif @tab[@liste.index] == M_Quete::Quete_bloquee
      # Quête bloquée
      @quete.contents.blt(4,4,@quete_bloquee,@quete_bloquee.rect)
    else
      @nb_lines = 0
      afficher_contenu
    end # end of if @tab[@liste.index] == M_Quete::Quete_terminee
  end
 
  def update
    update_menu_background # Fond transparent
    @liste.update
    @quete.update
   
    if Input.trigger?(Input::B) # Annulation
      Sound.play_cancel
      $scene = Scene_Menu.new(M_Quete::Position_Menu) # On retroune dans le menu
    elsif Input.trigger?(Input::C) # Validation
      Sound.play_decision
      @quete.contents.clear # On vide la fenêtre
      @quete.contents.font.color = M_Quete::Couleur_Base # On met la couleur du texte de base.
     
      terminee?
    end # end of if Input.trigger?(Input::B)
  end # end of def update
end # end of class Scene_Quete < Scene_Base

Voilà, dites moi ce que vous en pensez Smile

Je vais peut-être sortir la version 2 dans quelques jours, qui offrira quelque chose de vraiment pratique Smile La version 2 sera(s'il n'y a pas de problèmes) la version finale de ce script.

_________________
SMS interdit, veuillez écrire en français.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
† Fondateur du forum †
† Fondateur du forum †
avatar


Masculin Age : 24
Inscrit le : 09/02/2008
Messages : 1974

MessageSujet: Re: [VX] Fenêtre de Quête   Mer 25 Aoû 2010 - 11:41

Version 2 du script:

Voici la version finale! J'ai réussi à la faire étonnamment rapidement, je pensais galérer encore quelques jours, mais tout s'est finalement très bien passé!

Les nouveautés:

Plus de limite de place!
Nous n'avions certes pas de limite pour le nombre de description, d'items etc... mais nous étions limité par l'écran! Maintenant cette époque est révolue! Quand vous accéder aux informations d'une quête, vous avez la possibilité de descendre un curseur pour voir la suite de la quête! Rien ne change dans la création d'une quête à ce niveau là.

Plus de type d'objets disponible pour les objets demandés
Dans les anciennes versions, nous ne pouvions que demander des objets pour que la quête puisse être terminée. Mais si on voulait que le joueur ramène à un PNJ une armure? Eh bien on ne pouvais pas, mais maintenant cela est possible!
Il n'y a qu'une seule chose qui change lorsqu'on créer une quête:

Quetes[0].objets.push(12) deviens Quetes[01].objets.push([TYPE,12])
Donc, si on veux dire au joueur qu'il faut qu'il ramène une armure à un PNJ, nous devrons faire comme ceci:

Quetes[01].objets.push([Armure,12])
Pour une arme: Quetes[01].objets.push([Arme,12])

C'est aussi simple que ça!

Voici quelques screens:





Voici donc le script:

Code:
#==============================================================================
# Script de Quêtes pour RPG Maker VX Version2 par Raitosan [25/08/2010] rpg-maker-vx.bbactif.com
#==============================================================================
# Class Quete
#==============================================================================
class Quete
  attr_accessor:nom
  attr_accessor:description
  attr_accessor:objets
  attr_accessor:nb_objets
  attr_accessor:interrupteur
  attr_accessor:recompenses
 
  def initialize
    # Variables d'information de la quête
    @nom = ""
    @description = []
    @objets = []
    @nb_objets = []
    @interrupteur = 0
    @recompenses = []
  end # end of initialize
end # end of class Quete
#==============================================================================
# Module M_Quete
#==============================================================================
module M_Quete
  attr_accessor:Quetes
 
  # Vocabulaire
  Quete_terminee = "Terminée"
  Quete_bloquee = "Bloquée"
  Quete_indisponible = "Aucune quête n'est disponible"
  Indisponible = "Indisponible"
  Nom_Quete_indisponible = "Aucune quête disponible"
  Recompenses = "Récompenses:" # Mot ou phrase avant les récompenses
  Points_exp = "points d'Exp" # Vous avez gagner X "points d'Exp"
  Argent = "Po" # Nom de l'argent
 
  # Couleurs
  Couleur_Base = Color.new(255,255,255) # Couleur de base
  Objets_Non_Possede = Color.new(170,170,170) # Le joueur ne possède pas l'objet
  Objets_Possede = Color.new(255,255,255) # Le joueur possède au moins un objet, mais pas le nombre requis
  Objets_Complets = Color.new(0,255,0) # Le joueur possède le bon nombre d'objet(ou plus)
 
  # Nom des images contenu dans Pictures/
  Img_Quete_terminee = "Quete_terminee"
  Img_Quete_bloquee = "Quete_bloquee"
  Img_Exp = "exp" # Icone de l'exp
  Img_Po = "po" # Icone de l'argent
 
  # Variables pour les récompenses
  Exp = 0
  Po = 1
  Objet = 2
  Arme = 3
  Armure = 4
 
  # Autres
  Position_Menu = 5 # Indique la position du curseur lorsque vous retournez dans le menu
 
  # On créer les quetes ici
  Quetes = []
 
  Quetes.push(Quete.new) # On créer la première quête
  Quetes[0].nom = "iTi Maison?" # Nom de la quête
  Quetes[0].description.push("Trouvez la maison des quêtes. Elle se") # On créer la première ligne de description
  Quetes[0].description.push("trouve dans le village, et possède une") # On créer la deuxième ligne de description
  Quetes[0].description.push("insigne avec un livre. Elle vous attend!") # On créer la deuxième ligne de description
  Quetes[0].objets.push(false) # Aucuns objets n'est requis pour finir la quête
  Quetes[0].interrupteur = 40 # Quand l'interrupteur 40 sera activer, la quête sera marquée comme Terminée
  Quetes[0].recompenses.push(false) # Aucunes récompenses
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[1].nom = "Nom de la Quête" # Nom de la quête
  #Ici, j'ai créer une boucle qui ajoute les commentaires à ma place, désoler j'avais la flème de le faire^^
  for x in 1...9
    Quetes[1].description.push("Ligne de description " + x.to_s) # On créer la première ligne de description
  end
  Quetes[1].objets.push([Objet,25])
  Quetes[1].objets.push([Objet,15])
  Quetes[1].objets.push([Objet,7])
  Quetes[1].objets.push([Arme,17])
  Quetes[1].objets.push([Armure,2])
  Quetes[1].nb_objets.push(1)
  Quetes[1].nb_objets.push(5)
  Quetes[1].nb_objets.push(3)
  Quetes[1].nb_objets.push(1)
  Quetes[1].nb_objets.push(2)
  Quetes[1].interrupteur = 41
  Quetes[1].recompenses.push([Objet, 15])
  Quetes[1].recompenses.push([Objet, 5])
  Quetes[1].recompenses.push([Arme, 7])
  Quetes[1].recompenses.push([Arme, 9])
  Quetes[1].recompenses.push([Arme, 13])
  Quetes[1].recompenses.push([Armure, 17])
  Quetes[1].recompenses.push([Exp, 25])
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[2].nom = "La vie en poudre" # Nom de la quête
  Quetes[2].description.push("Sortez à l'Est du village et tuez des Slime") # On créer la première ligne de description
  Quetes[2].description.push("Mutan pour obtenir des Poudres de Vie") # On créer la deuxième ligne de description
  Quetes[2].objets.push([Objet,27]) # L'objet avec l'ID 27 est requis pour terminer la quête
  Quetes[2].nb_objets.push(6) # Il faut 6 fois l'objet avec l'ID 27 pour terminer la quête
  Quetes[2].interrupteur = 42 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[2].recompenses.push([Objet, 1]) # 1ère récompense: 1 fois l'objet avec l'ID 1 (potion)
  Quetes[2].recompenses.push([Po, 350]) # 2ème récompense: 350 PO
  Quetes[2].recompenses.push([Exp, 50]) # 3ème récompense: 50 points d'Exp
 
  Quetes.push(Quete.new) # On créer la deuxième quête
  Quetes[3].nom = "Takaya...ki?" # Nom de la quête
  Quetes[3].description.push("Trouvez Takayami, et lui parler. Il se") # On créer la première ligne de description
  Quetes[3].description.push("trouve en dehors du village, vers l'Est.") # On créer la deuxième ligne de description
  Quetes[3].objets.push(false) # Pas d'objets requis pour terminer la quête
  Quetes[3].interrupteur = 43 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée
  Quetes[3].recompenses.push(false) # Pas de récompenses
 
end
#==============================================================================
# Class Scene_Quete
#==============================================================================
class Scene_Quete < Scene_Base
  def start   
    create_menu_background # Fond transparent
   
    create_pictures
   
    @quetes = M_Quete::Quetes # On ajoutes les quêtes
    @marge = 10 # Marge à gauche dans la fenêtre d'info de la quête
    @espace = 24 # Taille des lignes, et taille des sauts de lignes
    @nb_lines = 0 # Nombre de ligne qu'utilise la quête
   
    create_tab
   
    @liste = Window_Command.new(150, @tab,1,16) # Liste des quêtes
   
    @quete = Window_Informations.new(394, [""], 1, 16) # Informations de la Quête
    @quete.x = 150
    @quete.y = 0
    @quete.active = false
    @quete.visible = false
   
    #@quete = Window_Base.new(150,0,394, 416) # Informations de la Quête
  end # end of def start
 
  def terminate
    dispose_menu_background
    @liste.dispose
    @quete.dispose
    @quete_terminee.dispose
    @quete_bloquee.dispose
  end # end of def terminate
 
#===========================================================================
# def create_pictures
#===========================================================================

  def create_pictures
    @quete_terminee = Cache.picture(M_Quete::Img_Quete_terminee) # Image des quêtes terminées
    @quete_bloquee = Cache.picture(M_Quete::Img_Quete_bloquee) # Image des quêtes bloquées
    @exp_img = Cache.picture(M_Quete::Img_Exp) # Icone de l'exp
    @po_img = Cache.picture(M_Quete::Img_Po) #Icone des PO (pièces d'or)
  end
 
#===========================================================================
# def create_tab
#===========================================================================

  def create_tab
    @tab = []
   
    if @quetes.size > 0
      for x in 0...@quetes.size
        if $game_switches[@quetes[x].interrupteur] == true
          @tab.push(M_Quete::Quete_terminee) # Quête terminée
        else
          if $game_switches[@quetes[x-1].interrupteur] == true
            @tab.push(@quetes[x].nom) # Liste des noms de quêtes
          else
            if x == 0
              @tab.push(@quetes[x].nom)
            else
              @tab.push(M_Quete::Quete_bloquee) # Liste des quêtes bloquées
            end # en of if x == 0
          end # end of $game_switches[@quetes[x-1].interrupteur] == true
        end # end of if $game_switches[@quetes[x].interrupteur] == true
      end # end of for x in 0...@quetes.size
    else
      tab.push(M_Quete::Indisponible)
      @quetes = [ [M_Quete::Nom_Quete_indisponible, [M_Quete::Quete_indisponible], [], [], []] ]
    end # end of if @quetes.size > 0
  end
 
#==========================================================================
# def create_window_information
#==========================================================================

  def create_window_information(abscisses, ordonnees, w, nb_lignes, nb_colonnes, nb_lignes_afficher)
   
    tableau = []   
    for x in 0...nb_lignes
      tableau.push("")
    end
   
    @quete.dispose
   
    @quete = Window_Informations.new(w, tableau, nb_colonnes, nb_lignes_afficher) # Informations de la Quête
    @quete.x = abscisses
    @quete.y = ordonnees
    @quete.active = true
    @quete.visible = true
  end
 
#==========================================================================
# def objets_requis?
#==========================================================================
 
  def objets_requis?
    if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
      return true
    end
  end
 
#==========================================================================
# def recompense?
#==========================================================================
 
  def recompense?
    if @quetes[@liste.index].recompenses[0] != false
      return true
    end
  end
 
#==========================================================================
# def saut_de_ligne
#==========================================================================
 
  def saut_de_ligne
    @nb_lines += 1
  end
 
#==========================================================================
# def afficher_nom
#==========================================================================

  def afficher_nom
    @quete.contents.draw_text(0,0,362,20, @quetes[@liste.index].nom, 1) # Nom de la Quête
    @nb_lines += 1
    saut_de_ligne
  end
 
#==========================================================================
# def afficher_description
#==========================================================================

  def afficher_description
    description = ""
    for x in 0...@quetes[@liste.index].description.size
      # Description de la Quête
      description = @quetes[@liste.index].description[x]
      hauteur = @espace*@nb_lines
      @quete.contents.draw_text(@marge, hauteur, 394, @espace, description, 0)
      @nb_lines += 1
    end # end of for x in 0...@quetes[@liste.index].description.size
 
    if objets_requis?
      saut_de_ligne
    elsif recompense?
      saut_de_ligne
    end
  end
 
#==========================================================================
# def afficher_objets
#==========================================================================
 
  def afficher_objets
    if objets_requis?
      for x in 0...@quetes[@liste.index].objets.size       
        # Couleurs
        if $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) <= 0
          @quete.contents.font.color = M_Quete::Objets_Non_Possede # Objet non possédé
        elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) < @quetes[@liste.index].nb_objets[x]
          @quete.contents.font.color = M_Quete::Objets_Possede # Objet possédé
        elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) >= @quetes[@liste.index].nb_objets[x]
          @quete.contents.font.color = M_Quete::Objets_Complets # Le nombre d'objet est suffisant
        end # end of if $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) <= 0
       
        case @quetes[@liste.index].objets[x][0]
          when M_Quete::Objet
            # Image de l'objet
            icone = $data_items[@quetes[@liste.index].objets[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge, hauteur)
           
            # Nom de l'objet, nombre d'objet possédé, et requis
            nom = $data_items[@quetes[@liste.index].objets[x][1]].name
            nb_objets_posseder = $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]])
            nb_objets_requis = @quetes[@liste.index].nb_objets[x]
            texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )"
            @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0)
          when M_Quete::Arme
            # Image de l'objet
            icone = $data_weapons[@quetes[@liste.index].objets[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge, hauteur)
           
            # Nom de l'objet, nombre d'objet possédé, et requis
            nom = $data_weapons[@quetes[@liste.index].objets[x][1]].name
            nb_objets_posseder = $game_party.item_number($data_weapons[@quetes[@liste.index].objets[x][1]])
            nb_objets_requis = @quetes[@liste.index].nb_objets[x]
            texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )"
            @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0)
          when M_Quete::Armure
            # Image de l'objet
            icone = $data_armors[@quetes[@liste.index].objets[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge, hauteur)
           
            # Nom de l'objet, nombre d'objet possédé, et requis
            nom = $data_armors[@quetes[@liste.index].objets[x][1]].name
            nb_objets_posseder = $game_party.item_number($data_armors[@quetes[@liste.index].objets[x][1]])
            nb_objets_requis = @quetes[@liste.index].nb_objets[x]
            texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )"
            @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0)
        end
       
        @nb_lines+=1
      end # end of for x in 0...@quetes[@liste.index].objets.size
      saut_de_ligne
    end # end of if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false
  end
 
#==========================================================================
# def afficher_objets
#==========================================================================
 
  def afficher_recompenses
    if recompense?
      #On remet la couleur de base
      @quete.contents.font.color = M_Quete::Couleur_Base
     
      # Récompenses
      hauteur = @espace*@nb_lines
      @quete.contents.draw_text(@marge, hauteur, 362, @espace, M_Quete::Recompenses, 0)
     
      @nb_lines += 1
     
      for x in 0...@quetes[@liste.index].recompenses.size
        case @quetes[@liste.index].recompenses[x][0]
          when M_Quete::Exp # Exp
            # Icone
            hauteur = @espace*@nb_lines
            @quete.contents.blt(4+@marge, hauteur,@exp_img,@exp_img.rect)
            # Texte
            texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Points_exp
            @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0)
          when M_Quete::Po # Argent
            # Icone
            hauteur = @espace*@nb_lines
            @quete.contents.blt(1+@marge, hauteur, @po_img, @po_img.rect)
            # Texte
            texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Argent
            @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0)
          when M_Quete::Objet # Objet
            # Icone
            icone = $data_items[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, @marge ,hauteur)
            # Nom_Objet
            nom = $data_items[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur, 394, @espace, nom, 0)
          when M_Quete::Arme # Arme
            # Icone
            icone = $data_weapons[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, 0+@marge, hauteur)
            # Nom_Arme
            nom = $data_weapons[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0)             
          when M_Quete::Armure # Armure
            # Icone
            icone = $data_armors[@quetes[@liste.index].recompenses[x][1]].icon_index
            hauteur = @espace*@nb_lines
            @quete.draw_icon(icone, 0+@marge, hauteur)
            # Nom_Armure
            nom = $data_armors[@quetes[@liste.index].recompenses[x][1]].name
            @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0)
        end # end of case @quetes[@liste.index].recompenses[x][0]
        @nb_lines += 1
      end # end of for x in 0...@quetes[@liste.index].recompenses.size
      @nb_lines -= 1 # On supprime le dernier retour à la ligne
    end # end of if recompense?
  end
 
#==========================================================================
# def afficher_contenu
#==========================================================================

  def afficher_contenu
    afficher_nom
    afficher_description
    afficher_objets
    afficher_recompenses
  end
 
  def nb_line_quest(quete)
    nb_line_quest = 2 # Titre+saut de ligne
    nb_line_quest += @quetes[quete].description.size # description
    if objets_requis?
      nb_line_quest += 1 # saut de ligne
      nb_line_quest += @quetes[quete].objets.size # Objets
    end
    if recompense?
      nb_line_quest += 2 #saut de ligne et le mot Recompenses:
      nb_line_quest += @quetes[quete].recompenses.size # recompenses
    end
    return nb_line_quest
  end
 
  def terminee?
    if @tab[@liste.index] == M_Quete::Quete_terminee
      # Quête terminée
      @quete.contents.blt(4,4,@quete_terminee,@quete_terminee.rect)
    elsif @tab[@liste.index] == M_Quete::Quete_bloquee
      # Quête bloquée
      @quete.contents.blt(4,4,@quete_bloquee,@quete_bloquee.rect)
    else
      @nb_lines = 0
      afficher_contenu
    end # end of if @tab[@liste.index] == M_Quete::Quete_terminee
  end
 
  def update
    update_menu_background # Fond transparent
    @liste.update
    if @quete != nil
      @quete.update
    end
     
    if Input.trigger?(Input::B) # Annulation
      Sound.play_cancel
      if @quete.active
        @quete.active = false
        @quete.visible = false
        @liste.active = true
      else
        $scene = Scene_Menu.new(M_Quete::Position_Menu) # On retroune dans le menu
      end
    elsif Input.trigger?(Input::C) # Validation
     
      if @tab[@liste.index] != M_Quete::Quete_bloquee && @tab[@liste.index] != M_Quete::Quete_terminee
        Sound.play_decision
        @liste.active = false
        create_window_information(150, 0, 394, nb_line_quest(@liste.index), 1, 16)
      else
        Sound.play_buzzer
      end

      @quete.contents.font.color = M_Quete::Couleur_Base # On met la couleur du texte de base.
     
      terminee?
    end # end of if Input.trigger?(Input::B)
  end # end of def update
end # end of class Scene_Quete < Scene_Base

class Window_Informations < Window_Command
  def refresh
    create_contents
  end
end

_________________
SMS interdit, veuillez écrire en français.


Dernière édition par Raito-san le Mer 25 Aoû 2010 - 12:40, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.zeforiu.fr
Gardien des Scripts
Gardien des Scripts
avatar


Féminin Age : 21
Inscrit le : 30/12/2009
Messages : 1067

MessageSujet: Re: [VX] Fenêtre de Quête   Mer 25 Aoû 2010 - 12:25

Ah Smile
Tu as finalement réussi avec la Window Command Razz
Est-ce la dernière version ou tu prévois encore quelque chose ?

Cordialement,
Biward

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://vx-fan.1fr1.net
Contenu sponsorisé




MessageSujet: Re: [VX] Fenêtre de Quête   

Revenir en haut Aller en bas
 

[VX] Fenêtre de Quête

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant

 Sujets similaires

-
» Fenêtres qui s'ouvrent toutes seules sur internet sous IE et Mozzilla
» [Résolu] Fenêtres publicitaires intempestives
» [Résolu] PC Land : problème ascenseur fenêtre de saisie
» Utiliser la fenêtre Krypton
» Aspect de la fenêtre de train

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Divers-
Créer un forum | © phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit