Ejemplo n.º 1
0
        private void HandleCost(CommandPosExecuteEvent e, CommandOptions.CommandEntry commandOptions)
        {
            // Make sure it has an EconomyProvider and check if the player can bypass the cost
            if (!UEssentials.EconomyProvider.IsPresent || e.Source.HasPermission("essentials.bypass.commandcost"))
            {
                return;
            }
            var commandCost = GetCommandCost(commandOptions, e.Source.ToPlayer());

            if (commandCost > 0)
            {
                UEssentials.EconomyProvider.Value.Withdraw(e.Source.ToPlayer(), commandCost);
                EssLang.Send(e.Source, "COMMAND_PAID", commandCost, UEssentials.EconomyProvider.Value.CurrencySymbol);
            }
        }
Ejemplo n.º 2
0
        private void HandleCooldown(CommandPosExecuteEvent e, CommandOptions.CommandEntry commandOptions)
        {
            var commandName = e.Command.Name.ToLowerInvariant();

            // Check if the player can bypass the cooldown
            if (e.Source.HasPermission("essentials.bypass.commandcooldown"))
            {
                return;
            }

            var playerId      = e.Source.ToPlayer().CSteamId.m_SteamID;
            var cooldownValue = commandOptions.Cooldown;

            if (commandOptions.PerGroupCooldown != null)
            {
                R.Permissions.GetGroups(e.Source.ToPlayer().RocketPlayer, false)
                .OrderBy(g => - g.Priority)
                .FirstOrDefault(g =>
                {
                    // Check if there is a cooldown specified to the player's group.
                    var result = commandOptions.PerGroupCooldown.TryGetValue(g.Id, out var groupCooldown);
                    // If there is, use that cooldown.
                    if (result)
                    {
                        cooldownValue = groupCooldown;
                    }
                    return(result);
                });
            }

            if (cooldownValue < 1)
            {
                return;
            }

            if (!CommandCooldowns.ContainsKey(playerId))
            {
                CommandCooldowns.Add(playerId, new Dictionary <string, DateTime>());
            }

            CommandCooldowns[playerId][commandName] = DateTime.Now.AddSeconds(cooldownValue);
        }
        private decimal GetCommandCost(CommandOptions.CommandEntry commandOptions, UPlayer player)
        {
            var cost = commandOptions.Cost;

            if (commandOptions.PerGroupCost != null)
            {
                R.Permissions.GetGroups(player.RocketPlayer, false)
                .OrderBy(g => - g.Priority)
                .FirstOrDefault(g => {
                    // Check if there is a cost specified to the player's group.
                    var result = commandOptions.PerGroupCost.TryGetValue(g.Id, out var groupCost);
                    // If there is, use that cost
                    if (result)
                    {
                        cost = groupCost;
                    }
                    return(result);
                });
            }

            return(cost);
        }