一、基本配备
需要的工具是文件16进制编辑软件或者说磁盘编辑软件,比如Winhex,我们的目的是对用户数据记录文件进行编辑,因此需要找到用户记录文件。98/ME/XP下比较好找,储存在Plants vs. Zombies/userdata/文件夹下。VISTA/WIN7位置比较难找,在C:/Programme Files/Popcap/文件夹下面的一个什么子文件夹里面,在系统盘搜索Popcap应该会比较容易找到。
用户记录文件有N+1个,N个用户就有N个user?.dat的文件,?代表数字,对应用户列表。最后剩下的users.dat则存放了用户列表和用户名称。
二、数据修改
用Winhex打开对应文件,以user1.dat为例。
这个文件至少含有820个字节,在后面的叙述中,文件的第一个字节对应的字节号是0,那么第800个字节对应的字节号就应该是799,小学生的算术题而已。以下是数据所代表的意义:
记录文件user?.dat
---------------------------------------------
字节(Dec) 长度(Dec) 说明(Hex)
---------- 基本数据 ----------------------
00 4 不明(定值0C)
04 4 Adventure 当前关(01-32)
08 4 金钱
12 4 Adventure 完成次数
---------- Survival 数据 ----------------
16 4 Survival 01 已完成(00-05)Flags
20 4 Survival 02 已完成(00-05)Flags
24 4 Survival 03 已完成(00-05)Flags
28 4 Survival 04 已完成(00-05)Flags
32 4 Survival 05 已完成(00-05)Flags
36 4 Survival 06 (Hard) 已完成(00-0A)Flags
40 4 Survival 07 (Hard) 已完成(00-0A)Flags
44 4 Survival 08 (Hard) 已完成(00-0A)Flags
48 4 Survival 09 (Hard) 已完成(00-0A)Flags
52 4 Survival 10 (Hard) 已完成(00-0A)Flags
64 4 Survival:Endless 最高记录
---------- Mini Game 数据 --------------
76 4 Mini Game 01 完成次数
80 4 Mini Game 02 完成次数
84 4 Mini Game 03 完成次数
88 4 Mini Game 04 完成次数
92 4 Mini Game 05 完成次数
96 4 Mini Game 06 完成次数
100 4 Mini Game 07 完成次数
104 4 Mini Game 08 完成次数
108 4 Mini Game 09 完成次数
112 4 Mini Game 10 完成次数
116 4 Mini Game 11 完成次数
120 4 Mini Game 12 完成次数
124 4 Mini Game 13 完成次数
128 4 Mini Game 14 完成次数
132 4 Mini Game 15 完成次数
136 4 Mini Game 16 完成次数
140 4 Mini Game 17 完成次数
144 4 Mini Game 18 完成次数
148 4 Mini Game 19 完成次数
152 4 Mini Game 20 完成次数
---------- The Tree of Wisdom 数据 ---------------
212 4 The Tree of Wisdom 生长/高度
---------- Puzzle 数据I: Vasebreaker -----------
216 4 Puzzle:Vasebreaker 01 完成次数
220 4 Puzzle:Vasebreaker 02 完成次数
224 4 Puzzle:Vasebreaker 03 完成次数
228 4 Puzzle:Vasebreaker 04 完成次数
232 4 Puzzle:Vasebreaker 05 完成次数
236 4 Puzzle:Vasebreaker 06 完成次数
240 4 Puzzle:Vasebreaker 07 完成次数
244 4 Puzzle:Vasebreaker 08 完成次数
248 4 Puzzle:Vasebreaker 09 完成次数
252 4 Puzzle:Vasebreaker:Endless 最高记录
---------- Puzzle 数据II: I,Zombie ---------------
256 4 Puzzle:I,Zombie 01 完成次数
260 4 Puzzle:I,Zombie 02 完成次数
264 4 Puzzle:I,Zombie 03 完成次数
268 4 Puzzle:I,Zombie 04 完成次数
272 4 Puzzle:I,Zombie 05 完成次数
276 4 Puzzle:I,Zombie 06 完成次数
280 4 Puzzle:I,Zombie 07 完成次数
284 4 Puzzle:I,Zombie 08 完成次数
288 4 Puzzle:I,Zombie 09 完成次数
292 4 Puzzle:I,Zombie:Endless 最高记录
SHOP 出售数据
416 4 Gatling Pea 升级卡片已购买(00-01)
420 4 Twin Sunflower 升级卡片已购买(00-01)
424 4 Gloom-shroom 升级卡片已购买(00-01)
428 4 Cattail 升级卡片已购买(00-01)
432 4 Winter Melon 升级卡片已购买(00-01)
436 4 Gold Magnet 升级卡片已购买(00-01)
440 4 Spikerock 升级卡片已购买(00-01)
444 4 Cob Cannon 升级卡片已购买(00-01)
448 4 Imitater 卡片已购买
456 4 Marigold Sprout I 已购买(2000.1.1至今天数,2000.1.1为0)日期
460 4 Marigold Sprout II 已购买(2000.1.1至今天数,2000.1.1为0)日期
464 4 Marigold Sprout III 已购买(2000.1.1至今天数,2000.1.1为0)日期
468 4 Golden Watering Can 升级已购买(00-01)
472 4 Fertilizer 已购买(03E8-03FC,未开启为0000)剩余
476 4 Bug Spray 已购买(03E8-03FC,未开启为0000)剩余
480 4 Phonograph 升级已购买(00-01)
484 4 Gardening Glove 升级已购买(00-01)
488 4 Mushroom Garden 已购买(00-01)
492 4 Aquarium Garden 已购买(00-01)
496 4 Snail 已购买(4字节,未明,状态相关)
500 4 Seed Slot 已升级(00-04)
504 4 Pool Cleaners 升级已购买(00-01)
508 4 Roof Cleaners 升级已购买(00-01)
512 4 Roof Rake 已购买(00-03)剩余
520 4 Chocolate 已获得(03E8-03FC,未开启为0000)剩余
524 4 The Tree of Wisdom 已购买(00-01)
528 4 Tree Food 已购买(03E8-03FC,未开启为0000)剩余
532 4 Wall-nut First Aid 升级已购买(00-01)
---------- 其他数据 ----------------------
748 4 未知(00-01)
752 12 未知,可能与 The Tree of Wisdom 有关
768 4 Mini Game 开启提示标记(00-01)
788 4 Survival 开启提示标记(00-01)
796 4 Adventure 完成提示标记(00-01)
---------- Zen Garden 数据 -----------
816 4 Zen Garden 模式拥有花总数
820字节开始是 Zen Garden 模式下花的具体数据,每个花需要88字节
0字节就不用改了,第8字节开始的4个字节记录的是你的金钱。这是个16进制的数据,比如你看到显示的值是FE 03 00 00,你读的时候要读成(Hex)000003FE,换算成十进制就是(Dec)1022。这里的1代表游戏中10的钱(最小的单位,一个银币是10)。也就是说1022表示你还有10220的余额。剩下的每个数都是如此。当然你要熟悉16进制的内容和文件的数据记录顺序才能看得懂以上内容。
有些数据,如巧克力的剩余量,由520字节开始的4个字节存储。在你还没有巧克力时,这个值是00 00 00 00,当你拾取第一个时,数据变成E9 03 00 00,就是十进制的1001。以后你用完巧克力,这个值最低也只降到E8 03 00 00,也就是十进制的1000。这要注意。还有些开关变量数据,都是布尔型的,只要设成1就OK。 还有一些Mini Game的数据,从文件中可以看到,当你第二次,第三次完成某一关卡时,这个数据会更新的,尽管从游戏中我们看不出任何不同。 游戏中植物卡片和道具如SHOP钥匙、图鉴的获得是ADVENTURE当前关卡有关,是自动获得的。最后要说Zen Garden的花的数据。 一个花需要88字节。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 (00)00 00 00(00)00 00 00 (00)00 00 00(00)00 00 00
16 (00)00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00
32 (00)00 00 00(00)00 00 00 00 00 00 00 00 00 00 00
48 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00
64 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
80 00 00 00 00 00 00 00 00
关注第 0 4 8 12 32 36 字节,也就是有括号的那些。
0字节代表花的主类型,32字节代表花的亚类型,就是Marigold的颜色。
TYPE(B1:L1) TYPE(VISI) TYPE(VISI,CN) SUBTYPE(B33:L1) SUBTYPE(VISI)
00(Hex) Peashooter 豌豆炮
01(Hex) Sunflower 太阳花
02(Hex) Cherry Bomb 樱桃炸弹
03(Hex) Wall-nut 小坚果
04(Hex) Potato Mine 地雷
05(Hex) Snow Pea 冰冻豌豆炮
06(Hex) Chomper 食人花
07(Hex) Repeater 连发豌豆炮
08(Hex) Puff-shroom 紫矮蘑菇
09(Hex) Sun-shroom 太阳蘑菇
0A(Hex) Fume-shroom 毒气蘑菇
0B(Hex) Grave Buster 坟墓杀手
0C(Hex) Hypno-shroom 迷乱蘑菇
0D(Hex) Scaredy-shroom 畏缩的蘑菇
0E(Hex) Ice-shroom 冰冻蘑菇
0F(Hex) Doom-shroom 末日蘑菇
10(Hex) Lily Pad 荷叶
11(Hex) Squash 跳瓜
12(Hex) Threepeater 三联豌豆炮
13(Hex) Tangle Kelp 海带
14(Hex) Jalapeno 辣椒
15(Hex) Spikeweed 棘刺草
16(Hex) Torchwood 燃烧的木桩
17(Hex) Tall-nut 大坚果
18(Hex) Sea-shroom 水生蘑菇
19(Hex) Plantern 灯
1A(Hex) Cactus 仙人掌
1B(Hex) Blover 三叶草
1C(Hex) Split Pea 双向豌豆炮
1D(Hex) Starfruit 星果
1E(Hex) Pumpkin 南瓜
1F(Hex) Magnet-shroom 磁力蘑菇
20(Hex) Cabbage-pult 卷心菜
21(Hex) Flower Pot 花盆
22(Hex) Kernel-pult 玉米
23(Hex) Coffee Bean 咖啡豆
24(Hex) Garlic 大蒜
25(Hex) Umbrella Leaf 遮蔽叶
26(Hex) Marigold 万寿菊
27(Hex) Melon-pult 西瓜
28(Hex) Gatling Pea 机枪豌豆炮
29(Hex) Twin Sunflower 孪生太阳花
2A(Hex) Gloom-shroom 爆毒蘑菇
2B(Hex) Cattail 猫尾花
2C(Hex) Winter Melon 冰冻西瓜
2D(Hex) Gold Magnet 金磁草
2E(Hex) Spikerock 石化棘刺
2F(Hex) Cob Cannon 玉米大炮
30(Hex) Imitater 拟形种子
31(Hex) Explode-o-nut 炸弹坚果
32(Hex) Gaint Wall-nut 巨型坚果
33(Hex) Sprout 花苗
而Marigold花的颜色
00(Hex) 白
01(Hex) #(无色)
02(Hex) 白
03(Hex) 品红
04(Hex) 橙
05(Hex) 浅红
06(Hex) 天青
07(Hex) 红
08(Hex) 蓝
09(Hex) 紫
0A(Hex) 浅紫
0B(Hex) 黄
0C(Hex) 浅绿
虽然此字节值为00和01是不会出错的,但是正常游戏都从02开始到0C的值,一共11种颜色。除了Marigold的花,这个值一律是0。
4字节的数据是花所在的花园。00是第一个花园,01是蘑菇园,02是水族馆。
8字节指的是位置。在蘑菇园和水族馆中,这个字节就代表了位置,大家可以尝试下每个值对应游戏中显示的位置。而在第一个花园里,这个字节和第12字节共同组成Grid坐标。左上是00,00,右下是07,03,一共8*3=32个格子。
36字节指的是花的状态。00表示幼苗,01是刚成长,02是第二次长大,03是最大。
最后那些标记成FF的区域,一共有3个,对此机制不明,只知道这个数据与浇花、施肥、长大、和满足的具体时间有关。这个数据的不当修改会导致花永远无法长大或者高兴。所以这个值照抄其他正常花就可以了。