查看: 2145|回复: 2

[已经过期] 变量护盾问题

[复制链接]
梦石
0
星屑
6963
在线时间
1557 小时
注册时间
2011-6-14
回帖
425
发表于 2015-11-11 14:24:40 | 显示全部楼层 |阅读模式

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

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

×
这是在论坛找到的一个变量护盾脚本,当状态在角色上面时能正常的减少伤害,但是状态在敌人身上时就失效了(无法抵消伤害)
求大大帮忙改造下


[pre lang="ruby"]class Game_Actor

  alias apply_guard_without_state apply_guard
  def apply_guard(value)
    value = apply_guard_without_state(value)
    if state?(50) && value > 0   
      v = $game_variables      
      if v[30] >= value      
        $Hurt_Shield = value
        $Magic_Shield = "have"
        v[30] -= value
        0
      else
        value -= v[30]
        $Hurt_Shield = value
        $Magic_Shield = "have"
        v[30] = 0
        $game_party.members.each {|actor| actor.remove_state(50) }
        value
      end
    else
      $Magic_Shield = ""
      value
    end
  end
end
class Game_ActionResult
  #--------------------------------------------------------------------------
  # ● 获取 HP 伤害的文字
  #--------------------------------------------------------------------------
  def hp_damage_text
    if @hp_drain > 0
      fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
    elsif @hp_damage > 0
      fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
      sprintf(fmt, @battler.name, @hp_damage)
    elsif @hp_damage < 0
      fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
    elsif $Magic_Shield == "have"
      fmt = "魔法之盾抵消了%s点伤害"
      sprintf(fmt,$Hurt_Shield.to_i)
    else
      fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      sprintf(fmt, @battler.name)
    end
  end
end[/pre]

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-11-11 14:28:54 | 显示全部楼层
未测试

第一行改成 class Game_Battler

点评

......还是不行  发表于 2015-11-11 14:32
回复

使用道具 举报

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2015-11-11 17:45:45 | 显示全部楼层
不知道怎么改,不过我给个思路吧,期待有牛人来帮忙:
在原脚本中是重写了防御检查,新增了一个变量来代表当前我方队伍可用的汲取伤害总数值,
所以,只是写了我方的,而且是唯一的一个,
所以如果强行给敌人加状态,会出现敌人也用我方的护盾的神奇bug。

然后重写的话需要判定受到伤害的是否为敌人,并且需要新增一个变量来记录敌人的护盾数值。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部