暗黑破坏神吧 关注:691,061贴子:20,862,068

回复:关于置顶IAS计算器的疑问

只看楼主收藏回复

仔细看了下,可能他的公式错误在于:把【当前帧计量数】(CurrentFrame)错误地理解为了当前的帧数计数数(Frame Ticks)


本楼含有高级字体16楼2012-10-16 18:05
回复
    首先给出正确的算法,这一点是比较简单的,大家计算后也可以用随处可见的IAS表格来检验自己的结果
    查询TXT代码可知,AMA持弓,动作代码为AMA1BOW,由动作代码继续查询TXT代码可知:起始帧计量数(StartingFrame)=0,FrameDataActionFlag=6,FramePerDirection=14,AnimationSpeed=256,且BaseRate=100,HitShift=256
    由于要计算最高速度,因此直接取IAS能达到上限,攻速增量(Speed Increase,SI)=75
    整理公式得FPA={HitShift*(FrameDataActionFlag-StartingFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
    带入数据,=向上取整(256*(6-0)/向下取整((100+75)*256/100))=4
    由于此时一个完整动作未完成,因此下一步的动作动画从下一帧开始,即公式末尾不减1
    至此,炮轰的第一击极速即4F
    然后计算后续打击,合并公式得FPA={HitShift*(FrameDataActionFlag-CurrentFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
    这里就是他犯错的位置了
    因为英文术语在此有一定的歧义,导致了他误将
    CurrentFrame认为是当前的真实帧数(即从第4帧回退50%至第2帧),因此将2带入上述公式,=向上取整(256*(6-2)/向下取整((100+75)*256/100))=3,于是我们就得到了他的错误结果,误将后续打击极速当做了3F
    但事实上,这里CurrentFrame只是当前帧的一种计量,实际意义代表了当前帧占了总目标的百分比,所以当攻速增量SI不为0时(即身上有IAS时),CurrentFrame就不等于真实当前帧了。
    此时CurrentFrame应为FrameDataActionFlag的50%即6/2=3,将3带入上述公式,=向上取整(256*(6-3)/向下取整((100+75)*256/100))=2
    同样,由于此时一个完整动作未完成,因此下一步的动作动画从下一帧开始,即公式末尾不减1,因此后续打击的第一击即炮轰的第2击,极速=2F


    本楼含有高级字体17楼2012-10-16 18:21
    收起回复