Пример #1
0
        /// <summary>
        /// Called when this plugin has been added to the specified manager
        /// </summary>
        /// <param name="manager"></param>
        public override void HandleAddedToManager(PluginManager manager)
        {
            foreach (MethodInfo method in GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance))
            {
                object[] commandAttribute    = method.GetCustomAttributes(typeof(CommandAttribute), true);
                object[] permissionAttribute = method.GetCustomAttributes(typeof(PermissionAttribute), true);
                if (commandAttribute.Length <= 0)
                {
                    continue;
                }

                CommandAttribute    cmd  = commandAttribute[0] as CommandAttribute;
                PermissionAttribute perm = permissionAttribute.Length <= 0 ? null : permissionAttribute[0] as PermissionAttribute;
                if (cmd == null)
                {
                    continue;
                }

                AddCovalenceCommand(cmd.Commands, perm?.Permission, (caller, command, args) =>
                {
                    CallHook(method.Name, caller, command, args);
                    return(true);
                });
            }

            base.HandleAddedToManager(manager);
        }
Пример #2
0
        public override void HandleAddedToManager(PluginManager manager)
        {
            PermissionAttribute permissionAttribute;

            string[]     permission;
            MethodInfo[] methods = base.GetType().GetMethods(BindingFlags.Instance | BindingFlags.NonPublic);
            for (int i = 0; i < (int)methods.Length; i++)
            {
                MethodInfo methodInfo       = methods[i];
                object[]   customAttributes = methodInfo.GetCustomAttributes(typeof(CommandAttribute), true);
                object[]   objArray         = methodInfo.GetCustomAttributes(typeof(PermissionAttribute), true);
                if (customAttributes.Length != 0)
                {
                    CommandAttribute commandAttribute = customAttributes[0] as CommandAttribute;
                    if (objArray.Length == 0)
                    {
                        permissionAttribute = null;
                    }
                    else
                    {
                        permissionAttribute = objArray[0] as PermissionAttribute;
                    }
                    PermissionAttribute permissionAttribute1 = permissionAttribute;
                    if (commandAttribute != null)
                    {
                        string[] commands = commandAttribute.Commands;
                        if (permissionAttribute1 != null)
                        {
                            permission = permissionAttribute1.Permission;
                        }
                        else
                        {
                            permission = null;
                        }
                        base.AddCovalenceCommand(commands, permission, (IPlayer caller, string command, string[] args) => {
                            base.CallHook(methodInfo.Name, new object[] { caller, command, args });
                            return(true);
                        });
                    }
                }
            }
            base.HandleAddedToManager(manager);
        }