【Minecraft基巖版】客戶端Skid教程 #3 如何Port其他端的功能到自己的客戶端
請使用已公開的源碼,并用于學習!
一:創(chuàng)建功能
先打開資源管理器,顯示所有文件

找到Modules并右鍵,創(chuàng)建2個新的文件
其中一個后綴為cpp,一個為.h
例如,我們現(xiàn)在要skid一個packet的animation


然后同理,我們打開另外一個端子的源碼,找到你要抄的功能

2,如何ctrl+a 復(fù)制并粘貼到你的端子里
3,請讓cpp和.h文件內(nèi)容一一對應(yīng)
4,我們可以看到,或多或少有些報錯,但是不急,現(xiàn)在修復(fù)

5,我們根據(jù)include的文件的路徑位置,可以做以下修改(小白看,會c++跳過)

例如,module.h和剛剛創(chuàng)建的animations.h在同一個文件里,我們直接刪掉../即可
可百度include的用法,一一找到對應(yīng)的頭文件(.h)

修復(fù)頭文件完成,接下來修復(fù)cpp

報錯一
可以看到,這是由于module里面enumsetting寫法不同引發(fā)的錯誤,我們可以觀察你的端子的這個函數(shù)

找到一個有EnumSetting的功能例如killaura,我們可以看到有兩種不同的寫法,都可以用,我們選一種對animation進行更改

好的,改完了,下一個報錯

報錯二
由于sdk名字或者其他差異,或者不全,就會缺少函數(shù)導(dǎo)致報錯

這時候我們將目標客戶端的sdk也復(fù)制粘貼到自己客戶端的同樣位置即可
找到目標客戶端該函數(shù)的位置,右鍵,點擊轉(zhuǎn)到聲明

我們可看到,調(diào)到Centity.h來了.我們復(fù)制getswingstate這一條函數(shù),搜索我們客戶端的CEntity.h,并粘貼到里面

注意{}的使用,一定要對應(yīng)

修復(fù)了

錯誤三:
未定義標示符,對于getmodule這個函數(shù)來說,就是沒有這個功能,這可能是由于名字不對導(dǎo)致的,也可能是真的沒有
這也可能是sdk確實某個函數(shù)導(dǎo)致的,看后面

我們可以看到,其實是有的,只是名字不一樣

如果沒有這個功能,那我們就要添加,這個后面講
錯誤四

這是我們的端子hooks不全導(dǎo)致的,我們可以看到缺少了isThirdPerson這個判定是不是第三人稱的函數(shù)。
其實這個沒用,所以直接刪掉
如果有用,你就去hooks里加【同sdk的加法】
好的修好了,后面我們添加標識符

添加功能標識符:
我們每每添加一個功能,添加到modulemanager.h和.cpp里面
下面來操作:
打開modulemanager.h,寫入你剛剛添加的功能的頭文件

2,打開modulemanager.cpp
寫入添加功能的標識符

尾聲:
生成即可,如果發(fā)現(xiàn)沒有效果,可能是hooks里面沒有調(diào)用
我們在目標客戶端里搜索animation,發(fā)現(xiàn)是有調(diào)用它的,所以要復(fù)制到我們的端子的hooks里

記住,我們僅需復(fù)制有關(guān)于animation的代碼,不要講重復(fù)的,其他的,無用的代碼復(fù)制過來

又報錯了,這就是缺少幾個函數(shù)。我們回到目標客戶端的hooks,右鍵轉(zhuǎn)到定義或者聲明,找到這幾個函數(shù)的定義(同上文)

將他們復(fù)制到自己的客戶端的同樣位置

復(fù)制完畢后,報錯消失了

最后,生成一個debug(方便調(diào)試),上游戲注入即可