• 4796阅读
  • 2回复

角色动作帧数相关原理及修改 [复制链接]

上一主题 下一主题
离线铃铛
 

发帖
59624
金钱
6311
91币
0
信誉
0
资产
0 IST
在线时间
3431 小时
注册时间
2009-08-31
最后登录
2021-02-27
只看楼主 倒序阅读 使用道具 楼主  发表于: 2010-12-08 13:10:11
角色动作帧数相关原理及修改[感谢悄然花开的资料]
相关原理

游戏中的动作基本都是按照下边的公式来计算的。一些特殊动作可能稍有不同,但基本也都一致。
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
Sorceress  SO
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
────────────────────────────────────
[ 此贴被铃铛在2010-12-08 13:21重新编辑 ]
离线铃铛

发帖
59624
金钱
6311
91币
0
信誉
0
资产
0 IST
在线时间
3431 小时
注册时间
2009-08-31
最后登录
2021-02-27
只看该作者 沙发  发表于: 2010-12-08 13:11:04
上文中介绍动作均存放于Animdata.D2文件中。因为该文件是二进制文件,无法读取,故需要使用特定工具来把它转化为文本格式文件。一般情况下使用Animdata.d2_editor软件  →   animdata.d2_editor.zip (44 K) 下载次数:65  (43.44 KB) 

下载该软件并解压即可使用,如下图所示。

 

可以看出,Animdata.D2文件已经存放在该文件夹中。运行Extract.bat文件,便可把它转化为文本文件:AnimData.txt文件。

 

使用办公软件Microsoft Excel,或者专业查看D2txt文件的软件[url= D2Excel v1[1][1].0.rar (176 K) 下载次数:11 ]D2excel[/url]均可打开,如下图所示。



第一列CofName便是动作类型代码了。后边对应的两个参数便是我们需要查询的参数。

修改动作长度
如果你想修改某个动作的动作长度,修改该动作对应的FramePerDirection和AnimationSpeed两个参数即可。修改完毕保存后,退出D2excel软件,再次进入Animdata.d2_editor软件的文件夹,运行Pack.bat文件即可重新生成Animdata.D2文件。

 

将生成的Animdata.D2文件放入data/global文件夹下,然后将data文件夹放入游戏目录下,游戏快捷方式挂上参数 -direct进入游戏,便调用了新生成的Animdata.D2文件,你之前所做的修改生效了。

[ 此贴被铃铛在2010-12-08 13:24重新编辑 ]
离线ldcz2005
发帖
836
金钱
22975
91币
1
信誉
0
资产
0 IST
在线时间
1136 小时
注册时间
2010-07-08
最后登录
2024-04-23
只看该作者 板凳  发表于: 2022-11-26 23:06:34
顶一下
[ 此帖被ldcz2005在2022-12-10 22:30重新编辑 ]
快速回复
限100 字节
 
上一个 下一个