电子拐杖的制作方法


前言

War3是80/90后两代人的经典,在如今游戏佳作连年推新的年代,仍然有一批人执着于这款过时游戏,本人就是其中之一。

不过十几年前那个单纯痴迷游戏的少年早已不见踪影。现在那位中年人登上在线游戏平台,更多是为了怀旧,为了和那群同样因谋生计而奔波于全国各地务工的好兄弟们聊聊天,这已经成为了我们之间的难得的社交活动之一。

带着中年人的心态再来审视这款游戏,虽然玩家数量锐减,但它的可玩性在如今游戏市场仍然颇具竞争力。很大程度是由于暴雪当年慷慨放开游戏地图编辑器,加上无数爱好者的二度创意,催生了无数地图佳作。

不过这个游戏难度相当大,由于缺乏RTS竞技意识,官方建造对抗模式往往被简单电脑暴虐。而第三方RPG地图,又因为原作者为维持留存率刻意调高游戏难度,造成很多地图从来没被完整体验。

在经历了一次次的折磨之后,我最终求助于这款游戏的地图开发技术,在现有工具资源以及AI的帮助下,写了一个专属于我和朋友的作弊脚本,以适度降低游戏难度、更好地体验游戏乐趣。最重要的是,我基本学会了如何修改/制作地图,我再也不会受制于某平台提供的氪金地图,这种当上帝的感觉太美妙了~

本人对war3运行机制的粗浅理解

整个游戏是“引擎+脚本&资源”模式。

war3引擎:是二进制代码,十分复杂我无力干涉。但已经被广大爱好者逆向研究透彻,适合有精力搞游戏逆向的人研究。比如这个网站 https://bnetdocs.org/ 记载了war3的通讯协议,如果有精力你甚至可以自建一个好友联机对战服务。

脚本&资源:war3游戏地图(w3x格式)是一个MPQ格式的多文件压缩包,里面包括所开发地图所必需的逻辑(Jass脚本)、游戏基本参数定义(平衡参数、英雄技能数值等)、音乐/美术资源等等。其中最关键的就是Jass脚本(war3map.j),这个网站 https://jass.sourceforge.net/doc/ 提供了很全面的脚本接口定义,借助它我们可以在游戏运行时以很大的自由度控制游戏内容。

游戏运行就是引擎加载地图资源,按照地图剧本(war3map.j)来导演整场游戏。游戏预制了默认设定和资源,这样w3x可以仅储存增量部分,所以可以以很小的地图文件编写出一个丰富的游戏内容。

游戏作弊的原理

既然剧本在w3x文件里,那我们不需要去处理复杂的引擎本身,而是直接对w3x进行“解包-修改jass-重打包”即可。所以需要一个解包/打包工具,幸运的是已经有人写好了,我会放在文章末尾。

那拿到jass脚本后,究竟要作什么修改?

这要看w3x文件本身的情况,以及你的需求。最基本的作弊就是无限金钱/木材,你只需要找到游戏初始化完成的代码位置,追加两行即可:

    call AdjustPlayerStateBJ(999999,player_i,PLAYER_STATE_RESOURCE_GOLD)
    call AdjustPlayerStateBJ(999999,player_i,PLAYER_STATE_RESOURCE_LUMBER)

利用前面提到的Jass接口网站,可以做出很有创意的修改,比如输入指令为英雄添加技能等。甚至你可以亲自当导演,大刀阔斧地修改你看着不爽的游戏情节。

以上修改过程在大部分地图中都是通用的,因此可以用自动化程序来向w3x一键注入作弊代码,很幸运这也已经有人写好了,所以你只需要开发自己的作弊代码即可,交由注入工具完成脚本注入。

我所使用的是一个叫HkeW3mModifier2.0的工具,它的功能很多,其脚本注入的原理是这样(我猜的):

  1. 解包w3x后找到*.j文件,查找到globals(这是定义全局变量的区段开始标记),在其后插入触发器定义语句(g.j);
  2. 找到endglobals关键字(这是定义主要函数逻辑的区段开始标记),在其后插入主要的作弊函数代码(f.j);
  3. 找到function main关键字,在endfunction之前插入作弊代码入口函数的调用语句,以在初始化完成后执行作弊代码(m.j)。

整个过程十分优雅。但是也存在一些BUG,以下是一些坑:

  1. 注释问题:该工具遇到含有globals等关键字的注释时会误认成代码(很多地图都是这样,我猜测是地图原作者故意留的简单混淆手段,避免地图被人轻易修改。但实际上想绕开很简单——手动注入),导致注入后的jass文件语法错误,症状就是无法进入游戏。此时只好手动编辑jass,批量删除注释行再执行注入;
  2. 长字符串换行符问题:这不会导致游戏无法加载,但会导致非预期的算法逻辑。有些地图里有长的换行字符串(比如有些地图内实现的加密机制,用非标准字符作密码本),注入工具是个windows程序,它会把行尾的\n替换成\r\n,通常情况下这是无妨的。但如果有换行字符串,这个字符串刚好又是算法逻辑的重点数据,那它就破坏了原有逻辑,会导致很奇怪的行为。这个BUG很隐秘,我花了一番功夫才找到。
  3. 编码问题(?我不太确定)。这稍麻烦一点,有时会出现肉眼检查没问题但就是无法进入游戏的情况。我猜测是因为有些地图的字符串里包含非标准字符,在编辑器上肉眼看是乱码符号或者透明字符,这个注入工具在对jass解包和打包时,对有些字符处理错误导致。

获得自由的乐趣

在你学会如何改图之后,游戏体验会变得十分美妙——不再受限于原作者的高难设定,去除烦人的商业化的充值选项,完整体验游戏内容。

另一种神奇体验是,你可以探索原游戏预设范围以外的内容(以一种十分奇妙的BUG的方式),比如在单英雄剧情地图中召唤一个农民,游戏瞬间变成建造模式,又或者在地形的关键位置放置一个建筑单位以阻断道路,导致整个游戏逻辑发生巨大的、奇妙的变化。

不知道为什么我对游戏BUG十分着迷,每当发现一个能突破作者预设意图、探索到了本不该探索的内容时,我就十分兴奋。特别是在不开挂时,以作者授予的合法权限打破游戏的预设限制,真是有一种与作者斗智斗勇获胜的快感。

脚本用法、工具下载地址

使用说明:

▶ war3 作弊脚本(2025.12.15 完成版本),功能包括:

钱木、无CD、TP(也可以传送建筑单位)、P闪、
夺取单位控制权、物品复制、全图可见、英雄等级&三围设置、
召唤泉水、召唤冰龙、杀死指定单位(无视无敌)、获得所有光环


======================脚本用法==========================
>>改图工具使用步骤:
1. w3x是地图文件类型,可以去网上下载一张想玩的地图
2. 打开HkeW3mModifier2.0.exe,点击“打开地图”按钮,选择要改的地图
3. 点击“注入脚本”按钮,弹窗点击“注入到本图”按钮,提示注入成功,可关闭软件。(可观察到注入后的地图体积和修改时间会变化)
4. 将修改后的地图放置在war3的Map目录下的某个位置(例如Map/hack)
(有的地图注入脚本后无法进入游戏,很多时候是因为代码注释的干扰,这个注入器软件有BUG导致注入错误。这时继续用这个软件提取出warmap.j、查找替换"//"删除所有注释行、替换文件,即可正常游戏)
---------------------------------------------
>>这个工具做了什么?
w3x是一个压缩包,控制游戏逻辑的脚本名叫war3map.j,这是War3专用的JASS语言脚本
注入过程,就是将HkeData目录下的f.j,m.j,g.j作弊功能代码片段插入到了war3map.j中,并重新打包,得到修改后的w3x文件
这个g.j是全局定义一些变量,m.j是主函数调用语句,主要的函数实现在f.j里。
如果你有自己的想法,自己编写f/m/g文件,注入试试吧
---------------------------------------------
>>常用的工具和文档:
JassCraft: JAS脚本语法检查器,如果没有它就无法定位错误,调试会很困难。
HkeW3mModifier:这就是本改图工具,它还有地图解包功能
JASSS Tools: https://jass.sourceforge.net/doc/,这个网站是jass的API文档,涵盖了各式各样的功能接口


====================作弊指令========================
>> 默认作弊不会开启,进入地图首先需要先将某个玩家指定为admin。(开局一人先输入admin,即可获得admin指令权限,只有首次输入的人有效)
admin: 将自己设置为cheat_admin玩家(加上这个指令是因为有些地图里房主不是Player(0),不能简单地用Player(0)当管理员)

>> admin 专有指令
wcd: 取消CD及蓝量限制,对所有玩家生效
pshan: 打开p闪(p键原来是巡逻功能,这里把巡逻改为了闪烁,所以仅限生物单位),所有玩家生效
nofog: 全图可见,对所有玩家生效
gold_max: 给所有人类玩家的钱木设置为最大值
quanshui: 先选中一个单位,输入指令后,在所选单位位置生成一个生命之泉
cheat_on: 打开全部玩家作弊功能
jingyan数字: 开启经验倍率,如输入"jingyan200",击杀获得200%经验
lixi数字: 开启钱木利息,如输入"lixi50",每10s发放当前余额50%的利息
baolv数字: 开启随机刷物品,如输入"baolv50",每次击杀有50/1000的概率掉落随机物品

>> 普通玩家可用指令(admin玩家默认可用。普通玩家需要admin玩家先输入cheat_on后才可使用)
+san数字: 加三围,中间不用输入空格,对当前点选的英雄单位生效
+li数字:同上
+min数字:同上
+zhi数字:同上
+dj数字: 加等级,不用空格,对当前点选的英雄单位生效
jjw: 召唤一个人族农民
kill: 杀死选择的单位
kongzhi: 先点选一个单位,输入kongzhi获得控制权
qian: 当前钱木*2+20000
tp: 先点选一个单位,再点选一个单位,输入"tp",先选单位会位移到后选单位的位置。可传生物单位和建筑单位
copy数字1~6:复制物品。先点选一个具有物品栏的单位,输入"copy1",会在该单位脚下复制出其物品栏第一格的物品,同样可用"copy2",“copy3”,...,“copy6”等等。
guanghuan: 获得所有光环技能,以下11个(游戏内有的未显示,依然生效)
  辉煌光环,回蓝
  专注光环,护甲
  治疗守卫光环
  耐久光环,移速攻速
  荒芜光环,不死族友军生命恢复
  吸血光环
  邪恶光环,生命值移速
  荆棘光环,近战反伤
  强击光环,远程攻击力
  命令光环,攻击力
  减速光环,减速
  建筑物破坏光环


========================待办功能====================
1. 建造/升级加速
2. 解除人口上限


=====================最后要说的========================= 
为了保持活跃度,很多war3自定义地图作都会设置超高游戏难度(还会装模做样地给你一个简单难度选项),或者超肝的游戏机制,甚至有些爆肝地图诱导充值。
对于怀旧玩家们纯属娱乐的游戏初衷来说,这是很不合理的。
因此,适度开启作弊功能,可以将地图难度降到一个合理的区间。
建议保守使用,多人联机时尽量不要开启 cheat_on ,仅admin玩家开启少量关键功能即可,过度作弊会毁掉游戏乐趣。
就这样,祝你游戏愉快!

下载地址:

链接: https://pan.baidu.com/s/1Grdu310vCIkxKe56c5FSuw?pwd=e873 提取码: e873

推荐的地图下载网站:

https://www.ra216.com/ :中文地图,很全面,最推荐。 https://www.ou99.com/ :同样老牌的地图下载站 https://wc3maps.com/ :英文站,如果能接受英文游戏,这是个很棒的网站。还提供了在线地图预览功能