이 이전 버전을 사용하여 모드를 업데이트하는 모드 개발자에게 알려주십시오.
Terraria의 Hookgen "레시피", 다른 모드가 의존 할 수있는 TML 모드가 생성됩니다.
모노 모드로 제작되었습니다.
이 모드는 다른 모드의 도우미입니다. 모드에 필요한 경우 설치하면 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가 처리합니다.
Cecil과 많은 도우미를 사용하여 IL ... += (...) => {...}를 통해 런타임에 모든 메소드를 조작하십시오.
그 과정에서 훌륭한 아이디어와 피드백에 대한 Chicken-Bones에게 특별한 감사를드립니다!
runtimedetour를 사용하여 기존 "메소드 스와핑"코드를 빠르게 포트하십시오.
이를 위해서는 언로드시 우회를 취소해야합니다.
더 많은 정보가 필요한 경우 monomod runtimedetour readme를 읽으십시오.
모드에서 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 디렉토리에서 위의 두 줄을 실행할 때 (모든 종속성이있는) TerrariaHooks.dll
Terraria.exe
에 생성합니다.
이 저장소의 유일한 목적은 프로세스를 완전히 자동화하고 TerrariaHooks.dll
TML 모드로 게시하는 것입니다.