赞 | 0 |
VIP | 4 |
好人卡 | 11 |
积分 | 1 |
经验 | 29368 |
最后登录 | 2021-11-17 |
在线时间 | 568 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 568 小时
- 注册时间
- 2012-9-7
- 帖子
- 611
|
本帖最后由 wingzeroplus 于 2012-11-24 15:26 编辑
不是没人理,有点复杂(貌似有自动战斗脚本,不过我只听说过,下面是我自己改的),首先得重新定义改状态(我拿普通攻击同伴状态改的)Scene_Battle 4里面修改这一段-
- #--------------------------------------------------------------------------
- # ● 生成基本行动结果
- #--------------------------------------------------------------------------
- def make_basic_action_result
- # 攻击的情况下
- if @active_battler.current_action.basic == 0
- # 设置攻击 ID
- @animation1_id = @active_battler.animation1_id
- @animation2_id = @active_battler.animation2_id
- # 行动方的战斗者是敌人的情况下
- if @active_battler.is_a?(Game_Enemy)
- if @active_battler.restriction == 3
- target = $game_troop.random_target_enemy
- elsif @active_battler.restriction == 2
- target = $game_party.random_target_actor
- else
- index = @active_battler.current_action.target_index
- target = $game_party.smooth_target_actor(index)
- end
- end
- #######################################################
- #自动行动详细设定
- ##################################################
- # 行动方的战斗者是角色的情况下
- if @active_battler.is_a?(Game_Actor)
- if @active_battler.restriction == 3 #随机攻击敌人状态
- if @active_battler.state?(6) #本身的混乱状态
- target = $game_party.random_target_actor
- elsif @active_battler.state?(5) or @active_battler.state?(12) or @active_battler.state?(17)#排除其他强制行动的冲突(因为游戏不同,编号不同)
- target = $game_troop.random_target_enemy # 角色攻击敌人
- else #除外中混乱和沉默外,还有状态带有普通攻击同伴的话
- #####################
- if @active_battler.id == 2 #如果是2号角色行动
- case rand(150)+$game_variables[102]/10 #这里是条件,我用的随机数(0-150)+第102号变量修正行动率做的
- when 0..50 #随机0-50之间,角色什么都不做(下面是打酱油的指令)
- $game_temp.forcing_battler = nil
- @phase4_step = 1
- return
- when 50..110 #50到110之间,普通攻击(下面是普通攻击指令)
- target = $game_troop.random_target_enemy # 角色攻击敌人
- target.attack_effect(@active_battler)
- @target_battlers = [target]
- @animation1_id = @active_battler.animation1_id
- @animation2_id = @active_battler.animation2_id
- return
- when 110..160 #110-160时就放技能了
- list = [2,44,90] #这里要自定义角色使用的技能编号,下面一定写清楚技能作用范围,不然系统无法识别
- sk = $data_skills[list[rand(list.size)]]
- if sk.id==2
- target = $game_party.random_target_actor #行动范围开始
- target.skill_effect(@active_battler,sk)
- @target_battlers = [target] #行动范围结束
- else
- set_target_battlers(sk.scope) #行动范围开始
- for target in @target_battlers
- target.skill_effect(@active_battler,sk)
- end #行动范围结束
- end
- @help_window.set_text(sk.name, 1)
- @animation1_id = sk.animation1_id
- @animation2_id = sk.animation2_id
- return
- when 160..999 #随机数超过160的范围,可以使用更多的技能
- list = [2,44,59,87,90,151]
- sk = $data_skills[list[rand(list.size)]]
- if sk.id==44 or sk.id==87 or sk.id==90
- set_target_battlers(sk.scope) #行动范围开始
- for target in @target_battlers
- target.skill_effect(@active_battler,sk)
- end #行动范围结束
- elsif sk.id == 151 or sk.id == 59
- target = $game_troop.random_target_enemy #行动范围开始
- @target_battlers = [target]
- target.skill_effect(@active_battler,sk) #行动范围结束
- else
- target = $game_party.random_target_actor #行动范围开始
- @target_battlers = [target]
- target.skill_effect(@active_battler,sk) #行动范围结束
- end
- @help_window.set_text(sk.name, 1)
- @animation1_id = sk.animation1_id
- @animation2_id = sk.animation2_id
- return
- end
- end
- #2号角色行动结束
- ##################################
- end
- elsif @active_battler.restriction == 2
- target = $game_troop.random_target_enemy
- else
- index = @active_battler.current_action.target_index
- target = $game_troop.smooth_target_enemy(index)
- end
- end
- # 设置对像方的战斗者序列
- @target_battlers = [target]
- # 应用通常攻击效果
- for target in @target_battlers
- target.attack_effect(@active_battler)
- end
- return
- end
- # 防御的情况下
- if @active_battler.current_action.basic == 1
- # 帮助窗口显示"防御"
- @help_window.set_text($data_system.words.guard, 1)
- return
- end
- # 逃跑的情况下
- if @active_battler.is_a?(Game_Enemy) and
- @active_battler.current_action.basic == 2
- # 帮助窗口显示"逃跑"
- @help_window.set_text("逃跑", 1)
- # 逃跑
- @active_battler.escape
- return
- end
- # 什么也不做的情况下
- if @active_battler.current_action.basic == 3
- # 清除强制行动对像的战斗者
- $game_temp.forcing_battler = nil
- # 移至步骤 1
- @phase4_step = 1
- return
- end
- end
复制代码 主要是很麻烦,要让多个角色可以自行战斗,复制2号角色的那部分内容,放在2个#######与#########之间,然后修改成你想要的结果,这个估计你一时半会也看不太懂
简单点说技能作用范围最重要,对照上面的看
target = $game_party.random_target_actor
@target_battlers = [target]
target.skill_effect(@active_battler,sk)
这段表示技能作用范围为已方随机
target = $game_troop.random_target_enemy
@target_battlers = [target]
target.skill_effect(@active_battler,sk)
这段表示技能作用范围为敌方随机
set_target_battlers(sk.scope)
for target in @target_battlers
target.skill_effect(@active_battler,sk)
end
这段表示自身,敌方全体或者我方全体之类的范围(都适用)
@target_battlers = $game_party.actors + $game_troop.enemies
for target in @target_battlers
target.skill_effect(@active_battler,sk)
end
还可以自己发挥,这是敌我双方全体范围
简单点说
1 定义哪位角色
2 定义行为区间(什么条件下,角色执行什么行动)
3 如果使用技能,则要定义技能的种类(写上技能的编号)
4 如果使用技能,还要定义技能的范围(上面给你写的几种范围,根据需要替换 原文中的行动范围开始到结束部分,自行组合)
以上几点必不可少 |
|