Project1
标题:
如何使逃跑选项加入进菜单项且能执行的
[打印本页]
作者:
flzt5354
时间:
2009-9-7 20:02
标题:
如何使逃跑选项加入进菜单项且能执行的
本帖最后由 flzt5354 于 2009-9-8 20:05 编辑
搜索看了不少..但没一个是能行的- -
作者:
后知后觉
时间:
2009-9-8 12:35
本帖最后由 后知后觉 于 2009-9-8 12:43 编辑
那些如何去除【战斗/逃跑】选项,和增加这个按钮我就不说了.
针对默认系统:
两种效果:
[line]10[/line]
①.按下按钮时立即执行逃跑处理.
先找到 Scene_Battle 3 的这一段增加 when 4
#--------------------------------------------------------------------------
# ● 刷新画面 (角色命令回合 : 基本命令)
#--------------------------------------------------------------------------
def update_phase3_basic_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
phase3_prior_actor
return
end
if Input.trigger?(Input::C)
case @actor_command_window.index
when 0 # 攻击
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
start_enemy_select
when 1 # 特技
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 1
start_skill_select
when 2 # 防御
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
phase3_next_actor
when 3 # 物品
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 2
start_item_select
when 4 # 逃跑
$game_system.se_play($data_system.decision_se)
update_phase2_escape
end
return
end
end
复制代码
[line]10[/line]
②.进入主战斗回合,每个输入了【逃跑】命令的角色都执行一次逃跑处理.
有一个逃跑成功立即结束战斗.
找到 Scene_Battle 3 的这一段增加 when 4
#--------------------------------------------------------------------------
# ● 刷新画面 (角色命令回合 : 基本命令)
#--------------------------------------------------------------------------
def update_phase3_basic_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
phase3_prior_actor
return
end
if Input.trigger?(Input::C)
case @actor_command_window.index
when 0 # 攻击
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
start_enemy_select
when 1 # 特技
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 1
start_skill_select
when 2 # 防御
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
phase3_next_actor
when 3 # 物品
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 2
start_item_select
when 4 # 逃跑
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 2
phase3_next_actor
end
return
end
end
复制代码
找到 Scene_Battle 2 的这一段
把里面的 start_phase4 改成 @phase4_step = 1
再把 $game_party.clear_actions 删除
这个里面可以修改逃跑成功率的计算公式
#--------------------------------------------------------------------------
# ● 画面更新 (同伴指令回合 : 逃跑)
#--------------------------------------------------------------------------
def update_phase2_escape
enemies_agi = 0
enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number += 1
end
end
if enemies_number > 0
enemies_agi /= enemies_number
end
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
success = rand(100) < 50 * actors_agi / enemies_agi
if success
$game_system.se_play($data_system.escape_se)
$game_system.bgm_play($game_temp.map_bgm)
battle_end(1)
else
#$game_party.clear_actions
#start_phase4
@phase4_step = 1
end
end
复制代码
然后来到 Scene_Battle 4
添加一小段内容.有注释的部分~
#--------------------------------------------------------------------------
# ● 生成基本行动结果
#--------------------------------------------------------------------------
def make_basic_action_result
if @active_battler.current_action.basic == 0
@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) or @active_battler.is_a?(Hzhj_Baby)
if @active_battler.restriction == 3
target = $game_party.random_target_actor
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.is_a?(Game_Actor) and
@active_battler.current_action.basic == 2
# 帮助窗口显示"逃跑"
@help_window.set_text("逃跑", 1)
# 执行角色逃跑处理
update_phase2_escape
return
end
#--------------------------------------------------------------------------
if @active_battler.current_action.basic == 3
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
复制代码
这样就完成了,当然还有个效果③
这个效果的复杂程度就要高一些了.改的东西就更多了
我就不说了,自己去想吧^ ^
是在效果②的基础上升级...
逃跑成功的角色脱离战斗.没有逃跑的和逃跑失败的角色留下来继续战斗
感觉就和敌人的逃跑是一样
还是给你一个效果②的工程吧- -
逃跑.rar
(183.34 KB, 下载次数: 200)
2009-9-8 12:35 上传
点击文件名下载附件
然后补充一句,上面贴的代码不要直接复制- - 有些东西是默认系统没有的 复制过去就会出错
作者:
flzt5354
时间:
2009-9-8 20:03
本帖最后由 flzt5354 于 2009-9-8 20:05 编辑
成功了,非常感谢
PS:= =我当然不会直接复制~~鼠标脚本还有头像脚本我都修改这的~~直接复制哪成~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1