设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1834|回复: 8
打印 上一主题 下一主题

[已经解决] 求战斗中两级菜单的制作方法!

[复制链接]

Lv2.观梦者

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
帖子
502
跳转到指定楼层
1
发表于 2012-4-16 20:47:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


喔喔
这个样子的


‘‘──春风莉露于2012-4-16 21:04补充以下内容


图片看不见吗?
’’


‘‘──春风莉露于2012-4-16 21:15补充以下内容


再试一下
’’

点评

该图片仅限百度用户交流使用  发表于 2012-4-16 20:57

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2188 小时
注册时间
2011-6-23
帖子
1044
2
发表于 2012-4-17 17:27:01 | 只看该作者
本帖最后由 lsu666666 于 2012-4-17 17:27 编辑

可以參考 我發過的提問 也是二級菜單
http://rpg.blue/thread-189764-1-1.html
回复

使用道具 举报

Lv2.观梦者

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
帖子
502
3
 楼主| 发表于 2012-4-17 18:17:30 | 只看该作者
喔喔

偶要的是战斗中的二级菜单哦。而且是XP的
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
237 小时
注册时间
2011-7-28
帖子
81
4
发表于 2012-4-17 23:12:27 | 只看该作者
可以参考柳柳的“灵儿续传”
看看网络,数不清的信息扑面而来,你知道了什么是冗余;看看每一天的生活,日复一日,许多的无奈,你理解了什么是缺陷;生命里充满了不可预知,明天将发生什么,谁也不知道,这就是动态。 ...
回复

使用道具 举报

Lv2.观梦者

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
帖子
502
5
 楼主| 发表于 2012-4-18 12:37:31 | 只看该作者
rainfly 发表于 2012-4-17 23:12
可以参考柳柳的“灵儿续传”

喔喔
改哪里偶实在不知道
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

6
发表于 2012-4-18 19:53:08 | 只看该作者
二级菜单脚本……
http://www.66rpg.com/articles/2965
回复

使用道具 举报

Lv2.观梦者

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
帖子
502
7
 楼主| 发表于 2012-4-19 21:04:21 | 只看该作者
hys111111 发表于 2012-4-18 19:53
二级菜单脚本……
http://www.66rpg.com/articles/2965

战斗中的{:2_270:}

点评

我看错了,我马上帮你写脚本  发表于 2012-4-19 21:38
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

8
发表于 2012-4-20 15:18:00 | 只看该作者
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 初始化战斗用的各种暂时数据
  12.     $game_temp.in_battle = true
  13.     $game_temp.battle_turn = 0
  14.     $game_temp.battle_event_flags.clear
  15.     $game_temp.battle_abort = false
  16.     $game_temp.battle_main_phase = false
  17.     $game_temp.battleback_name = $game_map.battleback_name
  18.     $game_temp.forcing_battler = nil
  19.     # 初始化战斗用事件解释器
  20.     $game_system.battle_interpreter.setup(nil, 0)
  21.     # 准备队伍
  22.     @troop_id = $game_temp.battle_troop_id
  23.     $game_troop.setup(@troop_id)
  24.     # 生成角色命令窗口
  25.     s1 = $data_system.words.attack
  26.     s2 = $data_system.words.skill
  27.     s3 = $data_system.words.guard
  28.     s4 = $data_system.words.item
  29.     @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
  30.     @actor_command_window.y = 160
  31.     @actor_command_window.back_opacity = 160
  32.     @actor_command_window.active = false
  33.     @actor_command_window.visible = false
  34.    
  35.     s1 = "确定"
  36.     s2 = "取消"
  37.     @true_window = Window_Command.new(160,[s1,s2])
  38.     @true_window.x -= 640
  39.     @true_window.y -= 480
  40.     @true_window.y = 160
  41.     @true_window.back_opacity = 160
  42.     @true_window.active = false
  43.    
  44.     # 生成其它窗口
  45.     @party_command_window = Window_PartyCommand.new
  46.     @help_window = Window_Help.new
  47.     @help_window.back_opacity = 160
  48.     @help_window.visible = false
  49.     @status_window = Window_BattleStatus.new
  50.     @message_window = Window_Message.new
  51.     # 生成活动块
  52.     @spriteset = Spriteset_Battle.new
  53.     # 初始化等待计数
  54.     @wait_count = 0
  55.     # 执行过渡
  56.     if $data_system.battle_transition == ""
  57.       Graphics.transition(20)
  58.     else
  59.       Graphics.transition(40, "Graphics/Transitions/" +
  60.         $data_system.battle_transition)
  61.     end
  62.     # 开始自由战斗回合
  63.     start_phase1
  64.     # 主循环
  65.     loop do
  66.       # 刷新游戏画面
  67.       Graphics.update
  68.       # 刷新输入信息
  69.       Input.update
  70.       # 刷新画面
  71.       update
  72.       # 如果画面切换的话就中断循环
  73.       if $scene != self
  74.         break
  75.       end
  76.     end
  77.     # 刷新地图
  78.     $game_map.refresh
  79.     # 准备过渡
  80.     Graphics.freeze
  81.     # 释放窗口
  82.     @actor_command_window.dispose
  83.     @true_window.dispose
  84.     @party_command_window.dispose
  85.     @help_window.dispose
  86.     @status_window.dispose
  87.     @message_window.dispose
  88.     if @skill_window != nil
  89.       @skill_window.dispose
  90.     end
  91.     if @item_window != nil
  92.       @item_window.dispose
  93.     end
  94.     if @result_window != nil
  95.       @result_window.dispose
  96.     end
  97.     # 释放活动块
  98.     @spriteset.dispose
  99.     # 标题画面切换中的情况
  100.     if $scene.is_a?(Scene_Title)
  101.       # 淡入淡出画面
  102.       Graphics.transition
  103.       Graphics.freeze
  104.     end
  105.     # 战斗测试或者游戏结束以外的画面切换中的情况
  106.     if $BTEST and not $scene.is_a?(Scene_Gameover)
  107.       $scene = nil
  108.     end
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 胜负判定
  112.   #--------------------------------------------------------------------------
  113.   def judge
  114.     # 全灭判定是真、并且同伴人数为 0 的情况下
  115.     if $game_party.all_dead? or $game_party.actors.size == 0
  116.       # 允许失败的情况下
  117.       if $game_temp.battle_can_lose
  118.         # 还原为战斗开始前的 BGM
  119.         $game_system.bgm_play($game_temp.map_bgm)
  120.         # 战斗结束
  121.         battle_end(2)
  122.         # 返回 true
  123.         return true
  124.       end
  125.       # 设置游戏结束标志
  126.       $game_temp.gameover = true
  127.       # 返回 true
  128.       return true
  129.     end
  130.     # 如果存在任意 1 个敌人就返回 false
  131.     for enemy in $game_troop.enemies
  132.       if enemy.exist?
  133.         return false
  134.       end
  135.     end
  136.     # 开始结束战斗回合 (胜利)
  137.     start_phase5
  138.     # 返回 true
  139.     return true
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 战斗结束
  143.   #     result : 結果 (0:胜利 1:失败 2:逃跑)
  144.   #--------------------------------------------------------------------------
  145.   def battle_end(result)
  146.     # 清除战斗中标志
  147.     $game_temp.in_battle = false
  148.     # 清除全体同伴的行动
  149.     $game_party.clear_actions
  150.     # 解除战斗用状态
  151.     for actor in $game_party.actors
  152.       actor.remove_states_battle
  153.     end
  154.     # 清除敌人
  155.     $game_troop.enemies.clear
  156.     # 调用战斗返回调用
  157.     if $game_temp.battle_proc != nil
  158.       $game_temp.battle_proc.call(result)
  159.       $game_temp.battle_proc = nil
  160.     end
  161.     # 切换到地图画面
  162.     $scene = Scene_Map.new
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ● 设置战斗事件
  166.   #--------------------------------------------------------------------------
  167.   def setup_battle_event
  168.     # 正在执行战斗事件的情况下
  169.     if $game_system.battle_interpreter.running?
  170.       return
  171.     end
  172.     # 搜索全部页的战斗事件
  173.     for index in 0...$data_troops[@troop_id].pages.size
  174.       # 获取事件页
  175.       page = $data_troops[@troop_id].pages[index]
  176.       # 事件条件可以参考 c
  177.       c = page.condition
  178.       # 没有指定任何条件的情况下转到下一页
  179.       unless c.turn_valid or c.enemy_valid or
  180.              c.actor_valid or c.switch_valid
  181.         next
  182.       end
  183.       # 执行完毕的情况下转到下一页
  184.       if $game_temp.battle_event_flags[index]
  185.         next
  186.       end
  187.       # 确认回合条件
  188.       if c.turn_valid
  189.         n = $game_temp.battle_turn
  190.         a = c.turn_a
  191.         b = c.turn_b
  192.         if (b == 0 and n != a) or
  193.            (b > 0 and (n < 1 or n < a or n % b != a % b))
  194.           next
  195.         end
  196.       end
  197.       # 确认敌人条件
  198.       if c.enemy_valid
  199.         enemy = $game_troop.enemies[c.enemy_index]
  200.         if enemy == nil or enemy.hp * 100.0 / enemy.maxhp > c.enemy_hp
  201.           next
  202.         end
  203.       end
  204.       # 确认角色条件
  205.       if c.actor_valid
  206.         actor = $game_actors[c.actor_id]
  207.         if actor == nil or actor.hp * 100.0 / actor.maxhp > c.actor_hp
  208.           next
  209.         end
  210.       end
  211.       # 确认开关条件
  212.       if c.switch_valid
  213.         if $game_switches[c.switch_id] == false
  214.           next
  215.         end
  216.       end
  217.       # 设置事件
  218.       $game_system.battle_interpreter.setup(page.list, 0)
  219.       # 本页的范围是 [战斗] 或 [回合] 的情况下
  220.       if page.span <= 1
  221.         # 设置执行结束标志
  222.         $game_temp.battle_event_flags[index] = true
  223.       end
  224.       return
  225.     end
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ● 刷新画面
  229.   #--------------------------------------------------------------------------
  230.   def update
  231.     # 执行战斗事件中的情况下
  232.     if $game_system.battle_interpreter.running?
  233.       # 刷新解释器
  234.       $game_system.battle_interpreter.update
  235.       # 强制行动的战斗者不存在的情况下
  236.       if $game_temp.forcing_battler == nil
  237.         # 执行战斗事件结束的情况下
  238.         unless $game_system.battle_interpreter.running?
  239.           # 继续战斗的情况下、再执行战斗事件的设置
  240.           unless judge
  241.             setup_battle_event
  242.           end
  243.         end
  244.         # 如果不是结束战斗回合的情况下
  245.         if @phase != 5
  246.           # 刷新状态窗口
  247.           @status_window.refresh
  248.         end
  249.       end
  250.     end
  251.     # 系统 (计时器)、刷新画面
  252.     $game_system.update
  253.     $game_screen.update
  254.     # 计时器为 0 的情况下
  255.     if $game_system.timer_working and $game_system.timer == 0
  256.       # 中断战斗
  257.       $game_temp.battle_abort = true
  258.     end
  259.     # 刷新窗口
  260.     @help_window.update
  261.     @party_command_window.update
  262.     @true_window.update
  263.     @actor_command_window.update
  264.     @status_window.update
  265.     @message_window.update
  266.     # 刷新活动块
  267.     @spriteset.update
  268.     # 处理过渡中的情况下
  269.     if $game_temp.transition_processing
  270.       # 清除处理过渡中标志
  271.       $game_temp.transition_processing = false
  272.       # 执行过渡
  273.       if $game_temp.transition_name == ""
  274.         Graphics.transition(20)
  275.       else
  276.         Graphics.transition(40, "Graphics/Transitions/" +
  277.           $game_temp.transition_name)
  278.       end
  279.     end
  280.     # 显示信息窗口中的情况下
  281.     if $game_temp.message_window_showing
  282.       return
  283.     end
  284.     # 显示效果中的情况下
  285.     if @spriteset.effect?
  286.       return
  287.     end
  288.     # 游戏结束的情况下
  289.     if $game_temp.gameover
  290.       # 切换到游戏结束画面
  291.       $scene = Scene_Gameover.new
  292.       return
  293.     end
  294.     # 返回标题画面的情况下
  295.     if $game_temp.to_title
  296.       # 切换到标题画面
  297.       $scene = Scene_Title.new
  298.       return
  299.     end
  300.     # 中断战斗的情况下
  301.     if $game_temp.battle_abort
  302.       # 还原为战斗前的 BGM
  303.       $game_system.bgm_play($game_temp.map_bgm)
  304.       # 战斗结束
  305.       battle_end(1)
  306.       return
  307.     end
  308.     # 等待中的情况下
  309.     if @wait_count > 0
  310.       # 减少等待计数
  311.       @wait_count -= 1
  312.       return
  313.     end
  314.     # 强制行动的角色存在、
  315.     # 并且战斗事件正在执行的情况下
  316.     if $game_temp.forcing_battler == nil and
  317.        $game_system.battle_interpreter.running?
  318.       return
  319.     end
  320.     # 回合分支
  321.     case @phase
  322.     when 1  # 自由战斗回合
  323.       update_phase1
  324.     when 2  # 同伴命令回合
  325.       update_phase2
  326.     when 3  # 角色命令回合
  327.       update_phase3
  328.     when 4  # 主回合
  329.       update_phase4
  330.     when 5  # 战斗结束回合
  331.       update_phase5
  332.     end
  333.   end
  334. end
复制代码
好吧,插在原先的Scene_Battle4下面和Main上面的任意位置。
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 3)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始角色命令回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase3
  11.     # 转移到回合 3
  12.     @phase = 3
  13.     # 设置觉得为非选择状态
  14.     @actor_index = -1
  15.     @active_battler = nil
  16.     # 输入下一个角色的命令
  17.     phase3_next_actor
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 转到输入下一个角色的命令
  21.   #--------------------------------------------------------------------------
  22.   def phase3_next_actor
  23.     # 循环
  24.     begin
  25.       # 角色的明灭效果 OFF
  26.       if @active_battler != nil
  27.         @active_battler.blink = false
  28.       end
  29.       # 最后的角色的情况
  30.       if @actor_index == $game_party.actors.size-1
  31.         # 开始主回合
  32.         start_phase4
  33.         return
  34.       end
  35.       # 推进角色索引
  36.       @actor_index += 1
  37.       @active_battler = $game_party.actors[@actor_index]
  38.       @active_battler.blink = true
  39.     # 如果角色是在无法接受指令的状态就再试
  40.     end until @active_battler.inputable?
  41.     # 设置角色的命令窗口
  42.     phase3_setup_command_window
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 转向前一个角色的命令输入
  46.   #--------------------------------------------------------------------------
  47.   def phase3_prior_actor
  48.     # 循环
  49.     begin
  50.       # 角色的明灭效果 OFF
  51.       if @active_battler != nil
  52.         @active_battler.blink = false
  53.       end
  54.       # 最初的角色的情况下
  55.       if @actor_index == 0
  56.         # 开始同伴指令回合
  57.         start_phase2
  58.         return
  59.       end
  60.       # 返回角色索引
  61.       @actor_index -= 1
  62.       @active_battler = $game_party.actors[@actor_index]
  63.       @active_battler.blink = true
  64.     # 如果角色是在无法接受指令的状态就再试
  65.     end until @active_battler.inputable?
  66.     # 设置角色的命令窗口
  67.     phase3_setup_command_window
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 设置角色指令窗口
  71.   #--------------------------------------------------------------------------
  72.   def phase3_setup_command_window
  73.     # 同伴指令窗口无效化
  74.     @party_command_window.active = false
  75.     @party_command_window.visible = false
  76.     # 角色指令窗口无效化
  77.     @actor_command_window.active = true
  78.     @actor_command_window.visible = true
  79.     # 设置角色指令窗口的位置
  80.     @actor_command_window.x = @actor_index * 160
  81.     # 设置索引为 0
  82.     @actor_command_window.index = 0
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 刷新画面 (角色命令回合)
  86.   #--------------------------------------------------------------------------
  87.   def update_phase3
  88.     # 敌人光标有效的情况下
  89.     if @enemy_arrow != nil
  90.       update_phase3_enemy_select
  91.     # 角色光标有效的情况下
  92.     elsif @actor_arrow != nil
  93.       update_phase3_actor_select
  94.     # 特技窗口有效的情况下
  95.     elsif @skill_window != nil
  96.       update_phase3_skill_select
  97.     # 物品窗口有效的情况下
  98.     elsif @item_window != nil
  99.       update_phase3_item_select
  100.     # 角色指令窗口有效的情况下
  101.     elsif @actor_command_window.active
  102.       update_phase3_basic_command
  103.     end
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 刷新画面 (角色命令回合 : 基本命令)
  107.   #--------------------------------------------------------------------------
  108.   def update_phase3_basic_command
  109.     # 按下 B 键的情况下
  110.     if Input.trigger?(Input::B)
  111.       # 演奏取消 SE
  112.       $game_system.se_play($data_system.cancel_se)
  113.       if @true_window.active
  114.         @true_window.active = true
  115.         @actor_command_window.active = false
  116.       else
  117.         # 转向前一个角色的指令输入
  118.         phase3_prior_actor
  119.       end
  120.       return
  121.     end
  122.     # 按下 C 键的情况下
  123.     if Input.trigger?(Input::C)
  124.       if @true_window.active
  125.         if @true_window.index == 0
  126.           # 角色指令窗口光标位置分之
  127.           @actor_command_window.active = true
  128.           @true_window.active = false
  129.           case @actor_command_window.index
  130.           when 0  # 攻击
  131.             # 演奏确定 SE
  132.             $game_system.se_play($data_system.decision_se)
  133.             # 设置行动
  134.             @active_battler.current_action.kind = 0
  135.             @active_battler.current_action.basic = 0
  136.             # 开始选择敌人
  137.             start_enemy_select
  138.           when 1  # 特技
  139.             # 演奏确定 SE
  140.             $game_system.se_play($data_system.decision_se)
  141.             # 设置行动
  142.             @active_battler.current_action.kind = 1
  143.             # 开始选择特技
  144.             start_skill_select
  145.           when 2  # 防御
  146.             # 演奏确定 SE
  147.             $game_system.se_play($data_system.decision_se)
  148.             # 设置行动
  149.             @active_battler.current_action.kind = 0
  150.             @active_battler.current_action.basic = 1
  151.             # 转向下一位角色的指令输入
  152.             phase3_next_actor
  153.           when 3  # 物品
  154.             # 演奏确定 SE
  155.             $game_system.se_play($data_system.decision_se)
  156.             # 设置行动
  157.             @active_battler.current_action.kind = 2
  158.             # 开始选择物品
  159.             start_item_select
  160.           end
  161.         else
  162.           # 演奏取消 SE
  163.           $game_system.se_play($data_system.cancel_se)
  164.           @actor_command_window.active = true
  165.           @true_window.active = false
  166.         end
  167.       else
  168.         # 演奏确定 SE
  169.         @true_window.index = 0
  170.         $game_system.se_play($data_system.decision_se)
  171.         @true_window.active = true
  172.         @actor_command_window.active = false
  173.       end
  174.     end
  175.     @true_window.x = @actor_command_window.x + 160
  176.     @true_window.y = @actor_command_window.y + (@actor_command_window.index*32) - 32
  177.     return
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● 刷新画面 (角色命令回合 : 选择特技)
  181.   #--------------------------------------------------------------------------
  182.   def update_phase3_skill_select
  183.     # 设置特技窗口为可视状态
  184.     @skill_window.visible = true
  185.     # 刷新特技窗口
  186.     @skill_window.update
  187.     # 按下 B 键的情况下
  188.     if Input.trigger?(Input::B)
  189.       # 演奏取消 SE
  190.       $game_system.se_play($data_system.cancel_se)
  191.       # 结束特技选择
  192.       end_skill_select
  193.       return
  194.     end
  195.     # 按下 C 键的情况下
  196.     if Input.trigger?(Input::C)
  197.       # 获取特技选择窗口现在选择的特技的数据
  198.       @skill = @skill_window.skill
  199.       # 无法使用的情况下
  200.       if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
  201.         # 演奏冻结 SE
  202.         $game_system.se_play($data_system.buzzer_se)
  203.         return
  204.       end
  205.       # 演奏确定 SE
  206.       $game_system.se_play($data_system.decision_se)
  207.       # 设置行动
  208.       @active_battler.current_action.skill_id = @skill.id
  209.       # 设置特技窗口为不可见状态
  210.       @skill_window.visible = false
  211.       # 效果范围是敌单体的情况下
  212.       if @skill.scope == 1
  213.         # 开始选择敌人
  214.         start_enemy_select
  215.       # 效果范围是我方单体的情况下
  216.       elsif @skill.scope == 3 or @skill.scope == 5
  217.         # 开始选择角色
  218.         start_actor_select
  219.       # 效果范围不是单体的情况下
  220.       else
  221.         # 选择特技结束
  222.         end_skill_select
  223.         # 转到下一位角色的指令输入
  224.         phase3_next_actor
  225.       end
  226.       return
  227.     end
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 刷新画面 (角色命令回合 : 选择物品)
  231.   #--------------------------------------------------------------------------
  232.   def update_phase3_item_select
  233.     # 设置物品窗口为可视状态
  234.     @item_window.visible = true
  235.     # 刷新物品窗口
  236.     @item_window.update
  237.     # 按下 B 键的情况下
  238.     if Input.trigger?(Input::B)
  239.       # 演奏取消 SE
  240.       $game_system.se_play($data_system.cancel_se)
  241.       # 选择物品结束
  242.       end_item_select
  243.       return
  244.     end
  245.     # 按下 C 键的情况下
  246.     if Input.trigger?(Input::C)
  247.       # 获取物品窗口现在选择的物品资料
  248.       @item = @item_window.item
  249.       # 无法使用的情况下
  250.       unless $game_party.item_can_use?(@item.id)
  251.         # 演奏冻结 SE
  252.         $game_system.se_play($data_system.buzzer_se)
  253.         return
  254.       end
  255.       # 演奏确定 SE
  256.       $game_system.se_play($data_system.decision_se)
  257.       # 设置行动
  258.       @active_battler.current_action.item_id = @item.id
  259.       # 设置物品窗口为不可见状态
  260.       @item_window.visible = false
  261.       # 效果范围是敌单体的情况下
  262.       if @item.scope == 1
  263.         # 开始选择敌人
  264.         start_enemy_select
  265.       # 效果范围是我方单体的情况下
  266.       elsif @item.scope == 3 or @item.scope == 5
  267.         # 开始选择角色
  268.         start_actor_select
  269.       # 效果范围不是单体的情况下
  270.       else
  271.         # 物品选择结束
  272.         end_item_select
  273.         # 转到下一位角色的指令输入
  274.         phase3_next_actor
  275.       end
  276.       return
  277.     end
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● 刷新画面画面 (角色命令回合 : 选择敌人)
  281.   #--------------------------------------------------------------------------
  282.   def update_phase3_enemy_select
  283.     # 刷新敌人箭头
  284.     @enemy_arrow.update
  285.     # 按下 B 键的情况下
  286.     if Input.trigger?(Input::B)
  287.       # 演奏取消 SE
  288.       $game_system.se_play($data_system.cancel_se)
  289.       # 选择敌人结束
  290.       end_enemy_select
  291.       return
  292.     end
  293.     # 按下 C 键的情况下
  294.     if Input.trigger?(Input::C)
  295.       # 演奏确定 SE
  296.       $game_system.se_play($data_system.decision_se)
  297.       # 设置行动
  298.       @active_battler.current_action.target_index = @enemy_arrow.index
  299.       # 选择敌人结束
  300.       end_enemy_select
  301.       # 显示特技窗口中的情况下
  302.       if @skill_window != nil
  303.         # 结束特技选择
  304.         end_skill_select
  305.       end
  306.       # 显示物品窗口的情况下
  307.       if @item_window != nil
  308.         # 结束物品选择
  309.         end_item_select
  310.       end
  311.       # 转到下一位角色的指令输入
  312.       phase3_next_actor
  313.     end
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 画面更新 (角色指令回合 : 选择角色)
  317.   #--------------------------------------------------------------------------
  318.   def update_phase3_actor_select
  319.     # 刷新角色箭头
  320.     @actor_arrow.update
  321.     # 按下 B 键的情况下
  322.     if Input.trigger?(Input::B)
  323.       # 演奏取消 SE
  324.       $game_system.se_play($data_system.cancel_se)
  325.       # 选择角色结束
  326.       end_actor_select
  327.       return
  328.     end
  329.     # 按下 C 键的情况下
  330.     if Input.trigger?(Input::C)
  331.       # 演奏确定 SE
  332.       $game_system.se_play($data_system.decision_se)
  333.       # 设置行动
  334.       @active_battler.current_action.target_index = @actor_arrow.index
  335.       # 选择角色结束
  336.       end_actor_select
  337.       # 显示特技窗口中的情况下
  338.       if @skill_window != nil
  339.         # 结束特技选择
  340.         end_skill_select
  341.       end
  342.       # 显示物品窗口的情况下
  343.       if @item_window != nil
  344.         # 结束物品选择
  345.         end_item_select
  346.       end
  347.       # 转到下一位角色的指令输入
  348.       phase3_next_actor
  349.     end
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 开始选择敌人
  353.   #--------------------------------------------------------------------------
  354.   def start_enemy_select
  355.     # 生成敌人箭头
  356.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
  357.     # 关联帮助窗口
  358.     @enemy_arrow.help_window = @help_window
  359.     # 无效化角色指令窗口
  360.     @actor_command_window.active = false
  361.     @actor_command_window.visible = false
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ● 结束选择敌人
  365.   #--------------------------------------------------------------------------
  366.   def end_enemy_select
  367.     # 释放敌人箭头
  368.     @enemy_arrow.dispose
  369.     @enemy_arrow = nil
  370.     # 指令为 [战斗] 的情况下
  371.     if @actor_command_window.index == 0
  372.       # 有效化角色指令窗口
  373.       @actor_command_window.active = true
  374.       @actor_command_window.visible = true
  375.       # 隐藏帮助窗口
  376.       @help_window.visible = false
  377.     end
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● 开始选择角色
  381.   #--------------------------------------------------------------------------
  382.   def start_actor_select
  383.     # 生成角色箭头
  384.     @actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
  385.     @actor_arrow.index = @actor_index
  386.     # 关联帮助窗口
  387.     @actor_arrow.help_window = @help_window
  388.     # 无效化角色指令窗口
  389.     @actor_command_window.active = false
  390.     @actor_command_window.visible = false
  391.   end
  392.   #--------------------------------------------------------------------------
  393.   # ● 结束选择角色
  394.   #--------------------------------------------------------------------------
  395.   def end_actor_select
  396.     # 释放角色箭头
  397.     @actor_arrow.dispose
  398.     @actor_arrow = nil
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 开始选择特技
  402.   #--------------------------------------------------------------------------
  403.   def start_skill_select
  404.     # 生成特技窗口
  405.     @skill_window = Window_Skill.new(@active_battler)
  406.     # 关联帮助窗口
  407.     @skill_window.help_window = @help_window
  408.     # 无效化角色指令窗口
  409.     @actor_command_window.active = false
  410.     @actor_command_window.visible = false
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ● 选择特技结束
  414.   #--------------------------------------------------------------------------
  415.   def end_skill_select
  416.     # 释放特技窗口
  417.     @skill_window.dispose
  418.     @skill_window = nil
  419.     # 隐藏帮助窗口
  420.     @help_window.visible = false
  421.     # 有效化角色指令窗口
  422.     @actor_command_window.active = true
  423.     @actor_command_window.visible = true
  424.   end
  425.   #--------------------------------------------------------------------------
  426.   # ● 开始选择物品
  427.   #--------------------------------------------------------------------------
  428.   def start_item_select
  429.     # 生成物品窗口
  430.     @item_window = Window_Item.new
  431.     # 关联帮助窗口
  432.     @item_window.help_window = @help_window
  433.     # 无效化角色指令窗口
  434.     @actor_command_window.active = false
  435.     @actor_command_window.visible = false
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● 结束选择物品
  439.   #--------------------------------------------------------------------------
  440.   def end_item_select
  441.     # 释放物品窗口
  442.     @item_window.dispose
  443.     @item_window = nil
  444.     # 隐藏帮助窗口
  445.     @help_window.visible = false
  446.     # 有效化角色指令窗口
  447.     @actor_command_window.active = true
  448.     @actor_command_window.visible = true
  449.   end
  450. end
复制代码

点评

Esc键没有设置  发表于 2013-6-9 08:29
回复

使用道具 举报

Lv2.观梦者

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
帖子
502
9
 楼主| 发表于 2012-4-20 20:43:53 | 只看该作者
hys111111 发表于 2012-4-20 15:18
好吧,插在原先的Scene_Battle4下面和Main上面的任意位置。

喔喔
谢谢前辈。。。虽然不是偶需要的效果,不过偶会继续研究的
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-27 02:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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