コード例 #1
0
 private static void OnRunCodeCallback(VirtualMachinePtr virtualMachine, IntPtr opCode, IntPtr a3, UInt32 opLimit, IntPtr a5, CodeResult result)
 {
     try
     {
         if (InternalScript.VirtualMachine__RunCodeCallback != null)
         {
             InternalScript.VirtualMachine__RunCodeCallback(virtualMachine, opCode, a3, opLimit, a5, result);
         }
     }
     catch (Exception e)
     {
         Trace.WriteLine("Unhandled Exception in InternalScript.OnRunCodeCallback!");
         Trace.WriteLine(e.ToString());
     }
 }
コード例 #2
0
        unsafe private static CodeResult VirtualMachine__RunCodeHook(VirtualMachinePtr virtualMachine, IntPtr opCode, IntPtr a3, UInt32 opLimit, IntPtr a5)
        {
            var result = VirtualMachine__RunCode(virtualMachine, opCode, a3, opLimit, a5);

            try
            {
                InternalScript.OnRunCodeCallback(virtualMachine, opCode, a3, opLimit, a5, result);
            }
            catch (Exception e)
            {
                Trace.WriteLine("Unhandled Exception in InternalScript.VirtualMachine__RunFunctionHook!");
                Trace.WriteLine(e.ToString());
            }

            return(result);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public static IntPtr VirtualMachine__RunFunction(VirtualMachinePtr @this, String functionName, IntPtr a3, IntPtr a4, IntPtr a5, IntPtr a6)
 {
     return(ThisCall.Invoke <IntPtr>(GameAddresses.VirtualMachine__RunFunction, @this, functionName, a3, a4, a5, a6));
 }
コード例 #5
0
 public static CodeResult VirtualMachine__RunCode(VirtualMachinePtr @this, IntPtr opCode, IntPtr a3, UInt32 opLimit, IntPtr a5)
 {
     return(ThisCall.Invoke <CodeResult>(GameAddresses.VirtualMachine__RunCode, @this, opCode, a3, opLimit, a5));
 }