Project1

标题: 一次性免傷擴展 [打印本页]

作者: elemmy72    时间: 2018-5-16 19:11
标题: 一次性免傷擴展
本帖最后由 elemmy72 于 2018-5-16 19:20 编辑
腳本


想請教如何設置多個此狀態的方法,

且能改動免傷次數的問題,變成不止一次。

例如:1號狀態時可免傷3次,2號狀態時可免傷5次。

類似這樣的多重改動設置方式!

另外請教如何更改狀態存在回合數,

因為這裡只有一回合…即便沒有受傷,一回合後都會消失

麻煩各位大大幫忙看一下
作者: soulsaga    时间: 2018-5-16 19:27
本帖最后由 soulsaga 于 2018-5-17 11:22 编辑

RUBY 代码复制
  1. module NODMG
  2. GUARD_ONCE_STATE = [
  3. 447, # 状态ID
  4. 448,
  5. 449,
  6. ]
  7.  
  8. GUARD_TIME = [
  9. 1,#免伤次数
  10. 2,
  11. 3,
  12. ]
  13. end
  14. class Game_Battler
  15.  
  16.  
  17.   alias init0622 initialize
  18.   def initialize
  19.     init0622
  20.     @guard_times = 0
  21.   end
  22.  
  23.   alias add_state_0622 add_state
  24.   def add_state(state_id)
  25. for i in 0..NODMG::GUARD_ONCE_STATE.size-1
  26.     @guard_times += NODMG::GUARD_TIME[i] if state_id == NODMG::GUARD_ONCE_STATE[i]
  27. @state_id = state_id if state_id == NODMG::GUARD_ONCE_STATE[i]
  28. end
  29.     add_state_0622(state_id)
  30.   end
  31.  
  32.   alias remove_state_0622 remove_state
  33.   def remove_state(state_id)
  34. for i in 0..NODMG::GUARD_ONCE_STATE.size-1
  35.     @guard_times = 0 if state_id == NODMG::GUARD_ONCE_STATE[i]
  36. end
  37.     remove_state_0622(state_id)
  38.   end
  39.  
  40. def item_apply(user, item)
  41.     @result.clear
  42.     @result.used = item_test(user, item)
  43.     @result.missed = (@result.used && rand >= item_hit(user, item))
  44.     @result.evaded = (!@result.missed && rand < item_eva(user, item))
  45.     return unless @result.hit?
  46.     if @guard_times > 0
  47. if (@guard_times -= 1) <= 0
  48.      remove_state(@state_id)
  49. return
  50. end
  51. return if @guard_times > 0
  52. end
  53. end
  54.  
  55.     end
  56.     unless item.damage.none?
  57.       @result.critical = (rand < item_cri(user, item))
  58.       make_damage_value(user, item)
  59.       execute_damage(user)
  60.     end
  61.     item.effects.each {|effect| item_effect_apply(user, item, effect) }
  62.     item_user_effect(user, item)
  63.   end
  64. end


未测试..不保证可行..

回合数应该可以在数据库设置..
作者: elemmy72    时间: 2018-5-16 21:10
soulsaga 发表于 2018-5-16 19:27
module NODMG
GUARD_ONCE_STATE = [
447, # 状态ID

感謝幫忙!

但是報錯了…

另外數據庫的回合數設置了沒有卵用,

腳本好像寫死了一回合狀態就會消失的樣子

報錯1.png (17.06 KB, 下载次数: 26)

報錯

報錯

作者: soulsaga    时间: 2018-5-16 21:24
elemmy72 发表于 2018-5-16 21:10
感謝幫忙!

但是報錯了…

26行更新了..

一合回消失可能和初始化有关..?
作者: elemmy72    时间: 2018-5-16 21:46
soulsaga 发表于 2018-5-16 21:24
26行更新了..

一合回消失可能和初始化有关..?

感謝!

狀態不會一回合就消失了,

不過免傷效果不見了!
作者: soulsaga    时间: 2018-5-16 22:03
本帖最后由 soulsaga 于 2018-5-16 22:18 编辑
elemmy72 发表于 2018-5-16 21:46
感謝!

狀態不會一回合就消失了,


看看这次行不行..
作者: elemmy72    时间: 2018-5-17 00:09
soulsaga 发表于 2018-5-16 22:03
看看这次行不行..

抱歉,出門吃個夜宵了QAQ

測試了下,免傷還是沒效果呢
作者: 骷髅岛遗老    时间: 2018-5-17 20:58
emmm,我有一个不用额外脚本的办法,不过需要自己写,不知道你有没有兴趣(可能会有扣血状态伤害也被算进攻击次数的毛病)
作者: 骷髅岛遗老    时间: 2018-5-18 00:43
在软件自带的脚本Game_Battler查找 计算伤害 一栏,end前另起一行插入
  1.     if self.state?(10)         #如果目标处于10号状态
  2.       if value >= 1            #如果伤害大于1时
  3.         self.remove_state(10)  #目标解除10号状态
  4.         self.add_state(11)     #目标进入11号状态
  5.          value = 0             #目标受到的伤害为0
  6.       end
  7.     end
  8.    
  9.     if self.state?(11)         #如果目标处于11号状态
  10.       if value >= 1            #如果伤害大于1时
  11.         self.remove_state(11)  #目标解除11号状态
  12.         self.add_state(12)     #目标进入12号状态
  13.          value = 0             #目标受到的伤害为0
  14.       end
  15.     end
  16.    
  17.     if self.state?(12)         #如果目标处于12号状态
  18.       if value >= 1            #如果伤害大于1时
  19.         self.add_state(12)     #目标解除12号状态
  20.          value = 0             #目标受到的伤害为0
  21.       end
  22.     end
复制代码

以能免疫3次伤害为范例,需要占用3个BUFF,每组的内容都标注了,需要免疫更多次伤害就多复制几段改改数字就行,因为实际上是不同的buff,甚至可以用不同的图标来表现剩余层数
作者: 骷髅岛遗老    时间: 2018-5-18 17:56
  1.     if self.state?(10)         #如果目标处于10号状态
  2.       if value >= 1            #如果伤害大于1时
  3.         self.remove_state(10)  #目标解除10号状态
  4.         self.add_state(11)     #目标进入11号状态
  5.          value = 0             #目标受到的伤害为0
  6.       end
  7.     end
  8.    
  9.     if self.state?(11)         #如果目标处于11号状态
  10.       if value >= 1            #如果伤害大于1时
  11.         self.remove_state(11)  #目标解除11号状态
  12.         self.add_state(12)     #目标进入12号状态
  13.          value = 0             #目标受到的伤害为0
  14.       end
  15.     end
  16.    
  17.     if self.state?(12)         #如果目标处于12号状态
  18.       if value >= 1            #如果伤害大于1时
  19.         self.remove_state(12)     #目标解除12号状态
  20.          value = 0             #目标受到的伤害为0
  21.       end
  22.     end
复制代码


emmm,测试了一下才发现删错了一段
不过就算出问题也是第三次免伤状态不解除无限无敌,没有免伤不存在啊,你是不是数据库里状态编号不对?如果你要免伤状态不是10号那这段里面的状态编号是要改的
作者: elemmy72    时间: 2018-5-18 18:06
骷髅岛遗老 发表于 2018-5-18 17:56
emmm,测试了一下才发现删错了一段
不过就算出问题也是第三次免伤状态不解除无限无敌,没有免伤不存在啊 ...
  1. if self.state?(410)         #如果目标处于10号状态
  2.       if value >= 1            #如果伤害大于1时
  3.         self.remove_state(410)  #目标解除10号状态
  4.         self.add_state(411)     #目标进入11号状态
  5.          value = 0             #目标受到的伤害为0
  6.       end
  7.     end
  8.     if self.state?(411)
  9.       if value >= 1
  10.         self.remove_state(411)
  11.         self.add_state(412)
  12.          value = 0
  13.       end
  14.     end
  15.     if self.state?(412)
  16.       if value >= 1
  17.         self.remove_state(412)
  18.         self.add_state(413)
  19.          value = 0
  20.       end
  21.     end
  22.     if self.state?(413)
  23.       if value >= 1
  24.         self.remove_state(413)
  25.         self.add_state(414)
  26.          value = 0
  27.       end
  28.     end
  29.     if self.state?(414)         #如果目标处于12号状态
  30.       if value >= 1            #如果伤害大于1时
  31.         self.remove_state(414)     #目标解除12号状态
  32.          value = 0             #目标受到的伤害为0
  33.       end
  34.     end
复制代码


已更新。我是設置5次,測試真的免傷無效果,且也不會進入下一個狀態
作者: 骷髅岛遗老    时间: 2018-5-18 18:09
emmm,对了,还有个小问题,如果你用来附加减伤状态的技能没有冷却脚本之类的限制的话,最好同时在技能里设定解除后面的11 12状态,不然连续附加的话可能会多个状态一起显示,虽然实际效果没啥影响不过看起来怪怪的
作者: elemmy72    时间: 2018-5-19 00:09
骷髅岛遗老 发表于 2018-5-18 18:09
emmm,对了,还有个小问题,如果你用来附加减伤状态的技能没有冷却脚本之类的限制的话,最好同时在技能里设 ...

技能附加的是第 410 號狀態。

1.png (74.57 KB, 下载次数: 19)

1.png

2.png (52.21 KB, 下载次数: 18)

2.png

作者: elemmy72    时间: 2018-5-20 00:19
骷髅岛遗老 发表于 2018-5-18 18:09
emmm,对了,还有个小问题,如果你用来附加减伤状态的技能没有冷却脚本之类的限制的话,最好同时在技能里设 ...

我開 Project1 測試了可行,因此我想大概是其他腳本把這字符串效果整個覆蓋了吧?因為我不止一種關於“傷害盾”的腳本。如果是這樣的話,寫成插入在插件腳本之下的腳本可行嗎?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1