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

Afficher une page du pokédex dans un évent
Goto page: 1, 2  >
 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
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 11 Apr - 17:19 (2009)    Post subject: Afficher une page du pokédex dans un évent

Vous l'attendiez presque tous, eh bien le voici en avant première :

L'Affichage d'une page du pokédex depuis un évent


Sommaire
Introduction
Installation
Utilisation
Petit + pour 4G+
Le mot de la fin






    Introduction

Dans certains jeux officiels, je pense notamment aux versions Bleu / Rouge / Jaune, où, dans l'OCEANE (le bateau) un type nous parle de GOINFREX et où LEO nous donne toutes les infos sur EVOLI et ses évolutions (VOLTALI, AQUALI, et PYROLI), des pages du pokédex sont affichées à l'écran. A une époque, moi comme plusieurs autres, avions cherché comment reproduire cet affichage.
Aujourd'hui, j'ai trouvé, et donc je vous propose ce tuto.

Notez ceci, la prochaine version de 4G+ (le correctif 3) contiendra par défaut cet affichage. Ce tuto est donc plus pour ceux qui veulent rester sous PSP0.7 ou sous une ancienne version de 4G+ (je rappelle la version actuellement en ligne ne propose pas cette amélioration ! Et que la prochaine version devrait arriver en semaine.)


    Installation

Pour commencer, dans le script Pokemon_Pokedex, cherchez ceci :
Code:
  class Pokemon_Detail

et
Code:
    def hide


et supprimez tout ce qui se trouve entre ces deux lignes (gardez ces deux lignes, surtout !)

Ensuite, collez ce qui suit entre ces deux lignes
Code:
    def initialize(id, show, mode = 0, appel = "pkdx", z_level = 100)
      @id = id
      @show = show
      @mode = mode
      @appel = appel
      @z_level = z_level
      @table = []
      # Regional
      if POKEMON_S._DEXREG
        for id in 1..$data_pokedex.length-1
          @table[Pokemon_Info.id_bis(id)] = id
        end
        @table.shift # débarasser l'élément 0
        @table.compact!
      else
      # National
        for id in 1..$data_pokedex.length-1
          @table.push(id)
        end
      end
     
      @_break = false
    end
   
    def main
      # Fenêtre détail
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture("PokedexShfond1.png")
      @background.z = @z_level
     
      # Sprite
      @pokemon_sprite = Sprite.new
      @pokemon_sprite.x = 26
      @pokemon_sprite.y = 71
      @pokemon_sprite.z = 10 + @z_level
      @pokemon_sprite.visible = false
     
      # Identité
      @data_window = Window_Base.new(233-16, 76-16, 370+32, 196+32)
      @data_window.contents = Bitmap.new(370, 196)
      color = Color.new(60,60,60)
      @data_window.contents.font.name = $fontface
      @data_window.contents.font.size = $fontsizebig
      @data_window.contents.font.color = color
      @data_window.opacity = 0
      @data_window.z = 10 + @z_level
      @data_window.visible = false
     
      # Descr
      @text_window = Window_Base.new(60 - 16, 252 - 16 + 51, 550 + 32, 160 + 32)
      @text_window.contents = Bitmap.new(550 , 160)
      @text_window.contents.font.name = $fontface
      @text_window.contents.font.size = $fontsize
      @text_window.contents.font.color = color
      @text_window.opacity = 0
      @text_window.z = 10 + @z_level
      @text_window.visible = false
     
      @list = []
      for i in 0.. @table.length-1
        if $data_pokedex[@table[i]][0]
          @list.push(@table[i])
        end
      end
     
      if @mode == 0
        filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
        if FileTest.exist?(filename)
          Audio.se_play(filename)
        end
      end
     
      data_refresh
      @background.visible = false
      @pokemon_sprite.visible = false
      @data_window.visible = false
      @text_window.visible = false
      case @mode
      when 0
        @background.visible = true
        @pokemon_sprite.visible = true
        @data_window.visible = true
        @text_window.visible = true
      when 1
        refresh_zone
      when 2
        refresh_cri
      when 3
        refresh_tail
      end
       
      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if @_break
          break
        end
      end
      Graphics.freeze
      @background.dispose
      @data_window.dispose
      @pokemon_sprite.dispose
      @text_window.dispose
    end
   
    def update
      case @appel
      when "pkdx"
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          Graphics.freeze
          hide
          if @show
            index = @table.index(@id)
          else
            index = @list.index(@id)
          end
          @_break = true
          $scene = Pokemon_Pokedex.new(index, @show)
          return
        end
       
        if Input.trigger?(Input::C) and @mode == 1
          Graphics.freeze
          hide
          $game_system.se_play($data_system.decision_se)
          $game_temp.map_temp = ["PKDX", false, $game_map.map_id, $game_player.x,
            $game_player.y, $game_player.direction, $game_player.character_name,
            $game_player.character_hue, $game_player.step_anime,
            $game_system.menu_disabled, POKEMON_S::_MAPLINK, @id, @show]
          $game_temp.transition_processing = true
          $game_temp.transition_name = ""
          POKEMON_S::_MAPLINK = false

          @_break = true
          $scene = Scene_Map.new
          $game_map.setup(POKEMON_S::_WMAPID)
          $game_player.moveto(9, 7)
          $game_map.autoplay
          $game_map.update
          return
        end
       
        if Input.trigger?(Input::C) and @mode == 2
          filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
          if FileTest.exist?(filename)
            Audio.se_play(filename)
          end
        end
       
        if Input.trigger?(Input::DOWN)
          Graphics.freeze
          index = @list.index(@id)
          if @id == @list.last
            @id = @list.first
          else
            @id = @list[index+1]
          end
          hide
          Graphics.transition(5)
          Graphics.freeze
          @mode = 0
          data_refresh
          Graphics.transition
          filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
          if FileTest.exist?(filename)
            Audio.se_play(filename)
          end
        end
       
        if Input.trigger?(Input::UP)
          Graphics.freeze
          index = @list.index(@id)
          if @id == @list.first
            @id = @list.last
          else
            @id = @list[index-1]
          end
          hide
          Graphics.transition(5)
          Graphics.freeze
          @mode = 0
          data_refresh
          Graphics.transition
          filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
          if FileTest.exist?(filename)
            Audio.se_play(filename)
          end
        end
       
        if Input.trigger?(Input::A) and @pokemon_sprite.visible == false
          @show = @show ? false : true
          @index = 0
          @pokemon_list.dispose
          @pokemon_list = POKEMON_S::Pokemon_List.new(@list, @index, @show)
          @pokemon_list.active = true
          @pokemon_list.update
          @pokemon_list.refresh
        end
       
        if Input.trigger?(Input::LEFT)
          if @mode > 0
            Graphics.freeze
            hide
            #Graphics.transition(1)
            @mode -= 1
            #Graphics.freeze
            case @mode
            when 0
              data_refresh
            when 1
              refresh_zone
            when 2
              refresh_cri
            when 3
              refresh_tail
            end
            Graphics.transition(1)
          end
        end
       
        if Input.trigger?(Input::RIGHT)
          if @mode < 3
            Graphics.freeze
            hide
            #Graphics.transition(1)
            @mode += 1
            #Graphics.freeze
            case @mode
            when 0
              data_refresh
            when 1
              refresh_zone
            when 2
              refresh_cri
            when 3
              refresh_tail
            end
            Graphics.transition(1)
          end
        end
      when "map"
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::C)
          $game_system.se_play($data_system.cancel_se)
          Graphics.freeze
          @_break = true
          $scene = Scene_Map.new
          return
        end
       
        if Input.trigger?(Input::DOWN)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::UP)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::A)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::LEFT)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::RIGHT)
          $game_system.se_play($data_system.buzzer_se)
        end
      when "combat"
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::C)
          $game_system.se_play($data_system.cancel_se)
          Graphics.freeze
          @_break = true
        end
       
        if Input.trigger?(Input::DOWN)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::UP)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::A)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::LEFT)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::RIGHT)
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    end


Ensuite, dans un script Interpreter (je préconise soit Interpreter sous PSP0.7, soit Interpreter Sphinx 3, dans 4G+), ajoutez ceci :
Code:
    #---------------------------------------------------------------------------
    # afficher_pokedex
    #   Affiche la page du pokedex
    #---------------------------------------------------------------------------
    def afficher_pokedex(id)
      $scene = POKEMON_S::Pokemon_Detail.new(id, false, 0, "map", 0)
    end

avant le dernier end.

Enfin, dans le script Pokémon_Battle_Wild, cherchez :
Code:
      else
        # Attrapé
        Audio.me_play("Audio/ME/PkmRS-Caught.mid")
        @enemy_caught = true
        draw_text("Et hop! " + @enemy.given_name , "est attrapé!")
        wait(90)
        wait_hit

et juste après, ajoutez :
Code:
        if not($data_pokedex[@enemy.id][1])
          draw_text(@enemy.name + " est ajouté", "au pokédex.")
          wait(50)
          wait_hit
          $data_pokedex[@enemy.id][0] = true
          $data_pokedex[@enemy.id][1] = true
          scene = POKEMON_S::Pokemon_Detail.new(@enemy.id, false, 0, "combat", 9999)
          scene.main
          wait(10)
          Graphics.transition
          wait(10)
        end



    Utilisation

L'utilisation est on ne peut plus simple. Il vous suffit de mettre ceci :
Code:
afficher_pokedex(id)

(où id est l'ID du pokémon dont vous voulez afficher la page du pokédex à l'écran)

NB : les fonctions de toutes les touches normalement disponible dans la fiche du pokémon (ouverte depuis le pokédex), c'est à dire les flèches multidirectionnelles et les touches A (Shift), B (Echap / X / 0) et C (Entrée / Espace), ne sont pas actives lorsque la fiche du pokémon est appelée depuis un évent.
Pour sortir de la fiche du pokémon, il suffira d'appuyer sur la touche B ou C pour sortir de la fiche et revenir sur la map ^o^ Les autres touches ne feront rien Clin d'œil foireux


    Petit + pour 4G+

Dans le script Interpreter Sphinx 3, dans 4G+, vous avez déjà la méthode modifier_pokedex.
Cette méthode a été mise à jour, pour inclure l'affichage du pokédex décrit dans ce tuto.

Dans Interpreter Sphinx 3, remplacez :
Code:
    #---------------------------------------------------------------------------
    # modifier_pokedex
    #   Modifie l'état d'un pokémon dans le pokédex.
    #---------------------------------------------------------------------------
    def modifier_pokedex(id,vu = true,pris = false)
      if not($data_pokedex[0])
        $DEBUG ? print("Le POKEDEX n'était pas encore activé ! Activation POKEDEX") : ""
        activer_pokedex
      end
      if id.type == Fixnum and [true,false].include?(vu) and [true,false].include?(pris)
        $data_pokedex[id] = [vu, pris]
      end
    end

par :
Code:
    #---------------------------------------------------------------------------
    # modifier_pokedex
    #   Modifie l'état d'un pokémon dans le pokédex.
    #---------------------------------------------------------------------------
    def modifier_pokedex(id,vu = true,pris = false, afficher = false)
      if not($data_pokedex[0])
        $DEBUG ? print("Le POKEDEX n'était pas encore activé ! Activation POKEDEX") : ""
        activer_pokedex
      end
      if id.type == Fixnum and [true,false].include?(vu) and [true,false].include?(pris)
        $data_pokedex[id] = [vu, pris]
      end
      afficher_page(id) if afficher
    end



    Le mot de la fin

Comme d'habitude pour tout ce que je fais (et même si je le mets que très rarement) : crédits Clin d'œil foireux
Bon making à tous ! =)


Last edited by Sphinx on Fri 24 Feb - 12:47 (2012); edited 8 times in total
Back to top
Publicité






PostPosted: Sat 11 Apr - 17:19 (2009)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Wescoeur
Membre


Joined: 04 May 2008
Posts: 3,522
Localisation: Chez l'Ankou

PostPosted: Sat 11 Apr - 17:24 (2009)    Post subject: Afficher une page du pokédex dans un évent

Good job! o_o Je t'adores mon dieu oO *se pend*
J'avais pas pensé à sa mais sa va être utile oO
Back to top
Manegator
Membre


Joined: 07 Sep 2008
Posts: 570
Localisation: Aveyron (en force)

PostPosted: Sat 11 Apr - 18:57 (2009)    Post subject: Afficher une page du pokédex dans un évent

Super script Sphinx, crédits pour toi si je l'utilises ! Bouche extensiblek:
It's nice Work Sphinx, I'm inclined devant you because you are si good scripteur !
Back to top
Solfay1
Guest





PostPosted: Sat 11 Apr - 23:14 (2009)    Post subject: Afficher une page du pokédex dans un évent

:shock: Sphinx tes trop fort !  :shock:

merci pour se script !
Back to top
PiVa
Guest





PostPosted: Sun 12 Apr - 12:18 (2009)    Post subject: Afficher une page du pokédex dans un évent

Bien, super travail que tu nous fournis là, juste une question xD :
Sphinx wrote:
Ce tuto est donc plus pour ceux qui Quoi ?


C'est quoi la suite ?
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: Sun 12 Apr - 12:58 (2009)    Post subject: Afficher une page du pokédex dans un évent

Clin d'œil foireux très juste, j'étais parti sur autre chose avant d'avoir fini cette phrase :lol:
Back to top
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Sun 12 Apr - 13:31 (2009)    Post subject: Afficher une page du pokédex dans un évent

Que dire, c'est excellent, magnifique.
Très bon boulot Sphinx. Bouche extensiblek:
Back to top
Skype
Mini'
Membre


Joined: 25 Aug 2008
Posts: 3,070
Saiyan

PostPosted: Sun 12 Apr - 13:35 (2009)    Post subject: Afficher une page du pokédex dans un évent

Bien joué. Imbécile heureux It's wonderful !
Back to top
Empire1601
Ex-staff


Joined: 01 May 2008
Posts: 3,216
Localisation: La haut sur la montagne ...

PostPosted: Thu 16 Apr - 10:13 (2009)    Post subject: Afficher une page du pokédex dans un évent

Du bon boulot comme toujours  :D
Il y aurait-il un moyen de faire s'afficher la page après la première capture d'un poké Clin d'œil foireux ?
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: Thu 16 Apr - 10:14 (2009)    Post subject: Afficher une page du pokédex dans un évent

>> je suis encore dessus, palbol & moi on a essayé mais ce n'est pas aussi évident que je l'aurais cru ^o^"
Back to top
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Thu 16 Apr - 10:53 (2009)    Post subject: Afficher une page du pokédex dans un évent

Il n'y a pas de doute là dessus. Pourtant ça paraissait tellement simple... mais en faite, ça ne l'ai pas.
Back to top
Skype
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: Thu 16 Apr - 11:40 (2009)    Post subject: Afficher une page du pokédex dans un évent

j'ai peut être une avancée, mais je vous en dirai plus si mes tests sont concluants Clin d'œil foireux

edit : J'ai une bonne et une mauvaise nouvelles :
La bonne nouvelle : essais concluants, j'ai mis à jour le tuto =)
La mauvaise nouvelle : il faut réinstaller en totalité ce tuto pour que ca marche (j'ai modifié la totalité des codes que je vous ai fait ajouter)

reedit : légère modif, un ptit bug corrigé
Back to top
Suicune31
Membre


Joined: 08 Aug 2008
Posts: 1,161
Localisation: Haute-garonne (31)
Masculin

PostPosted: Mon 19 Oct - 14:08 (2009)    Post subject: Afficher une page du pokédex dans un évent

Désolé de remonter le topic mais je ne voyais pas plus d'utilité d'en créer un autre ...
Voila ma question ^^
Serait-ce possible d'en faire de même avec le script pokedex CO/AA de Slash ? ^^
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: Mon 19 Oct - 14:37 (2009)    Post subject: Afficher une page du pokédex dans un évent

celui là n'est pas compatible ? slash n'a t il pas repris les méthodes standards ? ^^'
Back to top
Suicune31
Membre


Joined: 08 Aug 2008
Posts: 1,161
Localisation: Haute-garonne (31)
Masculin

PostPosted: Mon 19 Oct - 14:57 (2009)    Post subject: Afficher une page du pokédex dans un évent

La position des pokemon dans le pokedex n'est pas la même
Enfin ça rien a voir avec l'ancien pokedex ^^
Sinon il faut ajouté quoi enfaite ? si je veut pas remplacer ? :p
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  >
Page 1 of 2

 
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)