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 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); }