末日商旅2仅仅一个30m的小游戏,自由度和系统却非常棒。昨天准备调一下金钱快速通关,但是很奇怪CheatEngine用各种办法都搜索不到内存地址,不知道是不是64位Player造成的。于是决定从SharedObject下手。
1.在C:\Users\Rain\AppData\Roaming\Macromedia\Flash Player\#SharedObjects找到相应的存档文件,用Flash SharedObject File Reader打开,发现核心数据是ByteArray。
2.没办法,反编译游戏文件,发现存档关键处理是:
_loc_10 = new ByteArray();
_loc_10.writeObject(_loc_1);
_loc_10.compress("zlib");
return _loc_10;
3.那么处理方法也很简单了:
var so:SharedObject = SharedObject.getLocal("savedData");
var saveBA:ByteArray = so.data.saves[1].save;
saveBA.uncompress();
var save:Object = saveBA.readObject();
save.Caravans[0].money = 99999999;
saveBA.writeObject(save)
saveBA.compress();
so.flush();
2015-06-28更新
准备把之前写的末日商旅2存档修改器加工一下。思路是这样:将sol文件复制到自身SharedObject文件夹,然后用SharedObject.getlocal打开存档,修改存档数据,然后再将文件copy回去。
实际操作中发现,SharedObject文件是不可以改名的。改名之后data将无法阅读。神奇= =
另外,在Air应用开启过程中,不再读取SO文件,所以在玩游戏的时候,修改存档文件是没有意义的。
编辑器地址:https://pan.baidu.com/s/1i3lHllF