Example #1
0
        private static void Main(string[] args)
        {
//            var l=new List<int>();
//            l.Add(1);
//            l.Add(2);
//            l.Add(3);
//                l.Add(4);
//            l.Reverse(1,2);
//            l.ForEach(Console.WriteLine);

            if (args.Length <= 0)
            {
                return;
            }
            try
            {
                var fs   = File.OpenRead(args[0]);
                var data = new byte[fs.Length];
                fs.Read(data, 0, data.Length);

                var ls = new state.LuaState();
                ls.Register("print", print);
                ls.Register("getmetatable", getMetatable);
                ls.Register("setmetatable", setMetatable);
                ls.Load(ref data, "chunk", "b");
                ls.Call(0, 0);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            //            Console.ReadKey();
        }
Example #2
0
        private (object, bool) CallMetamethod(object a, object b, string mmName, LuaState ls)
        {
            var mm = GetMetafield(a, mmName, ls);

            if (mm is null)
            {
                mm = GetMetafield(b, mmName, ls);

                if (mm is null)
                {
                    return(null, false);
                }
            }

            //ls.stack.check(4);
            ls._stack.Push(mm);
            ls._stack.Push(a);
            ls._stack.Push(b);
            ls.Call(2, 1);
            return(ls._stack.Pop(), true);
        }