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

Project1

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

[已经解决] 怎样限制战斗中每个队友只能选择攻击不同的敌人

 关闭 [复制链接]

Lv2.观梦者

(?????)

梦石
0
星屑
700
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

1
发表于 2011-10-15 11:05:56 | 显示全部楼层
本帖最后由 各种压力的猫君 于 2011-10-15 14:32 编辑
  1. #==============================================================================
  2. # ■ Scene_Battle 各种压力的猫君_改_v1.3
  3. #------------------------------------------------------------------------------
  4. #   同一回合中同一敌人只能被一个主角定为目标。
  5. #------------------------------------------------------------------------------
  6. #   v1.3 将全局变量改为局部变量,
  7. #        新增当所有敌人均已被定位目标时,攻击指令无效化。
  8. #        特技指令依然有效,但对敌人的攻击无效。
  9. #        注:全体攻击特技不受此限制,但考虑到用了这个脚本
  10. #          应该不会设置此类特技,因此未作屏蔽。
  11. #   v1.2 修正敌人队伍人数小于主角队伍人数导致的,
  12. #        所有敌人均被选中时不能结束回合(感谢 赵灵儿)
  13. #   v1.1 修正转向前一个角色时丢掉的部分(感谢 禾西)
  14. #   v1.0 初版
  15. #------------------------------------------------------------------------------
  16. #   将本脚本插入到 Scene_Battle 4 脚本以下。
  17. #==============================================================================

  18. class Scene_Battle
  19.   #--------------------------------------------------------------------------
  20.   # ● 主处理(Scene_Battle 1)
  21.   #--------------------------------------------------------------------------
  22.   alias old_main main
  23.   def main
  24.     # 初始化记录已选择敌人的数组
  25.     @selected_enemy = []
  26.     @exist_enemy = []
  27.     # 原主处理
  28.     old_main
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 转向前一个角色的命令输入(Scene_Battle 3)
  32.   #--------------------------------------------------------------------------
  33.   alias old_phase3_prior_actor phase3_prior_actor
  34.   def phase3_prior_actor
  35.     # 删除记录已选择敌人中的最后一个
  36.     @selected_enemy.pop
  37.     # 原转向前一个角色的命令输入
  38.     old_phase3_prior_actor
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 刷新画面 (角色命令回合 : 基本命令)(Scene_Battle 3)
  42.   #--------------------------------------------------------------------------
  43.   def update_phase3_basic_command
  44.     # 清空现在存在的敌人数组
  45.     @exist_enemy.clear
  46.     # 将现在存在的敌人丢入数组
  47.     for enemy in $game_troop.enemies
  48.       if enemy.exist?
  49.         @exist_enemy.push(enemy)
  50.       end
  51.     end
  52.     # 刷新命令窗口
  53.     @actor_command_window.refresh
  54.     # 如果所有敌人均被选中
  55.     if @selected_enemy.size == @exist_enemy.size
  56.       # 将攻击无效化
  57.       @actor_command_window.disable_item(0)
  58.       # 设置不可攻击标志
  59.       @cant_attack = true
  60.     else
  61.       # 清除不可攻击标志
  62.       @cant_attack = false
  63.     end
  64.     # 按下 B 键的情况下
  65.     if Input.trigger?(Input::B)
  66.       # 演奏取消 SE
  67.       $game_system.se_play($data_system.cancel_se)
  68.       # 转向前一个角色的指令输入
  69.       phase3_prior_actor
  70.       return
  71.     end
  72.     # 按下 C 键的情况下
  73.     if Input.trigger?(Input::C)
  74.       # 角色指令窗口光标位置分之
  75.       case @actor_command_window.index
  76.       when 0  # 攻击
  77.         if @cant_attack == true
  78.           # 演奏不可用 SE
  79.           $game_system.se_play($data_system.buzzer_se)
  80.         else
  81.           # 演奏确定 SE
  82.           $game_system.se_play($data_system.decision_se)
  83.           # 设置行动
  84.           @active_battler.current_action.kind = 0
  85.           @active_battler.current_action.basic = 0
  86.           # 开始选择敌人
  87.           start_enemy_select
  88.         end
  89.       when 1  # 特技
  90.         # 演奏确定 SE
  91.         $game_system.se_play($data_system.decision_se)
  92.         # 设置行动
  93.         @active_battler.current_action.kind = 1
  94.         # 开始选择特技
  95.         start_skill_select
  96.       when 2  # 防御
  97.         # 演奏确定 SE
  98.         $game_system.se_play($data_system.decision_se)
  99.         # 设置行动
  100.         @active_battler.current_action.kind = 0
  101.         @active_battler.current_action.basic = 1
  102.         # 转向下一位角色的指令输入
  103.         phase3_next_actor
  104.       when 3  # 物品
  105.         # 演奏确定 SE
  106.         $game_system.se_play($data_system.decision_se)
  107.         # 设置行动
  108.         @active_battler.current_action.kind = 2
  109.         # 开始选择物品
  110.         start_item_select
  111.       end
  112.       return
  113.     end
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 刷新画面画面 (角色命令回合 : 选择敌人)(Scene_Battle 3)
  117.   #--------------------------------------------------------------------------
  118.   def update_phase3_enemy_select
  119.     # 刷新敌人箭头
  120.     @enemy_arrow.update
  121.     # 按下 B 键的情况下
  122.     if Input.trigger?(Input::B)
  123.       # 演奏取消 SE
  124.       $game_system.se_play($data_system.cancel_se)
  125.       # 选择敌人结束
  126.       end_enemy_select
  127.       return
  128.     end
  129.     # 按下 C 键的情况下
  130.     if Input.trigger?(Input::C)
  131.       # 判断敌人是否本回合已被选过
  132.       for i in @selected_enemy
  133.         @enemy_cant_select = true if [@enemy_arrow.index] == i
  134.       end
  135.       # 敌人已被选过的情况下
  136.       if @enemy_cant_select == true      
  137.         # 演奏不可用 SE
  138.         $game_system.se_play($data_system.buzzer_se)
  139.         # 清除不可选标记
  140.         @enemy_cant_select = false
  141.       else        
  142.         # 演奏确定 SE
  143.         $game_system.se_play($data_system.decision_se)
  144.         # 设置行动
  145.         @active_battler.current_action.target_index = @enemy_arrow.index
  146.         # 记录选择的敌人
  147.         @selected_enemy.push [@enemy_arrow.index]
  148.         # 选择敌人结束
  149.         end_enemy_select
  150.         # 显示特技窗口中的情况下
  151.         if @skill_window != nil
  152.           # 结束特技选择
  153.           end_skill_select
  154.         end
  155.         # 显示物品窗口的情况下
  156.         if @item_window != nil
  157.           # 结束物品选择
  158.           end_item_select
  159.         end
  160.         # 转到下一位角色的指令输入
  161.         phase3_next_actor
  162.       end
  163.     end
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 刷新画面 (主回合步骤 1 : 准备行动)(Scene_Battle 4)
  167.   #--------------------------------------------------------------------------
  168.   alias old_update_phase4_step1 update_phase4_step1
  169.   def update_phase4_step1
  170.     # 清空记录已选择敌人的数组
  171.     @selected_enemy.clear
  172.     # 原刷新画面
  173.     old_update_phase4_step1
  174.   end
  175. end
复制代码
哥德巴赫猜想要是如此简单就好了……

点评

出去一会,分先给你了....  发表于 2011-10-15 14:24
没看到刚才的点评·就当我放屁  发表于 2011-10-15 14:10
这个系统如果我方只能单挑而敌人可以群殴的话就没意义了...所有不只是怪物只能被1个角色选到,角色也只能被1个怪物攻击...如果没办法的话就算了吧  发表于 2011-10-15 14:10
再一BUG,CP战斗中,回合的定义是敌人行动一周+我方行动一周。 显然不仅是速度相等时,其他时也完全无效  发表于 2011-10-15 14:09
此脚本是针对默认脚本的。 暂时可以通过剩下的角色选择防御来搞定 - - 我加个判断好了  发表于 2011-10-15 14:08
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-16 20:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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