该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
BT千世劫-轮回金币
游戏的数值有的作为初始常量直接定义,有的就体现在公式了,比如这个游戏中初始金币是598,我有两大种类定义方式,一种是:
public static int a;
a = 598;
另一种是:
public int a;
public int b;
for (b=1,b< = 99,b++);
a = b*b+598;
在这种,我定义了金钱和级数相联系,a是金钱,b是级数,当级数为0的时候,金钱就是598了,当然我只是简单地举个例子而已,谁会用这么简单的呢。。。
下面说说搜金币的技巧,手机上由于BT得用BE和一个反编译的软件相结合,由于局限性有的代码会反编译错误,也就显示不出来。所以一般步骤就是先用BE的搜索功能搜索关键字“金币”或者初始值【这个结合游戏中怎么称呼吧】,然后在反编译然后搜索关键字。
在这个游戏中,我们先搜初始值598,找到了,在c.class中找到了
public static int a_int_static = 598;
到这一步,你有两个选择,改初始值或者继续下去,我们继续挖掘,搜“a_int_static”,在v.class找到了如下
case 42: // '*'
shortword16 = k1.a();
c.a_int_static+= word16; #注释c.a_int_static就只金钱的公式,可以看出来-
Strings4 = null; #注释:这里定义了一个字符串
if(word16 > 0)
s4= "获得金币:" +word16;
else
s4= "失去金币:" +Math.abs(word16); #注释:画线部分的意思是word16的绝对值【所以这个if语句只是个提示语句,并不是真正的值,你如果改这里,实际值并不会变化】
a_ao= new ao(s4);
c_byte= 5;
return;
经过我初步分析,这个应该是买东西或者干别的神马会发生金钱的加减。我没玩这个游戏,假如是商店里买东西,那意思就是,word16代表商店中东西的价格,你如果买就会减去相应钱数,若卖则加上相应钱数。如果我们在这里改金钱倍数该怎么弄呢,肯定不能直接改,因为word16有正数和负数两种可能,怎们能让它一直为正呢?这段代码给了我们提示,加绝对值,怎么加?模仿呗。。。。
打开BE,我们看见绝对值的代码是“invokestaticjava/lang/Math/abs(I)I”,所以我们就在iadd上一行加上这一句话,改完后看看反编译的结果:【如果想在这改倍数就在加绝对值上一行加上:
sipush 倍数
imul
】
case42: // '*'
short word16 =k1.a();
c.a_int_static += Math.abs(word16); #注释:看,果然对了,这下就只加不减了
String s4 = null;
if (word16 > 0)
s4 = "获得金币:" +word16;
else
s4 = "失去金币:" +Math.abs(word16);
a_ao = new ao(s4);
c_byte = 5;
return;
由于用不同反编译软件反编译变量的名称会不一样,但方法和添加的部分不用改变。所以可以记住绝对值的用法和那段字节码。