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

FREE XPModifier : 0.1.1 0.1.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Configuration;

namespace Oxide.Plugins
{
    [Info("XPModifier", "k1lly0u", "0.1.1", ResourceId = 0)]
    class XPModifier : RustPlugin
    {
        #region Fields
        XPMData xpmData;
        private DynamicConfigFile data;

        #endregion

        #region Oxide Hooks
        void Loaded()
        {
            data = Interface.Oxide.DataFileSystem.GetFile("xpmod_data");
        }
        void OnServerInitialized()
        {
            LoadVariables();
            LoadData();
            foreach (var perm in xpmData.Permissions)
                permission.RegisterPermission(perm.Key, this);
        }
        object OnXpEarn(ulong id, float amount, string source)
        {
            var multiplier = GetMultiplier(id);
            amount = amount * multiplier;
            
            return amount;
        }
        #endregion

        #region Functions
        private float GetMultiplier(ulong playerid)
        {
            float percentage = configData.DefaultMultiplier;
            foreach (var entry in xpmData.Permissions)
            {
                if (permission.UserHasPermission(playerid.ToString(), entry.Key))
                {
                    percentage = entry.Value;
                    break;
                }
            }
            return percentage;
        }
        #endregion

        #region Chat Commands
        [ChatCommand("xpm")]
        private void cmdRod(BasePlayer player, string command, string[] args)
        {
            if (player.IsAdmin())
            {
                if (args == null || args.Length == 0)
                {
                    SendMSG(player, "/xpm add <permission> <multiplier> - Adds a new permission and multiplier");
                    SendMSG(player, "/xpm edit <permission> <multiplier> - Edits a existing permission and multiplier");
                    SendMSG(player, "/xpm remove <permission> - Remove a permission");
                    SendMSG(player, "/xpm list - Lists all permissions and assigned multiplier");
                    return;
                }
                if (args.Length >= 1)
                {
                    switch (args[0].ToLower())
                    {
                        case "add":
                            if (args.Length == 3)
                            {
                                string perm = args[1].ToLower();
                                if (!perm.StartsWith(Title.ToLower() + "."))
                                    perm = Title.ToLower() + "." + perm;
                                if (!permission.PermissionExists(perm) && !xpmData.Permissions.ContainsKey(perm))
                                {
                                    float percentage = 0;
                                    if (float.TryParse(args[2], out percentage))
                                    {
                                        xpmData.Permissions.Add(perm, percentage);
                                        permission.RegisterPermission(perm, this);
                                        SaveData();
                                        SendMSG(player, string.Format("You have successfully added the permission {0} with a multiplier of {1}", perm, percentage));
                                        return;
                                    }
                                    SendMSG(player, "You must enter a valid multiplier number");
                                    return;
                                }
                                SendMSG(player, "That permission already exists");
                                return;
                            }
                            SendMSG(player, "/xpm add <permission> <multiplier> - Adds a new permission and multiplier");
                            return;
                        case "edit":
                            if (args.Length == 3)
                            {
                                if (xpmData.Permissions.ContainsKey(args[1].ToLower()))
                                {
                                    float percentage = 0;
                                    if (float.TryParse(args[2], out percentage))
                                    {
                                        xpmData.Permissions[args[1].ToLower()] = percentage;
                                        SaveData();
                                        SendMSG(player, string.Format("You have successfully edited the permission {0} with a multiplier of {1}", args[1].ToLower(), percentage));
                                        return;
                                    }
                                    SendMSG(player, "You must enter a valid multiplier number");
                                    return;
                                }
                                SendMSG(player, string.Format("The permission {0} does not exist", args[1].ToLower()));
                                return;
                            }
                            SendMSG(player, "/xpm edit <permission> <multiplier> - Edits a existing permission and multiplier");
                            return;
                        case "remove":
                            if (args.Length >= 2)
                                if (xpmData.Permissions.ContainsKey(args[1].ToLower()))
                                {
                                    xpmData.Permissions.Remove(args[1].ToLower());
                                    SaveData();
                                    SendMSG(player, string.Format("You have successfully remove the permission {0}", args[1].ToLower()));
                                    return;
                                }
                            SendMSG(player, string.Format("The permission {0} does not exist", args[1].ToLower()));
                            return;
                        case "list":
                            if (xpmData.Permissions.Count > 0)
                            {
                                SendMSG(player, "Current permissions;");
                                foreach (var entry in xpmData.Permissions)
                                    SendMSG(player, $"{entry.Key} -- {entry.Value}x");
                                return;
                            }
                            SendMSG(player, "There are currently no permissions set up");
                            return;
                    }
                }
            }
        }
        private void SendMSG(BasePlayer player, string message) => SendReply(player, "<color=orange>" + message + "</color>");
        #endregion

        #region Config        
        private ConfigData configData;
        class ConfigData
        {
            public float DefaultMultiplier { get; set; }
        }
        private void LoadVariables()
        {
            LoadConfigVariables();
            SaveConfig();
        }
        protected override void LoadDefaultConfig()
        {
            var config = new ConfigData
            {
                DefaultMultiplier = 1.0f
            };
            SaveConfig(config);
        }
        private void LoadConfigVariables() => configData = Config.ReadObject<ConfigData>();
        void SaveConfig(ConfigData config) => Config.WriteObject(config, true);
        #endregion

        #region Data Management
        void SaveData() => data.WriteObject(xpmData);
        void LoadData()
        {
            try
            {
                xpmData = data.ReadObject<XPMData>();
            }
            catch
            {
                xpmData = new XPMData();
            }
        }
        class XPMData
        {
            public Dictionary<string, float> Permissions = new Dictionary<string, float>();
        }
        #endregion
    }
}

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