记一次魔兽争霸战役汉化

0x00.对象

本次汉化的对是基于魔兽争霸3重制版制作的魔兽争霸2黑暗之潮战役,该战役由Tamplier777等人发布在蜂房

0x01.安装

使用天下正义制作的淬火mod完成该战役mod的安装。

安装完成后打开魔兽争霸3重制版根目录定位战役文件。

X:\Warcraft III\_retail_\Campaign\Custom9

目录下的c0~c4分别为战役4个章节的对印文件。

0x02.w3x文件分析

使用HkeW3mModifier(俗称火龙,以下简称火龙)打开w3x文件。

操作顺序“打开地→分析文件”,通过 filelist.txt(该文件位于火龙根目录下HkeData文件夹内) 获取w3x文件内文件结构。

w3x其本质为mpq文件,mpq文件是一种压缩文件,mpq文件通过内部自带的filelist来进行文件读取,如果mpq文件内没有filelist,那么便无法读取到mpq的内部文件,简言之就是如果mpq文件内的filelist被删除,那么我们便不知道mpq到底压缩了哪些文件。

filelist通过各种手段进行隐藏或修改,而且不同地图作者导入地图的路径各不相同,所以对filelist文件进行删除或加密是一种常见的mpq文件加密方式。

本次汉化的第一章文件c1.w3x内部包含的filelist仅有部分地图数据,如.wts等文件,其余的素材路径均不可见,常见的文件类型及其功能对印如下:

war3map.wts 字符串,所有外文文本的原始存放位置
war3map.j   jass数据库,剧情、任务文本(在根目录下或在/scrtips目录下)
war3map.w3u单位名字,描述等
war3map.w3t 物品名字,描述等
war3map.w3a 技能名字,描述、学习提示等
war3map.w3h 魔法特效名字,描述等
war3map.w3q升级名字,描述等
war3map.w3b 可破坏物的名字,描述等。如:箱子
war3map.w3d 装饰物的名字,描述等。如:民房
war3map.w3i 地图信息,基本介绍
war3mapSkin.txt  界面,系统提示信息

本次汉化中,大量的任务文本在.wts文件中,使用ultraEdit打开wts文件,如旁白字幕,人物对话,物品介绍,提示等。常见的例如:

string 595第595个字符串
unit该字符串用于单位
ubertip鼠标悬浮扩展提示内容,{}符号内就是扩展内容
description描述
tip提示,将鼠标放在物品上,显示的名字
|n换行
|c????????|r 表示该字符串使用的颜色
Buffs/Effects:buff或者效果

部分触发类的对话文本存在于.j文件中,常见的对印关系例如:

DisplayTimedTextToForce给所有玩家的屏幕文字(指定计时)
CreateTextTagLocBJ地形的漂浮文字
DisplayTextToForce给单个玩家的屏幕文字(自动计时)
CreateTextTagUnitBJ单位的漂浮文字
DialogSetMessageBJ菜单文字
CreateQuestBJF9文本
Multiboard右上角多面板文字
SetDialogueTextKey设置对话内容

将wts和j文件完成汉化后,还有少量文本存在于war3mapskin.txt文件中,补充翻译完即可。

0x03.载入背景修改

魔兽争霸地图载入通常为mdx模型,模型作为素材,其路径在filelist中通常被删除,本次汉化也不例外,通过上面的对印列表可知,地图信息通常在w3i文件中,使用ultraEdit打开w3i文件,发现:

其中,每个trigStr均代表地图在载入过程中调用的触发器,通过wts文件发现这些触发器分别代表了作者的名字,而UI/GLUES…..mdx这个路径则代表了载入背景的模型。

我们将这一串路径复制到火龙的filelist的中,重新使用火龙解析w3x文件,并没有发现该文件的存在,说明该路径有误,我们重新查阅wts和j文件中部分触发器和功能对素材资源的调用,发现大量贴图和模型文件的路径均省略了根目录的全局变量,该变量为_hd.w3mod。

将该路径添加到UI/GLUES前,重新添加到filelist中,解析w3x文件,成功获得载入背景的mdx文件,然而该mdx文件预览后什么也没有,且文件大小2kb,说明其中并没有模型文件。

将获得的mdx文件用ultraEdit打开,发现其中包含了一张dds文件路径,该dds文件才有可能是载入背景的图片,同样其路径有省略,添加全局变量_hd.w3mod后使用火龙重新解析文件,获得该dds文件。

前往Photoshop的dds插件下载地址下载对应的dds插件,即可用PS编辑dds文件,编辑完成后使用火龙替换进w3x文件即可完成载入背景的汉化。

0x04.参考

  1. MPQ加密介绍_改图教学
  2. [经验向]ps的dds插件下载安装
  3. mpq加密和破解的一些方法