Pokémon Script Project Forum Index

Manuel | Search
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Systeme de Quetes
Goto page: <  1, 2, 3, 49, 10, 11  >
 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
Ace Attorney Man
Guest





PostPosted: Sat 6 Dec - 17:09 (2008)    Post subject: Systeme de Quetes

ben partez comme base du condition si pokemon_possede(x) et insérez-le en script ça peut pas marcher??
Back to top
Publicité






PostPosted: Sat 6 Dec - 17:09 (2008)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Angi-MK
Membre


Joined: 29 Oct 2008
Posts: 2,303
Localisation: Québec
Masculin

PostPosted: Sun 7 Dec - 02:00 (2008)    Post subject: Systeme de Quetes

C'est bon comme script, c'est pas mal quoi.
Je le prendrais (peut-être pas) mais c'est vraiment pas mal, ça tourne bein Bouche extensiblek:
Back to top
Visit poster’s website
Zelda
Ex-staff


Joined: 29 Apr 2008
Posts: 2,442
Localisation: Nantes (44)

PostPosted: Sun 7 Dec - 10:24 (2008)    Post subject: Systeme de Quetes

A REFAIRE : Chasser pokémon. Il n'y a que certain pokémon qui peuvent être chasser mais tous ( va savoir pourquoi T.T )
Back to top
Visit poster’s website
Zelda
Ex-staff


Joined: 29 Apr 2008
Posts: 2,442
Localisation: Nantes (44)

PostPosted: Fri 2 Jan - 20:44 (2009)    Post subject: Systeme de Quetes

MEGA UP !

Fonction Capturer, Rencontrer et chasser un pokémon opérationnel !
Suppression des récompenses ou quetes Armes et Armures
Prise en compte des pokémon dréssés ou pas pour les fonction rencontrer ou chasser ( voir capturer )
Back to top
Visit poster’s website
PiVa
Guest





PostPosted: Fri 2 Jan - 21:00 (2009)    Post subject: Systeme de Quetes

CONGRATULATION

Super, le system de quêtes j'en avais besoin Imbécile heureux

!!!!!!!!!!!!!!
Back to top
Ace Attorney Man
Guest





PostPosted: Sat 3 Jan - 15:06 (2009)    Post subject: Systeme de Quetes

Oo

Tu as poster pile avant que je poste que j'en avais besoin Oo

Sinon super^^

J'ajoute de suite la màj du script à mon projet ^^(il y avait déjà l'ancienne version Petit saligaud mal élevé)
Back to top
Zelda
Ex-staff


Joined: 29 Apr 2008
Posts: 2,442
Localisation: Nantes (44)

PostPosted: Sat 3 Jan - 16:35 (2009)    Post subject: Systeme de Quetes

Sphinx nous concocte encore des surprise !

- Récompense : Pokémon
- Automatisation des lancement de quetes
- Objet qu'on a plus reste dans la mission ( ex : il nous faut une super ball, on l'a puis on l'utilise, il est tjr dit qu'on l'a eu )
- Codnesation des script ( plus besoin de modifier d'autres scripts :D )
Back to top
Visit poster’s website
PiVa
Guest





PostPosted: Sat 3 Jan - 17:03 (2009)    Post subject: Systeme de Quetes

J'ai fait un cadeau pour vous :
Back to top
Zelda
Ex-staff


Joined: 29 Apr 2008
Posts: 2,442
Localisation: Nantes (44)

PostPosted: Sat 3 Jan - 17:18 (2009)    Post subject: Systeme de Quetes

Waw ! GG ! 
Back to top
Visit poster’s website
PiVa
Guest





PostPosted: Sat 3 Jan - 17:20 (2009)    Post subject: Systeme de Quetes

"GG" ?
Back to top
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Sat 3 Jan - 17:36 (2009)    Post subject: Systeme de Quetes

Zelda wrote:
- Codnesation des script ( plus besoin de modifier d'autres scripts :D )


malheureusement, g pas réussi ca ^_^"

Mais pour le reste, j'ai réussi Imbécile heureux

Voici la marche à suivre :

1) Dans le script Game_Player (le 2°), ajouter avant le dernier end ceci :
Code:
  def check_event_trigger_here(triggers)
    result = false
    if $game_system.map_interpreter.running?
      return result
    end
    for event in $game_map.events.values
      if event.x == @x and event.y == @y and triggers.include?(event.trigger)
        if not event.jumping? and event.over_trigger?
          $pokemon_party.quete_parler(event.event.name)
          event.start
          result = true
        end
      end
    end
    return result
  end


2) Dans le script Interpreter Bis, juste après :
Code:
  #--------------------------------------------------------------------------
  # Ajouter / Retirer objets
  #--------------------------------------------------------------------------
  def command_126
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    $pokemon_party.add_item(@parameters[0], value)

ajouter :
Code:
    $pokemon_party.quete_tr_obj(@parameters[0],value)


3) Dans le script Pokemon_Battle_Core_1, avant :
Code:
        draw_text(@enemy.given_name, "est K.O.!")

ajouter :
Code:
        $pokemon_party.quete_vaincre_pokemon(@enemy.id)


4) Dans le script Pokemon_Battle_Wild, avant :
Code:
      $battle_var.reset

ajouter :
Code:
      $sauvage = false

et juste après :
Code:
      # Mise à jour Pokedex: Pokémon vu
      $data_pokedex[@enemy.id][0] = true

ajouter :
Code:
      $pokemon_party.quete_voir_pokemon(@enemy.id)

et juste après :
Code:
        # Attrapé
        Audio.me_play("Audio/ME/PkmRS-Caught.mid")
        @enemy_caught = true

ajouter :
Code:
        $pokemon_party.quete_capturer_pokemon(@enemy.id)


5) Dans le script Pokemon_Battle_Trainer, avant :
Code:
      $battle_var.reset

ajouter :
Code:
      $sauvage = false

et juste après :
Code:
      # Mise à jour Pokedex: Pokémon vu
      $data_pokedex[@enemy.id][0] = true

ajouter :
Code:
      $pokemon_party.quete_voir_pokemon(@enemy.id)


6) Dans deux nouveaux scripts, mettre :
Code:
module POKEMON_S
  #==============================================================================
  # ■ Systeme de gestion de quête
  #------------------------------------------------------------------------------
  #   Ce script a pour but de rajouter un systeme de gestion de quête sur votre
  # projet. Divers commandes script permettent d'intéragir avec ce systeme :
  #
  #   $scene = Scene_Quete.new  # Ouvre le livre de quete
  #   $pokemon_party.quete_demarrer(id_quete) # Démarre une quete
  #   $pokemon_party.quete_echouer(id_quete) # Fait echouer la quete
  #   $pokemon_party.quete_finir(id_quete) # Fait réussir la quete et donne les récompenses
  #   $pokemon_party.quete_parler(nom) # Permet de valider l'objectif de parler, quelque soit les quetes
  #   $pokemon_party.quete_termine?(id_quete) # Vérifie si les objectifs sont terminé # Dans commande condition
  #   $pokemon_party.quete_trouve?(id_quete) # Vérifie si la quête est trouvé # Dans commande condition
  #   $pokemon_party.quete_en_cours?(id_quete) # Vérifie si la quête est en cours # Dans commande condition
  #   $pokemon_party.quete_reussie?(id_quete) # Vérifie si la quête est réussi # Dans commande condition
  #   $pokemon_party.quete_echoue?(id_quete) # Vérifie si la quête est échoué # Dans commande condition
  #   $pokemon_party.quete_voir_pokemon(id_monstre) # Automatique
  #   $pokemon_party.quete_vaincre_pokemon(id_monstre) # Automatique
  #   $pokemon_party.quete_capturer_pokemon(id_monstre) # Automatique
  #   $pokemon_party.quete_objectif_termine?(id_quete,id_objectif) # Vérifie si l'objectif de la quete est terminé # Dans commande condition
  #
  #
  # Date : 20/07/2006
  #   Version   Date          Auteur        Commentaires
  #   1.00      20/09/2007    Tonyryu       Finalisation version 1
  #   1.01      23/09/2007    Tonyryu       Correction d'un bug de comparaison
  #   1.02      26/09/2007    Tonyryu       Correction Anomalie : caractere '\n' non interprété
  #   1.03      03/10/2007    Tonyryu       Correction Anomalie : quete_echouer et quete_finir buggés
  #   1.04      16/07/2008    Tonyryu       Ajout fonction quete_tuer_monstre
  #   1.05      22/07/2008    Tonyryu       Ajout fonction quete_objectif_termine? ,correction d'un bug de validation de quête, les objectifs terminés sont grisés
  #   2.00       2/01/2008    Sphinx        Adaptation à PSP4G+
  #
  # Attention : Ce script est ma propriété en tant que création et il est donc
  # soumis au droit de la propriété intellectuelle ( http://www.irpi.ccip.fr/ ).
  # En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
  # avoir reçu mon accord au préalable.
  #
  #==============================================================================
 
  #==============================================================================
  # ■ pokemon_Party
  #------------------------------------------------------------------------------
  #  Ajout de méthode de gestion de quete, permettant l'intégration à la sauvegarde
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #
  #==============================================================================
  class Pokemon_Party
   
    attr_accessor :tab_quete
   
    #--------------------------------------------------------------------------
    # ● initialize (surcharge)
    #--------------------------------------------------------------------------
    alias quete_initialize initialize
    def initialize
      quete_initialize
      @tab_quete = {}
      maj_quetes
    end
   
    #--------------------------------------------------------------------------
    # ● quete_demarrer
    #--------------------------------------------------------------------------
    def quete_demarrer(id_quete)
      # Si La quête existe
      if !$data_quete.tab_def_quete[id_quete].nil?
        # Si la quête n'est pas déjà accepter
        if @tab_quete[id_quete].nil?
          # Ajouter une entrée dans le tableau de quete du joueur
          @tab_quete[id_quete] = [1,Array.new($data_quete.tab_def_quete[id_quete]["but"].size, 0)]
        end
      else
        # Sinon, affiché un message d'erreur
        print "Quete ID : #{id_quete} non configurée!!"
      end
    end
 
    #--------------------------------------------------------------------------
    # ● quete_objectif_termine?
    #--------------------------------------------------------------------------
    def quete_objectif_termine?(id_quete,id_objectif)
      # Tester si la quete existe
      return false if @tab_quete[id_quete].nil?
     
      # Tester si l'ojectif existe
      return false if $data_quete.tab_def_quete[id_quete]["but"][id_objectif].nil?
      objectif = $data_quete.tab_def_quete[id_quete]["but"][id_objectif]
     
      fait = @tab_quete[id_quete][1][id_objectif]
      sur = objectif[1]
     
      fait = ( fait > sur ? sur : fait) if objectif[0] == "TR_OBJ"
      sur = 1 if objectif[0] == "PARLER"
      return (fait == sur)
     
    end
     
    #--------------------------------------------------------------------------
    # ● quete_termine?
    #--------------------------------------------------------------------------
    def quete_termine?(id_quete)
     
      # Tester si la quete existe
      return false if @tab_quete[id_quete].nil?
      for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
        return false if !quete_objectif_termine?(id_quete,i)
      end
      return true
    end
   
    #--------------------------------------------------------------------------
    # ● quete_finir
    #--------------------------------------------------------------------------
    def quete_finir(id_quete)
      # Tester si la quete existe
      if !@tab_quete[id_quete].nil?
        # Si la quete n'est pas deja cloturer
        if @tab_quete[id_quete][0] == 1
          # changer la quete d'état
          @tab_quete[id_quete][0] = 2
         
          # Réceptionner la récompense
          for i in 0...$data_quete.tab_def_quete[id_quete]["gain"].size
            gain = $data_quete.tab_def_quete[id_quete]["gain"][i]
            nbr = gain[1]
 
            case gain[0]
            when "EXP"
              nbr /= @actors.size
              for i in 0...@actors.size
                @actors[i].exp += nbr
              end
            when "OBJ"
              $pokemon_party.add_item(gain[2], nbr)
            when "ARGENT"
              $pokemon_party.add_money(nbr)
            end
          end
        end
      end
     
    end
   
    #--------------------------------------------------------------------------
    # ● quete_echouer
    #--------------------------------------------------------------------------
    def quete_echouer(id_quete)
      # Si la quete est connu
      if !@tab_quete[id_quete].nil?
        # Si la quete n'est pas deja cloturer
        if @tab_quete[id_quete][0] == 1
          # changer la quete d'état
          @tab_quete[id_quete][0] = 3
        end
      end
    end
   
    #--------------------------------------------------------------------------
    # ● quete_trouve?
    #--------------------------------------------------------------------------
    def quete_trouve?(id_quete)
      return !@tab_quete[id_quete].nil?
   
    end
   
    #--------------------------------------------------------------------------
    # ● quete_en_cours?
    #--------------------------------------------------------------------------
    def quete_en_cours?(id_quete)
       return false if @tab_quete[id_quete].nil?
       
       return ( @tab_quete[id_quete][0] == 1 )
    end
   
    #--------------------------------------------------------------------------
    # ● quete_reussie?
    #--------------------------------------------------------------------------
    def quete_reussie?(id_quete)
       return false if @tab_quete[id_quete].nil?
       
       return (@tab_quete[id_quete][0] == 2)
     end
     
    #--------------------------------------------------------------------------
    # ● quete_echoue?
    #--------------------------------------------------------------------------
    def quete_echoue?(id_quete)
       return false if @tab_quete[id_quete].nil?
       
       return (@tab_quete[id_quete][0] == 3)
    end
 
    #--------------------------------------------------------------------------
    # ● maj_quetes
    #--------------------------------------------------------------------------
    def maj_quetes
      for i in 0...$data_quete.tab_def_quete.size
        if quete_termine?(i)
          quete_finir(i)
        end
      end
      for i in 0...$data_quete.tab_def_quete.size
        if $data_quete.tab_def_quete[i]["lancement"] == nil or $data_quete.tab_def_quete[i]["lancement"] == ["AUCUNE"]
          lancer = true
        else
          for j in $data_quete.tab_def_quete[i]["lancement"]
            if j.type == Fixnum and j < $data_quete.tab_def_quete.size and quete_termine?(j)
              lancer = true
            else
              lancer = false
              break
            end
          end
        end
        if lancer
          quete_demarrer(i)
        end
      end
    end
 
    #--------------------------------------------------------------------------
    # ● quete_parler
    #--------------------------------------------------------------------------
    def quete_parler(nom)
      # Parcourir la liste des quete en cours
      @tab_quete.each_key { |id_quete|
        # Si la quete est en cours
        if @tab_quete[id_quete][0] == 1
          # Vérifier tous les objectifs de la quete
          for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
            objectif = $data_quete.tab_def_quete[id_quete]["but"][i]
            if objectif[0] == "PARLER"
              if objectif[2] == nom
                @tab_quete[id_quete][1][i] = 1
              end
            end
          end
        end
      }
      maj_quetes
    end
   
    #--------------------------------------------------------------------------
    # ● quete_tr_obj
    #--------------------------------------------------------------------------
    def quete_tr_obj(id,nbr)
      # Parcourir la liste des quete en cours
      @tab_quete.each_key { |id_quete_party|
        # Si la quete est en cours
        if @tab_quete[id_quete_party][0] == 1
          # Vérifier si des objectifs sont liés à la chasse
          id_objectif = -1
          $data_quete.tab_def_quete[id_quete_party]["but"].each { |objectif|
          id_objectif += 1
            if objectif[0] == "TR_OBJ"
#              if objectif[2].type == String
#                cible = POKEMON_S::Pokemon_Info.id(objectif[2])
#              end
              if objectif[2] == id
                # ajouter 1 au compteur
                @tab_quete[id_quete_party][1][id_objectif] += nbr
                if @tab_quete[id_quete_party][1][id_objectif] > objectif[1]
                  @tab_quete[id_quete_party][1][id_objectif] == objectif[1]
                end
              end
            end
          }
        end
      }
      maj_quetes
    end
   
    #--------------------------------------------------------------------------
    # ● quete_voir_pokemon
    #--------------------------------------------------------------------------
    def quete_voir_pokemon(id_monstre)
      @list_pokes["VUS"][id_monstre] += 1
      # Parcourir la liste des quete en cours
      @tab_quete.each_key { |id_quete_party|
        # Si la quete est en cours
        if @tab_quete[id_quete_party][0] == 1
          # Vérifier si des objectifs sont liés à la chasse
          id_objectif = -1
          $data_quete.tab_def_quete[id_quete_party]["but"].each { |objectif|
          id_objectif += 1
            if objectif[0] == "VOIR"
              if objectif[2].type == String
                cible = POKEMON_S::Pokemon_Info.id(objectif[2])
              else
                cible = objectif[2]
              end
              if cible == id_monstre
                if ((objectif[3] == true or objectif[3] == nil) and $sauvage) or objectif[3] == false
                  # ajouter 1 au compteur
                  @tab_quete[id_quete_party][1][id_objectif] += 1 if objectif[1] != @tab_quete[id_quete_party][1][id_objectif]
                end
              end
            end
          }
        end
      }
      maj_quetes
    end
   
    #--------------------------------------------------------------------------
    # ● quete_capturer_pokemon
    #--------------------------------------------------------------------------
    def quete_capturer_pokemon(id_monstre)
      @list_pokes["PRIS"][id_monstre] += 1
      # Parcourir la liste des quete en cours
      @tab_quete.each_key { |id_quete_party|
        # Si la quete est en cours
        if @tab_quete[id_quete_party][0] == 1
          # Vérifier si des objectifs sont liés à la chasse
          id_objectif = -1
          $data_quete.tab_def_quete[id_quete_party]["but"].each { |objectif|
          id_objectif += 1
            if objectif[0] == "CAPTURER"
              if objectif[2].type == String
                cible = POKEMON_S::Pokemon_Info.id(objectif[2])
              else
                cible = objectif[2]
              end
              if cible == id_monstre
                if ((objectif[3] == true or objectif[3] == nil) and $sauvage) or objectif[3] == false
                  # ajouter 1 au compteur
                  @tab_quete[id_quete_party][1][id_objectif] += 1 if objectif[1] != @tab_quete[id_quete_party][1][id_objectif]
                end
              end
            end
          }
        end
      }
      maj_quetes
    end
   
    #--------------------------------------------------------------------------
    # ● quete_vaincre_pokemon
    #--------------------------------------------------------------------------
    def quete_vaincre_pokemon(id_monstre)
      @list_pokes["VAINCUS"][id_monstre] += 1
      # Parcourir la liste des quete en cours
      @tab_quete.each_key { |id_quete_party|
        # Si la quete est en cours
        if @tab_quete[id_quete_party][0] == 1
          # Vérifier si des objectifs sont liés à la chasse
          id_objectif = -1
          $data_quete.tab_def_quete[id_quete_party]["but"].each { |objectif|
          id_objectif += 1
            if objectif[0] == "VAINCRE"
              if objectif[2].type == String
                cible = POKEMON_S::Pokemon_Info.id(objectif[2])
              else
                cible = objectif[2]
              end
              if cible == id_monstre
                if ((objectif[3] == true or objectif[3] == nil) and $sauvage) or objectif[3] == false
                  # ajouter 1 au compteur
                  @tab_quete[id_quete_party][1][id_objectif] += 1 if objectif[1] != @tab_quete[id_quete_party][1][id_objectif]
                end
              end
            end
          }
        end
      }
      maj_quetes
    end
   
  end
end
 
  #==============================================================================
  # ■ Sprite_Battler
  #------------------------------------------------------------------------------
  #  Surcharge de la méthode update pour gestion de chasse
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #
  #==============================================================================
  class Sprite_Battler
   
    #--------------------------------------------------------------------------
    # ● update (surcharge)
    #   permet de comptabiliser une créature tuée, objectif "CHASSER"
    #--------------------------------------------------------------------------
    alias quete_update update
    def update
      sav_battler_visible = @battler_visible
      quete_update()
      if @battler.is_a?(pokemon_Enemy) and sav_battler_visible and !@battler_visible
        # vérifier que l'id du monstre est recherché dans une quete en cours
        $pokemon_party.quete_tuer_monstre(@battler.id)
      end
     
    end
   
  end
 
 
  #==============================================================================
  # ■ Window_Optionquete
  #------------------------------------------------------------------------------
  #  Fenêtre des option de quete
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #
  #==============================================================================
  class Window_Optionquete < Window_Selectable
   
   
    #--------------------------------------------------------------------------
    # ● initialize
    #--------------------------------------------------------------------------
    def initialize
      super(0, 0, 320, 120)
      self.contents = Bitmap.new(width - 32, height - 32)
      self.back_opacity = 0
      self.opacity = 0
      self.contents.font.name = $fontface
      self.contents.font.size = 18
         
      self.index = 0
      @item_max =3
      @column_max = 1
     
      refresh
    end
 
    #--------------------------------------------------------------------------
    # ● refresh
    #--------------------------------------------------------------------------
    def refresh
      self.contents.clear
      # Afficher le titre
      self.contents.font.color = Color.new(100,100,100,255)
      self.contents.font.size = 24
      self.contents.draw_text(0, -2, 130, 25, "Sommaire",1)
     
      # Afficher le menu
      self.contents.font.size = 18
      self.contents.font.color = Color.new(0,0,0,255)
      self.contents.draw_text(14, 25, 200, 25, " Quêtes en cours")
      self.contents.draw_text(14, 45, 200, 25, " Quêtes réussies")
      self.contents.draw_text(14, 65, 200, 25, " Quêtes échouées")
     
     
    end
   
 
    #--------------------------------------------------------------------------
    # ● update_cursor_rect
    #    - Permet de modifier la position du rectangle de sélection à chaque cycle
    #--------------------------------------------------------------------------
    def update_cursor_rect
      # Si l'index de focus est inferieur à 0
      if @index < 0
        # Alors effacer le rectangle de sélection
        self.cursor_rect.empty
      else
        # Sinon afficher le rectangle à la position du focus
        self.cursor_rect.set(0, 26 + (20 * @index), 20, 20)
      end
    end
  end
 
 
  #==============================================================================
  # ■ Window_Listequete
  #------------------------------------------------------------------------------
  #  Fenêtre de la liste des quetes
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #
  #==============================================================================
  class Window_Listequete < Window_Selectable
   
   
    #--------------------------------------------------------------------------
    # ● initialize
 
    #--------------------------------------------------------------------------
    def initialize
      super(-20, 170, 320, 360)
      self.contents = Bitmap.new(width - 32, height - 32)
      self.back_opacity = 0
      self.opacity = 0
      self.contents.font.name = $fontface
      self.contents.font.size = 20
     
      self.active = false
      self.index = -1
     
      @column_max = 1
     
     
     
      refresh
    end
   
    #--------------------------------------------------------------------------
    # ● refresh
    #--------------------------------------------------------------------------
    def refresh(etat_quete = 1)
      if self.contents != nil
        self.contents.dispose
        self.contents = nil
      end
     
      @tab_quete = []
     
      # Parcourir la liste des quete en cours
      $pokemon_party.tab_quete.each_key { |id_quete_party|
       # Si la quete est en cours
        if $pokemon_party.tab_quete[id_quete_party][0] == etat_quete
          #@tab_quete.push(id_quete_party)
          @tab_quete.insert(0,id_quete_party)
        end
      }
     
      @item_max = @tab_quete.size
     
      if @item_max > 0
        self.contents = Bitmap.new(width - 32, row_max * 20 -3)
        self.contents.font.name = $fontface
        self.contents.font.size = 18
        self.contents.font.color = Color.new(0,0,0,255)
       
        for i in 0...@tab_quete.size
          id_quete_party = @tab_quete[i]
          # Afficher le nom de la quete
         
          self.contents.draw_text(30, (i * 20) - 4, 250, 20, $data_quete.tab_def_quete[id_quete_party]["nom"])
 
        end
      end
 
     
    #--------------------------------------------------------------------------
    # ● nb_quete
    #--------------------------------------------------------------------------
      def nb_quete()
        return @tab_quete.size
      end
 
    #--------------------------------------------------------------------------
    # ● id_quete
    #--------------------------------------------------------------------------
      def id_quete()
        return @tab_quete[@index]
      end
 
     
    end
   
    #--------------------------------------------------------------------------
    # ● update_cursor_rect
    #    - Permet de modifier la position du rectangle de sélection à chaque cycle
    #--------------------------------------------------------------------------
    def update_cursor_rect
      # Si l'index de focus est inferieur à 0
      if @index < 0
        # Alors effacer le rectangle de sélection
        self.cursor_rect.empty
      else
        # Sinon afficher le rectangle à la position du focus
        self.cursor_rect.set(14, -4 + (20 * @index), 20, 20)
      end
    end
  end
 
   
 
  #==============================================================================
  # ■ Window_Detailquete
  #------------------------------------------------------------------------------
  #  Fenêtre de détail d'une quete
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #
  #==============================================================================
  class Window_Detailquete < Window_Base
    #--------------------------------------------------------------------------
    # ● initialize
    #--------------------------------------------------------------------------
    def initialize
      super(230, 0, 600, 600)
      self.contents = Bitmap.new(width - 32, height - 32)
      self.back_opacity = 0
      self.opacity = 0
      self.contents.font.name = $fontface
      self.contents.font.size = 20
      self.contents.font.color = Color.new(0,0,0,255)
     
      refresh
    end
   
    #--------------------------------------------------------------------------
    # ● refresh
    #--------------------------------------------------------------------------
    def refresh(id_quete = -1)
      self.contents.clear
     
      return if id_quete == -1 or $data_quete.tab_def_quete[id_quete] == nil
      ligne = 0
     
      # Afficher le descriptif de la quete ( max 8 lignes )
      self.contents.font.italic = true
      self.contents.draw_text(60, (ligne * 20) -2, 290, 47,"Descriptif :" )
      self.contents.font.italic = false
      $data_quete.tab_def_quete[id_quete]["desc"].each { |texte|
        ligne += 1
        texte[-1] = ""
        self.contents.draw_text(0, (ligne * 20) - 2, 324, 47,texte )
        break if ligne == 10
      }
     
      # Afficher Récompense
      ligne += 5
      k = 0
      self.contents.font.italic = true
      self.contents.draw_text(20, (ligne * 20) -2, 290, 20,"Récompense(s) :" )
      self.contents.font.italic = false
      for i in 0...$data_quete.tab_def_quete[id_quete]["gain"].size
        k += 1
        gain = $data_quete.tab_def_quete[id_quete]["gain"][i]
        nbr = gain[1].to_s
       
        if gain[0] == "EXP"
          bitmap = RPG::Cache.icon("exp.png")
          text = "- "
          taille = self.contents.text_size(text).width
          self.contents.draw_text(0, (ligne * 20 + k * 26) -2, 290, 20, text)
          self.contents.blt(taille + 4, (ligne * 20 + k * 26) -6, bitmap, Rect.new(0, 0, 24, 24))
          self.contents.draw_text(taille + 35, (ligne * 20 + k * 26) -2, 290, 20, "Exp +" + nbr)
          bitmap.dispose
        end
       
        if gain[0] == "OBJ"
          item = $data_items[gain[2]]
          bitmap = RPG::Cache.icon(item.icon_name)
          text = "- "
          taille = self.contents.text_size(text).width
          self.contents.draw_text(0, (ligne * 20 + k * 26) -2, 290, 20, text)
          self.contents.blt(taille + 2, (ligne * 20 + k * 26) -6, bitmap, Rect.new(0, 0, 24, 24))
          self.contents.draw_text(taille + 35, (ligne * 20 + k * 26) -2, 290, 20, item.name + " * " + nbr)
          bitmap.dispose
         
        end
       
        if gain[0] == "ARGENT"
          bitmap = RPG::Cache.icon("gold.png")
          text = "- "
          taille = self.contents.text_size(text).width
          self.contents.draw_text(0, (ligne * 20 + k * 26) -2, 290, 20, text)
          self.contents.blt(taille + 3, (ligne * 20 + k * 26) -6, bitmap, Rect.new(0, 0, 24, 24))
          self.contents.draw_text(taille + 35, (ligne * 20 + k * 26) -2, 290, 20, "$ +" + nbr)
          bitmap.dispose
        end
       
        if gain[0] == "POKE"
          if gain[1].type == Fixnum
            cible = POKEMON_S::Pokemon_Info.name(gain[1])
          elsif gain[1].type == String
            cible = gain[1]
          end
          bitmap = RPG::Cache.icon("pokeball.png")
          text = "- "
          taille = self.contents.text_size(text).width
          self.contents.draw_text(0, (ligne * 20 + k * 26) -2, 290, 20, text)
          self.contents.blt(taille + 2, (ligne * 20 + k * 26) -6, bitmap, Rect.new(0, 0, 24, 24))
          self.contents.draw_text(taille + 35, (ligne * 20 + k * 26) -2, 290, 20, cible + " niveau " + gain[2].to_s)
          bitmap.dispose
        end
       
      end
     
      # Afficher objectif
      ligne -= 1
      self.contents.font.italic = true
      self.contents.draw_text(20, (ligne * 20) -2, 290, 380,"Objectif(s) :" )
      self.contents.font.italic = false



     
      for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
        objectif = $data_quete.tab_def_quete[id_quete]["but"][i]
        fait = $pokemon_party.tab_quete[id_quete][1][i]
        sur = objectif[1]
        ligne += 1
       
        if $pokemon_party.quete_objectif_termine?(id_quete,i)
          self.contents.font.color = Color.new(100,100,100,255)
        end
       
        if objectif[0] == "VOIR"
          if objectif[2].type == Fixnum
            cible = $data_enemies[objectif[2]].name
          elsif objectif[2].type == String
            cible = objectif[2]
          end
          type = "- VUS " + fait.to_s + "/" + sur.to_s + " " + cible
          self.contents.draw_text(0, (ligne * 20) -2, 310, 400, type )
        end
       
        if objectif[0] == "CAPTURER"
          if objectif[2].type == Fixnum
            cible = $data_enemies[objectif[2]].name
          elsif objectif[2].type == String
            cible = objectif[2]
          end
          type = "- PRIS " + fait.to_s + "/" + sur.to_s + " " + cible
          self.contents.draw_text(0, (ligne * 20) -2, 310, 400, type )
        end
       
        if objectif[0] == "VAINCRE"
          if objectif[2].type == Fixnum
            cible = $data_enemies[objectif[2]].name
          elsif objectif[2].type == String
            cible = objectif[2]
          end
          type = "- VAINCUS " + fait.to_s + "/" + sur.to_s + " " + cible
          self.contents.draw_text(0, (ligne * 20) -2, 310, 400, type )
        end
       
        if objectif[0] == "TR_OBJ"
          item = $data_items[objectif[2]]
          bitmap = RPG::Cache.icon(item.icon_name)
          fait = ( fait > sur ? sur : fait)
          text = "- Trouver " + fait.to_s + "/" + sur.to_s
          taille = self.contents.text_size(text).width
          self.contents.draw_text(0, (ligne * 20) -2, 310, 400, text)
          self.contents.blt(taille + 4, (ligne * 20) + 183, bitmap, Rect.new(0, 0, 24, 24))
          self.contents.draw_text(taille + 30, (ligne * 20) -2, 310, 400, item.name)
          bitmap.dispose
        end
       
        if objectif[0] == "PARLER"
          self.contents.draw_text(0, (ligne * 20) -2, 310, 400, "- Parler à " + objectif[2] )
        end
       
        self.contents.font.color = Color.new(0,0,0,255)
       
      end
     
    end
  end
 
 
 
  #==============================================================================
  # ■ Scene_Quete
  #------------------------------------------------------------------------------
  #  Gérer les quetes
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #
  #==============================================================================
  class Scene_Quete
   
    #--------------------------------------------------------------------------
    # ● main
    #--------------------------------------------------------------------------
    def main
      # Création des fenêtres
      @optionquete_window = Window_Optionquete.new
      @listequete_window = Window_Listequete.new
      @detailquete_window = Window_Detailquete.new
 
      # Affichage image de fond
      @img_fond = Sprite.new
      @img_fond.bitmap = RPG::Cache.picture("grim4")
     
      # Effectuer la transition graphique
      Graphics.transition
      # Boucle
      loop do
        # Mettre à jour les graphique
        Graphics.update
        # Mettre à jour les entrés clavier
        Input.update
        # Appeler fonction update
        update
        # si la Scene n'est plus la même
        if $scene != self
          # Alors sortir de la boucle
          break
        end
      end
      Graphics.freeze
     
      # Détruire objets de classe
      @optionquete_window.dispose
      @listequete_window.dispose
      @detailquete_window.dispose
     
      # destruction de l'image de fond
      @img_fond.bitmap.dispose
      @img_fond.dispose
    end
   
    #--------------------------------------------------------------------------
    # ● update
    #--------------------------------------------------------------------------
    def update
      # Mettre à jour les fenêtres
      @optionquete_window.update
      @listequete_window.update
      @detailquete_window.update
     
      if @optionquete_window.active
        gerer_menu
      elsif @listequete_window .active
        gerer_liste
      end
     
    end
   
    #--------------------------------------------------------------------------
    # ● gerer_menu
    #--------------------------------------------------------------------------
    def gerer_menu
     
      # si la touche B est appuyée
      if Input.trigger?(Input::B)
        # Alors, jouer le son "cancel"
        $game_system.se_play($data_system.cancel_se)
        # Revenir sur l'écran de compte
        $scene = Scene_Map.new
 
        return
      end
     
      # Si la fleche bas ou la fleche bas est appuyée
      if Input.trigger?(Input::DOWN) or Input.trigger?(Input::UP)
        @listequete_window.refresh(@optionquete_window.index + 1)
      end
     
      # si la touche C est appuyée
      if Input.trigger?(Input::C)
        # ne rien faire si il n'y a pas de quete
        return if @listequete_window.nb_quete() == 0
        # Alors, jouer le son "decision"
        $game_system.se_play($data_system.decision_se)
        # Parcourir la liste des quetes
        @optionquete_window.active = false
        @listequete_window.active = true
        @listequete_window.index = 0
        @detailquete_window.refresh(@listequete_window.id_quete)
      end
     
    end
 
    #--------------------------------------------------------------------------
    # ● gerer_liste
    #--------------------------------------------------------------------------
    def gerer_liste
      # Si la fleche bas ou la fleche bas est appuyée
      if Input.trigger?(Input::DOWN) or Input.trigger?(Input::UP)
        @detailquete_window.refresh(@listequete_window.id_quete)
      end
     
      # si la touche B est appuyée
      if Input.trigger?(Input::B)
        # Alors, jouer le son "cancel"
        $game_system.se_play($data_system.cancel_se)
        # Revenir sur le sommaire
        @listequete_window.active = false
        @optionquete_window.active = true
        @listequete_window.index = -1
        @detailquete_window.refresh
        return
      end
     
    end
     
  end

Code:
module POKEMON_S
  #==============================================================================
  # ■ Systeme de gestion de quête
  #------------------------------------------------------------------------------
  # Script créé par Tonyryu
  # Attention : Ce script est ma propriété en tant que création et il est donc
  # soumis au droit de la propriété intellectuelle ( http://www.irpi.ccip.fr/ ).
  # En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
  # avoir reçu mon accord au préalable.
  #
  # adapté à PSP4G+ par Zelda puis Sphinx
  #==============================================================================
 
  #==============================================================================
  # ■ Data_Quete
  #------------------------------------------------------------------------------
  #  Contient la définition des quêtes
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #   1.01      23/09/2007    Tonyryu       Correction d'un bug de comparaison
  #   1.02      26/09/2007    Tonyryu       Correction Anomalie : caractere '\n' non interprété
  #   1.03      03/10/2007    Tonyryu       Correction Anomalie : quete_echouer et quete_finir buggés
  #   1.04      16/07/2008    Tonyryu       Ajout fonction quete_tuer_monstre
  #   1.05      22/07/2008    Tonyryu       Ajout fonction quete_objectif_termine? ,correction d'un bug de validation de quête, les objectifs terminés sont grisés
  #   2.00       2/01/2008    Sphinx        Adaptation à PSP4G+
  #
  #==============================================================================
  class Data_Quete
    attr_reader   :tab_def_quete
   
    #--------------------------------------------------------------------------
    # ● initialize
    #--------------------------------------------------------------------------
    def initialize
      # Création du tableau de quêtes
      @tab_def_quete = []
      # Définition des quêtes
 
=begin
  STRUCTURE GENERALE DE LA DEFINITION D'UNE QUÊTE (où n est le n°de la quête) :
      @tab_def_quete[n] = { "lancement"  => [CONDITIONS],
                            "nom"  => "NOM",
                            "desc" => "DESC1"+
                                     "\nDESC2"+
                                     "\nDESC3"+
                                     "\nDESC4",
                            "but"  => [OBJECTIFS],
                            "gain" => [GAINS]}
     
      CONDITIONS : "AUCUN" : aucune condition de lancement
                   Liste d'IDs des quêtes nécessaires pour le lancement
                   de la quête.
      NOM : nom de la quête
      DESC1 -> DESC4 : description de la quête sur 4 lignes (laisser \n si
                       ligne vide)
      OBJECTIFS : - ["TR_OBJ",Nbre,ID]
                        >> Nbre : nbre d'objets à trouver
                        >> ID : ID de l'objet à trouver

                  - ["PARLER",0,"NOM"]
                        >> NOM : Nom du personnage à rencontrer

                  - ["VOIR",Nbre,ID,POKES]
                        >> Nbre : nbre de pokémons à voir
                        >> ID : NOM entre "" ou ID du pokémon à voir
                        >> POKES : * true :  ne prend pas en compte
                                             les pokémons des
                                             dresseurs
                                   * false : prend en compte les pokémons des
                                             dresseurs
                                   * non précisé >> true

                  - ["VAINCRE",Nbre,ID,POKES]
                        >> Nbre : nbre de pokémons à vaincre
                        >> ID : NOM entre "" ou ID du pokémon à vaincre
                        >> POKES : * true :  ne prend pas en compte
                                             les pokémons des
                                             dresseurs
                                   * false : prend en compte les pokémons des
                                             dresseurs
                                   * non précisé >> true

                  - ["CAPTURER",Nbre,ID,POKES]
                        >> Nbre : nbre de pokémons à capturer
                        >> ID : NOM entre "" ou ID du pokémon à capturer
                        >> POKES : * true :  ne prend pas en compte
                                             les pokémons des
                                             dresseurs
                                   * false : prend en compte les pokémons des
                                             dresseurs
                                   * non précisé >> true

      GAINS : - ["EXP",gain]
                    >> gain : expérience que l'équipe gagne (l'expérience est
                              partagée entre tous les pokémons de l'équipe)

              - ["ARGENT",somme]
                    >> somme : argent remporté

              - ["OBJ",nb,ID]
                    >> ID : ID de l'objet remporté
                    >> nb : nbre d'objets remportés

              - ["POKE",ID,lv,shiny]
                    >> ID : NOM entre "" ou ID du pokémon remporté
                    >> lv : niveau du poké remporté
                    >> shiny : true : poké shiny / false : poké non shiny (1 chance sur 8192 d'obtenir un shiny)

=end
 
      @tab_def_quete[0] = { "lancement"  => ["AUCUNE"],
                            "nom"  => "EXEMPLE",
                            "desc" => "Petit exemple pour la communauté PSP"+
                                     "\nIl faut trouver un NIRONDELLE et le capturer pour"+
                                     "\nremplir cette quête !"+
                                     "\nGain : Un BULBIZARRE lv5 et 5.000$",
                            "but"  => [["VOIR",1,"NIRONDELLE"],["CAPTURER",1,"NIRONDELLE"]],
                            "gain" => [["POKE","BULBIZARRE",5,false],["ARGENT",5000]]}
     
      @tab_def_quete[1] = { "lancement"  => [0],
                            "nom"  => "EXEMPLE 2",
                            "desc" => "Quête n°2."+
                                     "\nIl faut trouver 5 NIRONDELLE, en capturer 1, en mettre KO 3,"+
                                     "\net trouver une HYPER BALL pour remplir cette quête !"+
                                     "\nGain : Un SALAMECHE shiny lv10 et 25.000$",
                            "but"  => [["VOIR",5,"NIRONDELLE"],["CAPTURER",1,"NIRONDELLE"],["VAINCRE",3,"NIRONDELLE"],["TR_OBJ",1,2]],
                            "gain" => [["POKE","SALAMECHE",10,true],["ARGENT",25000]]}
    end
  end
  # Créer les données de quête
  $data_quete = Data_Quete.new
end


Il faut également mettre ces 2 images dans le dossier Graphics/Icons :
exp.png :

gold.png :


Imbécile heureux Voilà, c'est tout pour l'installation.

Pour l'utilisation, voyez les commentaires en début de script, et n'hésitez pas à demander si vous ne comprenez pas certaines choses =)


Pour que la quête PARLER se mette automatiquement à jour (sans avoir besoin d'une commande particulière) il faut que le nom de l'évent du personnage soit le même que le nom du personnage à qui vous devez parler. Exemple, une quête qui vous indique que vous devez parler au Sphinx, il faut que votre évent Sphinx porte ce nom Clin d'œil foireux

Les descriptions doivent être sur 4 lignes impérativement (pour laisser une ligne vide, mettre "\n". Entre 2 lignes, mettre un +)


Last edited by Sphinx on Sat 3 Jan - 18:51 (2009); edited 3 times in total
Back to top
PiVa
Guest





PostPosted: Sat 3 Jan - 17:43 (2009)    Post subject: Systeme de Quetes

J'ai une question on peut faire en sorte de supprimé les deux petites images ?

En tous cas ca marche ^^ : (J'ai testé car je suis impatient XD)
Back to top
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Sat 3 Jan - 18:16 (2009)    Post subject: Systeme de Quetes

les 2 ptites images ? ^_^"
Back to top
PiVa
Guest





PostPosted: Sat 3 Jan - 18:21 (2009)    Post subject: Systeme de Quetes

Oublie XD

Astuce :
Utiliser ça pour compléter votre description sinon ca fait pas beau :mrgreen:

La différence est le "+" ou la "," pour dire si c'est la fin de la description ou une suite :
Code:


                                     "\n "+

ou
Code:


                                     "\n ",

J'explique en images :


Dans l'image 2, la description est plus courte ce qui produit un effet pas très esthétique quand on regarde les différentes quêtes.


Last edited by PiVa on Sat 3 Jan - 18:34 (2009); edited 1 time in total
Back to top
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Sat 3 Jan - 18:32 (2009)    Post subject: Systeme de Quetes

Imbécile heureux Les descriptions doivent être sur 4 lignes Imbécile heureux

>> j'ai corrigé une petite incohérence que j'avais oublié dans la quête n°1 Imbécile heureux J'ai également ajouté ce que j'ai mis 2 lignes au dessus dans ce message, à la fin du message précédent Imbécile heureux
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Goto page: <  1, 2, 3, 49, 10, 11  >
Page 3 of 11

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)