查看: 4999|回复: 22

[已经过期] 一次性免傷擴展

[复制链接]
梦石
0
星屑
354
在线时间
127 小时
注册时间
2016-10-8
回帖
54
发表于 2018-5-16 19:11:57 | 显示全部楼层 |阅读模式

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

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

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

腳本[pre lang="ruby"]class Game_Battler
  GUARD_ONCE_STATE = 447 # 状态ID

  alias init0622 initialize
  def initialize
    init0622
    @guard_times = 0
  end

  alias add_state_0622 add_state
  def add_state(state_id)
    @guard_times += 1 if state_id == GUARD_ONCE_STATE
    add_state_0622(state_id)
  end

  alias remove_state_0622 remove_state
  def remove_state(state_id)
    @guard_times = 0 if state_id == GUARD_ONCE_STATE
    remove_state_0622(state_id)
  end

  def item_apply(user, item)
    @result.clear
    @result.used = item_test(user, item)
    @result.missed = (@result.used && rand >= item_hit(user, item))
    @result.evaded = (!@result.missed && rand < item_eva(user, item))
    return unless @result.hit?
    if @guard_times > 0
      remove_state(GUARD_ONCE_STATE) if (@guard_times -= 1) <= 0
      return
    end
    unless item.damage.none?
      @result.critical = (rand < item_cri(user, item))
      make_damage_value(user, item)
      execute_damage(user)
    end
    item.effects.each {|effect| item_effect_apply(user, item, effect) }
    item_user_effect(user, item)
  end
end
[/pre]


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

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

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

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

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

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

麻煩各位大大幫忙看一下
(´_ゝ`)...仍未命名的遊戲製作進度:0%
梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2018-5-16 19:27:21 | 显示全部楼层
本帖最后由 soulsaga 于 2018-5-17 11:22 编辑

[pre lang="ruby"]
module NODMG
GUARD_ONCE_STATE = [
447, # 状态ID
448,
449,
]

GUARD_TIME = [
1,#免伤次数
2,
3,
]
end
class Game_Battler


  alias init0622 initialize
  def initialize
    init0622
    @guard_times = 0
  end

  alias add_state_0622 add_state
  def add_state(state_id)
for i in 0..NODMG::GUARD_ONCE_STATE.size-1
    @guard_times += NODMG::GUARD_TIME if state_id == NODMG::GUARD_ONCE_STATE
@state_id = state_id if state_id == NODMG::GUARD_ONCE_STATE
end
    add_state_0622(state_id)
  end

  alias remove_state_0622 remove_state
  def remove_state(state_id)
for i in 0..NODMG::GUARD_ONCE_STATE.size-1
    @guard_times = 0 if state_id == NODMG::GUARD_ONCE_STATE
end
    remove_state_0622(state_id)
  end

def item_apply(user, item)
    @result.clear
    @result.used = item_test(user, item)
    @result.missed = (@result.used && rand >= item_hit(user, item))
    @result.evaded = (!@result.missed && rand < item_eva(user, item))
    return unless @result.hit?
    if @guard_times > 0
if (@guard_times -= 1) <= 0
     remove_state(@state_id)
return
end
return if @guard_times > 0
end
end

    end
    unless item.damage.none?
      @result.critical = (rand < item_cri(user, item))
      make_damage_value(user, item)
      execute_damage(user)
    end
    item.effects.each {|effect| item_effect_apply(user, item, effect) }
    item_user_effect(user, item)
  end
end
[/pre]

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

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

点评

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

使用道具 举报

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

感謝幫忙!

但是報錯了…

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

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

報錯

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

使用道具 举报

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

但是報錯了…

26行更新了..

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

使用道具 举报

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

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

感謝!

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

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

使用道具 举报

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

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


看看这次行不行..

点评

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

使用道具 举报

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

抱歉,出門吃個夜宵了QAQ

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

点评

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

使用道具 举报

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

点评

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

使用道具 举报

梦石
0
星屑
2338
在线时间
275 小时
注册时间
2017-7-25
回帖
128
发表于 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
回复

使用道具 举报

梦石
0
星屑
2338
在线时间
275 小时
注册时间
2017-7-25
回帖
128
发表于 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号那这段里面的状态编号是要改的
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部