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

Project1

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

[已经解决] 关于多体攻击脚本问题!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2011-9-19
帖子
42
跳转到指定楼层
1
发表于 2013-4-1 00:54:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 hcm 于 2013-4-28 20:45 编辑

请问如何能够实现多个目标攻击,并且目标是随机的啊?我用的多体攻击脚本,虽然是可以增加多个目标,但是我发现目标是固定的,并非是随机的,比如说我的技能是秒5,8个敌人,我点6号敌人用的法术,而被秒的一定是6号敌人加上,1,2,3,4号敌人,如果我选8号敌人秒,那么被秒的就是8号加1,2,3,4。我希望是的随机选取敌人而并非是这样固定的。以下是我用的多体攻击脚本,哪位大神可以帮忙修改以下呀。
  1. #==============================================================================
  2. #[仿大话梦幻]多体攻击(俗称秒2~秒7,非全体攻击)Ver0.03b
  3. #
  4. #by SixRice = 66fan
  5. #==============================================================================
  6. #适用战斗系统:默认回合制,CP半即时;RTAB不适用
  7. #
  8. #很简单的脚本,不推荐作为外挂脚本来用。希望大家能看懂之后添加近自己的游戏中去。
  9. #
  10. #重定义部分:set_target_battlers,其余为新定义。
  11. #
  12. #上面三个XRXS的脚本不要删除,请尊重别人的版权。
  13. #
  14. #Ver0.03根据玩家的建议,追加范围变成按照对象的速度排序。
  15. #
  16. #Ver0.02新增随机范围
  17. #       修正0.01中,如果什么范围都不选,会变成全体攻击的BUG
  18. #
  19. #==============================================================================
  20. # 使用说明:
  21. #1,单体目标的情况下,以下秒几的效果为追加范围
  22. #2,全体目标的情况下,以下秒几的效果为固定范围
  23. #3,如果附加了“随机”属性,
  24. #   单体攻击追加范围变成 0 到 X,
  25. #   全体攻击固定范围变成 1 到 X,
  26. #   举例:单体攻击,追加范围“秒7”,“随机”,实际范围是 1 +(0 ~ 7)
  27. #         全体攻击,固定范围“秒8”,“随机”,实际范围是 1 ~ 8
  28. #
  29. # 如有其他特殊要求,请看懂脚本自行设置。
  30. #==============================================================================
  31. module SXR
  32. #==============================================================================
  33. #属性名(同时存在的话,取最大值;同时包括多体范围和随机范围的话,取随机范围。)
  34. #==============================================================================
  35. ADD_TARGET2 = "秒2"#1体目标,追加1体序列
  36. ADD_TARGET3 = "秒3"#1体目标,追加2体序列
  37. ADD_TARGET4 = "秒4"#1体目标,追加3体序列
  38. ADD_TARGET5 = "秒5"#1体目标,追加4体序列
  39. ADD_TARGET6 = "秒6"#1体目标,追加5体序列
  40. ADD_TARGET7 = "秒7"#1体目标,追加6体序列
  41. ADD_TARGET8 = "秒8"#1体目标,追加7体序列
  42. ARA_TARGET = "随机"#单选无效,配合上面才能产生效果,将追加改为随机追加
  43. end
  44. #==============================================================================
  45. # ■ Game_BattleAction
  46. #==============================================================================
  47. class Game_BattleAction
  48. attr_accessor :add_target
  49. attr_accessor :ara_target
  50. #------------------------------------------------------------------------------
  51. # ○ clear
  52. #------------------------------------------------------------------------------
  53.   alias sxr_clear clear
  54.   def clear
  55.     sxr_clear
  56.     clear_sxr_add_target
  57.   end
  58. #------------------------------------------------------------------------------
  59. # ○ 特殊效果clear
  60. #------------------------------------------------------------------------------
  61. def clear_sxr_add_target
  62.     self.add_target = 0
  63.     self.ara_target = 0
  64.   end  
  65. #------------------------------------------------------------------------------
  66. # ○ 无效化特殊效果
  67. #------------------------------------------------------------------------------
  68.   def nillize_sxr_add_target
  69.     self.add_target = nil
  70.     self.ara_target = nil
  71.   end
  72. end   
  73. #==============================================================================
  74. # ■ Game_Battler
  75. #==============================================================================
  76. class Game_Battler
  77. #------------------------------------------------------------------------------
  78. # ○追加目标范围设定
  79. #------------------------------------------------------------------------------
  80. def set_sxr_add_target(set)
  81. # 追加/固定目标范围强制值
  82. self.current_action.add_target =
  83. XRXS.element_include?(set, SXR::ADD_TARGET8) ? 8 :
  84. XRXS.element_include?(set, SXR::ADD_TARGET7) ? 7 :
  85. XRXS.element_include?(set, SXR::ADD_TARGET6) ? 6 :
  86. XRXS.element_include?(set, SXR::ADD_TARGET5) ? 5 :
  87. XRXS.element_include?(set, SXR::ADD_TARGET4) ? 4 :
  88. XRXS.element_include?(set, SXR::ADD_TARGET3) ? 3 :
  89. XRXS.element_include?(set, SXR::ADD_TARGET2) ? 2 :
  90. 0
  91. # 是否随机目标范围
  92. self.current_action.ara_target =
  93. XRXS.element_include?(set, SXR::ARA_TARGET) ? 1 :
  94. 0
  95. end
  96. end
  97. #==============================================================================
  98. # ■ Scene_Battle
  99. #==============================================================================
  100. class Scene_Battle
  101. #--------------------------------------------------------------------------
  102. # ● 主处理
  103. #--------------------------------------------------------------------------
  104.   alias sxr_main main
  105.   def main
  106.     # recall
  107.     sxr_main
  108.     # 清空角色的特殊效果设置
  109.     for actor in $game_party.actors
  110.       actor.current_action.clear_sxr_add_target
  111.       actor.current_action.nillize_sxr_add_target
  112.     end
  113.   end  
  114.   #--------------------------------------------------------------------------
  115.   # ● 设置物品或特技对像方的战斗者
  116.   #     scope : 特技或者是物品的范围
  117.   #--------------------------------------------------------------------------
  118.   def set_target_battlers(scope)
  119.     # 行动方的战斗者是敌人的情况下
  120.     if @active_battler.is_a?(Game_Enemy)
  121.       # 效果范围分支
  122.       case scope
  123.       when 1  # 敌单体
  124.       
  125.         for actor in $game_party.actors
  126.           if actor.exist?
  127.             @target_battlers.push(actor)
  128.           end
  129.         end
  130. index = @active_battler.current_action.target_index
  131. @target_battlers.push($game_party.smooth_target_actor(index))        
  132. @target_battlers.delete($game_party.smooth_target_actor(index))
  133. @target_battlers.sort! {|a,b| b.agi - a.agi }#(0.03)
  134. @target_battlers = @target_battlers[0, 0] if @active_battler.current_action.add_target == 0
  135. @target_battlers = @target_battlers[0, 1] if @active_battler.current_action.add_target == 2
  136. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 3
  137. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 4
  138. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 5
  139. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 6
  140. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 7
  141. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 8
  142. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2
  143. @target_battlers.push($game_party.smooth_target_actor(index))
  144.         
  145.       when 2  # 敌全体
  146.         for actor in $game_party.actors
  147.           if actor.exist?
  148.             @target_battlers.push(actor)
  149. @target_battlers.sort! {|a,b| b.agi - a.agi }#(0.03)            
  150. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 2
  151. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 3
  152. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 4
  153. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 5
  154. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 6
  155. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 7
  156. @target_battlers = @target_battlers[0, 8] if @active_battler.current_action.add_target == 8
  157. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)+1] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2            
  158.           end
  159.         end
  160.       when 3  # 我方单体
  161.       
  162.           for enemy in $game_troop.enemies
  163.           if enemy.exist?
  164.             @target_battlers.push(enemy)
  165.           end
  166.         end
  167. index = @active_battler.current_action.target_index
  168. @target_battlers.push($game_troop.smooth_target_enemy(index))        
  169. @target_battlers.delete($game_troop.smooth_target_enemy(index))
  170. @target_battlers.sort! {|a,b| b.agi - a.agi }#(0.03)
  171. @target_battlers = @target_battlers[0, 0] if @active_battler.current_action.add_target == 0
  172. @target_battlers = @target_battlers[0, 1] if @active_battler.current_action.add_target == 2
  173. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 3
  174. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 4
  175. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 5
  176. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 6
  177. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 7
  178. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 8
  179. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2
  180. @target_battlers.push($game_troop.smooth_target_enemy(index))

  181.       when 4  # 我方全体
  182.         for enemy in $game_troop.enemies
  183.           if enemy.exist?
  184.             @target_battlers.push(enemy)
  185. @target_battlers.sort! {|a,b| b.agi - a.agi }#(0.03)            
  186. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 2
  187. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 3
  188. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 4
  189. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 5
  190. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 6
  191. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 7
  192. @target_battlers = @target_battlers[0, 8] if @active_battler.current_action.add_target == 8
  193. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)+1] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2            
  194.           end
  195.         end
  196.       when 5  # 我方单体 (HP 0)
  197.         index = @active_battler.current_action.target_index
  198.         enemy = $game_troop.enemies[index]
  199.         if enemy != nil and enemy.hp0?
  200.           @target_battlers.push(enemy)
  201.         end
  202.       when 6  # 我方全体 (HP 0)
  203.         for enemy in $game_troop.enemies
  204.           if enemy != nil and enemy.hp0?
  205.             @target_battlers.push(enemy)
  206. @target_battlers.sort! {|a,b| b.agi - a.agi }  #(0.03)         
  207. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 2
  208. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 3
  209. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 4
  210. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 5
  211. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 6
  212. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 7
  213. @target_battlers = @target_battlers[0, 8] if @active_battler.current_action.add_target == 8
  214. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)+1] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2            
  215.           end
  216.         end
  217.       when 7  # 使用者
  218.         @target_battlers.push(@active_battler)
  219.       end
  220.     end
  221.     # 行动方的战斗者是角色的情况下
  222.     if @active_battler.is_a?(Game_Actor)      
  223. @active_battler.set_sxr_add_target(@active_battler.skill_element_set(@skill))
  224.       # 效果范围分支
  225.       case scope
  226.       when 1  # 敌单体
  227.         
  228.           for enemy in $game_troop.enemies
  229.           if enemy.exist?
  230.             @target_battlers.push(enemy)
  231.           end
  232.         end
  233. index = @active_battler.current_action.target_index
  234. @target_battlers.push($game_troop.smooth_target_enemy(index))        
  235. @target_battlers.delete($game_troop.smooth_target_enemy(index))
  236. @target_battlers.sort! {|a,b| b.agi - a.agi }#(0.03)
  237. @target_battlers = @target_battlers[0, 0] if @active_battler.current_action.add_target == 0
  238. @target_battlers = @target_battlers[0, 1] if @active_battler.current_action.add_target == 2
  239. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 3
  240. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 4
  241. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 5
  242. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 6
  243. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 7
  244. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 8
  245. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2
  246. @target_battlers.push($game_troop.smooth_target_enemy(index))

  247.       when 2  # 敌全体
  248.         for enemy in $game_troop.enemies
  249.           if enemy.exist?
  250.             @target_battlers.push(enemy)
  251. @target_battlers.sort! {|a,b| b.agi - a.agi } #(0.03)           
  252. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 2
  253. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 3
  254. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 4
  255. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 5
  256. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 6
  257. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 7
  258. @target_battlers = @target_battlers[0, 8] if @active_battler.current_action.add_target == 8
  259. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)+1] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2            
  260.           end
  261.         end
  262.       when 3  # 我方单体
  263.       
  264.         for actor in $game_party.actors
  265.           if actor.exist?
  266.             @target_battlers.push(actor)
  267.           end
  268.         end
  269. index = @active_battler.current_action.target_index
  270. @target_battlers.push($game_party.smooth_target_actor(index))        
  271. @target_battlers.delete($game_party.smooth_target_actor(index))
  272. @target_battlers.sort! {|a,b| b.agi - a.agi }#(0.03)
  273. @target_battlers = @target_battlers[0, 0] if @active_battler.current_action.add_target == 0
  274. @target_battlers = @target_battlers[0, 1] if @active_battler.current_action.add_target == 2
  275. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 3
  276. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 4
  277. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 5
  278. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 6
  279. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 7
  280. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 8
  281. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2
  282. @target_battlers.push($game_party.smooth_target_actor(index))

  283.       when 4  # 我方全体
  284.         for actor in $game_party.actors
  285.           if actor.exist?
  286.             @target_battlers.push(actor)
  287. @target_battlers.sort! {|a,b| b.agi - a.agi }#(0.03)            
  288. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 2
  289. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 3
  290. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 4
  291. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 5
  292. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 6
  293. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 7
  294. @target_battlers = @target_battlers[0, 8] if @active_battler.current_action.add_target == 8
  295. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)+1] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2            
  296.           end
  297.         end
  298.       when 5  # 我方单体 (HP 0)
  299.         index = @active_battler.current_action.target_index
  300.         actor = $game_party.actors[index]
  301.         if actor != nil and actor.hp0?
  302.           @target_battlers.push(actor)
  303.         end
  304.       when 6  # 我方全体 (HP 0)
  305.         for actor in $game_party.actors
  306.           if actor != nil and actor.hp0?
  307.             @target_battlers.push(actor)
  308. @target_battlers.sort! {|a,b| b.agi - a.agi }  #(0.03)         
  309. @target_battlers = @target_battlers[0, 2] if @active_battler.current_action.add_target == 2
  310. @target_battlers = @target_battlers[0, 3] if @active_battler.current_action.add_target == 3
  311. @target_battlers = @target_battlers[0, 4] if @active_battler.current_action.add_target == 4
  312. @target_battlers = @target_battlers[0, 5] if @active_battler.current_action.add_target == 5
  313. @target_battlers = @target_battlers[0, 6] if @active_battler.current_action.add_target == 6
  314. @target_battlers = @target_battlers[0, 7] if @active_battler.current_action.add_target == 7
  315. @target_battlers = @target_battlers[0, 8] if @active_battler.current_action.add_target == 8
  316. @target_battlers = @target_battlers[0, rand(@active_battler.current_action.add_target)+1] if @active_battler.current_action.ara_target == 1 and @active_battler.current_action.add_target >= 2            
  317.           end
  318.         end
  319.       when 7  # 使用者
  320.         @target_battlers.push(@active_battler)
  321.       end
  322.     end
  323.   end
  324. #--------------------------------------------------------------------------
  325. # ● 生成特技行动结果
  326. #--------------------------------------------------------------------------
  327.   alias sxr_make_skill_action_result make_skill_action_result
  328.     def make_skill_action_result
  329.     # 获取特技
  330.     [url=home.php?mod=space&uid=260100]@skill[/url] = $data_skills[@active_battler.current_action.skill_id]
  331.     # 获取行动者特技附加的战斗特效
  332.     @active_battler.set_sxr_add_target(@active_battler.skill_element_set(@skill))
  333.     # recall
  334.    sxr_make_skill_action_result
  335.   end
  336. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
193 小时
注册时间
2013-3-24
帖子
448
2
发表于 2013-4-1 01:23:15 | 只看该作者
本帖最后由 joe5491 于 2013-4-1 01:25 编辑

这不用改阿,这脚本本来就已经写好啦~

你有没有发现个属性名为"随机"阿?

你就在加个名为"随机"的属性就好啦~

#==============================================================================
#属性名(同时存在的话,取最大值;同时包括多体范围和随机范围的话,取随机范围。)
#==============================================================================
ADD_TARGET2 = "秒2"#1体目标,追加1体序列
ADD_TARGET3 = "秒3"#1体目标,追加2体序列
ADD_TARGET4 = "秒4"#1体目标,追加3体序列
ADD_TARGET5 = "秒5"#1体目标,追加4体序列
ADD_TARGET6 = "秒6"#1体目标,追加5体序列
ADD_TARGET7 = "秒7"#1体目标,追加6体序列
ADD_TARGET8 = "秒8"#1体目标,追加7体序列
ARA_TARGET = "随机"#单选无效,配合上面才能产生效果,将追加改为随机追加

评分

参与人数 1梦石 +1 收起 理由
hcm + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2011-9-19
帖子
42
3
 楼主| 发表于 2013-4-3 19:39:31 | 只看该作者
joe5491 发表于 2013-4-1 01:23
这不用改阿,这脚本本来就已经写好啦~

你有没有发现个属性名为"随机"阿?

问题解决了,谢谢你的帮助。怪我没看仔细,里面说了是按照速度高的优先,我用的是封印技能,封的同时降低了敌人的敏捷,这样就不会重复封了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-27 04:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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