查看: 2535|回复: 3

[已经解决] 请问如何让某一属性的攻击不会解除受攻击解除的状态

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2016-11-12 17:50:03 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 jianyulei 于 2016-11-12 18:14 编辑

我在  def remove_states_by_damage段的解除条件判断里面添加if item.damage.element_id != 1
但不知道为何damage会报错,请问应该怎么写才能让设置了100%受攻击解除的状态在受到某一属性攻击时不被解除?


QQ图片20161112181311.png

点评

请提供报出的错误讯息,以便顺利解决  发表于 2016-11-12 18:02

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 结帖

查看全部评分

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
回帖
1263

开拓者剧作品鉴家

发表于 2016-11-12 18:19:43 | 显示全部楼层
本帖最后由 RaidenInfinity 于 2016-11-12 18:21 编辑

默认脚本里面,remove_states_by_damage 是这样的:

[pre lang="ruby"]
  #--------------------------------------------------------------------------
  # ● 受到伤害时解除状态
  #--------------------------------------------------------------------------
  def remove_states_by_damage
    states.each do |state|
      if state.remove_by_damage && rand(100) < state.chance_by_damage
        remove_state(state.id)
      end
    end
  end
[/pre]

很明显,它并没有item这个局部变量/参数。

要有效地解决这个问题的话,需要使用一个实例变量(前缀@)来存着技能或道具的实例。

于是请安装下面的这段插件脚本:

[pre lang="ruby"]
class Game_Battler < Game_BattlerBase
  alias :es_item_apply :item_apply
  def item_apply(user, item)
    @item = item
    es_item_apply(user,item)
  end

  #将[1,2,3,4]改成你要免除解除状态的属性ID组
  #如果只有一个的话,[1] 这样就行了
  alias :es_remove_states_by_damage :remove_states_by_damage
  def remove_states_by_damage
    if @item
      if [1,2,3,4].include?(@item.damage.element_id)
          return
      end
    end  
    es_remove_states_by_damage
  end
  
end
[/pre]

点评

啊,原来是这样,谢谢!  发表于 2016-11-12 18:23

评分

参与人数 2星屑 +20 梦石 +1 收起 理由
VIPArcher + 1 认可答案
jianyulei + 20 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部