예제 #1
0
        public static object ExecuteCalculation(string calc, double input)
        {
            var lua = new LuaContext();

            lua.LoadFromString(
                $"function exec(value)\r\n" +
                $"return {calc}\r\n" +
                $"end"
                );

            lua.Execute();
            var res = lua.Execute("exec", input);

            return(Convert.ToUInt32(res.result.First()));
        }
예제 #2
0
        public static void SetValueInSaveFile(LuaContext luaContext, string[] strArgs, int[] intArgs, object value)
        {
            luaContext.RegisterFunction("edizon", "getStrArgs", getStrArgs(strArgs));
            luaContext.RegisterFunction("edizon", "getIntArgs", getIntArgs(intArgs));

            luaContext.Execute("setValueInSaveFile", value);
        }
예제 #3
0
        public static byte[] GetModifiedSaveBuffer(LuaContext luaContext)
        {
            var res      = luaContext.Execute("getModifiedSaveFile");
            var firstRes = res.result.First();

            if (firstRes is object[] save)
            {
                return(save.Select(x => Convert.ToByte(x)).ToArray());
            }

            return(new byte[0]);
        }
예제 #4
0
        public static object GetValueFromSaveFile(LuaContext luaContext, string[] strArgs, int[] intArgs)
        {
            luaContext.RegisterFunction("edizon", "getStrArgs", getStrArgs(strArgs));
            luaContext.RegisterFunction("edizon", "getIntArgs", getIntArgs(intArgs));

            var res = luaContext.Execute("getValueFromSaveFile");

            if (!res.success)
            {
                LogConsole.Instance.Log(res.result.Where(r => r != null).Aggregate("", (a, b) => a + b.ToString() + Environment.NewLine), LogLevel.LUA);
                return(null);
            }

            return(res.result.First());
        }
예제 #5
0
        public static bool InitializeScript(ref LuaContext luaContext, string luaFile, string saveFile, string encoding, out string message)
        {
            message = String.Empty;

            try
            {
                luaContext = new LuaContext();

                luaContext.RegisterFunction("edizon", "getSaveFileBuffer", getSaveFileBuffer(saveFile));
                luaContext.RegisterFunction("edizon", "getSaveFileString", getSaveFileString(saveFile, encoding));
                luaContext.RegisterFunction("", "print", Print());

                luaContext.LoadFromFile(luaFile);
                luaContext.Execute();
            }
            catch (Exception e)
            {
                message = e.Message;
                return(false);
            }

            return(true);
        }