Beispiel #1
0
Datei: LUA.cs Projekt: vanehu/MM
 /// <summary>
 /// 执行脚本文件
 /// </summary>
 /// <param name="file">文件名</param>
 /// <param name="fun">函数名</param>
 /// <param name="param1">参数1</param>
 /// <param name="param2">参数2</param>
 /// <param name="param3">参数3</param>
 /// <returns>返回执行结果</returns>
 public object RunFile(string file, object fun, object param1 = null, object param2 = null, object param3 = null)
 {
     if (string.IsNullOrEmpty(file))
     {
         Ex = "脚本文件名不能为空";
         return(null);
     }
     file = file.ToFullName(_Dir);
     if (!File.Exists(file))
     {
         Ex = "脚本不存在!请确认脚本:“" + file + "”是否存在。";
         return(null);
     }
     try
     {
         Lua Eng = new Lua();
         Eng.LoadCLRPackage();
         var dir = file.ToDir();
         Eng["SDK"] = new Helper.Indexer()
         {
             Dir = dir
         };
         Eng["Cache"]  = new Cache();
         Eng["Engine"] = new Indexer()
         {
             Dir = dir
         };
         Eng.DoFile(file);
         var funObj = Eng.GetFunction("Main");
         if (param1 == null)
         {
             return(funObj.Call(fun)[0]);
         }
         else if (param2 == null)
         {
             return(funObj.Call(fun, param1)[0]);
         }
         else if (param3 == null)
         {
             return(funObj.Call(fun, param1, param2)[0]);
         }
         else
         {
             return(funObj.Call(fun, param1, param2, param3)[0]);
         }
     }
     catch (Exception ex)
     {
         Ex = ex.ToString();
     }
     return(null);
 }
Beispiel #2
0
Datei: LUA.cs Projekt: vanehu/MM
 /// <summary>
 /// 执行脚本代码
 /// </summary>
 /// <param name="code">代码</param>
 /// <param name="fun">函数名</param>
 /// <param name="param1">参数1</param>
 /// <param name="param2">参数2</param>
 /// <param name="param3">参数3</param>
 /// <returns>返回执行结果</returns>
 public object RunCode(string code, object fun, object param1 = null, object param2 = null, object param3 = null)
 {
     if (string.IsNullOrEmpty(code))
     {
         Ex = "脚本不能为空";
         return(null);
     }
     try
     {
         Lua Eng = new Lua();
         Eng.LoadCLRPackage();
         var dir = _Dir;
         Eng["SDK"] = new Helper.Indexer()
         {
             Dir = dir
         };
         Eng["Cache"]  = new Cache();
         Eng["Engine"] = new Indexer()
         {
             Dir = dir
         };
         Eng.DoString(code, "Script");
         var funObj = Eng.GetFunction("Main");
         if (param1 == null)
         {
             return(funObj.Call(fun)[0]);
         }
         else if (param2 == null)
         {
             return(funObj.Call(fun, param1)[0]);
         }
         else if (param3 == null)
         {
             return(funObj.Call(fun, param1, param2)[0]);
         }
         else
         {
             return(funObj.Call(fun, param1, param2, param3)[0]);
         }
     }
     catch (Exception ex)
     {
         Ex = ex.ToString();
     }
     return(null);
 }
Beispiel #3
0
Datei: LUA.cs Projekt: vanehu/MM
 /// <summary>
 /// 获取函数
 /// </summary>
 /// <param name="file">文件名</param>
 /// <returns>返回函数</returns>
 public dynamic GetClass(string file)
 {
     if (string.IsNullOrEmpty(file))
     {
         Ex = "脚本文件名不能为空";
         return(null);
     }
     file = file.ToFullName(_Dir);
     if (!File.Exists(file))
     {
         Ex = "脚本不存在!请确认脚本:“" + file + "”是否存在。";
         return(null);
     }
     try
     {
         Lua Eng = new Lua();
         Eng.LoadCLRPackage();
         var dir = file.ToDir();
         Eng["SDK"] = new Helper.Indexer()
         {
             Dir = dir
         };
         Eng["Cache"]  = new Cache();
         Eng["Engine"] = new Indexer()
         {
             Dir = dir
         };
         var code = File.ReadAllText(file, Encoding.UTF8);
         Eng.DoFile(file);
         return(Eng.Pop());
     }
     catch (Exception ex)
     {
         Ex = ex.ToString();
     }
     return(null);
 }