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

Project1

 找回密码
 注册会员
搜索

请问如何让某一属性的攻击不会解除受攻击解除的状态

查看数: 2027 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-11-12 17:50

正文摘要:

本帖最后由 jianyulei 于 2016-11-12 18:14 编辑 我在  def remove_states_by_damage段的解除条件判断里面添加if item.damage.element_id != 1 但不知道为何damage会报错,请问应该怎么写才能让设置了1 ...

回复

RaidenInfinity 发表于 2016-11-12 18:19:43
本帖最后由 RaidenInfinity 于 2016-11-12 18:21 编辑

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

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 受到伤害时解除状态
  3.   #--------------------------------------------------------------------------
  4.   def remove_states_by_damage
  5.     states.each do |state|
  6.       if state.remove_by_damage && rand(100) < state.chance_by_damage
  7.         remove_state(state.id)
  8.       end
  9.     end
  10.   end


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

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

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

RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   alias :es_item_apply :item_apply
  3.   def item_apply(user, item)
  4.     @item = item
  5.     es_item_apply(user,item)
  6.   end
  7.  
  8.   #将[1,2,3,4]改成你要免除解除状态的属性ID组
  9.   #如果只有一个的话,[1] 这样就行了
  10.   alias :es_remove_states_by_damage :remove_states_by_damage
  11.   def remove_states_by_damage
  12.     if @item
  13.       if [1,2,3,4].include?(@item.damage.element_id)
  14.           return
  15.       end
  16.     end  
  17.     es_remove_states_by_damage
  18.   end
  19.  
  20. end

点评

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

评分

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

查看全部评分

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

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

GMT+8, 2025-7-17 17:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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