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

Project1

 找回密码
 注册会员
搜索
查看: 154|回复: 22

[有事请教] 一次性免傷擴展

[复制链接]

Lv2.观梦者

梦石
0
星屑
315
在线时间
120 小时
注册时间
2016-10-8
帖子
67
发表于 2018-5-16 19:11:57 | 显示全部楼层 |阅读模式

加入我们,一起完成梦想。

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

x
本帖最后由 elemmy72 于 2018-5-16 19:20 编辑
腳本


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

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

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

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

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

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

麻煩各位大大幫忙看一下
(´_ゝ`)...仍未命名的遊戲製作進度:0

Lv4.逐梦者

梦石
0
星屑
5410
在线时间
3644 小时
注册时间
2009-3-15
帖子
2159
发表于 2018-5-16 19:27:21 | 显示全部楼层
本帖最后由 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


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

回合数应该可以在数据库设置..

点评

我升級可以點評了!(開心) 測試免傷有效果了,不過選擇防禦也會扣到免傷次數... 還有次數被打完之後設定的回合內狀態不會自動解除QQ  发表于 2018-5-17 00:38
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
315
在线时间
120 小时
注册时间
2016-10-8
帖子
67
 楼主| 发表于 2018-5-16 21:10:13 | 显示全部楼层
soulsaga 发表于 2018-5-16 19:27
module NODMG
GUARD_ONCE_STATE = [
447, # 状态ID

感謝幫忙!

但是報錯了…

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

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

報錯

報錯
(´_ゝ`)...仍未命名的遊戲製作進度:0
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5410
在线时间
3644 小时
注册时间
2009-3-15
帖子
2159
发表于 2018-5-16 21:24:50 | 显示全部楼层
elemmy72 发表于 2018-5-16 21:10
感謝幫忙!

但是報錯了…

26行更新了..

一合回消失可能和初始化有关..?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
315
在线时间
120 小时
注册时间
2016-10-8
帖子
67
 楼主| 发表于 2018-5-16 21:46:31 | 显示全部楼层
soulsaga 发表于 2018-5-16 21:24
26行更新了..

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

感謝!

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

不過免傷效果不見了!
(´_ゝ`)...仍未命名的遊戲製作進度:0
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5410
在线时间
3644 小时
注册时间
2009-3-15
帖子
2159
发表于 2018-5-16 22:03:23 | 显示全部楼层
本帖最后由 soulsaga 于 2018-5-16 22:18 编辑
elemmy72 发表于 2018-5-16 21:46
感謝!

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


看看这次行不行..

点评

看看这次行不行..  发表于 2018-5-16 22:18
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
315
在线时间
120 小时
注册时间
2016-10-8
帖子
67
 楼主| 发表于 2018-5-17 00:09:09 | 显示全部楼层
soulsaga 发表于 2018-5-16 22:03
看看这次行不行..

抱歉,出門吃個夜宵了QAQ

測試了下,免傷還是沒效果呢

点评

再试试看..  发表于 2018-5-17 00:17
(´_ゝ`)...仍未命名的遊戲製作進度:0
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
631
在线时间
126 小时
注册时间
2017-7-25
帖子
98
发表于 2018-5-17 20:58:20 | 显示全部楼层
emmm,我有一个不用额外脚本的办法,不过需要自己写,不知道你有没有兴趣(可能会有扣血状态伤害也被算进攻击次数的毛病)

点评

啊真的嗎?求教!扣血狀態也算進去也是我希望的。  发表于 2018-5-17 22:29
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
631
在线时间
126 小时
注册时间
2017-7-25
帖子
98
发表于 2018-5-18 00:43:05 | 显示全部楼层
在软件自带的脚本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:05
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
631
在线时间
126 小时
注册时间
2017-7-25
帖子
98
发表于 2018-5-18 17:56:57 | 显示全部楼层
  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号那这段里面的状态编号是要改的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2018-5-28 17:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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