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

Project1

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

[已经解决] 物理防御和魔法防御的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
43 小时
注册时间
2009-7-8
帖子
154
跳转到指定楼层
1
发表于 2009-12-27 13:06:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各位高手新手,在数据库里的“敌人”这一项,物理防御和魔法防御是什么东东?是不是我把敌人的物理防御的数字设高一点,物理攻击就不能去他血了?魔法防御也一样吗?

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
2
发表于 2009-12-27 16:14:59 | 只看该作者
本帖最后由 夏季冰川 于 2009-12-27 16:38 编辑

就是敌人抗我方打击的能力.
物理防御高的敌人,受到我方物理攻击的伤害低.
魔法防御高的敌人,受到我方魔法攻击的伤害低.
至于物理攻击,主要是看力量和攻击力.
魔法攻击主要看技能威力和魔力.

在技能设置里,有个 物理防御F 和 魔法防御 F,就是这个技能计算对方防御的百分比.
假设把 物理防御F 设置为 80,敌人防御为 300.那么这个技能在打到对手时只会计算 300*80/100=240的防御力. 魔法防御F 也是一个道理.

在 Game_Battler 3 的里面,有下面一段:
  1. power = skill.power + user.atk * skill.atk_f / 100
  2.       if power > 0
  3.         power -= self.pdef * skill.pdef_f / 200
  4.         power -= self.mdef * skill.mdef_f / 200
  5.         power = [power, 0].max
  6.       end
  7.       # 计算倍率
  8.       rate = 20
  9.       rate += (user.str * skill.str_f / 100)
  10.       rate += (user.dex * skill.dex_f / 100)
  11.       rate += (user.agi * skill.agi_f / 100)
  12.       rate += (user.int * skill.int_f / 100)
  13.       # 计算基本伤害
  14.       self.damage = power * rate / 20
  15.       # 属性修正
  16.       self.damage *= elements_correct(skill.element_set)
  17.       self.damage /= 100
复制代码
这段脚本就是计算技能伤害的.
在数据库里,有个力量F,灵巧F什么的,对应的就是skill.str_f 和skill.dex_f之类的东西.
拿阿尔西斯的十字斩来说:

假设主角的攻击力是200,力量也是200,十字斩的威力是20,用十字斩打防御力100的幽灵.
那么
  1. power = skill.power + user.atk * skill.atk_f / 100
复制代码
所以这个时候power = 20 + 200 * 100 / 100 = 220
然后:
  1. power -= self.pdef * skill.pdef_f / 200
  2.         power -= self.mdef * skill.mdef_f / 200
复制代码
power = 220 - 100 * 100 / 200 - 0 = 170
由于灵巧F什么的都是0,只有力量F是100,所以
  1. rate = 20
  2.       rate += (user.str * skill.str_f / 100)
复制代码
那么rate = 20 + 200 *100 / 100 = 220
然后:
  1. self.damage = power * rate / 20
复制代码
那么伤害 = 170 * 220 / 20 = 1870
最后是这个:
  1.       self.damage *= elements_correct(skill.element_set)
  2.       self.damage /= 100
复制代码
[/code]
由于幽灵怕十字斩,对不死是A级
搜索table:
  1. table = [0,200,150,100,50,0,-100]
复制代码
A 对应 200
那么那么最终伤害是:
1870 * 200 / 100 = 3740.
为了准确起间,我们把十字斩分散度调为 0,其余数据调整好:

然后得出伤害:


至于魔法技能什么的,LZ可以自己试着算算,然后就了解了.
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-25 10:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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