Modding Tutorials/Transpiler Hints
Jump to navigation
Jump to search
Debugging Transpilers can seem impossible. It's very difficult to count exactly correctly, and any mistakes will likely throw a system exception.
Helpful examples[edit]
One way to get an idea of how to use the Transpiler is to search github for Harmony Transpilers.
Useful debugging tools.[edit]
See what your IL code is[edit]
One thing that can potentially help is to print out your entire modified IL code, to make sure you've got it correct:
public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator) {
var l=XTranspiler(instructions, generator).ToList(); // name your actual transpiler XTranspiler
string s="Code:";
int i=0;
foreach (var c in l) {
if (c.opcode==OpCodes.Call ||
c.opcode==OpCodes.Callvirt) { // you can make certain operations more visible
Log.Warning(""+i+": "+c);
} else {
Log.Message(""+i+": "+c);
}
s+="\n"+i+": "+c;
i++;
yield return c;
}
Log.Error(s); // or just print the entire thing out to copy to a text editor.
}