【Minecraft基岩版】客户端Skid教程 #3 如何Port其他端的功能到自己的客户端
请使用已公开的源码,并用于学习!
一:创建功能
先打开资源管理器,显示所有文件

找到Modules并右键,创建2个新的文件
其中一个后缀为cpp,一个为.h
例如,我们现在要skid一个packet的animation


然后同理,我们打开另外一个端子的源码,找到你要抄的功能

2,如何ctrl+a 复制并粘贴到你的端子里
3,请让cpp和.h文件内容一一对应
4,我们可以看到,或多或少有些报错,但是不急,现在修复

5,我们根据include的文件的路径位置,可以做以下修改(小白看,会c++跳过)

例如,module.h和刚刚创建的animations.h在同一个文件里,我们直接删掉../即可
可百度include的用法,一一找到对应的头文件(.h)

修复头文件完成,接下来修复cpp

报错一
可以看到,这是由于module里面enumsetting写法不同引发的错误,我们可以观察你的端子的这个函数

找到一个有EnumSetting的功能例如killaura,我们可以看到有两种不同的写法,都可以用,我们选一种对animation进行更改

好的,改完了,下一个报错

报错二
由于sdk名字或者其他差异,或者不全,就会缺少函数导致报错

这时候我们将目标客户端的sdk也复制粘贴到自己客户端的同样位置即可
找到目标客户端该函数的位置,右键,点击转到声明

我们可看到,调到Centity.h来了.我们复制getswingstate这一条函数,搜索我们客户端的CEntity.h,并粘贴到里面

注意{}的使用,一定要对应

修复了

错误三:
未定义标示符,对于getmodule这个函数来说,就是没有这个功能,这可能是由于名字不对导致的,也可能是真的没有
这也可能是sdk确实某个函数导致的,看后面

我们可以看到,其实是有的,只是名字不一样

如果没有这个功能,那我们就要添加,这个后面讲
错误四

这是我们的端子hooks不全导致的,我们可以看到缺少了isThirdPerson这个判定是不是第三人称的函数。
其实这个没用,所以直接删掉
如果有用,你就去hooks里加【同sdk的加法】
好的修好了,后面我们添加标识符

添加功能标识符:
我们每每添加一个功能,添加到modulemanager.h和.cpp里面
下面来操作:
打开modulemanager.h,写入你刚刚添加的功能的头文件

2,打开modulemanager.cpp
写入添加功能的标识符

尾声:
生成即可,如果发现没有效果,可能是hooks里面没有调用
我们在目标客户端里搜索animation,发现是有调用它的,所以要复制到我们的端子的hooks里

记住,我们仅需复制有关于animation的代码,不要讲重复的,其他的,无用的代码复制过来

又报错了,这就是缺少几个函数。我们回到目标客户端的hooks,右键转到定义或者声明,找到这几个函数的定义(同上文)

将他们复制到自己的客户端的同样位置

复制完毕后,报错消失了

最后,生成一个debug(方便调试),上游戏注入即可