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

FREE NameBonus : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using System.Linq;
using Oxide.Core;
using System.Collections.Generic;
using System;
using Newtonsoft.Json;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using Oxide.Core.Plugins;
using System.Globalization;

namespace Oxide.Plugins
{
    [Info("NameBonus", "Drop Dead", "1.0.0")]
    class NameBonus : RustPlugin
    {

        int amount = 10;

        public Dictionary<ulong, bool> Players = new Dictionary<ulong, bool>();
        private Dictionary<ulong, int> Cooldowns = new Dictionary<ulong, int>();

        private void SaveData()
        {
            Interface.Oxide.DataFileSystem.WriteObject($"{Title}/Players", Players);
            Interface.Oxide.DataFileSystem.WriteObject($"{Title}/Cooldown", Cooldowns);
        }

        private void LoadData()
        {
            if (Interface.Oxide.DataFileSystem.ExistsDatafile($"{Title}/Players")) Players = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, bool>>($"{Title}/Players");
            if (Interface.Oxide.DataFileSystem.ExistsDatafile($"{Title}/Cooldown")) Cooldowns = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, int>>($"{Title}/Cooldown");
        }

        void OnServerSave()
        {
            SaveData();
        }

        void Unload()
        {
            InvokeHandler.Instance.CancelInvoke(RemoveCooldown);
            SaveData();
        }

        private void OnServerInitialized()
        {
            LoadData();
            foreach (var player in BasePlayer.activePlayerList) 
				OnPlayerConnected(player);
			InvokeHandler.Instance.InvokeRepeating(RemoveCooldown, 1f, 1f);
        }

        void RemoveCooldown()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                if (Cooldowns.ContainsKey(player.userID) && Cooldowns[player.userID] != 0)
                {
                    Cooldowns[player.userID] -= 1;
                }
                if (Cooldowns.ContainsKey(player.userID) && Cooldowns[player.userID] == 0)
                {
                    Cooldowns.Remove(player.userID);
                }
            }
        }

        private void OnPlayerConnected(BasePlayer player)
        {
            if (player.IsNpc) return;
            if (player.IsReceivingSnapshot)
            {
                NextTick(() => OnPlayerConnected(player));
                return;
            }

            if (!Players.ContainsKey(player.userID)) Players.Add(player.userID, false);
            if (player.displayName.Contains("#ONYXRUST") || player.displayName.Contains("#onyxrust") && !Cooldowns.ContainsKey(player.userID))
            {
                player.ChatMessage($"Вы можете получить бонус за приставку <color=#CF1E1E>#ONYXRUST</color> в нике, пропишите <color=#CF1E1E>/bonus</color>");
                Players[player.userID] = true;
            }
        }

        [ChatCommand("bonus")]
        void ChatForcedEventHandler(BasePlayer player, string command, string[] args)
        {
            if (player == null) return;


                if (Players[player.userID] == false)
                {
                    player.ChatMessage("Вы не можете получить бонус за приставку в нике, так как у Вас её нет");
                    return;
                }

                if (Cooldowns.ContainsKey(player.userID) && Cooldowns[player.userID] != 0)
                {
                    player.ChatMessage($"Вы уже получали свой бонус за приставку в нике, получить следующий вы можете через: {TimeToString(Cooldowns[player.userID])}");
                    return;
                }
                if (Cooldowns.ContainsKey(player.userID) && Cooldowns[player.userID] == 0)
                    Cooldowns.Remove(player.userID);

                player.ChatMessage($"Вы успешно получили {amount} руб. на магазин за приставку <color=#CF1E1E>#ONYXRUST</color> в нике");
                GiveMoney(player.userID, amount);
                
                if (Cooldowns.ContainsKey(player.userID))
                    Cooldowns[player.userID] = 28800;
                else
                    Cooldowns.Add(player.userID, 28800);
        }

        public string TimeToString(double time)
        {
            TimeSpan elapsedTime = TimeSpan.FromSeconds(time);
            int hours = elapsedTime.Hours;
            int minutes = elapsedTime.Minutes;
            int seconds = elapsedTime.Seconds;
            int days = Mathf.FloorToInt((float)elapsedTime.TotalDays);
            string s = "";
            if (days > 0) s += $"{days} дн.";
            if (hours > 0) s += $"{hours} ч. ";
            if (minutes > 0) s += $"{minutes} мин. ";
            if (seconds > 0) s += $"{seconds} сек.";
            else s = s.TrimEnd(' ');
            return s;
        }

        void GiveMoney(ulong userid, int amount)
        {
            var plugin = plugins.Find("RustStore");
            plugin?.Call("APIChangeUserBalance", userid, amount, new Action<string>((result) =>
            {
                if (result == "SUCCESS")
                {
                    Interface.Oxide.LogDebug($"Игрок {userid} получил {amount} руб на баланс в магазине за приставку в нике");
                    return;
                }
                Interface.Oxide.LogDebug($"Баланс не был изменен, ошибка: {result}");
            }));
        }
    }
}

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