Sujet n°4753
Posté par D4 le 6 Aoû - 11:59 (2009)
Titre : Magasin [ok]
Petit bug quand je parle au vendeur...

Spoiler


Spoiler
---------- Erreur de script : Interpreter Bis ----------
----- Type
NoMethodError
----- Message
- ARGS - []
undefined method `tourne' for nil:NilClass
----- Position dans Interpreter Bis
Ligne 298
----- Backtrace
Script : Interpreter Bis | Ligne : 298 | Méthode : in `command_302'
Script : Interpreter 2 | Ligne : 159 | Méthode : in `execute_command'
Script : Interpreter 1 | Ligne : 199 | Méthode : in `update'
Script : Interpreter 1 | Ligne : 113 | Méthode : in `loop'
Script : Interpreter 1 | Ligne : 204 | Méthode : in `update'
Script : Scene_Map | Ligne : 61 | Méthode : in `alias_update'
Script : Scene_Map | Ligne : 58 | Méthode : in `loop'
Script : Scene_Map | Ligne : 79 | Méthode : in `alias_update'
Script : MAPPANEL | Ligne : 90 | Méthode : in `old_update'
Script : TempsJourNuit | Ligne : 248 | Méthode : in `update_passminimap'
Script : Minimap | Ligne : 44 | Méthode : in `update'
Script : Scene_Map | Ligne : 25 | Méthode : in `old_main'
Script : Scene_Map | Ligne : 19 | Méthode : in `loop'
Script : Scene_Map | Ligne : 30 | Méthode : in `old_main'
Script : TempsJourNuit | Ligne : 237 | Méthode : in `main_passminimap'
Script : Minimap | Ligne : 31 | Méthode : in `main'
Script : Main | Ligne : 49


Enfaite ce que je voudrais c'est juste comprendre ce que je dois corriger.
D'après les correction manuelkle c'est ça :
Spoiler
15/07 12h00 :


  • Voici les scripts concernés par la correction :
    • Scene_Map
    • Interpreter
    • Interpreter Bis
    • Pokemon_Save
    • Scene_Debug
    • Pokemon_Battle_Core_1
    • Pokemon_Name
    • Scene_Name
    • Cadeaux Mystères Color
    • Cadeaux Mystères SP
    • Cadeaux Mystères Cube

  • Correction :
    • Dans chacun de ces scripts, recherchez :
      |+Agrandir|-Réduire|version texte|copier le code|imprimer|?


      1.    unless $game_variables[5000]["compteurs"] == [] or  
      2.         not($game_variables[5000]["compteurs"][0].tourne)  
      3.       bool = $game_variables[5000]["compteurs"][1]  
      4.       $game_variables[5000]["compteurs"][0].arreter  
      5.       $game_variables[5000]["compteurs"][1] = bool  
      6.     end  

   unless $game_variables[5000]["compteurs"] == [] or
        not($game_variables[5000]["compteurs"][0].tourne)
      bool = $game_variables[5000]["compteurs"][1]
      $game_variables[5000]["compteurs"][0].arreter
      $game_variables[5000]["compteurs"][1] = bool
    end

et remplacez ce bloc par :

|+Agrandir|-Réduire|version texte|copier le code|imprimer|?


  1.     pause  
    pause


[*]Ensuite, dans le script Compteur_Temps, ajoutez :
|+Agrandir|-Réduire|version texte|copier le code|imprimer|?


  1. def pause  
  2.   if $game_variables == nil or not $game_variables[5000].is_a?(Hash) or  
  3.       $game_variables[5000]["compteurs"] == nil or  
  4.       $game_variables[5000]["compteurs"][0] == nil  
  5.     return  
  6.   end  
  7.   $game_variables[5000]["compteurs"][0].suspendre  
  8. end  

def pause
  if $game_variables == nil or not $game_variables[5000].is_a?(Hash) or
      $game_variables[5000]["compteurs"] == nil or
      $game_variables[5000]["compteurs"][0] == nil
    return
  end
  $game_variables[5000]["compteurs"][0].suspendre
end

juste avant :

|+Agrandir|-Réduire|version texte|copier le code|imprimer|?


  1. if POKEMON_S::COMPTEUR  

if POKEMON_S::COMPTEUR


      Mais j'ai un peu de mal a comprendre où faire ça ?
      Merci

      Posté par Sphinx le 6 Aoû - 12:38 (2009)
      dans les scripts...


      F11

      Posté par D4 le 6 Aoû - 12:50 (2009)
      :gloups:  Oui ça j'avais compris.

      J'ai fait les modif mais le jeu ne veux plus se lancé... j'ai du faire une erreur et impossible de retourner en arrière mnt.
      Quelqu'un pourrait me faire un copier coller du bloc de "interpreter bis" pour le shop ?
      Merci

      Posté par Sphinx le 6 Aoû - 15:09 (2009)
      voilà le script Interpreter Bis de 4G+ :

      Code
      Code:
      #==============================================================================
      # ■ Interpreter
      # Pokemon Script Project - Krosk
      # 18/07/07
      #-----------------------------------------------------------------------------
      # Scène à modifier à loisir
      #-----------------------------------------------------------------------------
      # Fonctions du logiciel
      #-----------------------------------------------------------------------------

      class Interpreter
        #--------------------------------------------------------------------------
        # Fonction communes
        #     parameter : 1 ID、0 Equipe
        #--------------------------------------------------------------------------
        def iterate_actor(parameter)
          if parameter == 0
            for actor in $pokemon_party.actors
              yield actor
            end
          else
            actor = $pokemon_party.actors[$game_variables[4]]
            yield actor if actor != nil
          end
        end
       
        #--------------------------------------------------------------------------
        # Ajouter / Retirer monnaie
        #--------------------------------------------------------------------------
        def command_125
          value = operate_value(@parameters[0], @parameters[1], @parameters[2])
          $pokemon_party.add_money(value)
          return true
        end
       
        #--------------------------------------------------------------------------
        # Ajouter / Retirer objets
        #--------------------------------------------------------------------------
        def command_126
          value = operate_value(@parameters[1], @parameters[2], @parameters[3])
          $pokemon_party.add_item(@parameters[0], value)
          return true
        end
       
        #--------------------------------------------------------------------------
        # Modifier les PV
        #--------------------------------------------------------------------------
        def command_311
          value = operate_value(@parameters[1], @parameters[2], @parameters[3])
          iterate_actor(@parameters[0]) do |actor|
            if actor.hp > 0
              if @parameters[4] == false and actor.hp + value <= 0
                actor.hp = 1
              else
                actor.hp += value
              end
            end
          end
          $game_temp.gameover = $pokemon_party.dead?
          return true
        end
       
        #--------------------------------------------------------------------------
        # Infliger statut
        #--------------------------------------------------------------------------
        def command_313
          iterate_actor(@parameters[0]) do |actor|
            if @parameters[1] == 0
              if @parameters[2] == 9
                actor.hp = 0
              else
                actor.status = @parameters[2]
              end
            elsif actor.status == @parameters[2]
              actor.cure
            elsif actor.dead? and @parameters[2] == 9
              actor.hp = actor.max_hp
            end
          end
          return true
        end

        #--------------------------------------------------------------------------
        # Soigner complètement
        #-------------------------------------------------------------------------- 
        def command_314
          iterate_actor(@parameters[0]) do |actor|
            actor.refill
          end
          return true
        end
       
        #--------------------------------------------------------------------------
        # Ajouter de l'exp
        #--------------------------------------------------------------------------   
        def command_315
          # 操作する値を取得
          value = operate_value(@parameters[1], @parameters[2], @parameters[3])
          # イテレータで処理
          iterate_actor(@parameters[0]) do |actor|
            # アクターの EXP を変更
            actor.exp += value
            if actor.level_check
              actor.level_up
              if actor.evolve_check != false
                scenebis = Pokemon_Evolve.new(actor, actor.evolve_check)
                scenebis.main
                Graphics.transition
              end
            end
          end
          # 継続
          return true
        end
       
        #--------------------------------------------------------------------------
        # Régler le niveau
        #--------------------------------------------------------------------------
        def command_316
          value = operate_value(@parameters[1], @parameters[2], @parameters[3])
          iterate_actor(@parameters[0]) do |actor|
            if value > 0
              for i in 1..value
                actor.level_up
                if actor.evolve_check != false
                  scenebis = Pokemon_Evolve.new(actor, actor.evolve_check)
                  scenebis.main
                  Graphics.transition
                end
              end
            else
              actor.level += value
              if actor.level <= 0
                actor.level = 1
              end
            end
            actor.statistic_refresh
          end
          return true
        end
       
        #--------------------------------------------------------------------------
        # Enseigner compétence
        #--------------------------------------------------------------------------
        def command_318
          actor = $pokemon_party.actors[$game_variables[4]]
          if actor != nil
            if @parameters[1] == 0
              enseigner_capacite(actor, @parameters[2])
            else
              actor.forget_skill(@parameters[2])
            end
          end
          # 継続
          return true
        end
       
        #--------------------------------------------------------------------------
        # Modifier nom
        #--------------------------------------------------------------------------
        def command_320
          # アクターを取得
          actor = $pokemon_party.actors[$game_variables[4]]
          # 名前を変更
          if actor != nil
           
            if @parameters[1] != ""
              actor.given_name = @parameters[1]
            else
              name_pokemon(actor)
            end
          end
          # 継続
          return true
        end
       
        #--------------------------------------------------------------------------
        # Démarrer un combat
        #-------------------------------------------------------------------------- 
        def command_301
          call_battle_trainer(@parameters[0], true, @parameters[1], @parameters[2], $data_trainer[@parameters[0]][8])
          current_indent = @list[@index].indent
          $game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n }
          #@index += 1
          return true
        end
       
        #--------------------------------------------------------------------------
        # Action conditionnelle
        #--------------------------------------------------------------------------
        def command_111
          # ローカル変数 result を初期化
          result = false
          # 条件判定
          case @parameters[0]
          when 0  # スイッチ
            result = ($game_switches[@parameters[1]] == (@parameters[2] == 0))
          when 1  # 変数
            value1 = $game_variables[@parameters[1]]
            if @parameters[2] == 0
              value2 = @parameters[3]
            else
              value2 = $game_variables[@parameters[3]]
            end
            case @parameters[4]
            when 0  # と同値
              result = (value1 == value2)
            when 1  # 以上
              result = (value1 >= value2)
            when 2  # 以下
              result = (value1 <= value2)
            when 3  # 超
              result = (value1 > value2)
            when 4  # 未満
              result = (value1 < value2)
            when 5  # 以外
              result = (value1 != value2)
            end
          when 2  # セルフスイッチ
            if @event_id > 0
              key = [$game_map.map_id, @event_id, @parameters[1]]
              if @parameters[2] == 0
                result = ($game_self_switches[key] == true)
              else
                result = ($game_self_switches[key] != true)
              end
            end
          when 3  # タイマー
            if $game_system.timer_working
              sec = $game_system.timer / Graphics.frame_rate
              if @parameters[2] == 0
                result = (sec >= @parameters[1])
              else
                result = (sec <= @parameters[1])
              end
            end
          when 4  # アクター
            if pokemon_numero($game_variables[4]) != nil
              case @parameters[2]
              when 1
                result = (pokemon_numero($game_variables[4]).name == @parameters[3])
              when 2  # スキル
                result = (pokemon_numero($game_variables[4]).skill_learnt?(@parameters[3]))
              when 5
                if @parameters[3] == 9
                  result = pokemon_numero($game_variables[4]).dead?
                else
                  result = (pokemon_numero($game_variables[4]).status == @parameters[3])
                end
              end
            end
          when 6  # キャラクター
            character = get_character(@parameters[1])
            if character != nil
              result = (character.direction == @parameters[2])
            end
          when 7  # ゴールド
            if @parameters[2] == 0
              result = ($pokemon_party.money >= @parameters[1])
            else
              result = ($pokemon_party.money <= @parameters[1])
            end
          when 8  # アイテム
            result = ($pokemon_party.item_number(@parameters[1]) > 0)
          when 11  # ボタン
            result = (Input.press?(@parameters[1]))
          when 12  # スクリプト
            result = eval(@parameters[1])
          end
          # 判定結果をハッシュに格納
          @branch[@list[@index].indent] = result
          # 判定結果が真だった場合
          if @branch[@list[@index].indent] == true
            # 分岐データを削除
            @branch.delete(@list[@index].indent)
            # 継続
            return true
          end
          # 条件に該当しない場合 : コマンドスキップ
          return command_skip
        end
       
        #--------------------------------------------------------------------------
        # Shop
        #--------------------------------------------------------------------------
        def command_302
          shop_list = [@parameters[1]]
          loop do
            @index += 1
            if @list[@index].code == 605
              shop_list.push(@list[@index].parameters[1])
            else
              break
            end
          end
          pause
          $scene = Pokemon_Shop.new(shop_list)
          @wait_count = 2
          @index -= 1
          return true
        end
       
        #--------------------------------------------------------------------------
        # Gestion de Variables
        #--------------------------------------------------------------------------
        def command_122
          # 値を初期化
          value = 0
          # オペランドで分岐
          case @parameters[3]
          when 0  # 定数
            value = @parameters[4]
          when 1  # 変数
            value = $game_variables[@parameters[4]]
          when 2  # 乱数
            value = @parameters[4] + rand(@parameters[5] - @parameters[4] + 1)
          when 3  # アイテム
            value = $pokemon_party.item_number(@parameters[4])
          when 4  # アクター
            actor = $pokemon_party.actors[$game_variables[4]]
            if actor != nil
              case @parameters[5]
              when 0  # レベル
                value = actor.level
              when 1  # EXP
                value = actor.exp
              when 2  # Type1
                value = actor.type1
              when 3  # type2
                value = actor.type2
              when 4  # HP
                value = actor.hp
              when 5  # max_hp
                value = actor.max_hp
              when 6  # 腕力
                value = actor.atk
              when 7  # 器用さ
                value = actor.dfe
              when 8  # 素早さ
                value = actor.spd
              when 9  # 魔力
                value = actor.ats
              when 10  # 攻撃力
                value = actor.dfs
              when 11  # 物理防御
                value = actor.gender
              when 12  # 魔法防御
                value = actor.id
              when 13  # 回避修正
                value = actor.loyalty
              end
            end
          when 6  # キャラクター
            character = get_character(@parameters[4])
            if character != nil
              case @parameters[5]
              when 0  # X 座標
                value = character.x
              when 1  # Y 座標
                value = character.y
              when 2  # 向き
                value = character.direction
              when 3  # 画面 X 座標
                value = character.screen_x
              when 4  # 画面 Y 座標
                value = character.screen_y
              when 5  # 地形タグ
                value = character.terrain_tag
              end
            end
          when 7  # その他
            case @parameters[4]
            when 0  # マップ ID
              value = $game_map.map_id
            when 1  # パーティ人数
              value = $pokemon_party.actors.size
            when 2  # ゴールド
              value = $pokemon_party.money
            when 3  # 歩数
              value = $pokemon_party.steps
            when 4  # プレイ時間
              value = Graphics.frame_count / Graphics.frame_rate
            when 5  # タイマー
              value = $game_system.timer / Graphics.frame_rate
            when 6  # セーブ回数
              value = $game_system.save_count
            end
          end
          for i in @parameters[0] .. @parameters[1]
            # 操作で分岐
            case @parameters[2]
            when 0  # 代入
              $game_variables[i] = value
            when 1  # 加算
              $game_variables[i] += value
            when 2  # 減算
              $game_variables[i] -= value
            when 3  # 乗算
              $game_variables[i] *= value
            when 4  # 除算
              if value != 0
                $game_variables[i] /= value
              end
            when 5  # 剰余
              if value != 0
                $game_variables[i] %= value
              end
            end
            # 上限チェック
            if $game_variables[i] > 99999999
              $game_variables[i] = 99999999
            end
            # 下限チェック
            if $game_variables[i] < -99999999
              $game_variables[i] = -99999999
            end
          end
          # マップをリフレッシュ
          $game_map.need_refresh = true
          # 継続
          return true
        end
       
        #--------------------------------------------------------------------------
        # Inserer un script
        #--------------------------------------------------------------------------
        def command_355
          # script に 1 行目を設定
          script = @list[@index].parameters[0] + "\n"
          # ループ
          loop do
            # 次のイベントコマンドがスクリプト 2 行目以降の場合
            if @list[@index+1].code == 655
              # script に 2 行目以降を追加
              script += @list[@index+1].parameters[0] + "\n"
            # イベントコマンドがスクリプト 2 行目以降ではない場合
            else
              # ループ中断
              break
            end
            # インデックスを進める
            @index += 1
          end
          $running_script = "MAP #{@map_id} EVENT #{@event_id}\nSCRIPT\n#{script}"
          (eval(script) or true)
        end
       
      end

      Posté par D4 le 7 Aoû - 13:08 (2009)
      Merci bien.
      Tout remarche nickel Clin d'œil foireux