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

Project1

 找回密码
 注册会员
搜索
查看: 3440|回复: 2

[已经解决] 为什么这个物理反弹的脚本会出错?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6978
在线时间
872 小时
注册时间
2015-2-10
帖子
248
发表于 2020-9-9 15:36:01 | 显示全部楼层 |阅读模式
50星屑
本帖最后由 fbeds 于 2020-9-9 15:48 编辑

我使用了以下脚本实现物理反弹的效果,不过当使用原来的“反击”效果时会出错。我方角色可以正常发动原来的反击,但是敌人发动反击时却会出现错误。请问到底是怎么回事?
RUBY 代码复制
  1. =begin
  2. ===============================================================================
  3.   物理伤害反弹
  4. ===============================================================================
  5.  
  6. 【说明】
  7.  
  8.   当满足条件时,角色原本应该发动的物理反击效果会变成物理反弹
  9.   物理反弹效果是指敌人无法攻击自己同时自己会用相同的技能进行反击
  10.   与物理反击不同,攻击方和防御方的各项能力仍然沿用原来的数据
  11.   即
  12.   用敌人的攻击力和自己的防御力计算敌人所受到的伤害
  13.  
  14. =end
  15. $m5script = {} if $m5script.nil?
  16. $m5script["M5Reflect"] = true
  17. module M5Reflect
  18. #==============================================================================
  19. #  设定部分
  20. #==============================================================================
  21.  
  22.   HINT = "%s反弹了物理伤害!"
  23.  
  24.   #这里设置物理反弹时的提示文字
  25.   # %s 表示对象的名字
  26.  
  27.   STATE = [49]
  28.  
  29.   #当角色处于上面数字对应ID的状态时,物理反击的效果变成物理反弹的效果
  30.  
  31.   WEAPON = []
  32.  
  33.   #当角色装备上面数字对应ID的武器时,物理反击的效果变成物理反弹的效果
  34.  
  35.   ARMOR = []
  36.  
  37.   #当角色装备上面数字对应ID的防具时,物理反击的效果变成物理反弹的效果
  38.  
  39. #==============================================================================
  40. #  设定结束
  41. #==============================================================================
  42. end
  43. class Window_BattleLog < Window_Selectable
  44.   def display_m5_reflection(target, item)
  45.     Sound.play_evasion
  46.     add_text(sprintf(M5Reflect::HINT , target.name))
  47.     wait
  48.     back_one
  49.   end
  50. end
  51. class Scene_Battle < Scene_Base
  52.   alias m5_20131123_invoke_counter_attack invoke_counter_attack
  53.   def invoke_counter_attack(target, item)   
  54.     if (m5_state_include(target.states)) or (m5_equip_include(target))
  55.       @log_window.display_m5_reflection(target, item)
  56.       apply_item_effects(@subject, item)
  57.     else
  58.       m5_20131123_invoke_counter_attack(target, item)
  59.     end
  60.   end  
  61.   def m5_state_include(state)
  62.     state = state.collect {|state| state.id }
  63.     (state | M5Reflect::STATE).size != state.size + M5Reflect::STATE.size
  64.   end
  65.   def m5_equip_include(actor)
  66.     weapon = actor.weapons.collect {|weapons| weapons.id }
  67.     armor = actor.armors.collect {|armors| armors.id }
  68.     (weapon | M5Reflect::WEAPON).size != weapon.size + M5Reflect::WEAPON.size or\
  69.     (armor | M5Reflect::ARMOR).size != armor.size + M5Reflect::ARMOR.size
  70.   end
  71. end

最佳答案

查看完整内容

敌人没装备, 就是这么简单的一回事 def m5_equip_include(actor)的下一行加句 return false if actor.is_a?(Game_Enemy) 试试?

Lv5.捕梦者

梦石
0
星屑
24242
在线时间
5033 小时
注册时间
2016-3-8
帖子
1618
发表于 2020-9-9 15:36:02 | 显示全部楼层
本帖最后由 alexncf125 于 2020-9-9 16:10 编辑
请问到底是怎么回事?

敌人没装备, 就是这么简单的一回事

def m5_equip_include(actor)的下一行加句
return false if actor.is_a?(Game_Enemy)
试试?
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6978
在线时间
872 小时
注册时间
2015-2-10
帖子
248
 楼主| 发表于 2020-9-10 12:08:46 | 显示全部楼层
alexncf125 发表于 2020-9-9 16:07
敌人没装备, 就是这么简单的一回事

def m5_equip_include(actor)的下一行加句

谢谢,问题已解决。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-19 02:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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