Project1

标题: 求伤害公式 [打印本页]

作者: summer依恋    时间: 2011-9-29 15:51
标题: 求伤害公式
刚接触rmxp,感觉伤害好复杂,没懂。。尤其是人物攻击力=武器攻击力,感觉一点也不好。我也看了论坛许多的伤害公式,还是不如意,所以。。。。
请问,如何才能达到下面的要求
   普通攻击力=武器攻击力+自己力量—敌人物理防御力
   物理技能攻击力=(武器攻击力+自己力量)*(威力/50)—敌人物理防御力
   魔法技能攻击力=(武器攻击力+自己魔力)*(威力/50)—敌人魔法防御力

就是这样,看到过一篇和我类似的帖子,不过他们给的答案我没看懂,求达人编写好,告诉我具体放在那里。自己去看神马的我也不明白,谢谢各位了^_^dsu_plus_rewardpost_czw
作者: 月夜神音    时间: 2011-9-29 15:54
你搞错了,这里是VX区
作者: summer依恋    时间: 2011-9-29 16:19
月夜神音 发表于 2011-9-29 15:54
你搞错了,这里是VX区

不好意思 没注意到


summer依恋于2011-9-29 16:20补充以下内容:
请版主帮忙移动到XP区


summer依恋于2011-9-30 15:42补充以下内容:
都木有人帮忙吗?(╯﹏╰)
作者: a93193118    时间: 2011-9-30 16:35
我是进来打酱油的,这个我没有办法,因为偶也是新手
作者: 暗黑骑士    时间: 2011-9-30 16:44
RMXP界面中
帮助-目录-RPG MakerXP-战斗计算式


RPGXP 默认的战斗系统,采用以下的计算式。

攻击方角色表示为 A,被攻击方角色以 B 表示。

第一命中率判定普通攻击
第一命中率 = A 当前状态下的命中率 %
技能攻击
攻击力 F 为 1 以上(物理攻击)
第一命中率 = 技能的命中率 × A 当前状态下的命中率 % ÷ 100
攻击力 F 为 0(物理攻击以外)
第一命中率 = 技能的命中率
使用物品
第一命中率 = 物品的命中率
A 在正常状态下的命中率为 100。
必杀机率判定普通攻击
必杀率 = 4 × A 的灵巧 ÷ B 的速度
技能攻击
必杀率 = 0
使用物品
必杀率 = 0
必杀率即奋力一击(通常会使敌方常受到较大的损伤)发生的机率,如果必杀率为 4 则表示每 4 个回合就出现一次奋力一击。
伤害计算普通攻击
威力 = A 的攻击力 - (B 的物理防御 ÷ 2)
放大率 = 20 + A 的力量
分散度 = 15
威力的最小值:0
技能攻击
技能的威力值为正数
威力 = 技能的威力
+ (A 的攻击力 × 技能的攻击力 F ÷ 100)
- (B 的物理防御 × 技能的物理防御 F ÷ 200)
- (B 的魔法防御 × 技能的魔法防御 F ÷ 200)

威力的最小值:0
技能的威力值为负数
威力 = 技能的威力
放大率 = 20
+ (A 的力量 × 技能的力量 F ÷ 100)
+ (A 的灵巧 × 技能的灵巧 F ÷ 100)
+ (A 的速度 × 技能的速度 F ÷ 100)
+ (A 的魔力 × 技能的魔力 F ÷ 100)
分散度 = 技能的分散度
使用物品
HP 回复量为负数
威力 = - HP 回复量
- (B 的物理防御 × 物品的物理防御 F ÷ 20)
- (B 的魔法防御 × 物品的魔法防御 F ÷ 20)

威力的最小值:0
HP 回复量为正数
威力 = - HP 回复量
放大率 = 20
分散度 = 物品的分散度
伤害 = 威力 × 放大率 ÷ 20 × 属性修正 × 必杀修正 × 防御修正 ( ± 分散度 %)


属性修正:有攻击属性时,在 B 的属性有效度中选择最弱的进行修正,修正值如下。
A:200%,B:150%,C:100%,D:50%,E:0%,F:-100%
另外,攻击属性符合 B 防具的防御属性的,伤害减半,修正值为 1/2。
有多个相同防御属性的,减半效果要叠加。
必杀修正:伤害值为正数,奋力一击发动时修正值为 2。
防御修正:伤害值为正数,B 防御时修正值为 1/2。
第二命中率判定伤害值为正数
B 为正常状态
回避力 = 8 × B 的速度 ÷ A 的灵巧 + B 的回避修正
普通攻击
第二命中率 = 100 - 回避力
技能攻击
第二命中率 = 100 -(回避力 × 技能的回避 F ÷ 100)
使用物品
第二命中率 = 100
B 附加有「不能回避攻击」状态
第二命中率 = 100
伤害值为负数(回复)
第二命中率 = 100
逃跑成功率逃跑成功率 =50 × 角色的速度平均值 ÷ 敌人的速度平均值
作者: summer依恋    时间: 2011-9-30 16:59
暗黑骑士 发表于 2011-9-30 16:44
RMXP界面中
帮助-目录-RPG MakerXP-战斗计算式

看懂了 可是要怎么改?茫然啊。。。。
作者: 暗黑骑士    时间: 2011-9-30 17:01
似乎是在脚本编辑器里……

■ Game_BattleAction

话说一半都不用改。。。
作者: summer依恋    时间: 2011-9-30 17:51
暗黑骑士 发表于 2011-9-30 17:01
似乎是在脚本编辑器里……

■ Game_BattleAction

似乎。。。。。
就是不懂才来求助的嘛
作者: 各种压力的猫君    时间: 2011-9-30 22:00
就是这样,看到过一篇和我类似的帖子,不过他们给的答案我没看懂,求达人编写好,告诉我具体放在那里。自己去看神马的我也不明白,谢谢各位了^_^
就这句话我就很想扣分 = = #
Game_Battler 3 里面注释够全了,自己看着改下吧
作者: summer依恋    时间: 2011-9-30 22:06
还以为答案来了,兴奋了一下。。。。
结果。。。。
我从1到3都看了 注释也看得懂(汉字)具体怎么改不明白
作者: Wind2010    时间: 2011-9-30 22:36
LZ想改的话应该先熟悉下脚本的写法,然后了解self.*之类的是什么意思,之后想怎么写都可以了
作者: summer依恋    时间: 2011-10-1 11:24
Wind2010 发表于 2011-9-30 22:36
LZ想改的话应该先熟悉下脚本的写法,然后了解self.*之类的是什么意思,之后想怎么写都可以了 ...

哎 理解能力差 看了那脚本教程 等于没看 加上不懂E文 就更悲剧了
作者: 512195574    时间: 2011-10-1 15:44
本帖最后由 512195574 于 2011-10-1 15:45 编辑

battler3第126行,从这里改。想怎么改就怎么改
power是威力的意思
SKILL技能
我把公式改了改   
if hit_result == true
      # 计算威力
      power = skill.power + user.atk * skill.atk_f / 10#(伤害=技能威力+使用者攻击*技能攻击/10)
      if power >= 0 #(伤害大于等于0情况下)
        power -= self.pdef * skill.pdef_f / 100 #(伤害-目标物理防御*技能物理防御/100)
        power -= self.mdef * skill.mdef_f / 100#(伤害-目标魔法防御*技能魔法防御/100)
        power += (user.str * skill.str_f / 10) #(伤害+使用者力量*技能力量/100)
        power += (user.dex * skill.dex_f / 10) #都同上,只是力量编程了敏捷      
        power += (user.agi * skill.agi_f / 10)
        power += (user.int * skill.int_f / 10)
        power = [power, 0].max
      end
这样一来
最终杀伤=威力+攻击力*角色攻击力/10+技能力量*角色力量/10+技能敏捷*角色敏捷/10+技能速度*角色速度/10+技能魔力*角色魔力/10-对方的魔法防御*技能魔法防御/100-对方的物理防御*技能物理防御/100

看起来麻烦,其实很简单。


512195574于2011-10-1 16:11补充以下内容:
我一直认为授之以渔不如授之以鱼。普通攻击杀伤,Game_Battler 3的50行替换 (计算基本伤害下一行)
      atk = [attacker.atk + user.str - self.pdef ].max
      self.damage = atk * (100 + attacker.str) / 100(再把第51行删去,我的公式是我自己修改的)
还是那个  Game_Battler 3    应该是127行# 计算威力一直到计算倍率改成(首先物理技能技能请把力量和物理防御设为1 魔法技能把技能的魔力盒魔法防御设为1.要不区分不了物理还是魔法技能):
      if power > 0
        power += (attacker.atk)
        power += (user.str * skill.str_f * skill.power / 50)
        power += (user.int * skill.int_f * skill.power / 50)
        power -= (self.pdef * skill.pdef_f)
        power -= (self.mdef * skill.mdef_f)
        power = [power, 0].max
      end
结束,应该就是这样,我没测试。
作者: a93193118    时间: 2011-10-1 18:50
本帖最后由 a93193118 于 2011-10-1 18:54 编辑
512195574 发表于 2011-10-1 15:44
battler3第126行,从这里改。想怎么改就怎么改
power是威力的意思
SKILL技能


刚回家了,家里没有联网,等回学校后再仔细研究,
这可是经验啊
作者: summer依恋    时间: 2011-10-1 18:56
512195574 发表于 2011-10-1 15:44
battler3第126行,从这里改。想怎么改就怎么改
power是威力的意思
SKILL技能

十分感谢,我会仔细研究下的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1