TraceDoString() public static method

runs a lua chunk loaded from a string, returns values returned from function, shows traceback in case of errors
public static TraceDoString ( IntPtr L, int resultCount, string s ) : WinterSync.LuaValue[]
L System.IntPtr
resultCount int
s string
return WinterSync.LuaValue[]
Ejemplo n.º 1
0
        /// <summary>
        /// gets the list of dependencies from modinfo.lua
        /// </summary>
        string[] GetDependenciesFromLua(string archiveName, string fileName)
        {
            var modInfoFile = Archive.ExtractTextFile(archiveName, fileName);
            var results     = CLua.TraceDoString(L, 1, modInfoFile);

            return(results[0].GetLuaValues("depend").Select(v => v.ToString()).ToArray());
        }
Ejemplo n.º 2
0
        static string GetTdfField(IntPtr L, string fieldName, string archivePath)
        {
            var archive = Archive.Open(archivePath);
            var tdfFile = FindModInfo(archive, "tdf");

            if (tdfFile != null)
            {
                var modInfoTable = GetTdfTableFromString(L, Archive.ExtractTextFile(archivePath, tdfFile));
                if (modInfoTable[0] is LuaNil)
                {
                    throw new Exception(String.Format("Error in file {0}: {1}", archivePath, modInfoTable[1]));
                }
                var modInfo = modInfoTable[0].GetField("mod");
                if (modInfo == null)
                {
                    return(null);
                }
                var field = modInfo.GetField(fieldName);
                if (field == null)
                {
                    return(null);
                }
                return(field.ToString());
            }
            var luaFile = FindModInfo(archive, "lua");

            if (luaFile != null)
            {
                var modinfo = Archive.ExtractTextFile(archivePath, luaFile);
                var result  = CLua.TraceDoString(L, 1, modinfo)[0].GetField(fieldName);
                if (result == null)
                {
                    return(null);
                }
                return(result.ToString());
            }
            return(null);
        }