Sujet n°13664
Posté par sassouna le 28 Fév - 20:40 (2014)
Titre : [Bug] Pension
Bonjour

J'ai eu un bug avec la pension pokemon sous psp5g ds sans rien changer au script donc je pense que çà bug à l'orgine Imbécile heureux

Voici le log
Log
---------- Erreur de script : Interpreter Bis* ----------
----- Type
NoMethodError

----- Message
- ARGS - []
Section113:1138:in `effectif_equipe'undefined method `egg?' for #<POKEMON_S::Pokemon:0x966f750>

----- Position dans Interpreter Bis*
Ligne 268

----- Backtrace
Script : Interpreter Bis* | Ligne : 268 | Méthode : in `command_111'
Script : Interpreter | Ligne : 1137 | Méthode : in `each'
Script : Interpreter | Ligne : 1137 | Méthode : in `effectif_equipe'
Script : APIs | Ligne : 1 | Méthode : in `command_111'
Script : Interpreter 2 | Ligne : 41 | Méthode : in `eval'
Script : Interpreter Bis* | Ligne : 268 | Méthode : in `command_111'
Script : Interpreter 2 | Ligne : 41 | 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 : Interpreter 1 | Ligne : 130 | 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 : 48 | Méthode : in `alias_update'
Script : Scene_Map | Ligne : 46 | Méthode : in `loop'
Script : Scene_Map | Ligne : 59 | Méthode : in `alias_update'
Script : MAPPANEL* | Ligne : 89 | Méthode : in `update'


Merci d'avance !

Posté par Schneitizel le 28 Fév - 21:09 (2014)
Envoi le script interpreter Bis entier stp

Posté par sassouna le 1 Mar - 13:32 (2014)
interpreter bis

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])
    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
    $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