예제 #1
0
        void OnPlayerPermission(PlayerPermissionEventArgs e)
        {
            // If the player isn't logged it, he's certainly not a contributor
            if (e.Player == null || !e.Player.IsLoggedIn || !e.Player.ContainsData(Contributor.DataKey))
            {
                return;
            }

            Contributor con = e.Player.GetData <Contributor>(Contributor.DataKey);

            #region DEBUG
#if DEBUG
            //TShock.Log.ConsoleInfo("[" + e.Player.Index + "] Checking permission for: " + e.Permission);
#endif
            #endregion

            Tier tier = Tiers.Get(con.Tier);
            e.Handled = tier.Permissions.HasPermission(e.Permission);
            #region DEBUG
#if DEBUG
            if (e.Handled)
            {
                TShock.Log.ConsoleInfo("OnPlayerPermission: Contributor had the permission");
            }
#endif
            #endregion
        }
        private void OnPlayerPermission(PlayerPermissionEventArgs e)
        {
            if (!e.Player.IsLoggedIn)
            {
                e.Result = PermissionHookResult.Unhandled;
                return;
            }

            var playerInfo = _database.Get(e.Player.Account);

            if (playerInfo == null)
            {
                e.Result = PermissionHookResult.Unhandled;
                return;
            }

            if (playerInfo.Permissions.ContainsPermission(e.Permission))
            {
                e.Result = !playerInfo.Permissions.Negated(e.Permission)
                    ? PermissionHookResult.Granted
                    : PermissionHookResult.Denied;
            }
            else
            {
                e.Result = PermissionHookResult.Unhandled;
            }
        }
예제 #3
0
        private static void OnPlayerPermission(PlayerPermissionEventArgs e)
        {
#if DEBUG
            var sv = Stopwatch.StartNew();
#endif

            if (e.Player.User == null)
            {
                return;
            }

            var data = GroupData.Get(e.Player.User);

            if (data == null)
            {
                return;
            }

            if (data.Permissions.Contains(e.Permission))
            {
                e.Handled = true;
            }

#if DEBUG
            sv.Stop();

            if (sv.ElapsedMilliseconds > 5)
            {
                Console.WriteLine("Permission check spent:" + sv.ElapsedMilliseconds);
            }
#endif
        }
예제 #4
0
 private void OnPlayerPermission(PlayerPermissionEventArgs Args)
 {
     if ((Args.Result == PermissionHookResult.Unhandled) &&
         Overrides.HasGroupOverride(Args.Player.Group.Name, out Group group))
     {
         Args.Result = (group.HasPermission(Args.Permission)
                             ? PermissionHookResult.Granted
                             : PermissionHookResult.Denied);
     }
 }
        private static void OnPermission(PlayerPermissionEventArgs e)
        {
            if (e.Player == null || !e.Player.IsLoggedIn || !e.Player.ContainsData(PlayerInfo.DataKey))
            {
                return;
            }

            var playerInfo = e.Player.GetData <PlayerInfo>(PlayerInfo.DataKey);

            e.Handled = playerInfo.Permissions.ContainsPermission(e.Permission);
        }
예제 #6
0
        //mystery method. why is this here? I noticed this on the callstack when debugging permissions in CustomSkillsPlugin...-Tim
        private void OnPlayerPermission(PlayerPermissionEventArgs args)
        {
            var player = args.Player;

            if (!player.RealPlayer)
            {
                return;
            }

            var session = GetOrCreateSession(args.Player);

            args.Handled |= session.PermissionsGranted.Contains(args.Permission);
        }
예제 #7
0
        private static void OnPlayerPermission(PlayerPermissionEventArgs args)
        {
            var rt = RtPlayer.GetPlayerInfo(args.Player).CurrentRegion;

            if (rt?.HasEvent(Event.TempPermission) != true)
            {
                return;
            }

            if (rt.HasPermission(args.Permission) && !args.Player.HasPermission("regiontrigger.bypass.tempperm"))
            {
                args.Handled = true;
            }
        }
예제 #8
0
        private void OnPlayerPermission(PlayerPermissionEventArgs e)
        {
            if (!_configuration.ToggleClanPermissions)
            {
                return;
            }

            var clan = e.Player.GetData <PlayerMetadata>(DataKey)?.Clan;

            if (clan == null)
            {
                return;
            }

            e.Handled = clan.Permissions.Contains(e.Permission);
        }
예제 #9
0
        /// <summary>
        /// Internal hook, fired whenever <see cref="TSPlayer.HasPermission(string)"/> is invoked.
        /// </summary>
        /// <param name="args">The <see cref="PlayerPermissionEventArgs"/> object.</param>
        private void OnPlayerPermission(PlayerPermissionEventArgs args)
        {
            // Return if the event was already handled by another plugin.
            if (args.Handled)
            {
                return;
            }

            // Ensure the player is not null and has special permissions.
            if (args.Player == null || args.Player.GetPlayerInfo() == null)
            {
                return;
            }

            // Handle the event.
            args.Handled = args.Player.GetPlayerInfo().HasPermission(args.Permission);
        }