Sujet n°10876
Posté par Billie Preks le 24 Jan - 19:07 (2012)
Titre : Menu FOLLOW ME [0.7]
Bonsoir,

J'ai voulu ajouter un choix "FOLLOW ME" au menu START de ma version (Soria, merci (ou désolé, selon comment tu le prends), je t'ai piqué ton idée :^^: ), qui activerait/desactiverait l'interrupteur 50, qui active/desactive le Follow Me (d'après le script, et effectivement cela marche avec un evenement), seulement cela ne marche pas. Le menu apparait bien, lorsque je clique dessus, il y a bien un bruit de selection, ça me renvoie au jeu, mais mon Pokémon me suit toujours. J'ai procédé comme suit:

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

module POKEMON_S
  class Pokemon_Menu
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def initialize(menu_index = 0)
      @menu_index = menu_index
    end
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def main
      @spriteset = Spriteset_Map.new
      s1 = "POKéDEX"
      s2 = "POKéMON"
      s3 = "SAC"
      s4 = Player.name
      s5 = "SAUVER"
      s7 = "FOLLOW ME"
      s6 = "QUITTER"
      @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7, s6])
      @command_window.index = @menu_index
      @command_window.x = 480 - 3
      @command_window.y = 3
      
      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

      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      @command_window.dispose
      @spriteset.dispose
    end
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def update
      # ウィンドウを更新
      @command_window.update
      @spriteset.update
      # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
      if @command_window.active
        update_command
        return
      end
    end
    #--------------------------------------------------------------------------
    # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
    #--------------------------------------------------------------------------
    def update_command
      # B ボタンが押された場合
      if Input.trigger?(Input::B)
        # キャンセル SE を演奏
        $game_system.se_play($data_system.cancel_se)
        # マップ画面に切り替え
        $scene = Scene_Map.new
        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
        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
        when 5 # Quitter le menu
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Map.new
        when 6 # Follow Me
          If menu_index == 6  
            if $game_switches[50] == true  
                $game_switches[50] = false  
            end
            if $game_switches[50] == false  
                $game_switches[50] = true  
            end  
           end
        return
      end
    end
  end
end
J'ai ajouté à la ligne 29 une option FOLLOW ME, et ai modifié en consequence la ligne 31;
J'ai ajouté de la ligne 127 à la ligne 133 le script necessaire.

Qu'ai-je oublié?

Merci d'avance pour vos reponses.

Posté par Nuri Yuri le 24 Jan - 19:35 (2012)
Ce code :
Code:
if $game_switches[50] == true   
                $game_switches[50] = false   
            end 
            if $game_switches[50] == false   
                $game_switches[50] = true   
            end   

Fais ça :
Appuis sur C
Position menu à 6
Valeur à $game_switches[50] => false
Valeur à $game_switches[50] => true
Fin

La deuxième condition s'exécute après la précédente au final tu ne fais rien.
Je te propose de remplacer ça par : $game_switches[50]=!$game_switches[50]
Ça va faire ce que t'as essayé de faire dans tes conditions avec des lignes en moins dans ton code ruby.
Après If menu_index == 6 devrait planter, le mot clef est if et non If, donc supprime cette ligne qui ne sert à rien.

Posté par Billie Preks le 24 Jan - 20:45 (2012)
Je remplace tout ce code:

 
Code:

[*]if $game_switches[50] == true      [*]  [*]                $game_switches[50] = false      [*]  [*]            end    [*]  [*]            if $game_switches[50] == false      [*]  [*]                $game_switches[50] = true      [*]  [*]            end 


 Par celui-ci?

 
Code:


 $game_switches[50]=!$game_switches[50]
end




Posté par Nuri Yuri le 24 Jan - 21:35 (2012)
Non, ça :
Code:
        when 6 # Follow Me 
          If menu_index == 6   
            if $game_switches[50] == true   
                $game_switches[50] = false   
            end 
            if $game_switches[50] == false   
                $game_switches[50] = true   
            end   
           end   
        return 

Par ça :
Code:
        when 6 # Follow Me 
          $game_switches[50]=!$game_switches[50]
        end   
        return 

Posté par Billie Preks le 24 Jan - 21:51 (2012)
J'ai bien remplacé comme tu me l'as indiqué, et malheureusement toujours la meme chose, rien ne se passe lorsque je selectionne le Follow Me.

Mon code ressemble maintenant à ceci:

 
Code

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

module POKEMON_S
  class Pokemon_Menu
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def initialize(menu_index = 0)
      @menu_index = menu_index
    end
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def main
      @spriteset = Spriteset_Map.new
      s1 = "POKéDEX"
      s2 = "POKéMON"
      s3 = "SAC"
      s4 = Player.name
      s5 = "SAUVER"
      s7 = "FOLLOW ME"
      s6 = "QUITTER"
      @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7, s6])
      @command_window.index = @menu_index
      @command_window.x = 480 - 3
      @command_window.y = 3
      
      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

      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      @command_window.dispose
      @spriteset.dispose
    end
    #--------------------------------------------------------------------------
    #
    #--------------------------------------------------------------------------
    def update
      # ウィンドウを更新
      @command_window.update
      @spriteset.update
      # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
      if @command_window.active
        update_command
        return
      end
    end
    #--------------------------------------------------------------------------
    # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
    #--------------------------------------------------------------------------
    def update_command
      # B ボタンが押された場合
      if Input.trigger?(Input::B)
        # キャンセル SE を演奏
        $game_system.se_play($data_system.cancel_se)
        # マップ画面に切り替え
        $scene = Scene_Map.new
        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
        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
        when 5 # Quitter le menu
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Map.new
        when 6 # Follow Me    
              $game_switches[50]=!$game_switches[50]   
          end     
            return    
      end
    end
  end
end

Posté par Nuri Yuri le 24 Jan - 21:54 (2012)
[s1, s2, s3, s4, s5, s7, s6]
L'erreur viens peut être de là.
Quand tu clique sur Follow Me c'est considéré comme étant quitter car s7 a pour index 5 et non 6.

Posté par Billie Preks le 24 Jan - 22:21 (2012)
Euh... J'ai  betement inversé le s7 et s6, de cette maniere:

 
Code:
      s6 = "FOLLOW ME"
      s7 = "QUITTER"
      @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
Et maintenant, changement!
Lorsque je selectionne FOLLOW ME, retour au jeu comme avant, mais rien de plus.
Cependant, lorsque je selectionne "QUITTER", rien ne se passe, meme pas de retour au jeu. Je selectionne après "FOLLOW ME", et là mon Pokémon disparait bien.

Posté par Nuri Yuri le 24 Jan - 23:39 (2012)
remplace "when 6 # Follow Me " par "when 5 # Follow Me " et "when 5 # Quitter le menu " par "when 6 # Quitter le menu "
De plus ajoute après "$game_switches[50]=!$game_switches[50] " ça : "$scene = Scene_Map.new "

Posté par Billie Preks le 25 Jan - 06:50 (2012)
Ca fonctionne, merci beaucoup!