Иконка ресурса

FREE CTFEventsRewards : 0.1.0 0.1.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6

using System;
using System.Collections.Generic;
using System.Linq;
using Random = UnityEngine.Random;

namespace Oxide.Plugins
{
    [Info("CTF Events Rewards", "2CHEVSKII", "0.1.0")]
    [Description("Allows rewarding players for capturing flags")]
    class CTFEventsRewards : CovalencePlugin
    {
        PluginSettings settings;

        bool CTFEvents_OnFinished(BasePlayer winner)
        {

        }

        bool CTFEvents_OnFinished(List<BasePlayer> winners)
        {

        }

        bool TryFindRewardForPlayer(BasePlayer player, out PluginSettings.Reward reward)
        {
            string[] permissions = permission.GetUserPermissions(player.UserIDString);
            PluginSettings.Reward[] rewards = null;

            for (var i = 0; i < permissions.Length; i++)
            {
                string perm = permissions[i];

                if (perm.StartsWith(nameof(CTFEventsRewards), StringComparison.OrdinalIgnoreCase))
                {
                    rewards = GetAssociatedRewards(perm);
                }
            }

            if (rewards == null)
            {
                rewards = GetDefaultRewards();
            }

            switch (rewards.Length)
            {
                case 0:
                    reward = default(PluginSettings.Reward);
                    return false;

                case 1:
                    reward = rewards[0];
                    return true;

                default:

                    return true;
            }


        }

        PluginSettings.Reward[] GetAssociatedRewards(string perm)
        {
            string permSanitized = perm.Substring(17);

            if (!settings.Rewards.ContainsKey(permSanitized))
            {
                return Array.Empty<PluginSettings.Reward>();
            }

            return settings.Rewards[permSanitized];
        }

        PluginSettings.Reward[] GetDefaultRewards()
        {
            if (!settings.Rewards.ContainsKey(string.Empty))
            {
                return Array.Empty<PluginSettings.Reward>();
            }

            return settings.Rewards[string.Empty];
        }

        T GetRandom<T>(T[] array)
        {
            var max = array.Length;
            var min = 0;

            var num = Random.Range(min, max);

            var item = array[num];

            return item;
        }

        #region Configuration

        protected override void LoadDefaultConfig()
        {
            settings = PluginSettings.Default;
            SaveConfig();
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                settings = Config.ReadObject<PluginSettings>();

                if (settings == null)
                {
                    throw new Exception("Configuration is null");
                }
            }
            catch (Exception e)
            {
                LogError("Failed to load configuration: {0}", e.Message);
                LoadDefaultConfig();
            }
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(settings);
        }

        #endregion

        #region Nested types

        class PluginSettings
        {
            public static PluginSettings Default => new PluginSettings
            {
                Rewards = new Dictionary<string, Reward[]>
                {
                    [""] = new[]
                    {
                        new Reward
                        {
                            SRPoints = 0,
                            EcoPoints = 0,
                            Commands = Array.Empty<string>(),
                            ItemRewards = new []
                            {
                                new ItemReward
                                {
                                    Item = "rifle.ak",
                                    Amount = 1,
                                    SkinId = 0ul,
                                    CustomName = "[reward]${name}"
                                }
                            }
                        }
                    }
                }
            };

            public Dictionary<string, Reward[]> Rewards { get; set; }

            public struct Reward
            {
                public int SRPoints;
                public int EcoPoints;
                public string[] Commands; // ${username}, ${userid} 
                public ItemReward[] ItemRewards;
            }

            public struct ItemReward
            {
                public object Item;
                public ulong SkinId;
                public int Amount;
                public string CustomName; // ${name}

                public bool TryGetItemDefinition(out ItemDefinition def)
                {
                    int itemId;
                    string shortname;

                    if (Item is int)
                    {
                        itemId = (int)Item;

                        def = ItemManager.FindItemDefinition(itemId);
                    }
                    else if (Item is string)
                    {
                        shortname = (string)Item;

                        if (int.TryParse(shortname, out itemId))
                        {
                            def = ItemManager.FindItemDefinition(itemId);
                        }
                        else
                        {
                            def = ItemManager.FindItemDefinition(shortname);
                        }
                    }
                    else def = null;

                    return def != null;
                }
            }
        }

        #endregion
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху