符号链接文件 - 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文件存放数据内容一览

AbilityData.slk

存放各个单位的技能相关数据。

重要字段:

  • alias 该技能数据的别名(相对于__code__而言)
  • code 该技能在程序内部执行的代码原型的索引
  • hero / item 说明是英雄技能或者是物品技能
  • levels 等级数
  • Cast 技能施法时间
  • Dur 对于普通单位有效时间
  • HeroDur 对于英雄有效地时间
  • Cost 法力值消耗
  • Area 有效范围(AOE)
  • Rng 施法距离
  • Data* 技能不固定数据
  • UnitID* 召唤出的单位类型
  • BuffID* 产生的Buff的类型
  • EfctID* 产生特效的类型

AbilityMetaData.slk

对slk和txt中每个技能数据(例如DataA1)的意义进行解释。

重要字段:

  • ID 在WE中看到的简略写法
  • field 在slk中的字段名或者txt中的属性名称
  • slk 表示在哪个slk文件中,如果为profile,则在txt中
  • index 表示在第几项,一般是txt中一个属性存放多个值的情况使用
  • repeat 重复次数,一般是有不同等级的物体(比如英雄技能)的信息,等于等级数量
  • data 数据编号,从1开始对应DataA*,最大值是9,对应DataI*
  • displayName 显示出来的名字(只是变量名,值在UI/WorldEditStrings.txt中)

DestructableData.slk

暂无

DestructableMetaData.slk

暂无

ItemData.slk

物品信息表。

MiscMetaData.slk

平衡常数元数据,WE里有个平衡常数编辑器,里面显示出来的各项属性,也是通过这个表,去WorldEditStrings.txt获取的。

UnitAbilities.slk

单位技能表,存放单位拥有的技能信息。

重要字段:

  • unitAbilID 单位编号(主键)
  • auto 自动施放
  • abilList 普通技能表
  • heroAbilList 英雄技能表

UnitBalance.slk

单位平衡数值表,存放单位的各项影响平衡的属性。

unitBalanceID字段用于存放单位的编号。

UnitData.slk

单位数据,一些无关紧要的数据,比如死亡时间、死亡类型、移动方式等。

主索引:unitID。

UnitMetaData.slk

单位元数据。类似AbilityMetaData,存放了单位的各项属性的解释。

UnitWeapons.slk

单位武器信息表。

UpgradeData.slk

暂无

UpgradeEffectMetaData.slk

暂无

UpgradeMetaData.slk

暂无

unitUI.slk

单位用户界面表。存放单位显示出来的样子相关的信息。

⚠️ **GitHub.com Fallback** ⚠️