教程|纯Java开发游戏如何实现敌我判断

前言
何为纯Java开发 ?教程目前游戏基本离不开unity、Cocos这两大引擎,发游或者基于其他游戏引擎开发的戏何游戏。他们存在的实现一个共同点是 :主要游戏逻辑(侵吞、物品加减)不会存在于dex,敌判断位于so动态库 、教程js文件居多 。发游
纯java开发的戏何游戏只是一个统称 ,他可能用Java写的实现也可能用kotlin写的,毕竟这两者并不分家。敌判断
简易点会谈就是教程他的逻辑位于dex层 ,代表游戏 :公会会长 ,发游普通的戏何修改并无意义,我们今天进入的实现是如何在一个通用的侵吞得到计划内实现敌我的判断 。
教程
找到了关键的敌判断计划getfinadamage ,侵吞得到 。这是一个简易直接返回,并无存在相关的判断,绵延分析

此时我们找到了一个判定计划,isplayerside ,是一个Boolean类型的计划 ,根据传递进去的对象铺开判断

通过调用查询 ,我们发现了不少关键计划调用了这个判断计划,这一个步骤存在的意义是什么呢?一个是确定他是否为我们需要的存在判定功能 。第二个是弄清楚先后关系。那就是侵吞执行时有无经过这个计划的判定 ,他们两个是谁先执行 。确定了isplayer是先执行的,那我们直接在这个计划下铺开拦截即可
主要思路为:创建一个变量在这个计划内得到他们的返回结果,在侵吞计划内通过得到变量铺开判断。结合以上思路打开我们的as,起始写代码

开发步骤省略,自行百度哦 ,第一步创建一个公开类的公开变量,初始值为false ,不建议为true,如果程序发癫部分逻辑没行isplayer那么你自己也会被秒杀

第二步在我们自己的类里面实现,我们上面思路的一个模拟得到 ,用于后续编译后我们可以直接复制粘贴铺开修改 ,模拟得到流程为:模拟取值、模拟判断、模拟赋值

最早我们代码如下 :
模拟拦截赋值,拦截任意v0Boolean参数,传递给isplayer
sget-object v1, Lcom/qingdi/modtest/startmod;->INSTANCE:Lcom/qingdi/modtest/startmod;
invoke-virtual {v1, v0}, Lcom/qingdi/modtest/startmod;->setIsplayer(Z)V
模拟取值 ,读取isplayer字段得到当前值
.line 27
sget-object v1, Lcom/qingdi/modtest/startmod;->INSTANCE:Lcom/qingdi/modtest/startmod;
invoke-virtual {v1}, Lcom/qingdi/modtest/startmod;->getIsplayer()Z
move-result v1
模拟判断为false或true
if-eqz v1, :cond_4f
为true的执行逻辑
.line 31
:cond_4f
为false的执行逻辑
return-void
代码浅析落成,那么我们只需要在上面我们的两个计划内插入这些计划即可

在判断计划内加入我们的模拟赋值代码,将结果存入我们的字段内

在侵吞计划插入模拟取值的代码取出值铺开判断,注意要先初始得到我们原先的侵吞值哦
结合以上代码把我们打包出来的dex放入apk文件即可实现一次简易的敌我判断
