War3 1.20e修改器V3.04by大象。rar怎么用?

新功能-英雄可以晋升到10W级别。

它需要在地图加载前打开。所有英雄都可以升级到10W,不考虑地图定义的英雄等级。

此外,1游戏因CE脚本对label标签的处理导致的崩溃被修复。

由于你可以改变英雄等级限制,你实际上可以随意设置平衡常数。我就是想不出有什么可以改变的。

关于标签标签的问题。

这个问题隐藏的太深了,我之前一直不明白原因。

比如有1个脚本。很普通的应用内存+跳转

globalalloc(myhook_install,0x3000)

标签(xmyhook_install)

game.dll+4dd90:

jmp myhook_install

not otherwise provided 除非另有规定

xmyhook_install:

myhook_install:

Xxxxxx(略)

jmp xmyhook_install

一般这样写不会有问题。但魔兽里没有。

Game.dll+4dd90这里的代码是随时调用的代码。用来记录游戏经过的时间。单位毫秒。

换句话说,这段代码的执行频率已经达到了毫秒级,1秒1千次。

有什么问题?

问题是脚本在跳转之后写代码之前修改了跳转。

跳转改变后立即执行代码,但此时跳转的地方没有写对应的代码!

于是出现了这个错误提示:

“xxxxx”(这里是myhook_install的地址)引用的内存“00000012”无法“读取”。

Myhook_install这里的代码怎么变成12了?

但是我看内存的时候发现这里的代码不是12,而是脚本定义的代码。

但是这里的错误信息是12。

这个12是哪里来的?

唯一的可能就是CE在写代码之前在这里做了一个类似12的标记。

修改跳转后,我发现了这个标签,把它改成了脚本的代码。

12在这里可能代表代码的长度。

所以不要用label标签跳转到执行频率高的代码。

相反,您应该手动编写反弹地址。

上面的脚本是这样写的,所以没有问题。

myhook_install:

xxxxxx

jmp game.dll+4dd96

game.dll+4dd90:

jmp myhook_install

not otherwise provided 除非另有规定

注意顺序,先写代码,再修改跳转。

确保您跳转到的代码是正确的。