回到主页 回到帮助中心
工具(75df)WASDX的 工具(wasdx)PVZFLJ-CT(pvzFLJ)
请记住:游戏崩溃是正常情况。如果失败了,多试几次
改版的制作根本不在于科技研究的多深,而在于特性设计的有多好。
你时间都用来研究技术了还怎么专心想设计……好的设计不是坐着就能出来的,是得花时间构思出来的。
——Ghastasaucey
最近一次更新于22-07-18(23-1-25,此页面不再更新)
目录
1 游戏文件分析
2 基础教程
2.1 贴图修改
2.2 动作修改
2.3 代码基础修改
2.4 出错研究
3 细节修改
3.1 非LS文字修改
3.2 存档路径修改
3.3 OD细节优化
4 进阶教程
4.1 修改出怪
4.2 修改出怪倍数
4.3 第六大关保存
4.3.1 冒险循环判断
4.3.2 场景修改
4.3.3 第七大关的显示问题
4.4 OD保存exe
4.5 僵尸增加防具:
4.6 反伤教程
4.7 大喷菇喷一行
4.8 坟墓随机
4.9 僵尸死后立马召唤僵尸
4.10 老虎机物品修改
4.11 选卡界面
4.11.1 卡槽背景修改
4.11.2 两个隐藏按钮
4.11.3 选卡界面出现隐藏植物
游戏文件分析
PlantvsZombies.exe是游戏主题文件,双击可以打开游戏。
Sounds是音效文件夹,注意改的时候不要忘记转码ogg
gdi42.dll是汉化字体库,(左图是英文版改动的,所以没有)英文版为内置gdi32.dll,不支持中文字符;
如果还有font文件夹,那就是汉化第二版,字符不全,但是可以手动修改(右图)
其中每组是对应:
字体3——开始游戏、戴夫、智慧树、(小游戏进场)各种大字,包括致谢名单
字体4——图鉴详细说明,关卡名称(小游戏页面),随机选卡,商店、查看草坪字符
字体5——小游戏奖杯数字“确定要退出游戏吗”
字体6——主菜单文字、图鉴首行文字
等待补充
bass.dll是音乐函数
images、particles、reanim(大多数)是贴图文件夹
properties文件夹是·部分资源文件(?)·,其中LawnStrings.txt是修改游戏大多数文本的地方
crash.txt——你游戏崩了就会生成这个
data文件夹——你别动就行了
complied——动作文件夹
默认存档目录:C:\ProgramData\PopCap Games\PlantsVsZombies\userdata
你的界面不是这样?
①没有 lawnbgm(x).mp3或者Sample (x).mp3和bass_b_2.dll,这就是纯粹原版,这些文件连同bass.dll,是修改了背景音乐的改版,同时生成debugs.txt
②有main.pak,没有compiled、data、images、particles、properties、reanim、sounds文件夹,那就需要解包,下文会有打包&解包教程。
基础教程
贴图修改
请先寻找一个叫main.pak的文件。如果没有,寻找以下几个文件,并跳过“打包&解包”这一步
然后使用链接里的工具:
打开后,界面上我们会看到打包模式和解包模式。
PAK文件:找到植物大战僵尸文件夹里的有个名字为main.pak的文件
PAK目录:就是解压出来的植物大战僵尸材质包的放置的地方(我们一般选择桌面)
接着会解压出来一个名字为PAK的文件夹,这就是植物大战僵尸材质包放置地址。
这些文件夹:(下划线的是贴图)
compiled->动作文件
data
images
particles
properties
reanim(大多数)
sounds
要替换原先的贴图(不改变名称);但是这些不是完整的,你要学会拆散。
P图软件:Photoshop,美图秀秀。
最后打包。
其实自己研究一下也就出来了。
动作修改
有点麻烦,你首先得有以下软件:
An这个软件去网上找(pj版),
备注:2020版win7用不了
后头两个在Fla三件套里,
等待补充
代码基础修改
准备工具:修改器和拦截器(修改器终结者)
学会用拦截器去拦截修改器
2种办法:推荐附加进程
首先选择MsgMonitor.exe,打开
然后“文件——附加进程”
选择进程
修改器使用时,数值的修改会拦截出来,你选择保存;但不是所有都能保存,动态数值、浮点数不可以
保存方式:先方框打勾,然后“保存写入—所有勾选的项”
这样,保存出来的程序就是了
出错研究
变量是不可以更改的,比如:阳光数值
如图情况,你可能修改了6Fxxxx区段,导致无法保存,而且游戏变大——所以不能保存这些
”但是,MGCL大佬当时做的这个让PVZ泛滥下去,最后导致了劣质改版数量增多,PVZ圈子已经覆灭。”
“请记住:不要做我做过的,我的到来就是灭亡”——Sunset
细节修改
非LS文字修改
使用工具:Hex Editor Neo(16进制编辑器)
右键Find,输入查找内容
比如:找到如图的标题文字
在左边修改16进制
存档路径修改
16进制修改器
寻找userdata,4处,修改即可,
注意:第一位必须对齐
(注意使用“Find Previous”和“Find Next”)
OD细节优化
nop dword ptr[eax]是无法输入od的,要写3个nop
进阶教程
修改出怪
电脑版修改冒险模式出怪:WPF修改器有时候不管用,
(2-5,4-5,5-10不管用,限制在5-10以内,要不然改跳转)
6A35B4\\冒险模式1-1出怪是否有普通(+CC下一种僵尸,+4下一关)
——一定注意16进制
想修改列表还得先修改以下两个地方(使用od)
[40D6A3--jmp 40D6A8]
[40D6AC--nop,nop]
69DA88\\僵尸级别(+1C下一个)
69DA94\\僵尸出现的比重(+1C下一个)
出怪依照:
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
普通
旗帜
路障
撑杆
铁桶
读报
铁门
橄榄
舞王
伴舞
鸭子
潜水
冰车
雪橇
海豚
小丑
气球
矿工
跳跳
雪人
蹦极
扶梯
投篮
巨人
小鬼
将王
豌豆
坚果
辣椒
机枪
窝瓜
高建国
红眼
倾斜字符需要你去修改js级别、比重
通用修改出怪CE模版:
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
cmp esi,僵尸id
je next
jne exit
mov [esi+edi+00054D4],al
next:
pushad
mov ecx,[6A9EC0]
mov ecx,[ecx+82C]
cmp [ecx+24],关卡数
jne exit
popad
mov al,1
mov [esi+edi+00054D4],al
jmp returnhere
exit:
mov [esi+edi+00054D4],al
jmp returnhere
"PLANTSVSZOMBIES.exe"+AB97:
jmp newmem
nop 2
returnhere:
[DISABLE]
修改出怪倍数
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
mov [esp+24],4//出怪倍数
exit:
jmp 00409968
"PlantsVsZombies.exe"+9893:
jmp newmem
nop
returnhere:
[DISABLE]
第六大关保存
冒险循环判断
452337:(16进制)
场景修改
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
cmp eax,27//关卡16进制
je exit
movzx eax,byte ptr [eax+PLANTSVSZOMBIES.exe+AAC0]
jmp returnhere
originalcode:
jmp PLANTSVSZOMBIES.exe+21EA12
exit:
mov eax,07//场景
jmp returnhere
//eax=01 白天草坪
//eax=02 黑夜草坪
//eax=03 白天泳池
//eax=04 黑夜泳池
//eax=05 白天屋顶
//eax=06 水族馆
//eax=07 黑夜屋顶
//eax=08 禅景花园mov eax.ebx
"PLANTSVSZOMBIES.exe"+A576:
jmp newmem
nop 2
returnhere:
[DISABLE]
特别地:蘑菇园可以找个空地址写入代码(总共就两行,mov 【esi+0000554C】,00000006和jmp 0040A635)
第七大关的显示问题
大关显示上限数44ac8d(主菜单)
大关游戏内显示数上限
直接放图
①
②
OD保存exe
B站专栏
等待补充
僵尸增加防具:
工具:od
用od打开这几个地址,然后在上方第一个(jmp xxx)里汇编入下面的地址,保存就可以了
523BDE 机枪、豌豆
523AAC 辣椒
52396E 高建国
523839 建国
窝瓜(?)
防具:
5228A4 铁桶
522939 铁门
522804 路障
523E4E无防具
反伤教程
CE代码如下
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
cmp dword ptr [eax+24],1A//植物
je pvza
jne exit
pvza:
pushad
mov esi,edi
push 20//血量
mov eax,0000000
call 005317c0
popad
exit:
jmp returnhere
52BC8F:
jmp newmem
returnhere:
[DISABLE]
大喷菇喷一行
地址:4680F1 的 154->FFF
坟墓随机
[ENABLE]
alloc(newmem,2048)
label(zx)
75000F:
(这里可以加判断)
pushad
zx:
mov eax,0x21
call 005AF400
cmp eax,0x19//避免出现僵王
je zx
mov dword ptr ds:[0x700004],eax
popad
zx1:
mov ebx,dword ptr ds:[0x700004]
push eax
push ebx
mov eax ,edi
call 0040DDC0
jmp 00412DE5
412DDC:
jmp 75000F
nop
nop
nop
nop
[DISABLE]
僵尸死后立马召唤僵尸
//注:会导致选卡结束后出现一部分、
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
cmp [730040],4
jnz originalcode
cmp [edi+24],#16//这里是僵尸代号
/*
僵尸种类表:
00普通 01旗帜 02路障 03撑杆 04铁桶 05读报 06铁门 07橄榄 08舞王 09伴舞 10鸭子 11潜水 12冰车 13雪橇 14海豚 15小丑 16气球 17矿工 18跳跳 19雪人 20小偷 21扶梯 22篮球 23巨人 24小鬼 25僵王 26豌豆 27坚果 28辣椒 29机枪 30窝瓜 31高坚 32红眼
*/
jnz originalcode
pushad
mov esi,#5//数量
while:
add esi,-1 //循环体,快速减一
mov eax, [edi+8]
mov bl,50 //80
div bl
movzx eax,al
push eax
mov eax,[edi+1C]
mov ecx,[6A9EC0]
mov ecx,[ecx+768]
mov ecx,[ecx+160]
push #26//召唤的僵尸
call 0042A0F0
cmp esi,0
jnz while
popad
originalcode:
mov byte ptr [edi+000000EC],01
exit:
jmp returnhere
530602:
jmp newmem
nop
nop
returnhere:
[DISABLE]
dealloc(newmem1)
530602:
mov byte ptr [edi+000000EC],01 //Alt: db C6 87 EC 00 00 00 01
老虎机物品修改
("PlantsVsZombies.exe"+8708F)前后(48708F)
mov [esp+18],00000031
mov [esp+1C],esi//0(豌豆)
mov [esp+20],00000012
mov [esp+24],00000021
mov [esp+28],00000038
mov [esp+2C],00000015
选卡界面
卡槽背景修改
CE脚本如下
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
cmp ebp,00
je SB1
cmp ebp,01
je SB2
cmp ebp,02
je SB
cmp ebp,03
je plants
cmp ebp,04
je plants1
cmp ebp,05
je plants2
cmp ebp,06
je plants3
cmp ebp,07
je plants4
cmp ebp,08
je plants5
jmp originalcode
SB1:
mov ecx,1
jmp 04877FB
SB2:
mov ecx,2
jmp 04877FB
SB:
mov ecx,3
jmp 04877FB
plants:
mov ecx,4
jmp 04877FB
plants1:
mov ecx,5
jmp 04877fb
plants2:
mov ecx,6
jmp 04877fb
plants3:
mov ecx,7
jmp 04877fb
plants4:
mov ecx,8
jmp 04877fb
plants5:
mov ecx,9
jmp 04877fb
originalcode:
cmp ebp,28
je 4877B3
exit:
jmp returnhere
48778B:
jmp newmem
returnhere:
[DISABLE] 卡槽背景修改
【补充】0是灰色
两个隐藏按钮
#如何开启Debug模式(使用后随机选择植物)
004837DA 改成je
004837B2 按钮
#让按钮<查看草坪>出现
0048397B 改成jo
00483989 改成jo
48392A 让按钮<查看草坪>出现坐标
两个隐藏按钮
选卡界面出现隐藏植物
484adb (隐藏植物系列)
484b7d
4852bf
485e00
485e6e
483e00的31改35
453bff隐藏植物出现条件
就是这些
今天先写到这里
最终,我在梦境中连日落也看不清——By Sunset