TerrariaHooks
v0.19 - Update MonoMod
請告訴任何仍使用此舊版本更新其MOD的MOD開發人員。
Hookgen的Terraria“食譜”,導致其他mod可以取決於TML MOD。
由Monomod構建。
此mod是其他mod的助手。只需安裝mod,它就不會自行更改Terraria。
On . Terraria . Player . CheckMana += ( orig , player , amount , pay , blockQuickMana ) => {
// We can either make this act as a method replacement
// or just call our code around the original code.
// Let's double the mana cost of everything.
// We can pass on custom values.
bool spendable = orig ( player , amount * 2 , pay , blockQuickMana ) ;
// ... but give back half of it if it was spent.
if ( spendable && pay ) {
player . statMana += amount / 2 ;
}
// We can return custom values.
return spendable ;
}
對於一個擴展的例子,請看一下這個要旨。
使用“鉤子”檢測方法何時運行,更改其運行方式甚至更換。
每當您的mod卸載時,“鉤子”就會自動撤消。這是由Terrariahooks為您處理的。
通過IL ... +=(...)=> {...}在運行時操作任何方法,使用Cecil和許多助手。
特別感謝Chicken-Bones在此過程中提供的好主意和反饋!
使用RunTimedEtour快速移植您現有的“方法交換”代碼。
請注意,這需要您在卸載時撤消繞道。
如果您需要更多信息,請閱讀Monomod RuntimedEtour Readme。
如果您想在mod中使用Terrariahooks:
TerrariaHooks.dll
。lib
文件夾中。build.txt
中,添加modReferences = TerrariaHooks
Load
方法中。git clone --recursive https://github.com/0x0ade/TerrariaHookGen.git
_input
中更新文件./TerrariaHookGen/bin/Debug/TerrariaHookGen.exe _input .
./tModLoaderServer.exe -build 'path/to/TerrariaHooks' -eac
該存儲庫勝過整個過程。它歸結為:
./MonoMod.RuntimeDetour.HookGen.exe --private Terraria.exe TerrariaHooksPre.dll
./ILRepack.exe /out:TerrariaHooks.dll TerrariaHooksPre.dll MonoMod. * .dll MonoMod.exe
當在Terraria目錄中運行上述兩行(存在所有依賴關係)時,它會為您的Terraria.exe
生成TerrariaHooks.dll
。
該存儲庫的唯一目的是完全自動化該過程,並允許出版TerrariaHooks.dll
作為TML mod。