public static void ExecuteMethods( LuaScriptMethods scriptMethods, IGuild guild, IUserMessage user_message = null, IUser user = null, IRole role = null, bool roleAdded = false ) { if (_scripts.TryGetValue(guild, out ConcurrentList <LuaScript> luaScripts)) { foreach (var luaScript in luaScripts) { if (user != null) { luaScript.Lua.User = user; } luaScript.Lua.Guild = guild; luaScript.Lua.UserMessage = user_message; luaScript.Lua.Role = role; luaScript.Lua.RoleAdded = roleAdded; ExecuteMethod(luaScript, scriptMethods); } } }
public static bool ExecuteMethod(LuaScript luaScript, LuaScriptMethods scriptMethods) { var scriptResult = LuaHandler.Run(luaScript); if (scriptResult != null) { var func = GetMethodFromScript(luaScript, scriptMethods); if (func != null) { var funcResult = luaScript.Script.Call(func); return(true); } } return(false); }
public static Closure GetMethodFromScript(LuaScript luaScript, LuaScriptMethods scriptMethod) { foreach (var value in Enum.GetValues(typeof(LuaScriptMethods)).OfType <LuaScriptMethods>()) { // Enum.Parse if (scriptMethod.HasFlag(value)) { try { var scriptMethodKey = luaScript.Script.Globals.Keys.FirstOrDefault(k => k.Type == DataType.String && string.Equals(k.String, value.ToString(), StringComparison.CurrentCultureIgnoreCase) ); if (scriptMethodKey != null && luaScript.Script.Globals[scriptMethodKey.String] is Closure func) { return(func); } } catch { } } } return(null); }