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

Project1

 找回密码
 注册会员
搜索
查看: 3255|回复: 5
打印 上一主题 下一主题

[已经解决] 关于伤害小于零的强制伤害问题。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2009-1-18
帖子
64
跳转到指定楼层
1
 楼主| 发表于 2013-3-2 18:17:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 阿Z 于 2013-3-2 20:15 编辑

      # 计算基本伤害
      atk  = attacker.str + attacker.atk - self.pdef#修改
      self.damage = atk#修改
这是自己改的伤害计算式,如果 被攻击者 的防御过高,会出现伤害为负的问题。
具体表现为 被攻击者 会增加HP。
例如:
1+1-10 = -8
那么敌人就会 +8 HP。
请问如何增加强制伤害?应该在哪里增加呢?
      # HP 的伤害计算
       if atk < 0
         self.hp -=1
       end
      self.hp -= self.damage
这样写怎么不好使呢?脚本无能,求各位大大解决!谢谢啦!

解决啦!谢谢帮助我的大大们~祝周末愉快!

Lv2.观梦者 (暗夜天使)

万兽

梦石
0
星屑
597
在线时间
2271 小时
注册时间
2006-11-4
帖子
4868

贵宾

来自 2楼
发表于 2013-3-2 20:10:34 | 只看该作者
看了下,LZ错在这个地方了。

# 计算基本伤害
      atk  = attacker.str + attacker.atk - self.pdef#修改         假如:atk = -14  角色当前hp =  28     
self.damage = atk#修改           那么:self.damage =  atk  = -14
这是自己改的伤害计算式,如果 被攻击者 的防御过高,会出现伤害为负的问题。
具体表现为 被攻击者 会增加HP。
例如:
1+1-10 = -8
那么敌人就会 +8 HP。
请问如何增加强制伤害?应该在哪里增加呢?
      # HP 的伤害计算
       if atk < 0      
         self.hp -=1      于是:角色hp -=1  = 27  
       end
      self.hp -= self.damage   
然后:角色hp -= self.damage   也就是-= -14  也就是  +14  明白错在哪了吧?

所以:
# 计算基本伤害
      atk  = attacker.str + attacker.atk - self.pdef#修改

应该是:
atk  = attacker.str + attacker.atk - self.pdef
if atk <0
self.damage = 1#给一个最小值,自己定
else
self.damage = atk
end



回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32092
在线时间
5083 小时
注册时间
2012-11-19
帖子
4877

开拓者

3
发表于 2013-3-2 19:27:04 | 只看该作者
本帖最后由 芯☆淡茹水 于 2013-3-2 19:31 编辑

试一下这样:、
   在 Game_Battler 3  大概从 56 行开始,原句:
   if self.damage > 0
        # 会心一击修正
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        # 防御修正
        if self.guarding?
          self.damage /= 2
        end
      end

在这个条件分歧 加个 else  ,除此之外,也就是伤害 <=0 的情况,
然后下面写:self.damage = 1       也就是最低 1 点伤害
也可以随机 10 点以下的伤害
self.damage = rand (10) + 1
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2009-1-18
帖子
64
4
 楼主| 发表于 2013-3-2 19:59:53 | 只看该作者
还是不行……角色的伤害依然是加血
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32092
在线时间
5083 小时
注册时间
2012-11-19
帖子
4877

开拓者

5
发表于 2013-3-2 20:05:20 | 只看该作者
阿Z 发表于 2013-3-2 19:59
还是不行……角色的伤害依然是加血

你以前的卡能没改过来。
把下面的插入外挂脚本里,我设置的是 随机 10 以下的伤害。
  1. class Game_Battler
  2. def attack_effect(attacker)
  3.     # 清除会心一击标志
  4.     self.critical = false
  5.     # 第一命中判定
  6.     hit_result = (rand(100) < attacker.hit)
  7.     # 命中的情况下
  8.     if hit_result == true
  9.       # 计算基本伤害
  10.       atk = [attacker.atk - self.pdef / 2, 0].max
  11.       self.damage = atk * (20 + attacker.str) / 20
  12.       # 属性修正
  13.       self.damage *= elements_correct(attacker.element_set)
  14.       self.damage /= 100
  15.       # 伤害符号正确的情况下
  16.       if self.damage > 0
  17.         # 会心一击修正
  18.         if rand(100) < 4 * attacker.dex / self.agi
  19.           self.damage *= 2
  20.           self.critical = true
  21.         end
  22.         # 防御修正
  23.         if self.guarding?
  24.           self.damage /= 2
  25.         end
  26.       else
  27.         self.damage = rand(10) + 1
  28.       end
  29.       # 分散
  30.       if self.damage.abs > 0
  31.         amp = [self.damage.abs * 15 / 100, 1].max
  32.         self.damage += rand(amp+1) + rand(amp+1) - amp
  33.       end
  34.       # 第二命中判定
  35.       eva = 8 * self.agi / attacker.dex + self.eva
  36.       hit = self.damage < 0 ? 100 : 100 - eva
  37.       hit = self.cant_evade? ? 100 : hit
  38.       hit_result = (rand(100) < hit)
  39.     end
  40.     # 命中的情况下
  41.     if hit_result == true
  42.       # 状态冲击解除
  43.       remove_states_shock
  44.       # HP 的伤害计算
  45.       self.hp -= self.damage
  46.       # 状态变化
  47.       @state_changed = false
  48.       states_plus(attacker.plus_state_set)
  49.       states_minus(attacker.minus_state_set)
  50.     # Miss 的情况下
  51.     else
  52.       # 伤害设置为 "Miss"
  53.       self.damage = "Miss"
  54.       # 清除会心一击标志
  55.       self.critical = false
  56.     end
  57.     # 过程结束
  58.     return true
  59.   end
  60. end
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2009-1-18
帖子
64
6
 楼主| 发表于 2013-3-2 20:14:52 | 只看该作者
弗雷德 发表于 2013-3-2 20:10
看了下,LZ错在这个地方了。

# 计算基本伤害


原来如此!懂了~非常感谢~
已解决!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-17 02:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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