幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3068|回复: 14

小白制作逃跑指令

[复制链接]

4

主题

34

帖子

370

积分

④见习

积分
370
发表于 2004-9-25 08:52:16 | 显示全部楼层 |阅读模式
看了怎么去掉逃跑菜单后想:还是要有逃跑功能,但是应该和一般的RPG一样,属于战斗一般的菜单,所以有了这个想法。

首先是关掉原有的逃跑选项,以前已经有了,这里再简单重复一下:

Scene_Battle (分割定义2)

红色部分为修改

# 有效化同伴指令窗口
    @party_command_window.active = true
    @party_command_window.visible = false

● 刷新画面 (同伴命令回合)只留:

def update_phase2

#演奏音效         

$game_system.se_play($data_system.decision_se)
               #开始主回合

start_phase3

  end

end

下面就是菜单逃跑的实现:

Scene_Battle (分割定义 1)

#添加一个战斗选项,并且定义为逃跑

# 生成角色命令窗口
    s1 = $data_system.words.attack
    s2 = $data_system.words.skill
    s3 = $data_system.words.guard
    s4 = $data_system.words.item
    s5 = "逃跑"

@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, s5])

然后在Scene_Battle (分割定义 3)中,增加这个选项的作用:指向逃跑的判定,前面4个我就省掉不打出来啦,大家应该看的懂吧

if Input.trigger?(Input::C)
      # 角色指令窗口光标位置分之
      case @actor_command_window.index

when 4 #逃跑
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        #开始逃跑
        update_phase2_escape

这样就实现啦:)还是有个问题,就是菜单的下延被角色状态的筐挡住了,虽然不影响选项,但是有点别扭,那位高人指点一下吧
回复

使用道具 举报

4

主题

34

帖子

370

积分

④见习

积分
370
 楼主| 发表于 2004-9-25 09:29:15 | 显示全部楼层
我自己解决啦:
在Scene_Battle (分割定义 1)
改成
@actor_command_window.y = 128
就可以啦,这个是控制窗口的垂直位置的,现在多了一行逃跑指令,所以窗口也要向上移动32个象素,所以要改成128。
回复 支持 反对

使用道具 举报

4

主题

34

帖子

370

积分

④见习

积分
370
 楼主| 发表于 2004-9-25 16:43:23 | 显示全部楼层
大家看帖要回贴啊!
回复 支持 反对

使用道具 举报

218

主题

1万

帖子

10万

积分

⑧专业

赋予你第五自由

积分
108021
发表于 2004-9-25 16:49:34 | 显示全部楼层
将你更新后的代码完整地帖出来

第 五 自 由 -   5th  Freedom   -

回复 支持 反对

使用道具 举报

4

主题

34

帖子

370

积分

④见习

积分
370
 楼主| 发表于 2004-9-26 12:11:24 | 显示全部楼层
Scene_Battle (分割定义 1)
class Scene_Battle
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 初始化战斗用的各种暂时数据
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# 初始化战斗用事件解释器
$game_system.battle_interpreter.setup(nil, 0)
# 准备队伍
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
# 生成角色命令窗口
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
s5 = \"逃跑\"
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, s5])
@actor_command_window.y = 128
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
# 生成其它窗口
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
# 生成活动块
@spriteset = Spriteset_Battle.new
# 初始化等待计数
@wait_count = 0
# 执行过渡
if $data_system.battle_transition == \"\"
Graphics.transition(20)
else
Graphics.transition(40, \"Graphics/Transitions/\" +
$data_system.battle_transition)
end
# 开始自由战斗回合
start_phase1
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 刷新地图
$game_map.refresh
# 准备过渡
Graphics.freeze
# 释放窗口
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# 释放活动块
@spriteset.dispose
# 标题画面切换中的情况
if $scene.is_a?(Scene_Title)
# 淡入淡出画面
Graphics.transition
Graphics.freeze
end
# 战斗测试或者游戏结束以外的画面切换中的情况
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
回复 支持 反对

使用道具 举报

4

主题

34

帖子

370

积分

④见习

积分
370
 楼主| 发表于 2004-9-28 15:42:55 | 显示全部楼层
#--------------------------------------------------------------------------
# ● 刷新画面 (角色命令回合 : 基本命令)
#--------------------------------------------------------------------------
def update_phase3_basic_command
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 转向前一个角色的指令输入
phase3_prior_actor
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 角色指令窗口光标位置分之
case @actor_command_window.index
when 0 # 攻击
# 演奏确定 SE
$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 # 特技
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 设置行动
@active_battler.current_action.kind = 1
# 开始选择特技
start_skill_select
when 2 # 防御
# 演奏确定 SE
$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 # 物品
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 设置行动
@active_battler.current_action.kind = 2
# 开始选择物品
start_item_select
when 4 #逃跑
#判断可不可以逃跑
if $game_temp.battle_can_escape == true
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
#开始逃跑
update_phase2_escape
end
end
return
end
end
加了一个条件判断,这样就不会出现boss战逃跑胜利的事情了:)
回复 支持 反对

使用道具 举报

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

发表于 2004-10-16 11:14:19 | 显示全部楼层
彻底小白的补充,当无法逃跑时将逃跑指令变成灰色...还有选择时候演奏无效音效.
Scene_Battle (分割定义 1)
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4,s5])
#----------------加入
if $game_temp.battle_can_escape == false
@actor_command_window.disable_item(4)
end
#----------------
Scene_Battle (分割定义 3)
when 4 #逃跑
#判断可不可以逃跑
if $game_temp.battle_can_escape == true
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
#开始逃跑
update_phase2_escape
else
$game_system.se_play($data_system.buzzer_se)
end

http://www.nvlmaker.net/
回复 支持 反对

使用道具 举报

1

主题

37

帖子

1万

积分

⑧专业

莫尼卡的无

积分
19555
发表于 2004-10-26 19:50:46 | 显示全部楼层
嗯,好帖子.先收了,等有空再试
佳句本天成,妙手偶得之。可惜啊,可惜
回复 支持 反对

使用道具 举报

0

主题

15

帖子

414

积分

④见习

积分
414
发表于 2004-10-28 17:21:42 | 显示全部楼层
麻烦7楼的把改后的代码完整贴出来……
我看到头晕俄……
回复 支持 反对

使用道具 举报

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

发表于 2004-10-29 08:32:57 | 显示全部楼层
逃...怎么大家都是要全脚本的...不觉得照复制更麻烦么...偶总共就加了4行而已...
(分割定义 1)的在31行左右的位置.
(分割定义 3)的在159行左右.
http://www.nvlmaker.net/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-18 18:42 , Processed in 0.013520 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表