从博客迁移的过程中翻出来的文章
说不准有人要用。
- - - - - - - - - 正 文 - - - - - - - - -
本文将简单阐述如何让自己的本土省份变得可以劫掠。
首先,我们先来看看在本土掠夺有什么阻碍。
第一,我们是点不了掠夺这个按钮的—会提示这不是占领而是本土省份。
与这个按钮相关的类笔者已经找好了,在Menu_InGame_Build$27。
切换到getClickable(获取可点击元素)方法,在末尾return x(这里x是寄存器,例如v0/v1)前添加 const x,0x1即可。这里牵扯到smali对于布尔值(这种数据类型只有true/false/null,可以称之为编程中的二极管)的处理:true变为1,false变为0。所以,这里我们实际上是让这个方法永远返回true。
现在进入游戏,你应该会发现原本点下去没有效果的掠夺按钮(在省份的更多里)现在会出现掠夺菜单了!不过,点下掠夺仍然不会让掠夺发生。
再跳转到DiplomacyManager类,我们会发现有两个方法:plunder和plunderProvince。我们都需要进行更改。
先说plunder。
跳转到这个方法,我们可以看到开头出现了一个if语句。
如果这个if语句判断为false,就不会执行掠夺相关的语句。
直接修改寄存器过于困难(之后的代码还需要用到这个参数,如果贸然修改可能出现各类问题),因此我们这里选择goto跳转。
找到if-eqz后面的cond标签(例如:cond_a),记住它。
找到这一个cond标签,在它上一行(如果已经有指令了就添加)输入:goto_x(x可自行替换)
接下来,在if-eqz指令下方添加goto :goto_x(跟上一个goto_x保持一致)即可。
接下来是plunderProvince。
搜索isoccupied,我们会看到一个对该方法的调用。
在这个方法的返回值被移动到指定寄存器(move-result)之后,将这个寄存器设定为0x1(true)即可。
此时进入游戏,应该已经可以我掠夺我自己了。
说不准有人要用。
- - - - - - - - - 正 文 - - - - - - - - -
本文将简单阐述如何让自己的本土省份变得可以劫掠。
首先,我们先来看看在本土掠夺有什么阻碍。
第一,我们是点不了掠夺这个按钮的—会提示这不是占领而是本土省份。
与这个按钮相关的类笔者已经找好了,在Menu_InGame_Build$27。
切换到getClickable(获取可点击元素)方法,在末尾return x(这里x是寄存器,例如v0/v1)前添加 const x,0x1即可。这里牵扯到smali对于布尔值(这种数据类型只有true/false/null,可以称之为编程中的二极管)的处理:true变为1,false变为0。所以,这里我们实际上是让这个方法永远返回true。
现在进入游戏,你应该会发现原本点下去没有效果的掠夺按钮(在省份的更多里)现在会出现掠夺菜单了!不过,点下掠夺仍然不会让掠夺发生。
再跳转到DiplomacyManager类,我们会发现有两个方法:plunder和plunderProvince。我们都需要进行更改。
先说plunder。
跳转到这个方法,我们可以看到开头出现了一个if语句。
如果这个if语句判断为false,就不会执行掠夺相关的语句。
直接修改寄存器过于困难(之后的代码还需要用到这个参数,如果贸然修改可能出现各类问题),因此我们这里选择goto跳转。
找到if-eqz后面的cond标签(例如:cond_a),记住它。
找到这一个cond标签,在它上一行(如果已经有指令了就添加)输入:goto_x(x可自行替换)
接下来,在if-eqz指令下方添加goto :goto_x(跟上一个goto_x保持一致)即可。
接下来是plunderProvince。
搜索isoccupied,我们会看到一个对该方法的调用。
在这个方法的返回值被移动到指定寄存器(move-result)之后,将这个寄存器设定为0x1(true)即可。
此时进入游戏,应该已经可以我掠夺我自己了。