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

Project1

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

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

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1428
在线时间
1705 小时
注册时间
2011-8-17
帖子
818
跳转到指定楼层
1
发表于 2011-10-15 11:05:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5星屑
本帖最后由 黑舞嗜 于 2011-10-15 11:40 编辑

一般情况下所有队友都能选择攻击同一个敌人进行攻击或使用特技,如何做到让每个角色攻击不同的敌人呢(就是说一个敌人只能被一个角色选择)?

5VIP求脚本大神帮助

最佳答案

查看完整内容

哥德巴赫猜想要是如此简单就好了……

评分

参与人数 1星屑 +14 收起 理由
赵灵儿 + 14

查看全部评分

roguelike求生RPG研发中....

Lv2.观梦者

(?????)

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

贵宾

2
发表于 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
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
22 小时
注册时间
2011-10-11
帖子
72
3
发表于 2011-10-15 11:25:50 | 只看该作者
本帖最后由 赵灵儿 于 2011-10-15 11:28 编辑

可以说,你这5V是浪费了。此问题的难度相当于在数学上的哥德巴赫猜想。
给100V或许有某个超版会花上两三个月的时间解答。
5V得不到答案的。
放弃吧!送你一点经验来抚平你受伤的心灵。
如果真的要答案,就买一个置顶卡置顶24小时,然后把所有剩下VIP悬赏上吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
113 小时
注册时间
2011-10-6
帖子
45
4
发表于 2011-10-15 12:00:22 | 只看该作者
感觉好像难度没有LS说的这么夸张,虽然改动会蛮多的样子。
回复

使用道具 举报

Lv1.梦旅人

堕落天使

梦石
0
星屑
55
在线时间
73 小时
注册时间
2005-10-22
帖子
337
5
发表于 2011-10-15 13:43:21 | 只看该作者
我回帖为了看哥德巴赫猜想

点评

楼下是哪位- -……这是我该说得话吧……  发表于 2011-10-15 14:02
还真没注意- -06年传得图唔  发表于 2011-10-15 14:01
签名图过期了 - - 等6R附件恢复之后改用附件或者用FTP外链吧  发表于 2011-10-15 13:45
厌世了……
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1428
在线时间
1705 小时
注册时间
2011-8-17
帖子
818
6
 楼主| 发表于 2011-10-15 13:56:42 | 只看该作者
本帖最后由 黑舞嗜 于 2011-10-15 14:14 编辑
各种压力的猫君 发表于 2011-10-15 13:40
哥德巴赫猜想要是如此简单就好了……



黑舞嗜于2011-10-15 14:14补充以下内容:
新问题:怎样固定角色和怪物的攻击顺序

版主君把这个问题告诉我就好了,那个不要了....不好意思
roguelike求生RPG研发中....
回复

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

7
发表于 2011-10-15 14:21:45 | 只看该作者
本帖最后由 禾西 于 2011-10-15 14:30 编辑

我祇是來說明一下這個東西不難= =
CP 制會卽時release,所以這個東西沒有意義……

  1. class Scene_Battle
  2.   alias update_phase3_enemy_select_sdjsh update_phase3_enemy_select
  3.   def update_phase3_enemy_select
  4.    
  5.     if Input.trigger?(Input::C)
  6.       $game_party.actors.each do |battler|
  7.         if battler == @active_battler
  8.           break
  9.         end
  10.         
  11.         if battler.current_action.target_index == @enemy_arrow.index
  12.           return
  13.         end
  14.       end
  15.     end
  16.    
  17.     update_phase3_enemy_select_sdjsh
  18.   end
  19. end
复制代码
固定角色和怪物的攻擊順序。回合制本來就是固定的不是嗎= =b
CP制的話,重定義出手速度就行了。
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-30 05:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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