符号链接文件 - Arathi/W3Objects GitHub Wiki
Symbolic Link,简称SYLK或者SLK,一种数据文件格式,逻辑上是一个二维表。《魔兽争霸III》在mpq包中对单位、技能等物体信息的描述使用了这种格式的文件。
SLK文件是文本格式的,总体上由4个部分构成: ##头部## 文件的第一行,一般是"ID;PWXL;N;E",这个部分是文件头,似乎没有别的什么规定,目前的判定准则是,第一字符为"I"。
##属性## 文件的第二行,首个字符是"B",说明了SLK表的行数与列数。
属性行的格式一般是:B;X<列数>;Y<行数>;D0。
例如:B;X35;Y274;D0,代表该表有35列274行。
##值表##
文件第三行以后,直到倒数第二行,存放了SLK表的值,以及这个值的(x,y)坐标,首字符为"C"。格式一般是:C;X<x坐标>;Y<y坐标>;K<值>。
需要注意的是:
- x坐标的取值是(1, 列数]
- y坐标的取值是(1, 行数]
- 值如果第一个字符和最后一个字符为'"',则这个值是字符串
- x坐标和y坐标其中一个可以省略,未设置则代表使用上一次设置的值
例如:C;X1;Y1;K"itemID",代表该表的第一行第一列的值为字符串itemID。
##结尾 结尾哪一行,只有一个字符"E"
##《魔兽争霸III:冰封王座》的部分slk文件存放数据内容一览
存放各个单位的技能相关数据。
重要字段:
- alias 该技能数据的别名(相对于__code__而言)
- code 该技能在程序内部执行的代码原型的索引
- hero / item 说明是英雄技能或者是物品技能
- levels 等级数
- Cast 技能施法时间
- Dur 对于普通单位有效时间
- HeroDur 对于英雄有效地时间
- Cost 法力值消耗
- Area 有效范围(AOE)
- Rng 施法距离
- Data* 技能不固定数据
- UnitID* 召唤出的单位类型
- BuffID* 产生的Buff的类型
- EfctID* 产生特效的类型
对slk和txt中每个技能数据(例如DataA1)的意义进行解释。
重要字段:
- ID 在WE中看到的简略写法
- field 在slk中的字段名或者txt中的属性名称
- slk 表示在哪个slk文件中,如果为profile,则在txt中
- index 表示在第几项,一般是txt中一个属性存放多个值的情况使用
- repeat 重复次数,一般是有不同等级的物体(比如英雄技能)的信息,等于等级数量
-
data 数据编号,从1开始对应
DataA*,最大值是9,对应DataI* - displayName 显示出来的名字(只是变量名,值在UI/WorldEditStrings.txt中)
暂无
暂无
物品信息表。
平衡常数元数据,WE里有个平衡常数编辑器,里面显示出来的各项属性,也是通过这个表,去WorldEditStrings.txt获取的。
单位技能表,存放单位拥有的技能信息。
重要字段:
- unitAbilID 单位编号(主键)
- auto 自动施放
- abilList 普通技能表
- heroAbilList 英雄技能表
单位平衡数值表,存放单位的各项影响平衡的属性。
unitBalanceID字段用于存放单位的编号。
单位数据,一些无关紧要的数据,比如死亡时间、死亡类型、移动方式等。
主索引:unitID。
单位元数据。类似AbilityMetaData,存放了单位的各项属性的解释。
单位武器信息表。
暂无
暂无
暂无
单位用户界面表。存放单位显示出来的样子相关的信息。