赞 | 5 |
VIP | 620 |
好人卡 | 38 |
积分 | 69 |
经验 | 125468 |
最后登录 | 2015-7-27 |
在线时间 | 1666 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6875
- 在线时间
- 1666 小时
- 注册时间
- 2008-10-29
- 帖子
- 6710
|
其实现在的RPG不带这个功能的话 玩起来感觉很累~
仙剑里也有这样的效果,不过那个还带得有AI
不想看【论文】就下了范例自己去研究
有兴趣的话接着往下看~
战斗中自动行动v1.0.rar
(189.55 KB, 下载次数: 170)
我就说说最基本的吧~
拿默认系统来说~
先要新建一些命令属性来作保存上次手动输入的命令信息
找到
class Game_BattleAction
定义一些新的实例变量
attr_accessor :hzhj_speed # 速度
attr_accessor :hzhj_kind # 种类 (基本 / 特技 / 物品)
attr_accessor :hzhj_basic # 基本 (攻击 / 防御 / 逃跑)
attr_accessor :hzhj_skill_id # 特技 ID
attr_accessor :hzhj_item_id # 物品 ID
attr_accessor :hzhj_target_index # 对像索引
其实就是把原有的改了个名字再定义了一次
然后
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
clear
@hzhj_speed = 0
@hzhj_kind = 0
@hzhj_basic = 0
@hzhj_skill_id = 0
@hzhj_item_id = 0
@hzhj_target_index = 0
end
新定义一个方法来把储存的信息传递给要执行的部分
#--------------------------------------------------------------------------
# ● 自动战斗
#--------------------------------------------------------------------------
def auto_battle
@speed = @hzhj_speed
@kind = @hzhj_kind
@basic = @hzhj_basic
@skill_id = @hzhj_skill_id
@item_id = @hzhj_item_id
@target_index = @hzhj_target_index
end
再新定义一个方法把手动输入的命令存储下来
#--------------------------------------------------------------------------
# ● 保存当前的行动
#--------------------------------------------------------------------------
def to_k
@hzhj_speed = @speed
@hzhj_kind = @kind
@hzhj_basic = @basic
@hzhj_skill_id = @skill_id
@hzhj_item_id = @item_id
@hzhj_target_index = @target_index
end
然后在 Game_Party新定义2个方法来方便批处理
#--------------------------------------------------------------------------
# ● 设置自动战斗的命令
#--------------------------------------------------------------------------
def set_auto_action
for hzhj in @actors
if hzhj != nil
hzhj.current_action.auto_battle
end
end
end
#--------------------------------------------------------------------------
# ● 保存当前所有人的命令
#--------------------------------------------------------------------------
def save_action
for hzhj in @actors
if hzhj != nil
hzhj.current_action.to_k
end
end
end
然后还需要一个变量来传递 现在是否存在自动状态
所以 我的方法是在Game_Temp新加了个东西
attr_accessor :battle_main_auto
然后在Scene_Battle 1 初始化
并给@actor_command_window新加一个自动的选项
然后来到Scene_Battle 3
找到 def update_phase3_basic_command
在when 3 的后面加上 when 4
when 4 # 自动
$game_system.se_play($data_system.decision_se)
$game_temp.battle_main_auto = true
start_phase4
最后来到Scene_Battle 4
先是在def start_phase4
添加
if $game_temp.battle_main_auto
$game_party.set_auto_action
else
$game_party.save_action
end
然后找到 def update_phase4_step1
的 if @action_battlers.size == 0下面新加一段
if $game_temp.battle_main_auto
start_phase4
return
end
最后在def update_phase4下面加一段
if $game_temp.battle_main_auto
if Input.press?(Input::B)
$game_temp.battle_main_auto = false
end
end
完成~~ |
|