Pokémon Script Project Index du Forum

S’enregistrer | Rechercher | Connexion
 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

Système de quêtes en dual screen
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts
Sujet précédent :: Sujet suivant   
Auteur Message
Renkys
Membre


Inscrit le: 14 Fév 2012
Messages: 109

MessagePosté le: Mar 7 Mai - 22:46 (2013)    Sujet du message: Système de quêtes en dual screen

Bonjour,

J'ai posté il y a quelques temps un screen du système de quête de mon projet.
Comme on m'a demandé si je pourrais le partager, étant sur un forum d'entre aide, je ne vois pas pourquoi je dirais non Clin d'œil foireux

Voici les script:

Fonction_quete
Code:

class Game_Event 
  alias qu_start start 
  def start 
    if $pokemon_party != nil 
      if @event.name != "FALSE" 
        $pokemon_party.quete_parler(@event.name) 
      end 
    end 
    qu_start 
  end 
end 


class Interpreter 
  alias qu_command_126 command_126 
  def command_126 
    value = operate_value(@parameters[1], @parameters[2], @parameters[3]) 
    $pokemon_party.quete_tr_obj(@parameters[0],value) 
    qu_command_126 
  end 
end 


module POKEMON_S  
  class Pokemon_Battle_Trainer < Pokemon_Battle_Core  
    alias qu_initialize initialize  
    def initialize(party, trainer_id, ia = false, run_able = false, lose_able = false, capturable = false)  
      qu_initialize(party, trainer_id, ia, run_able, lose_able, capturable)  
      $pokemon_party.quete_voir_pokemon(@enemy.id)  
    end   
  end  
    
  class Pokemon_Battle_Wild < Pokemon_Battle_Core  
    alias qu_initialize initialize  
    def initialize(party, pokemon, ia = false, lose_able = false)  
      qu_initialize(party, pokemon, ia, lose_able)  
      $pokemon_party.quete_voir_pokemon(@enemy.id)  
    end  
      
    alias qu_catch_pokemon catch_pokemon  
    def catch_pokemon(ball_data)  
      $pokemon_party.quete_capturer_pokemon(@enemy.id)  
      qu_catch_pokemon(ball_data)  
    end  
  end  
    
  class Pokemon_Battle_Core  
    alias qu_enemy_down enemy_down  
    def enemy_down  
      $pokemon_party.quete_vaincre_pokemon(@enemy.id)  
      qu_enemy_down  
    end  
  end  
end




Def_quete:
Code:

#==============================================================================  
# ■ Systeme de gestion de quête  
#------------------------------------------------------------------------------  
#   Ce script a pour but de déclarer les quêtes a faire  
#  
#  
# Date : 20/07/2006  
#   Version   Date          Auteur        Commentaires  
#   1.00      20/09/2007    Tonyryu       Finalisation version 1  
#   
# 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.  
#  
#==============================================================================  
  
#==============================================================================  
# ■ Data_Quete  
#------------------------------------------------------------------------------  
#  Contient la définition des quêtes  
#   Version   Date          Auteur        Commentaires  
#   1.00      12/09/2007    Tonyryu       Création  
#  
#==============================================================================  
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  
  
 @tab_def_quete[0] = { "nom"  => "Exemple pour PSP",  
                                 "desc" => "Exemple pour PSP"+  
                                 "\nSacha vous attends dans le centre"+  
                                 "\nPokémon de la ville voisine. "+
                                 "\nAllez le retrouver. ",
                                 "but"  => [["PARLER","Sacha"]],  
                                 "gain" => [["ARGENT",3000]]}                     


 end
end
                     




  
  
# Créer les données de quête  
$data_quete = Data_Quete.new  



















Gestion_quete:
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   
      @tab_quete = {}   
      maj_quetes(false)   
      quete_initialize   
    end   
       
    #--------------------------------------------------------------------------   
    # ● quete_demarrer   
    #--------------------------------------------------------------------------    
    def quete_demarrer(id_quete,jingle = true)   
      # 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   
        if jingle and POKEMON::QU_JINGLE   
          Audio.me_play("Audio/ME/trainer_jingle.mid", 100, 100)   
        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)   
            when "POKE"   
              $pokemon_party.add(Pokemon.new(gain[1],gain[2],gain[3]))   
            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(play_jingle = true)   
      jingle = false   
      for i in 0...$data_quete.tab_def_quete.size   
        if quete_termine?(i) and @tab_quete[i][0] == 1   
          quete_finir(i)   
          jingle = true   
        end   
      end   
      for i in 0...$data_quete.tab_def_quete.size   
        if $data_quete.tab_def_quete[i] == nil   
          next   
        end   
        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 and @tab_quete[i].nil?   
          quete_demarrer(i,false)   
          jingle = true   
        end   
      end   
      if play_jingle and jingle   
        Audio.me_play("Audio/ME/trainer_jingle.mid", 100, 100)   
      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[1] == 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)   
      # 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)   
      # 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)   
      # 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, -20, 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 = $fontsizebig  
             
      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 = $fontsizebig   
         
      # Afficher le menu   
      self.contents.font.size = $fontsizebig 
      self.contents.font.color = Color.new(0,0,0,255)   
      self.contents.draw_text(14, 23, 200, 25, " Quêtes en cours")   
      self.contents.draw_text(14, 43, 200, 25, " Quêtes réussies")   
      self.contents.draw_text(14, 63, 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(-14, 236, 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 = $fontsizebig   
         
      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 = $fontsizebig
        self.contents.font.color = Color.new(0,0,0,255)   
           
        @tab_quete.sort!   
           
        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(17, 61, 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 = $fontsizebig   
      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 = false   
      $data_quete.tab_def_quete[id_quete]["desc"].each { |texte|   
        ligne += 1   
        texte[-1] = ""   
        self.contents.draw_text(0, (ligne * 20) -3, 324, 47,texte )   
        break if ligne == 10   
      }   
        
      # Afficher Récompense   
      ligne += 5   
      k = 0   
     
      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"
          text = "-"
          taille = self.contents.text_size(text).width   
          self.contents.draw_text(110, (ligne * 30 + k * 26) -116, 290, 20, text)   
          self.contents.draw_text(taille + 112, (ligne * 30 + k * 26) -116, 290, 20, nbr + " Exp")   
        end   
           
        if gain[0] == "OBJ"   
          item = $data_items[gain[2]] 
          text = "-"
          taille = self.contents.text_size(text).width   
          self.contents.draw_text(110, (ligne * 30 + k * 26) -116, 290, 20, text)   
          self.contents.draw_text(taille + 113, (ligne * 30 + k * 26) -116, 290, 20, item.name + " x" + nbr)      
             
        end   
           
        if gain[0] == "ARGENT"
          text = "-"
          taille = self.contents.text_size(text).width  
          self.contents.draw_text(110, (ligne * 30 + k * 26) -116, 290, 20, text)  
          self.contents.draw_text(taille + 113, (ligne * 30 + k * 26) -116, 290, 20, nbr + " $" )      
        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
          text = "-"
          taille = self.contents.text_size(text).width   
          self.contents.draw_text(110, (ligne * 30 + k * 26) -116, 290, 20, text)  
          self.contents.draw_text(taille + 113, (ligne * 30 + k * 26) -116, 290, 20, cible + " Lv" + gain[2].to_s)     
        end   
           
      end   
         
      # Afficher objectif   
      ligne -= 1   
      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(110, (ligne * 20) -55, 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(110, (ligne * 20) -55, 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(110, (ligne * 20) -55, 310, 400, type )   
        end   
           
        if objectif[0] == "TR_OBJ"   
          item = $data_items[objectif[2]]   
          fait = ( fait > sur ? sur : fait)   
          text = "- Trouver " + fait.to_s + "/" + sur.to_s   
          taille = self.contents.text_size(text).width   
          self.contents.draw_text(110, (ligne * 20) -55, 310, 400, text)  
          self.contents.draw_text(taille + 136, (ligne * 20) -55, 310, 400, item.name)   
        end   
           
        if objectif[0] == "PARLER"   
          self.contents.draw_text(110, (ligne * 20) -55, 310, 400, "- Parler à " + objectif[1])   
        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")
      @img_fond.x = 13
      @img_fond.y = 13
      # 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


















Ce script ce trouve sur ce forum, ici même: http://pokemonscriptproject.xooit.fr/t2305-Systeme-de-Quetes.htm
Je n'ai pas beaucoup de mérite, j'ai juste modifié quelques trucs très simple, à la porté de tous ^^
Pour l'utilisation du script, je vous recommande donc de suivre le lien que je vous ai donné, tout est déjà très bien expliqué. Les crédits s'y trouvent également.

Ah et voici l'image à mettre dans le dossier picture de votre projet:



Celle ci étant exclusive à mon projet, je vous la laisse quand même pour que vous ayez une base, mais j'aimerais svp, que vous la modifiez.


Petite précision, il est possible d’apporter plusieurs récompenses pour une même quête, pour mon projet, il n'y aura qu'une seul récompense par quête.
Mais si vous souhaitez en mettre plusieurs, il vous faudra agrandir la zone "récompense" pour que cela ne dépasse pas.


Si vous souhaitez comme moi, que votre menu s'ouvre via l'appuie d'une touche, voici comment procéder:

N'oubliez pas d'activer l'interrupteur en processus parralele au début de votre jeu, ou autre. 


Amusez vous Imbécile heureux


Ps: Si vous rencontrez des bugs, prévenez moi ^^
Et n'oubliez pas de m'ajouter dans vos crédit svp Imbécile heureux
Les membres suivants remercient Renkys pour ce message :
mumou (10/05/13)


Dernière édition par Renkys le Dim 16 Juin - 11:09 (2013); édité 8 fois
Revenir en haut
Publicité






MessagePosté le: Mar 7 Mai - 22:46 (2013)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
FinalArt
Membre


Inscrit le: 25 Nov 2009
Messages: 1 573
Graphiste & Développeur
Localisation: Où je me trouve actuellement
Masculin

MessagePosté le: Mar 7 Mai - 22:50 (2013)    Sujet du message: Système de quêtes en dual screen

Pourquoi donc laissez les bugs graphiques sur les images ? J'entend pas là les traits gris à droite de chaque cadre.

Sinon, merci du partage !
Revenir en haut
Renkys
Membre


Inscrit le: 14 Fév 2012
Messages: 109

MessagePosté le: Mar 7 Mai - 22:52 (2013)    Sujet du message: Système de quêtes en dual screen

Quels traits gris O_O ?

Edit: je viens de voir depuis mon tel et je vois aussi les traits gris FinalArt.
Tu as regardé depuis ton tel toi aussi ?
Bizarre car quand je regarde depuis le pc il n'apparaissent pas..


Dernière édition par Renkys le Mer 8 Mai - 16:13 (2013); édité 2 fois
Revenir en haut
Rey'
Membre


Inscrit le: 09 Aoû 2010
Messages: 382
Forever Alone
Localisation: Le Havre
Masculin
ID Steam: TheRey

MessagePosté le: Mar 7 Mai - 22:52 (2013)    Sujet du message: Système de quêtes en dual screen

Merci beaucoup du partage ! Depuis le temps qu'on attendait un portage pour les versions Dual Screen. Clin d'œil foireux
Revenir en haut
Skype
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Mer 8 Mai - 08:06 (2013)    Sujet du message: Système de quêtes en dual screen

Je vais certainement m'en servir, si je reprends sérieusement mon projet un jour.
Merci du partage, ça en aidera beaucoup.
Revenir en haut
Renkys
Membre


Inscrit le: 14 Fév 2012
Messages: 109

MessagePosté le: Mer 8 Mai - 10:42 (2013)    Sujet du message: Système de quêtes en dual screen

Il n'y a pas de quoi, j'espère que ça servira à beaucoup d'entre vous Imbécile heureux

FinalArt j'ai édit mon post, les traits gris apparaissent sur mon tel mais pas sur mon pc, c'est pareil pour toi ?
Revenir en haut
Eurons くさ
Animateur
Animateur


Inscrit le: 23 Nov 2011
Messages: 1 040
La mort.
Localisation: Partout dans ce monde ou je puis ôter la vie.
Non renseigné (Visible...)

MessagePosté le: Mer 8 Mai - 10:50 (2013)    Sujet du message: Système de quêtes en dual screen

Bonjour, merci d'avoir partager ton script, pour ce qui est de l'image, ne t'inquiète pas pour moi, j'en ai une qui attendais ce script depuis longtemps Imbécile heureux
Revenir en haut
Skype
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Mer 8 Mai - 11:12 (2013)    Sujet du message: Système de quêtes en dual screen

Renkys a écrit:
Il n'y a pas de quoi, j'espère que ça servira à beaucoup d'entre vous Imbécile heureux

FinalArt j'ai édit mon post, les traits gris apparaissent sur mon tel mais pas sur mon pc, c'est pareil pour toi ?


Ils apparaissent aussi sur mon PC (Safari). Ce n'est pas pour autant très gênant, puisqu'on doit se le faire custom. Clin d'œil foireux
Revenir en haut
Renkys
Membre


Inscrit le: 14 Fév 2012
Messages: 109

MessagePosté le: Mer 8 Mai - 13:38 (2013)    Sujet du message: Système de quêtes en dual screen

Bizarre bizarre !
Je ne suis pas a la maison, je regarderais ça ce soir.
Mais sur chrome je ne vois pas de défaut ni même sur mon pc d'ailleurs, car c'est moi même qui est fait ces cadres sur photofiltre..


Dernière édition par Renkys le Mer 8 Mai - 16:12 (2013); édité 1 fois
Revenir en haut
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Mer 8 Mai - 14:06 (2013)    Sujet du message: Système de quêtes en dual screen

AH ! Mes yeux ! Bizard => Bizarre !
Pour notification, j'ai le même problème sur Chrome et Firefox.
Revenir en haut
Eurons くさ
Animateur
Animateur


Inscrit le: 23 Nov 2011
Messages: 1 040
La mort.
Localisation: Partout dans ce monde ou je puis ôter la vie.
Non renseigné (Visible...)

MessagePosté le: Mer 8 Mai - 14:57 (2013)    Sujet du message: Système de quêtes en dual screen

J'aimerais, par contre savoir, sous quelle nom, l'image doit-être enregistrer?
Revenir en haut
Skype
Rey'
Membre


Inscrit le: 09 Aoû 2010
Messages: 382
Forever Alone
Localisation: Le Havre
Masculin
ID Steam: TheRey

MessagePosté le: Mer 8 Mai - 15:00 (2013)    Sujet du message: Système de quêtes en dual screen

J'ai regardé dans le script et tu dois la nommer grim4. Tu peux changer le nom à la ligne 762 du Script Gestion_quete. Clin d'œil foireux
Revenir en haut
Skype
Renkys
Membre


Inscrit le: 14 Fév 2012
Messages: 109

MessagePosté le: Mer 8 Mai - 16:11 (2013)    Sujet du message: Système de quêtes en dual screen

Reynald76 dit juste ^^ l'image doit se nommer grim4.
Dsl pour la faute, je change ça tout de suite !

Autre truc BIZARRE j'utilise chrome sur mon pc ainsi que mon tel et les traits gris s'affichent seulement sur mon tel :x
Revenir en haut
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Mer 8 Mai - 16:37 (2013)    Sujet du message: Système de quêtes en dual screen

C'est en effet franchement bizarre, puisque c'est du PNG, donc un format courant...
Ce serait pas des zones transparentes ? J'ai déjà eu un problème comme ça.
Revenir en haut
Rey'
Membre


Inscrit le: 09 Aoû 2010
Messages: 382
Forever Alone
Localisation: Le Havre
Masculin
ID Steam: TheRey

MessagePosté le: Jeu 9 Mai - 10:46 (2013)    Sujet du message: Système de quêtes en dual screen

EDIT : J'ai supprimé mon message étant donné qu'il n'était pas dans la bonne section.

En tout cas, très bonne adaptation à PSP DS, je t'en remercie. Cependant, j'ai repéré une modification à faire.
En effet, en appuyant sur W, tout les textes comme Quêtes en cours, quêtes réussites et quêtes échouées disparaissent.

Voilà, si je trouve d'autres petits détails, je te met au courant. Clin d'œil foireux
Revenir en haut
Skype
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 07:53 (2017)    Sujet du message: Système de quêtes en dual screen

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts Toutes les heures sont au format GMT + 1 Heure
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | 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)
Traduction par : phpBB-fr.com