public static bool Event(eScripting eScripting) { if (Scripting._hLua_X64 != null || Scripting._hLua_X86 != null || Scripting._hCompiled != null) { if (!Scripting._bLoaded && (eScripting == eScripting.OnRun || eScripting == eScripting.OnFrame)) { Scripting._bLoaded = true; Scripting.Event(eScripting.OnLoad); } try { if (Scripting._hCompiled != null) { switch (eScripting) { case eScripting.OnClose: Scripting._hCompiled.hInterface.OnClose(); break; case eScripting.OnLoad: Scripting._hCompiled.hInterface.OnLoad(); break; case eScripting.OnRun: Scripting._hCompiled.hInterface.OnRun(); break; } } else if (Scripting._hLua_X64 != null) { LuaInterface_X64.LuaFunction function = Scripting._hLua_X64.LuaEngine.GetFunction(eScripting.ToString()); if (function == null) { return(false); } function.Call(); } else { LuaInterface_X86.LuaFunction function = Scripting._hLua_X86.LuaEngine.GetFunction(eScripting.ToString()); if (function == null) { return(false); } function.Call(); } return(true); } catch (Exception ex) { int num = 1; Program.Exception(ex, num != 0); Scripting.Close(); } } return(false); }
public static object IncludeString(string zFile, string zString) { if (Scripting._hLua_X64 == null && Scripting._hLua_X86 == null && Scripting._hCompiled == null) { return((object)null); } try { if (zFile != null && !zFile.EndsWith(".lua")) { if (Scripting._hCompiled.hTypes != null) { foreach (Type type in Scripting._hCompiled.hTypes) { if (type.IsClass && Path.GetFileNameWithoutExtension(zString).Equals(type.Name)) { return(Activator.CreateInstance(type)); } } } return((object)null); } if (Scripting._hLua_X64 != null) { if (Scripting._hCompiled != null) { return((object)Scripting._Create_X64(zFile)); } Scripting._hLua_X64.LuaEngine.DoString("AionScriptObject = {};\r\n" + Regex.Replace(zString, "function (.*?)\\(", "function AionScriptObject:$1("), Path.GetFileName(zFile)); return(Scripting._hLua_X64.LuaEngine["AionScriptObject"]); } if (Scripting._hCompiled != null) { return((object)Scripting._Create_X86(zFile)); } Scripting._hLua_X86.LuaEngine.DoString("AionScriptObject = {};\r\n" + Regex.Replace(zString, "function (.*?)\\(", "function AionScriptObject:$1("), Path.GetFileName(zFile)); return(Scripting._hLua_X86.LuaEngine["AionScriptObject"]); } catch (Exception ex) { int num = 1; Program.Exception(ex, num != 0); Scripting.Close(); return((object)null); } }
public void ScriptExit() { if (this.InvokeRequired) { this.BeginInvoke((Delegate) new Action(this.ScriptExit)); } else { if (!IManager._bScript) { return; } Scripting.Close(); this.ScriptList.Enabled = true; this.NodeList.Enabled = true; this.ScriptToggle.Text = "Enable"; IManager._bScript = false; } }
public static bool Load(string zFile) { try { bool bIsVisualBasic = false; Scripting._bLoaded = false; if (Game.PlayerInput == null) { throw new Exception("Please start the game before starting a script."); } Program.Manager.SetTravel((string)null); string path = zFile + Path.DirectorySeparatorChar.ToString() + Path.GetFileNameWithoutExtension(zFile) + ".csproj"; if (File.Exists(path)) { Assembly assembly = ProjectCompile.CompileToAssembly(new Uri(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar.ToString() + path)); // ISSUE: variable of the null type Assembly local = null; if (assembly == (Assembly)local) { throw new Exception("Unable to compile project; does it work in Visual Studio?"); } foreach (Type type in assembly.GetTypes()) { try { if (!type.IsAbstract) { if (type.IsClass) { if (type.GetInterface(typeof(IAionInterface).Name) != (Type)null) { Scripting._hCompiled = new CompileResult() { hInterface = (IAionInterface)Activator.CreateInstance(type), hTypes = (Type[])null }; return(true); } } } } catch (Exception ex) { throw new Exception("Unable to instantiate project entry point!"); } } throw new Exception("Unable to find project entry point!"); } if (!zFile.EndsWith(".cs") && !(bIsVisualBasic = zFile.EndsWith(".vb"))) { if (zFile.EndsWith(".lua")) { if (UIntPtr.Size == 4) { Scripting._hLua_X86 = Scripting._Create_X86(zFile); if (Scripting._hLua_X86 == null) { return(false); } } else { Scripting._hLua_X64 = Scripting._Create_X64(zFile); if (Scripting._hLua_X64 == null) { return(false); } } if (File.Exists("AionScript.lua")) { if (Scripting._hLua_X64 != null) { Scripting._hLua_X64.LuaEngine.DoFile("AionScript.lua"); } else if (Scripting._hLua_X86 != null) { Scripting._hLua_X86.LuaEngine.DoFile("AionScript.lua"); } } foreach (string index in new List <string>() { "AsCircularMagic", "AsTest" }) { string zString = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("AionScript.Resources.Library." + index + ".lua")).ReadToEnd(); if (Scripting._hLua_X64 != null) { Scripting._hLua_X64.LuaEngine[index] = Scripting.IncludeString((string)null, zString); } else { Scripting._hLua_X86.LuaEngine[index] = Scripting.IncludeString((string)null, zString); } } return(true); } } else { Scripting._hCompiled = Compiler.Compile(zFile, bIsVisualBasic); return(Scripting._hCompiled != null); } } catch (Exception ex) { int num = 1; Program.Exception(ex, num != 0); Scripting.Close(); } return(false); }