角色动作帧数相关原理及修改
使用animdata_edit工具,解析animdata.d2为animdata.txt文件游戏中的动作基本都是按照下边的公式来计算的。一些特殊动作可能稍有不同,但基本也都一致。
FPA={HitShift*FramePerDirection/[(BaseRate+SI)*AnimationSpeed/100]}-1
名词解释
FPA 每次动作的帧数
HitShift 攻击精度参数,数值固定为256
FramePerDirection 在每个方向上的动作长度(基础帧数)
BaseRate 基础速率,数值取决于动作类型,大部分情况数值为100
SI 速度增量
AnimationSpeed 动作速度
注意事项
1. FramePerDirection通常随武器及动作类型取值于Animdata.D2,其中武器类型在weapons.txt中定义,动作类型在skills.txt中定义。唯一特殊的是拥有顺序动作的技能,它的FramePerDirection由D2Common.dll定义。
2. AnimationSpeed通常随武器及动作类型取值于Animdata.D2。唯一特殊的是拥有顺序动作的技能,它的AnimationSpeed同Get Hit(GH)动作类型。
3. Animdata.D2文件存放于D2exp.mpq文件中的data/global文件夹下。
4. BaseRate为基础速率,取决于动作类型。绝大多数动作类型BaseRate=100。格档和打击回复=50。另有一小部分技能例外。
5. SI=Speed Increase,速度增量。
当动作为攻击动作时,数值为SI=EIAS+SIAS-WSM。其中
EIAS=[(120*IAS)/(120+IAS)]
SIAS为各种技能的加速或减速效果,例如狂热灵气,速度爆发,衰老,圣冰减速等。
WSM为武器的基础速度。
当动作为施法动作时,SI=EFCR=[(120*FCR)/(120+FCR)]
当动作为格挡动作时,SI=EFBR=[(120*FBR)/(120+FBR)]。如果开启了神圣之盾技能,则SI再加50.
当动作为打击恢复动作时,SI=EFHR=[(120*FHR)/(120+FHR)]
6. BaseRate+SI最大值为175(所以攻击速度有上限),最小值为BaseRate*15%
7. []为向下取整,{}为向上取整。
具体原理可参考攻击速度计算全解析。
动作代码定义方法
可以看出,主要的未知参数便是FramePerDirection和AnimationSpeed两项。这两项通常存放于Animdata.D2文件中。查找时需要依据具体的动作来查询。
每个动作在该文件中均有一个名称,该名称主要由三部分组成:角色或怪物类型,动作类型,武器类型。
举例来讲吧。比如我想查询法师的打击恢复动作参数。
首先角色代码,查询得知,Sorceress对应代码为SO
然后是动作类型,打击恢复动作类型代码为GH
最后是武器类型,SOR拿单手Orb的时候,武器代码为1HS
综上可知,拿Orb的法师打击恢复动作对应代码为SOGH1HS.
角色类型代码见下表。怪物类型代码存放于Monstats.txt文件中。
───────
角色职业代码
───────
Amazon AM
SorceressSO
Necroman NE
Paladin PA
Barbaria BA
Druid DZ
Assassin AI
───────
NEC-Vamp VA
WereWolf 40
WereBear TG
ACT1-Rog RG
ACT2-Des GU
ACT3-Eas IW
ACT5-Bar 0A
───────
动作类型代码见下表。
──────────
名称 代码
──────────
Death DT
Neutral NU
Walk WL
Run RN
Get Hit GH
Town Neutral TN
Town Walk TW
Attack1 A1
Attack2 A2
Block BL
Cast SC
Throw TH
Kick KK
Skill1 S1
Skill2 S2
Skill3 S3
Skill4 S4
Dead DD
Sequence SQ
Knock back KB
──────────
武器类型代码见下表。怪物的武器类型代码存放于Monstats2.txt中
────────────────────────────────────
武器代码 含义
────────────────────────────────────
1HS 单手挥击武器-除1HT和HT1外的单手武器(包括throwing axes)
1HT 单手戳刺武器-daggers,javelins,throwing knives,potions
2HS 双手挥击武器-所有双手剑(野蛮人单手用时为1hs)
2HT 双手戳刺武器-spears
STF 除2HS和2HT外的双手武器
BOW 弓
XBW 弩
HT1 爪
HT2 双手持爪
HTH 空手
1JS Left Jab Right Swing
1JT Left Jab Right Thrust
1SS Left Swing Right Swing
1ST Left Swing Right Thrust
────────────────────────────────────上文中介绍动作均存放于Animdata.D2文件中。因为该文件是二进制文件,无法读取,故需要使用特定工具来把它转化为文本格式文件。
一般情况下使用Animdata.d2_editor软件
可以看出,Animdata.D2文件已经存放在该文件夹中。运行Extract.bat文件,便可把它转化为文本文件:AnimData.txt文件。
使用办公软件Microsoft Excel,或者专业查看均可打开。
第一列CofName便是动作类型代码了。后边对应的两个参数便是我们需要查询的参数。
修改动作长度
如果你想修改某个动作的动作长度,修改该动作对应的FramePerDirection和AnimationSpeed两个参数即可。修改完毕保存后,退出D2excel软件,再次进入Animdata.d2_editor软件的文件夹,运行Pack.bat文件即可重新生成Animdata.D2文件。
将生成的Animdata.D2文件放入data/global文件夹下,然后将data文件夹放入游戏目录下,游戏快捷方式挂上参数 -direct进入游戏,便调用了新生成的Animdata.D2文件,你之前所做的修改生效了。
页:
[1]