Sujet n°11044
Posté par Renkys le 27 Fév - 00:04 (2012)
Titre : [Résolu]Script Pokemon_Menu
Bonsoir,


Je suis actuellement en train de me créer un menu Pokemon.
Je viens de finir mes images, je suis donc en train de modifier le script pour l'adapter.


Seulement je but sur un problème.


Comment faire pour que les curseurs ne défilent que vers le bas et non de gauche à droite ? (car mon menu n'est que sur une seul colonne)
De plus comment lui faire comprendre que si je suis sur la première ligne il dois m'ouvrir le pokedex, si je suis sur la deuxième, la carte dresseur etc


Cela fait un moment que je cherche j'ai essayé beaucoup de chose, mais rien n'y fait, alors j'ai besoin de vous Imbécile heureux


PS: Je ne suis pas du tout scripteur, je me suis tout de même penché sur quelques scripts pour essayer de les comprendre, j'en profite donc pour dire que je suis à la recherche d'un site ou forum ou l'on peu apprendre le ruby.
Merci d'avance.

Posté par IamTheAdic le 27 Fév - 13:04 (2012)
Bonjour,
Donne moi ton script, et je te dirais à quoi correspond les parties que tu souhaites enlever.

Posté par Renkys le 1 Mar - 09:21 (2012)
Bonsoir,
et bien il s'agit du script pokemon_menu qui se trouve dans psp ds 0.4, le voici:
Script
#==============================================================================
# ■ Pokemon_Menu
# Pokemon Script Project - Krosk 
# 18/07/07
# 22/02/10 - Palbolsky
#-----------------------------------------------------------------------------
# Scène modifiable
#-----------------------------------------------------------------------------
# Menu principal accessible par échap
#-----------------------------------------------------------------------------


module POKEMON_S
  class Pokemon_Menu < Window_Base
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def initialize(menu_index = 0)
      @menu_index = menu_index 
      super(0,0,640,480)
      self.contents = Bitmap.new(width - 32, height - 32)     
      self.opacity = 0     
      self.z = 11      
    end      
    #--------------------------------------------------------------------------
    # 
    #--------------------------------------------------------------------------
    def main
      @spriteset = Spriteset_Map.new 
      @interface = Interface_Echap.new
      
      if POKEMON_S::VIEWER_TEAM
        @pkmn_team = Pokemon_Equipe.new
      end        
      
      s1 = "POKéDEX"
      s3 = "POKéMON"
      s5 = "SAC"
      s7 = ""
      s2 = Player.name
      s4 = "SAUVER"
      s6 = "OPTIONS"
      s8 = "QUITTER"
      
      @command_window = Window_Command.new(80, , $fontsizebig, 2, 14)      
      @command_window.index = @menu_index
      @command_window.x = 480 - 169 - 123 + 200
      @command_window.y = 28 - 20
      @command_window.z = 10000 
      @command_window.visible = false
      
      @selecteur = Sprite.new
      @selecteur.z = 200
      if $color_menu == 1 or $color_menu == nil # Vert
        @string = "_rouge"      
      elsif $color_menu == 0 # Bleu
        @string = "_bleu" 
      elsif $color_menu == 2 # Rouge
        @string = "_bleu" 
      end
      @selecteur.bitmap = RPG::Cache.picture("Menu Echap/selector_menu" + @string)                       
   
      if @command_window.index == 0
        @selecteur.x = 219
        @selecteur.y = 234     
      elsif @command_window.index == 2
        @selecteur.x = 37
        @selecteur.y = 289
      elsif @command_window.index == 4
        @selecteur.x = 37
        @selecteur.y = 329
      elsif @command_window.index == 6 
        @selecteur.x = 37
        @selecteur.y = 369
      end
      
      if @command_window.index == 1
        @selecteur.x = 117
        @selecteur.y = 249
      elsif @command_window.index == 3
        @selecteur.x = 117
        @selecteur.y = 289
      elsif @command_window.index == 5
        @selecteur.x = 117
        @selecteur.y = 329      
      end      
      
      if $pokemon_party.size == 0
        # Enlève accès Equipe
        @command_window.disable_item(2)
      end
      if not($data_pokedex[0])
        # Enlève accès Pokédex si non possédé
        @command_window.disable_item(0)
      end
      if $game_system.save_disabled
        @command_window.disable_item(5)
      end          
      
      @command_window.disable_item(5)      
          
      Graphics.transition
      loop do             
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end    
      Graphics.freeze       
      @command_window.dispose
      @spriteset.dispose
      @selecteur.dispose       
      @interface.dispose              
      @pkmn_team.dispose if not @pkmn_team.nil?
      Graphics.freeze
    end    
    #--------------------------------------------------------------------------
    # 
    #--------------------------------------------------------------------------
    def update
      if @command_window.index == 0
        @selecteur.x = 219
        @selecteur.y = 234   
      elsif @command_window.index == 2
        @selecteur.x = 37
        @selecteur.y = 289
      elsif @command_window.index == 4
        @selecteur.x = 37
        @selecteur.y = 329
      elsif @command_window.index == 6 
        @selecteur.x = 37
        @selecteur.y = 369
      elsif @command_window.index == 1
        @selecteur.x = 117
        @selecteur.y = 249
      elsif @command_window.index == 3
        @selecteur.x = 117
        @selecteur.y = 289
      elsif @command_window.index == 5
        @selecteur.x = 117
        @selecteur.y = 329      
      end            
      
      # ウィンドウを更新     
      @command_window.update
      @spriteset.update
      @selecteur.update
      @interface.update      
      # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
      if @command_window.active
        update_command
        return
      end
    end
    
    def dispose
      super
    end
      
    #--------------------------------------------------------------------------
    # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
    #--------------------------------------------------------------------------
    def update_command            
      # B ボタンが押された場合
      if Input.trigger?(Input::B)
        # キャンセル SE を演奏
        $game_system.se_play($data_system.cancel_se)
        # マップ画面に切り替え       
        $scene = Scene_Map.new 
        self.contents.clear 
        return       
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)         
        # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
        if $game_party.actors.size == 0 and @command_window.index < 4
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return          
        end
        # コマンドウィンドウのカーソル位置で分岐
        case @command_window.index         
        when 0 # Pokédex          
          if not($data_pokedex[0])
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Pokedex.new
          self.contents.clear
        when 2 # Menu
          if $pokemon_party.size == 0
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Party_Menu.new
        when 4 # Sac
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Item_Bag.new
        when 6 # Pokématos
          if $game_switches[9] == false
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokematos.new      
        when 1 # Carte dresseur
          $game_system.se_play($data_system.decision_se)
          $game_temp.common_event_id = 19
          $scene = Scene_Map.new           
        when 3 # Sauvegarde
          if $game_system.save_disabled
            $game_system.se_play($data_system.buzzer_se)
            return            
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Save.new
          self.contents.clear
        when 5 # OPTIONS
          $game_system.se_play($data_system.decision_se) 
          $scene = OPTIONS.new           
        end
        return
      end
    end
  end
end

Ps: Je suis dsl, lorsque je veux veux l'afficher en "code" cela bug.

Merci de ton aide.


Edit: Personne ne peut m'aider ?
Edit2: Toujours personnes :x ?

Posté par Mengenku le 1 Mar - 10:17 (2012)
desoler moi je ne peut pas t aidai

Posté par Eurons くさ le 1 Mar - 19:04 (2012)
Pourquoi poste tu alors?

Posté par Renkys le 1 Mar - 23:59 (2012)
J'ai vu dans quelques projets, des menus entièrement custom, c'est bien qu'il y en a qui savent comment faire ^^.
Je ne veux pas qu'on me le script, juste qu'on me dise comment faire pour que le curseur ne défile que vers le bas et non de gauche à droite.
Car j'ai fini de tout configurer sauf ça.
En effet quand j'arrive sur la troisième icone, je suis obligé de cliquer sur la flèche de droite pour aller sur les autres ^^.

Merci d'avance.

Ps: si besoin est, passez par ma galerie, il y a mon menu dedans, il n'est pas encore "définitif" je n'ai pas de coup de coeur, en revanche le placement des icônes lui l'est.
Donc si sa peu vous aider, merci encore.

Posté par IamTheAdic le 2 Mar - 02:19 (2012)
En y réfléchissant, même si je t'explique ce que tu veux savoir, tu ne pourras pas modifier à ton aise.
Si tu souhaites faire ce genre de manipulation, il faudra apprendre le RGSS

Posté par Renkys le 2 Mar - 10:47 (2012)
Peu tu me dire quel ligne je dois regarder, je vais tout de même essayer.
J'aimerais essayer au moins avant de demander à ce qu'on me le fasse.
Merci d'avance.

Posté par Nuri Yuri le 2 Mar - 11:43 (2012)
Si t'es pas capable de comprendre un script tout seul n'espère pas qu'avec les positions de ligne tu vas mieux comprendre.

Posté par Renkys le 2 Mar - 22:20 (2012)
Nagato Yuki a écrit:
Si t'es pas capable de comprendre un script tout seul n'espère pas qu'avec les positions de ligne tu vas mieux comprendre.


Faux, 
j'ai réussis à faire ce que je voulais, il ne me reste qu'un seul problème.
Par exemple, lorsque je clique sur le sac, celui ci s'ouvre, mais quand j'en ressort, mon icône se trouve deux icônes plus bas, sur a carte dresseur.
Cela me le fait, pour quelques autres aussi, il y a juste le pokédex et le menu option ou ça ne le fait pas.


Voici mon script:

Code:
#==============================================================================
# ■ Pokemon_Menu
# Pokemon Script Project - Krosk 
# 18/07/07
# 22/02/10 - Palbolsky
#-----------------------------------------------------------------------------
# Scène modifiable
#-----------------------------------------------------------------------------
# Menu principal accessible par échap
#-----------------------------------------------------------------------------


module POKEMON_S
  class Pokemon_Menu < Window_Base
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def initialize(menu_index = 0)
      @menu_index = menu_index 
      super(0,0,640,480)
      self.contents = Bitmap.new(width - 32, height - 32)     
      self.opacity = 0     
      self.z = 11      
    end      
    #--------------------------------------------------------------------------
    # 
    #--------------------------------------------------------------------------
    def main
      @spriteset = Spriteset_Map.new 
      @interface = Interface_Echap.new
      
      if POKEMON_S::VIEWER_TEAM
        @pkmn_team = Pokemon_Equipe.new
      end        
      
      s1 = "POKéDEX"
      s2 = "POKéMON"
      s3 = "SAC"
      s4 = Player.name
      s5 = "SAUVER"
      s6 = "OPTIONS"
      s7 = ""
      s8 = "QUITTER"
      
      @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])      
      @command_window.index = @menu_index
      @command_window.x = 480 - 169 - 123 + 200
      @command_window.y = 28 - 20
      @command_window.z = 10000 
      @command_window.visible = false
      
      @selecteur = Sprite.new
      @selecteur.z = 200
      if $color_menu == 1 or $color_menu == nil # Vert
        @string = "_vert"      
      elsif $color_menu == 0 # Bleu
        @string = "_bleu" 
      elsif $color_menu == 2 # Rouge
        @string = "_rouge" 
      end
      @selecteur.bitmap = RPG::Cache.picture("Menu Echap/selector_menu" + @string)                       
   
      if @command_window.index == 0
        @selecteur.x = 219
        @selecteur.y = 234
      elsif @command_window.index == 1
        @selecteur.x = 219
        @selecteur.y = 265
      elsif @command_window.index == 2
        @selecteur.x = 219
        @selecteur.y = 296      
      elsif @command_window.index == 3
        @selecteur.x = 219
        @selecteur.y = 327     
      elsif @command_window.index == 4
        @selecteur.x = 219
        @selecteur.y = 358
      elsif @command_window.index == 5
        @selecteur.x = 219
        @selecteur.y = 389
      elsif @command_window.index == 6 
        @selecteur.x = 219
        @selecteur.y = 420
      end
      
      
      if $pokemon_party.size == 0
        # Enlève accès Equipe
        @command_window.disable_item(1)
      end
      if not($data_pokedex[0])
        # Enlève accès Pokédex si non possédé
        @command_window.disable_item(0)
      end
      if $game_system.save_disabled
        @command_window.disable_item(4)
      end          
      
      @command_window.disable_item(4)      
          
      Graphics.transition
      loop do             
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end    
      Graphics.freeze       
      @command_window.dispose
      @spriteset.dispose
      @selecteur.dispose       
      @interface.dispose              
      @pkmn_team.dispose if not @pkmn_team.nil?
      Graphics.freeze
    end    
    #--------------------------------------------------------------------------
    # 
    #--------------------------------------------------------------------------
    def update
      if @command_window.index == 0
        @selecteur.x = 219
        @selecteur.y = 234
      elsif @command_window.index == 1
        @selecteur.x = 219
        @selecteur.y = 265
      elsif @command_window.index == 2
        @selecteur.x = 219
        @selecteur.y = 296      
      elsif @command_window.index == 3
        @selecteur.x = 219
        @selecteur.y = 327
      elsif @command_window.index == 4
        @selecteur.x = 219
        @selecteur.y = 358
      elsif @command_window.index == 5
        @selecteur.x = 219
        @selecteur.y = 389
      elsif @command_window.index == 6
        @selecteur.x = 219
        @selecteur.y = 420
      end            
      
      # ウィンドウを更新     
      @command_window.update
      @spriteset.update
      @selecteur.update
      @interface.update      
      # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
      if @command_window.active
        update_command
        return
      end
    end
    
    def dispose
      super
    end
      
    #--------------------------------------------------------------------------
    # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
    #--------------------------------------------------------------------------
    def update_command            
      # B ボタンが押された場合
      if Input.trigger?(Input::B)
        # キャンセル SE を演奏
        $game_system.se_play($data_system.cancel_se)
        # マップ画面に切り替え       
        $scene = Scene_Map.new 
        self.contents.clear 
        return       
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)         
        # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
        if $game_party.actors.size == 0 and @command_window.index < 4
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return          
        end
        # コマンドウィンドウのカーソル位置で分岐
        case @command_window.index         
        when 0 # Pokédex          
          if not($data_pokedex[0])
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Pokedex.new
          self.contents.clear
        when 1 # Menu
          if $pokemon_party.size == 0
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Party_Menu.new
        when 2 # Sac
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Item_Bag.new
        when 3 # Carte dresseur
          $game_system.se_play($data_system.decision_se)
          $game_temp.common_event_id = 19
          $scene = Scene_Map.new           
        when 4 # Sauvegarde
          if $game_system.save_disabled
            $game_system.se_play($data_system.buzzer_se)
            return            
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokemon_Save.new
          self.contents.clear
        when 5 # OPTIONS
          $game_system.se_play($data_system.decision_se) 
          $scene = OPTIONS.new           
        when 6 # Pokématos
          if $game_switches[9] == false
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          $game_system.se_play($data_system.decision_se)
          $scene = Pokematos.new
          end
            return
          end
       end
      end
    end



Je continu de chercher, mais votre aide est la bienvenu.

Posté par Nuri Yuri le 2 Mar - 22:58 (2012)
Tu te contredis, t'as pas mieux compris, si t'avais réellement compris tu saurais pourquoi ton icone se warp.
Enfin, t'arrive déjà à bien avancer seul.

Posté par Renkys le 2 Mar - 23:48 (2012)
Effectivement je n'ai pas encore tout compris, mais bon j'avance, et c'est comme ça que je vais apprendre.
D’après moi, mon problème se trouve dans la partie: "def_update"
Si je comprend bien, elle gère la "mise à jour" c'est sans doute la dedans que je dois chercher.
J'ai vérifier que j'avais bien mis les même cordonnées, donc ce n'est pas ça.


je vois pas trop, mais je continu de chercher.


PS: je n'ai pas dis que j'avais tout compris, mais cependant je commence à comprendre quelques petites choses, la preuve j'ai réussis à faire quelques petits trucs, ce n'est peu être rien, mais bon, c'est la première fois que je touche à un script, donc j'apprend.

Posté par Nuri Yuri le 2 Mar - 23:53 (2012)
Peut être que le problème viens d'un autre script. C'est pour ça qu'il faut comprendre tout le script.
Le problème viens de là : initialize(menu_index = 0).
Les scripts initialisant la classe n'envoient pas forcément l'index défini ou modifié dans ta classe (J'ai pas lu tout le script peut être que je me trompe après).

Posté par Renkys le 8 Mar - 17:03 (2012)
Nagato Yuki a écrit:
Peut être que le problème viens d'un autre script. C'est pour ça qu'il faut comprendre tout le script.




C'est justement la dessus que je me penche. 

Ce que tu as dis après devrais m'aider
Nagato Yuki a écrit:
Le problème viens de là : initialize(menu_index = 0).
Les scripts initialisant la classe n'envoient pas forcément l'index défini ou modifié dans ta classe (J'ai pas lu tout le script peut être que je me trompe après).




Je ne sais pas trop ou chercher, mais je vais trouver.
Déjà, j'étais sur la bonne voie.



Edit: Bon je dois m'avouer vaincu, je n'ai toujours pas trouvé quelqu'un saurais me donner la solution ?
Merci d'avance.



_Problème toujours d'actualité:
Renkos a écrit:

j'ai réussis à faire ce que je voulais, il ne me reste qu'un seul problème.
Par exemple, lorsque je clique sur le sac, celui ci s'ouvre, mais quand j'en ressort, mon icône se trouve deux icônes plus bas, sur la carte dresseur.
Cela me le fait, pour quelques autres aussi, il y a juste le pokédex et le menu option ou ça ne le fait pas.


Posté par Nuri Yuri le 8 Mar - 18:06 (2012)
Cherches "Pokemon_Menu.new(" dans tes scripts (Ctrl+Shift+F) et modifie le nombre qui suit pour que ça renvois sur la bonne icône.

Posté par Renkys le 9 Mar - 14:41 (2012)
Je crois que si tu ne me l'avais pas dis, je n'aurais jamais trouvé ^^.
Il fallait regarder beaucoup plus loin que je le croyais.
Merci à toi !

Posté par Nuri Yuri le 9 Mar - 16:25 (2012)
Ça viendra tout seul quand tu seras habitué à modifier le scripts et que tu connaitras le ruby :p