查看: 2831|回复: 4

[已经过期] 连携技发生NameError

[复制链接]
梦石
0
星屑
50
在线时间
43 小时
注册时间
2016-12-15
回帖
1
发表于 2017-2-11 14:11:52 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
从外站搞了一套脚本,打开后显示其244行出现了NameError
求教大神该怎么处理




代码

[pre lang="ruby"]#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 連繋スキル - KGC_CooperationSkill ◆
#_/    ◇ Last update : 2007/11/30 ◇
#_/----------------------------------------------------------------------------
#_/  複数のスキルを組み合わせ、別のスキルを発動させる機能です。
#_/  It is a function to combine some skills, and to execute another skill.
#_/============================================================================
#_/  ≪個別戦闘コマンド[SeparationCommand]≫より下
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================

module KGC
  # ◆連繋スキル配列
  #  ≪[発動スキルID, [必要スキルID1, 必要スキルID2, ...]]≫
  #  配列なので、忘れずに , で区切ってください。
  CS_SKILLS = [
    # スパイラルフレア
    [101, [7, 60]],
    [101, [8, 60]],
    [101, [9, 60]],
  ]  # -- Don't delete this line! --

  # ◆敵連繋スキル許可
  #  true にすると、敵も連繋スキル判定を行う。
  CS_PERMIT_ENEMY = true

  # ◆連繋元スキル発動許可
  #  true にすると、連繋元となるスキルもすべて発動する。
  #  false にすると、連繋スキルのみ発動する。
  #  (≪Active Count Battle≫では、最後の連繋元スキルにのみ影響)
  CS_EXECUTE_ORIGIN_SKILL = false

  # ◆ターゲットが同じ場合のみ連繋を許可
  #  元のスキルがすべて同じターゲット(または全体)の場合のみ発動許可。
  #   ※ ランダムターゲットとは相性が良くありません。
  CS_ONLY_SAME_TARGET = true
end

#### CS_SKILLS
### Array of "Cooperation Skill".
#  << ["Cooperation Skill" ID, [Necessary skill ID 1, ID 2, ...]] >>

#### CS_PERMIT_ENEMY
### Enables enemy to execute "Cooperation Skill".

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["CooperationSkill"] = true

#==============================================================================
# ■ Game_Battler (分割定義 3)
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 連繋スキルの効果適用
  #     user_list : スキルの使用者リスト (バトラー)
  #     skill     : スキル
  #     is_actor  : 使用者がアクター
  #--------------------------------------------------------------------------
  def cooperation_skill_effect(user_list, skill, is_actor)
    # クリティカルフラグをクリア
    self.critical = false
    # スキルの効果範囲が HP 1 以上の味方で、自分の HP が 0、
    # またはスキルの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # メソッド終了
      return false
    end
    # 有効フラグをクリア
    effective = false
    # コモンイベント ID が有効の場合は有効フラグをセット
    effective |= skill.common_event_id > 0
    # 第一命中判定
    hit2 = 100 * user_list.size
    if skill.atk_f > 0
      user_list.each { |user|
        hit2 += user.hit * skill.atk_f / 100
      }
    end
    hit2 /= user_list.size * 0.75
    hit = Integer(skill.hit * hit2 / 100)
    hit_result = (rand(100) < hit)
    # 不確実なスキルの場合は有効フラグをセット
    effective |= hit < 100
    # 命中の場合
    if hit_result
      # 威力を計算
      power = 0
      user_list.each { |user|
        power += user.atk * skill.atk_f / 100
      }
      power /= user_list.size * 0.75
      power = Integer(power + skill.power)
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # 倍率を計算
      rate = 0
      user_list.each { |user|
        rate += (user.str * skill.str_f / 100)
        rate += (user.dex * skill.dex_f / 100)
        rate += (user.agi * skill.agi_f / 100)
        rate += (user.int * skill.int_f / 100)
      }
      rate /= user_list.size * 0.75
      rate = Integer(rate + 20)
      # 基本ダメージを計算
      self.damage = power * rate / 20
      # 属性修正
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # ダメージの符号が正の場合
      if self.damage > 0
        # 防御修正
        if self.guarding?
          self.damage /= 2
        end
      end
      # 分散
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # 第二命中判定
      eva = 0
      user_dex = 0
      user_list.each { |user|
        user_dex += user.dex
      }
      user_dex /= user_list.size
      eva += 8 * self.agi / user_dex
      eva += self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # 不確実なスキルの場合は有効フラグをセット
      effective |= hit < 100
    end
    # 命中の場合
    if hit_result
      # 威力 0 以外の物理攻撃の場合
      if skill.power != 0 and skill.atk_f > 0
        # ステート衝撃解除
        remove_states_shock
        # 有効フラグをセット
        effective = true
      end
      # HP からダメージを減算
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # ステート変化
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # 威力が 0 の場合
      if skill.power == 0
        # ダメージに空文字列を設定
        self.damage = ""
        # ステートに変化がない場合
        unless @state_changed
          # ダメージに "Miss" を設定
          self.damage = "Miss"
        end
      end
    # ミスの場合
    else
      # ダメージに "Miss" を設定
      self.damage = "Miss"
    end
    # 戦闘中でない場合
    unless $game_temp.in_battle
      # ダメージに nil を設定
      self.damage = nil
    end
    # メソッド終了
    return effective
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● スキルの使用可能判定
  #     skill_id : スキル ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    return super(skill_id)
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_CooperationSkillUser
#==============================================================================

class Game_CooperationSkillUser
  attr_reader   :index, :skill_id, :target_battlers
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(index, skill_id, target_battlers = [])
    @index = index
    @skill_id = skill_id
    @target_battlers = []
    target_battlers.each { |t|
      @target_battlers << t.index
    }
  end
  #--------------------------------------------------------------------------
  # ● 同値判定
  #--------------------------------------------------------------------------
  def equal?(obj)
    return (obj.is_a?(Game_CooperationSkillUser) &&
      @index == obj.index && @skill_id == obj.skill_id &&
      @target_battlers == obj.target_battlers)
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle (分割定義 1)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  alias main_KGC_CooperationSkill main
  def main
    # 連繋スキル発動フラグを解除
    @cooperation_skill_exec = false
    @cooperation_skill_id = 0
    # 連繋判定用配列を初期化
    @cooperate_actors = []
    @cooperate_enemies = []

    main_KGC_CooperationSkill
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle (分割定義 2)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● パーティコマンドフェーズ開始
  #--------------------------------------------------------------------------
  alias start_phase2_KGC_CooperationSkill start_phase2
  def start_phase2
    # 連繋スキル発動フラグを解除
    @cooperation_skill_exec = false
    @cooperation_skill_id = 0
    # 連繋判定用配列を初期化
    @cooperate_actors = []
    @cooperate_enemies = []

    start_phase2_KGC_CooperationSkill
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================

class Scene_Battle
  unless KGC::CS_EXECUTE_ORIGIN_SKILL || $imported["ActiveCountBattle"]
  #--------------------------------------------------------------------------
  # ● メインフェーズ開始
  #--------------------------------------------------------------------------
  alias start_phase4_KGC_CooperationSkill start_phase4
  def start_phase4
    start_phase4_KGC_CooperationSkill

    # 判定用データ作成
    @cooperate_actors = []
    @cooperate_enemies = []
    init_cooperate_battler_list(0)
    init_cooperate_battler_list(1)
  end
  #--------------------------------------------------------------------------
  # ● 判定用データ初期化
  #--------------------------------------------------------------------------
  def init_cooperate_battler_list(type)
    case type
    when 0  # Actor
      cooperate_battlers = @cooperate_actors
      battler_list = $game_party.actors
    when 1  # Enemy
      cooperate_battlers = @cooperate_actors
      battler_list = $game_troop.enemies
    end
    # 対象側バトラーを設定
    battler_list.each { |battler|
      if battler.current_action.kind == 1
        @active_battler = battler
        skill = $data_skills[battler.current_action.skill_id]
        @target_battlers = []
        set_target_battlers(skill.scope)
        user = Game_CooperationSkillUser.new(battler.index,
          battler.current_action.skill_id,
          @target_battlers.clone)
        cooperate_battlers << user
      end
    }
    @active_battler = nil
  end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  #--------------------------------------------------------------------------
  alias update_phase4_step2_KGC_CooperationSkill update_phase4_step2
  def update_phase4_step2
    @judged = false
    unless KGC::CS_EXECUTE_ORIGIN_SKILL
      # 行動がスキルの場合
      if @active_battler.current_action.kind == 1
        # 対象側バトラーを設定
        skill = $data_skills[@active_battler.current_action.skill_id]
        @target_battlers = []
        set_target_battlers(skill.scope)
      end
      # 発動判定
      judge_cooperation_skill(@active_battler)
      if @cooperation_skill_exec
        @phase4_step = 6
        return
      end
    end

    update_phase4_step2_KGC_CooperationSkill
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  #--------------------------------------------------------------------------
  alias update_phase4_step6_KGC_CooperationSkill update_phase4_step6
  def update_phase4_step6
    if @cooperation_skill_exec && !@judged
      # 連繋スキル終了
      @cooperation_skill_exec = false
      @cooperation_skill_id = 0
      @exec_battlers = []
    # 発動判定
    elsif KGC::CS_EXECUTE_ORIGIN_SKILL
      judge_cooperation_skill(@active_battler)
    end
    if @cooperation_skill_exec
      execute_cooperation_skill
      @judged = false
      return
    end

    update_phase4_step6_KGC_CooperationSkill
  end
  #--------------------------------------------------------------------------
  # ● 連繋スキル第一発動判定
  #     battler : 判定対象
  #--------------------------------------------------------------------------
  def judge_cooperation_skill(battler)
    if @judged
      return false
    end
    @judged = true

    # 行動がスキルの場合
    if battler.current_action.kind == 1
      # 敵全滅判定
      target_all_dead = true
      target_list = battler.is_a?(Game_Actor) ?
        $game_troop.enemies : $game_party.actors
      target_list.each { |t|
        if t.exist?
          target_all_dead = false
          break
        end
      }
      # 対象が残っていれば第二発動判定
      unless target_all_dead
        return judge_cooperation_skill_second(battler)
      end
    else
      # 判定用配列から削除
      if battler.is_a?(Game_Actor)
        remove_cooperate_battler(0, battler)
      elsif battler.is_a?(Game_Enemy)
        remove_cooperate_battler(1, battler)
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 連繋スキル第二発動判定
  #--------------------------------------------------------------------------
  def judge_cooperation_skill_second(battler)
    # 判定用データ作成
    user = Game_CooperationSkillUser.new(battler.index,
      battler.current_action.skill_id,
      @target_battlers.clone)
    @current_cooperate_battler = user
    if battler.is_a?(Game_Actor)
      remove_cooperate_battler(0, battler)
      @cooperate_actors << user
    elsif battler.is_a?(Game_Enemy) && KGC::CS_PERMIT_ENEMY
      remove_cooperate_battler(1, battler)
      @cooperate_enemies << user
    end
    # 連繋スキル発動判定
    KGC::CS_SKILLS.each { |cs|
      # アクター判定
      if battler.is_a?(Game_Actor)
        check_cooperation_exec_battlers(0, cs)
      # エネミー判定
      elsif battler.is_a?(Game_Enemy) && KGC::CS_PERMIT_ENEMY
        check_cooperation_exec_battlers(1, cs)
      end
      if @cooperation_skill_exec
        break
      end
    }
    return @cooperation_skill_exec
  end
  #--------------------------------------------------------------------------
  # ● 連繋スキル発動バトラー判定
  #     type        : 0..Actor  1..Enemy
  #     cs_data : Cooperation skill data
  #--------------------------------------------------------------------------
  def check_cooperation_exec_battlers(type, cs_data)
    @cooperation_skill_exec = false
    case type
    when 0  # Actor
      cooperate_battlers = @cooperate_actors
      battler_list = $game_party.actors
    when 1  # Enemy
      cooperate_battlers = @cooperate_enemies
      battler_list = $game_troop.enemies
    end

    # 行動者が発動者に含まれるか判定
    @exec_battlers = []
    need_skills = cs_data[1].clone
    cs_data[1].each_with_index { |skill_id, i|
      if @current_cooperate_battler.skill_id == skill_id
        @exec_battlers << @current_cooperate_battler
        need_skills.delete_at(i)
        break
      end
    }
    # 行動者が加担していなければ戻る
    if @exec_battlers.size == 0
      return
    end

    # 発動者リストを作成
    need_skills.each { |skill_id|
      user = cooperate_battlers.find { |cb|
        skill_id == cb.skill_id && !@exec_battlers.include?(cb)
      }
      if user == nil
        return
      end
      @exec_battlers << user
    }

    # 発動者全員が発動条件を満たすか判定
    duplicate_battlers = (0..99).to_a
    @exec_battlers.each { |eb|
      if !battler_list[eb.index].exist? ||
          !battler_list[eb.index].skill_can_use?(cs_data[0])
        return
      end
      duplicate_battlers &= eb.target_battlers
    }
    # 同じターゲットを指定しているか判定
    if KGC::CS_ONLY_SAME_TARGET && duplicate_battlers.size == 0
      return
    end

    # 発動フラグを立てる
    @cooperation_skill_exec = true
    @cooperation_skill_id = cs_data[0]
    @cooperation_skill_user = type
    # 発動者を削除
    cooperate_battlers.each_with_index { |cb, i|
      if @exec_battlers.include?(cb)
        @action_battlers.delete(battler_list[cb.index])
        cooperate_battlers = nil
      end
    }
    cooperate_battlers.compact!
  end
  #--------------------------------------------------------------------------
  # ● 連繋加担者削除
  #     type    : 0..アクター  1..エネミー
  #     battler : 削除対象
  #--------------------------------------------------------------------------
  def remove_cooperate_battler(type, battler)
    case type
    when 0  # アクター
      if @cooperate_actors.size > 1
        @cooperate_actors.each_index { |i|
          if @cooperate_actors.index == battler.index
            @cooperate_actors = nil
          end
        }
        @cooperate_actors.compact!
      end
    when 1  # エネミー
      if KGC::CS_PERMIT_ENEMY && @cooperate_enemies.size > 1
        @cooperate_enemies.each_index { |i|
          if @cooperate_enemies.index == battler.index
            @cooperate_enemies = nil
          end
        }
        @cooperate_enemies.compact!
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 連繋スキル発動
  #--------------------------------------------------------------------------
  def execute_cooperation_skill
    # スキル取得
    skill = $data_skills[@cooperation_skill_id]
    # ヘルプウィンドウにスキル名を表示
    @help_window.set_text(skill.name, 1)
    if $imported["SkillMessage"]
      # スキル使用メッセージ表示
      show_skill_message(@active_battler, skill)
    end
    # アニメーション ID を設定
    @animation1_id = skill.animation1_id
    @animation2_id = skill.animation2_id
    # コモンイベント ID を設定
    @common_event_id = skill.common_event_id
    # 攻撃対象取得
    @target_battlers = []
    set_target_battlers(skill.scope)

    user_list = []
    case @cooperation_skill_user
    when 0  # アクター
      @exec_battlers.each { |eb|
        user_list << $game_party.actors[eb.index]
      }
      if $imported["ActiveCountBattle"] && @input_battler != nil
        user_list.each { |user|
          if user == @input_battler
            # コマンド入力を解除
            cancel_command_input
          end
        }
      end
      @status_window.refresh
    when 1  # エネミー
      @exec_battlers.each { |eb|
        user_list << $game_troop.enemies[eb.index]
      }
    end
    user_list.each { |user|
      # SP消費
      user.sp -= skill.sp_cost
      # 発動アニメを表示
      user.animation_id = @animation1_id
      user.animation_hit = true
      # OverDrive ゲージ消費
      if $imported["OverDrive2"] && skill.overdrive?
        user.overdrive -= skill.od_cost
      elsif $imported["OverDrive"] &&
          skill.element_set.include?($game_special_elements["overdrive"])
        user.overdrive = 0
      end
    }
    # スキル適用
    @target_battlers.each { |target|
      target.cooperation_skill_effect(user_list, skill,
        @cooperation_skill_user == 0)
    }
    # ステップ 4 に移行
    @phase4_step = 4
  end
  #--------------------------------------------------------------------------
  # ● 連繋スキル加担判定
  #     battler : 判定するバトラー
  #--------------------------------------------------------------------------
  def cooperation_exec?(battler)
    if @cooperation_skill_exec
      if !battler.is_a?(Game_Enemy) || KGC::CS_PERMIT_ENEMY
        # 発動者に含まれているか判定
        @exec_battlers.each_index { |i|
          if @exec_battlers.index == battler.index
            return true
          end
        }
      end
    end
    return false
  end
end
[/pre]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-2-11 15:00:52 | 显示全部楼层
你是不是把这个脚本插在了 Scene_Battle之前了?插在main前面试试?
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
50
在线时间
43 小时
注册时间
2016-12-15
回帖
1
 楼主| 发表于 2017-2-11 15:27:20 | 显示全部楼层
guoxiaomi 发表于 2017-2-11 15:00
你是不是把这个脚本插在了 Scene_Battle之前了?插在main前面试试?

解决了,但又出了BUG.....麻烦一并解决了吧........
  1. [code][code][code][code]#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ ダッシュ&8方向移動 - KGC_Dash_8DirMove ◆
  3. #_/    ◇ Last update : 2007/04/28 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  マップ移動時のダッシュ&8方向移動機能を追加します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ カスタマイズ項目 ★
  9. #==============================================================================

  10. module KGC
  11.   # ◆ダッシュボタン
  12.   D8DM_DASH_BUTTON = Input::A
  13.   # ◆ダッシュ速度
  14.   D8DM_DASH_SPEED = 5
  15.   # ◆歩行速度
  16.   D8DM_WALK_SPEED = 4
  17. end

  18. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  19. $imported = {} if $imported == nil
  20. $imported["Dash_8DirMove"] = true

  21. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  22. module Dash
  23.   #--------------------------------------------------------------------------
  24.   # ● 一時ダッシュ速度指定
  25.   #--------------------------------------------------------------------------
  26.   def self.dash_speed=(value)
  27.     $game_system.temp_dash_speed = value
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 一時歩行速度指定
  31.   #--------------------------------------------------------------------------
  32.   def self.walk_speed=(value)
  33.     $game_system.temp_walk_speed = value
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 一時ダッシュ/歩行速度設定を解除
  37.   #--------------------------------------------------------------------------
  38.   def self.reset_speed
  39.     $game_system.temp_dash_speed = nil
  40.     $game_system.temp_walk_speed = nil
  41.   end
  42. end

  43. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  44. #==============================================================================
  45. # ■ Game_System
  46. #==============================================================================

  47. class Game_System
  48.   #--------------------------------------------------------------------------
  49.   # ● 公開インスタンス変数
  50.   #--------------------------------------------------------------------------
  51.   attr_accessor :dash_permit              # ダッシュ許可フラグ
  52.   attr_accessor :dir8_permit              # 8方向移動許可フラグ
  53.   attr_accessor :temp_dash_speed          # ダッシュ速度(一時)
  54.   attr_accessor :temp_walk_speed          # 歩行速度(一時)
  55.   #--------------------------------------------------------------------------
  56.   # ● オブジェクト初期化
  57.   #--------------------------------------------------------------------------
  58.   alias initialize_KGC_Dash_8DirMove initialize
  59.   def initialize
  60.     initialize_KGC_Dash_8DirMove

  61.     @dash_permit = true
  62.     @dir8_permit = true
  63.     @temp_dash_speed = nil
  64.     @temp_walk_speed = nil
  65.   end
  66. end

  67. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  68. #==============================================================================
  69. # ■ Game_Player
  70. #==============================================================================

  71. class Game_Player < Game_Character
  72.   #--------------------------------------------------------------------------
  73.   # ● フレーム更新
  74.   #--------------------------------------------------------------------------
  75.   def update
  76.     # ローカル変数に移動中かどうかを記憶
  77.     last_moving = moving?
  78.     # 移動中、イベント実行中、移動ルート強制中、
  79.     # メッセージウィンドウ表示中のいずれでもない場合
  80.     unless moving? or $game_system.map_interpreter.running? or
  81.            @move_route_forcing or $game_temp.message_window_showing
  82.       # 向きを保存
  83.       direction = @direction
  84.       # 方向ボタンが押されていれば、その方向へプレイヤーを移動
  85.       if $game_system.dir8_permit
  86.         case Input.dir8
  87.         when 1  # 左下
  88.           move_left
  89.           move_down
  90.           # 向き固定でない場合
  91.           unless @direction_fix
  92.             # 右向きだった場合は左を、上向きだった場合は下を向く
  93.             @direction = (direction == 6 ? 4 : direction == 8 ? 2 : direction)
  94.           end
  95.         when 2  # 下
  96.           move_down
  97.         when 3  # 右下
  98.           move_down
  99.           move_right
  100.           # 向き固定でない場合
  101.           unless @direction_fix
  102.             # 左向きだった場合は右を、上向きだった場合は下を向く
  103.             @direction = (direction == 4 ? 6 : direction == 8 ? 2 : direction)
  104.           end
  105.         when 4  # 左
  106.           move_left
  107.         when 6  # 右
  108.           move_right
  109.         when 7  # 左上
  110.           move_up
  111.           move_left
  112.           # 向き固定でない場合
  113.           unless @direction_fix
  114.             # 右向きだった場合は左を、下向きだった場合は上を向く
  115.             @direction = (direction == 6 ? 4 : direction == 2 ? 8 : direction)
  116.           end
  117.         when 8  # 上
  118.           move_up
  119.         when 9  # 右上
  120.           move_right
  121.           move_up
  122.           # 向き固定でない場合
  123.           unless @direction_fix
  124.             # 左向きだった場合は右を、下向きだった場合は上を向く
  125.             @direction = (direction == 4 ? 6 : direction == 2 ? 8 : direction)
  126.           end
  127.         end
  128.       else
  129.         case Input.dir4
  130.         when 2
  131.           move_down
  132.         when 4
  133.           move_left
  134.         when 6
  135.           move_right
  136.         when 8
  137.           move_up
  138.         end
  139.       end

  140.       # 歩行速度調整
  141.       if $game_system.dash_permit && Input.press?(KGC::D8DM_DASH_BUTTON)
  142.         if $game_system.temp_dash_speed == nil
  143.           @move_speed = KGC::D8DM_DASH_SPEED
  144.         else
  145.           @move_speed = $game_system.temp_dash_speed
  146.         end
  147.       else
  148.         if $game_system.temp_walk_speed == nil
  149.           @move_speed = KGC::D8DM_WALK_SPEED
  150.         else
  151.           @move_speed = $game_system.temp_walk_speed
  152.         end
  153.       end
  154.     end
  155.     # ローカル変数に座標を記憶
  156.     last_real_x = @real_x
  157.     last_real_y = @real_y
  158.     super
  159.     # キャラクターが下に移動し、かつ画面上の位置が中央より下の場合
  160.     if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  161.       # マップを下にスクロール
  162.       $game_map.scroll_down(@real_y - last_real_y)
  163.     end
  164.     # キャラクターが左に移動し、かつ画面上の位置が中央より左の場合
  165.     if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  166.       # マップを左にスクロール
  167.       $game_map.scroll_left(last_real_x - @real_x)
  168.     end
  169.     # キャラクターが右に移動し、かつ画面上の位置が中央より右の場合
  170.     if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  171.       # マップを右にスクロール
  172.       $game_map.scroll_right(@real_x - last_real_x)
  173.     end
  174.     # キャラクターが上に移動し、かつ画面上の位置が中央より上の場合
  175.     if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  176.       # マップを上にスクロール
  177.       $game_map.scroll_up(last_real_y - @real_y)
  178.     end
  179.     # 移動中ではない場合
  180.     unless moving?
  181.       # 前回プレイヤーが移動中だった場合
  182.       if last_moving
  183.         # 同位置のイベントとの接触によるイベント起動判定
  184.         result = check_event_trigger_here([1,2])
  185.         # 起動したイベントがない場合
  186.         if result == false
  187.           # デバッグモードが ON かつ CTRL キーが押されている場合を除き
  188.           unless $DEBUG and Input.press?(Input::CTRL)
  189.             # エンカウント カウントダウン
  190.             if @encounter_count > 0
  191.               @encounter_count -= 1
  192.             end
  193.           end
  194.         end
  195.       end
  196.       # C ボタンが押された場合
  197.       if Input.trigger?(Input::C)
  198.         # 同位置および正面のイベント起動判定
  199.         check_event_trigger_here([0])
  200.         check_event_trigger_there([0,1,2])
  201.       end
  202.     end
  203.   end
  204. end
复制代码
[/code][/code][/code]
[/code]
捕获26.PNG
捕获27.PNG

点评

把脚本插在main前,以及其他所有的脚本后面……  发表于 2017-2-11 16:54
把脚本插在main前……把脚本插在main前……把脚本插在main前……把脚本插在main前……把脚本插在main前……  发表于 2017-2-11 16:53
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部