查看: 4370|回复: 4

[转载] 【VA】自动战斗

[复制链接]
梦石
0
星屑
89
在线时间
308 小时
注册时间
2010-8-10
回帖
728
发表于 2014-1-24 21:37:36 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 不是马甲 于 2014-1-24 21:57 编辑

来自http://hikimoki.sakura.ne.jp/rgss3/script_battle/tmatbtl.rb


战斗选择指令已经汉化(来自百度翻译


直接插入即可


[pre lang="ruby" line="1"]#==============================================================================
# ★ RGSS3_自動戦闘 Ver1.01
#==============================================================================
=begin

作者:tomoaky
webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

增加命令“自动”和“重复”,两种指令追加。
自动全体演员这回合只自动战斗的状态,
重复的全体演员前面的回合采取的行动自动选择。
附加功能全自动战斗开关(初期设定在7号)开了间
遇敌从地图场面回到为止都是自动化。
===注意点===
・前的回合一样行动成本不足等不能实行的场合攻击
、1回合中重复选择的情况全演员的行动,攻击
・前回合开始时被选择的行动重复的对象,
成本不足重复的内容发生变化时,下一次的回合以后也变化了
使用游戏(初期设定)开关
0007,0008
2012.01.17版本1.01
・逃跑指令失败后重复的命令不正确动作极化
2011.12.15版本1.0
公开

=end

#==============================================================================
# □ 設定項目
#==============================================================================
module TMATBTL
  SW_FULLAUTO = 7     # 完全自動戦闘フラグとして扱うゲームスイッチ番号
  SW_FULLFAST = 8     # 完全自動戦闘の早送りフラグとして扱うゲームスイッチ番号
end

#==============================================================================
# ■ Vocab
#==============================================================================
module Vocab
  AutoBattle    = "自动"         # 自動戦闘コマンド名
  RepeatBattle  = "重复"       # 繰り返し戦闘コマンド名
end

#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :repeat_commands          # 前ターンの行動内容
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias tmatbtl_game_temp_initialize initialize
  def initialize
    tmatbtl_game_temp_initialize
    @repeat_commands = []
  end
end

#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message
  #--------------------------------------------------------------------------
  # ● 入力待ち処理
  #--------------------------------------------------------------------------
  alias tmatbtl_window_message_input_pause input_pause
  def input_pause
    if $game_party.in_battle && $game_switches[TMATBTL::SW_FULLAUTO]
      wait($game_switches[TMATBTL::SW_FULLFAST] ? 30 : 60)
    else
      tmatbtl_window_message_input_pause
    end
  end
end

#==============================================================================
# ■ Window_PartyCommand
#==============================================================================
class Window_PartyCommand
  #--------------------------------------------------------------------------
  # ● コマンドリストの作成
  #--------------------------------------------------------------------------
  alias tmatbtl_window_partycommand_make_command_list make_command_list
  def make_command_list
    tmatbtl_window_partycommand_make_command_list
    add_command(Vocab::AutoBattle,   :auto)
    add_command(Vocab::RepeatBattle, :repeat)
  end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 早送り判定
  #--------------------------------------------------------------------------
  alias tmatbtl_scene_battle_show_fast? show_fast?
  def show_fast?
    tmatbtl_scene_battle_show_fast? || ($game_switches[TMATBTL::SW_FULLAUTO] &&
      $game_switches[TMATBTL::SW_FULLFAST])
  end
  #--------------------------------------------------------------------------
  # ● パーティコマンドウィンドウの作成
  #--------------------------------------------------------------------------
  alias tmatbtl_scene_battle_create_party_command_window create_party_command_window
  def create_party_command_window
    tmatbtl_scene_battle_create_party_command_window
    @party_command_window.set_handler(:auto,   method(:command_auto))
    @party_command_window.set_handler(:repeat, method(:command_repeat))
  end
  #--------------------------------------------------------------------------
  # ● パーティコマンド選択の開始
  #--------------------------------------------------------------------------
  alias tmatbtl_scene_battle_start_party_command_selection start_party_command_selection
  def start_party_command_selection
    tmatbtl_scene_battle_start_party_command_selection
    if $game_switches[TMATBTL::SW_FULLAUTO]
      command_auto unless scene_changing?
    end
  end
  #--------------------------------------------------------------------------
  # ● 戦闘開始
  #--------------------------------------------------------------------------
  alias tmatbtl_scene_battle_battle_start battle_start
  def battle_start
    tmatbtl_scene_battle_battle_start
    $game_temp.repeat_commands = []
  end
  #--------------------------------------------------------------------------
  # ● ターン開始
  #--------------------------------------------------------------------------
  alias tmatbtl_scene_battle_turn_start turn_start
  def turn_start
    $game_party.members.each_with_index do |actor, i|
      next unless actor.inputable?
      $game_temp.repeat_commands = []
      actor.actions.each do |action|
        $game_temp.repeat_commands.push(action.clone)
      end
    end
    tmatbtl_scene_battle_turn_start
  end
  #--------------------------------------------------------------------------
  # ○ コマンド[オート]
  #--------------------------------------------------------------------------
  def command_auto
    $game_party.members.each do |actor|
      actor.make_auto_battle_actions if actor.inputable?
    end
    @party_command_window.deactivate
    turn_start
  end
  #--------------------------------------------------------------------------
  # ○ コマンド[リピート]
  #--------------------------------------------------------------------------
  def command_repeat
    $game_party.members.each_with_index do |actor, i|
      next unless actor.inputable?
      actor.actions.clear
      if !$game_temp.repeat_commands || $game_temp.repeat_commands.empty?
        $game_temp.repeat_commands =
          [Game_Action.new(actor).set_attack.evaluate]
      end
      $game_temp.repeat_commands.each do |action|
        actor.actions.push(action.clone)
        actor.actions[actor.actions.size - 1].set_attack unless action.valid?
      end
    end
    @party_command_window.deactivate
    turn_start
  end
end
[/pre]

评分

参与人数 1星屑 +15 收起 理由
T君的暴走 + 15 塞糖

查看全部评分

梦石
0
星屑
50
在线时间
66 小时
注册时间
2009-7-16
回帖
147
发表于 2015-4-29 17:43:36 | 显示全部楼层
没人顶么?我觉得这个很实用。
敌人多的时候战斗过程很冗长无趣
回复

使用道具 举报

梦石
0
星屑
97
在线时间
308 小时
注册时间
2014-1-16
回帖
397
发表于 2015-4-29 18:21:47 | 显示全部楼层
这个以前好像见到过,不过确实是好东西
回复

使用道具 举报

梦石
0
星屑
50
在线时间
229 小时
注册时间
2012-1-21
回帖
22
发表于 2015-5-12 17:48:34 | 显示全部楼层
好顶赞~以前掌机游戏曾经遇到这个系统 非常方便
回复

使用道具 举报

梦石
0
星屑
265
在线时间
64 小时
注册时间
2012-1-22
回帖
51
发表于 2015-6-30 17:28:27 | 显示全部楼层
但是重复上次指令那个选项没出来啊- -

点评

有点啊,我以前试过,可以用的  发表于 2015-7-8 21:16
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部