unsafe private static IntPtr VirtualMachine__RunFunctionHook(VirtualMachinePtr virtualMachine, String functionName, Int32 a3, Int32 a4, Int32 a5, Int32 a6) { var result = IntPtr.Zero; try { switch (functionName) { case "config": var file = Storm.FileOpenFileEx(IntPtr.Zero, "war3map.cs", 0); if (file != IntPtr.Zero) { var script = Storm.FileReadToEnd(file); Storm.FileCloseFile(file); InternalScript.OnScriptLoad(script); } else { InternalScript.OnScriptLoad(null); } InternalScript.OnPreConfig(InternalGame.IsInMap); result = InternalScript.VirtualMachine__RunFunction(virtualMachine, functionName, a3, a4, a5, a6); InternalScript.OnPostConfig(InternalGame.IsInMap); break; case "main": InternalScript.OnPreMain(); result = InternalScript.VirtualMachine__RunFunction(virtualMachine, functionName, a3, a4, a5, a6); InternalScript.OnPostMain(); break; default: result = InternalScript.VirtualMachine__RunFunction(virtualMachine, functionName, a3, a4, a5, a6); break; } } catch (Exception e) { Trace.WriteLine("Unhandled Exception in InternalScript.VirtualMachine__RunFunctionHook!"); Trace.WriteLine(e.ToString()); } return(result); }