帝国时代3亚洲王朝只能玩家无限人口而电脑有限人口的
发布网友
发布时间:2022-09-04 22:59
我来回答
共2个回答
热心网友
时间:2024-04-25 08:22
方法一:用改文件的方法(不过电脑也会同样无限人口)
打开帝国的文件夹
找到Data文件夹目录下的
proto.xml文件,亚洲对应的是protoy.xml文件,用记事本打开
凡发现有如下代码的(可利用记事本的查找功能):
<PopulationCount>1</PopulationCount>
中间的数值1为人口数,有的是2、3等等。
要人口无限,全改成0即可。
方法二:用修改器
工具准备:金山游侠(or 其他游戏修改器),OllyDBG
首先 建一个争霸战。选发现时代。此时人口上限是10,用金山游侠在age3进程中查找10。 然后建一个房屋,人口上限编程20,继续查找。 最终锁定0x05D70054 就是本次人口上限变量所在的位置(每局位置不一样)。
好,唤出传说中的OllyDBG,附加到进程age3。给0x05D70054下内存断点。然后回到游戏。 OllyDBG很听话的弹出来了。停在0x0041B657
:0041B657 8B4254 mov eax, dword ptr [edx+54]
;dword ptr [edx+54] 存放的就是当前人口上限 20
:0041B65A 33442404 xor eax, dword ptr [esp+04]
:0041B65E 3DC8000000 cmp eax, 000000C8
;呵呵 判断 是否超过了人口上限 0xC8=200
:0041B663 0F8FD3370A00 jg 004BEE3C
;如果超过了人口上限 则跳转到 跳转1
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BEE41(U)
|
:0041B669 8B150840BC00 mov edx, dword ptr [00BC4008]
;没搞明白这几个地址干什么用的
:0041B66F 8B8A3C010000 mov ecx, dword ptr [edx+0000013C]
:0041B675 8B891C030000 mov ecx, dword ptr [ecx+0000031C]
;此时ecx的值是 0xC8
:0041B67B 3BC1 cmp eax, ecx
;很显然 和0x0041B65E 作用一样
:0041B67D 0F8F08CD1600 jg 0058838B
;如果当前人口上限 超过了 ecx(0xC8) 则跳转到 跳转2
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00588426(U)
|
:0041B683 83C408 add esp, 00000008
:0041B686 C3 ret
跳转1
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041B663(C)
|
:004BEE3C B8C8000000 mov eax, 000000C8
自己选吧!!!!!
热心网友
时间:2024-04-25 08:22
自己定义一个战役贝