AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

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
Raitosan
† Fondateur du forum †
† Fondateur du forum †
Raitosan


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMar 24 Aoû 2010 - 18:30

Ok, je vais essayer de faire ça Smile

Merci Jebbou

PS: Comment ça la mise en forme du script?
Revenir en haut Aller en bas
http://www.zeforiu.fr
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 32
Inscrit le : 29/07/2009
Messages : 7841

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMar 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.
Revenir en haut Aller en bas
Raitosan
† Fondateur du forum †
† Fondateur du forum †
Raitosan


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMer 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.
Revenir en haut Aller en bas
http://www.zeforiu.fr
Raitosan
† Fondateur du forum †
† Fondateur du forum †
Raitosan


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMer 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:

[VX] Fenêtre de Quête - Page 2 Screen18
[VX] Fenêtre de Quête - Page 2 Screen19
[VX] Fenêtre de Quête - Page 2 Screen20

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


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


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMer 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
http://vx-fan.1fr1.net
Red-seeds
Templier Lv.15
Templier Lv.15
Red-seeds


Masculin Age : 27
Inscrit le : 02/07/2009
Messages : 1169

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMer 25 Aoû 2010 - 12:38

Hum, c'est vrai qui il y a du changement di diou !
Bon je ne pense pas le prendre mais C\\'est bien
Félicitation !
Revenir en haut Aller en bas
Raitosan
† Fondateur du forum †
† Fondateur du forum †
Raitosan


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMer 25 Aoû 2010 - 13:24

Citation :
Est-ce la dernière version ou tu prévois encore quelque chose ?

Citation :
Voici la version finale!

Oui j'ai réussi avec le window_command, mais je n'ai pas fait comme tu me l'as dit, j'ai trouver une solution qui me paraissais meilleur. Merci pour tes conseils Smile

Merci black974 Smile
Revenir en haut Aller en bas
http://www.zeforiu.fr
ASHKA
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Age : 42
Inscrit le : 04/12/2008
Messages : 383

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMer 25 Aoû 2010 - 18:08

Un truc cool, ça serait de configurer les quetes dans un fichier txt.
Ensuite, quitte à utiliser une classe Quetes, pourquoi ne pas jouer le jeu à fond.
Créer un nouvel objet quand on demarque une quete et non pas les créer toutes au debut du jeu.
Enfin, ça, c'est chacun son truc.

Bravo, t'as commencé par un script de menu, la premiere etape pour devenir scripteur ...
Revenir en haut Aller en bas
Raitosan
† Fondateur du forum †
† Fondateur du forum †
Raitosan


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMer 25 Aoû 2010 - 18:10

Oh, ça risque d'être dur ça ^^

Merci Smile
Revenir en haut Aller en bas
http://www.zeforiu.fr
Onyx31
Citadin Lv.7
Citadin Lv.7
Onyx31


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeJeu 26 Aoû 2010 - 16:41

Bon et bien ça commence à être du lourd tout ça !

J'étais pas parti dans l'idée d'utiliser ton scripts (parcequ'il y en a pleins d'autres sur le marché) mais là je crois que ça se discute XD

Donc je vais le prendre et certainement l'utiliser. Maintenant j'aurais une question, est il possible de rajouter une bulle avec point d'exclamation ou interrogations lorsqu'une quête est en cours, achevée, disponible etc (un peu comme dans les MMO)

C'est l'unique question qu'il me reste sur cette petite merveille =)
Revenir en haut Aller en bas
Raitosan
† Fondateur du forum †
† Fondateur du forum †
Raitosan


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

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeJeu 26 Aoû 2010 - 16:43

Merci Smile je pense que tu peux le faire en évent je pense.

Désoler mais je débute en RGSS2, ce script étais mon premier, donc je ne sais pas trop comment faire^^
Revenir en haut Aller en bas
http://www.zeforiu.fr
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 32
Inscrit le : 29/07/2009
Messages : 7841

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeJeu 26 Aoû 2010 - 16:46

Faisable simplement en event...

En plus le script de Raito utilise des interrupteurs du jeu, ce qui rend la chose encore plus simple.
Revenir en haut Aller en bas
Ngaziki
Poulet trizo Lv.3
Poulet trizo Lv.3
Ngaziki


Masculin Age : 27
Inscrit le : 10/10/2010
Messages : 41

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeMar 2 Nov 2010 - 21:55

Raito le sript je les mis endessous de materiel puis j'allume le jeux je vais menu 'ECHAP"
rien ne se passe pourquoi faut t'il rajouter de chose que tu a pas mis

JE DEBUTE ^^

Revenir en haut Aller en bas
esteban.da
Poulet Lv.1
Poulet Lv.1
esteban.da


Inscrit le : 11/01/2011
Messages : 6

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeLun 18 Avr 2011 - 6:22

Je trouve se script très bien mais serait il possible d'intégrer le suivit des quêtes au menu???

Merci d'avance.
Revenir en haut Aller en bas
Kouett
Mage Lv.11
Mage Lv.11
Kouett


Féminin Age : 26
Inscrit le : 22/08/2010
Messages : 521

[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitimeLun 18 Avr 2011 - 9:52

C'est bien de détérrer un sujet vieux d'un an ?..
Bref, tu aurais pu faire une demande de script ici au lieu de up ce sujet vieux.

Ça va Kouett, merci de laisser faire les modérateurs pour ce genre de choses. Ce n'est pas ton travail de réprimander les autres.
Revenir en haut Aller en bas
http://eden-making.frbb.net/
Contenu sponsorisé




[VX] Fenêtre de Quête - Page 2 Empty
MessageSujet: Re: [VX] Fenêtre de Quête   [VX] Fenêtre de Quête - Page 2 Icon_minitime

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

-
» [Demande]Fenetre pour accepter un quete
» fenetre fille dans fenetre mére [resolu]
» [VX] Fenêtre de Statut
» [VX] Fenêtre de Stats sur la Map
» chara fenêtre

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 | Cookies | Forum gratuit