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

FREE TPEconomic : 20.0.2 20.0.2

Нет прав для скачивания
C#:
using System.Collections.Generic;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
using Oxide.Core;
namespace Oxide.Plugins
{
	[Info("TPEconomic", "pluginfuel.ru", "20.0.2")]
	class TPEconomic : RustPlugin
	{
		[PluginReference] Plugin TPMenuSystem;
		[JsonProperty("Система экономики")] public Dictionary<ulong, float> DataEconomics = new Dictionary<ulong, float>();
		[HookMethod("API_GET_BALANCE")]
		public float API_GET_BALANCE(object player)
		{
			ulong id = ToUlong(player);
			if (!DataEconomics.ContainsKey(id)) return 0f;
			return DataEconomics[id];
		}
		[HookMethod("API_PUT_BALANCE_PLUS")]
		public void API_PUT_BALANCE_PLUS(object player, object money)
		{
			ulong id = ToUlong(player);
			float amount = ToFloat(money);
			if (!DataEconomics.ContainsKey(id)) DataEconomics[id] = 0f;
			DataEconomics[id] += amount;
			WriteData();
			AnoncePlayer(id, $"Вам зачислено {amount} ₽");
		}
		
        [HookMethod("API_PUT_BALANCE_MINUS")]
        public void API_PUT_BALANCE_MINUS(object player, object money)
        {
            ulong id = ToUlong(player);
            float amount = ToFloat(money);
            if (!DataEconomics.ContainsKey(id)) DataEconomics[id] = 0f;
            DataEconomics[id] -= amount;
            WriteData();
            AnoncePlayer(id, $"C баланса списано {amount} ₽");
		}
		
        private ulong ToUlong(object val)
        {
            if (val is ulong u) return u;
            if (val is string s && ulong.TryParse(s, out var id)) return id;
            if (val is int i) return (ulong)i;
            if (val is long l) return (ulong)l;
            return 0;
		}
        private float ToFloat(object val)
        {
            if (val is float f) return f;
            if (val is double d) return (float)d;
            if (val is int i) return i;
            if (val is long l) return l;
            if (val is string s && float.TryParse(s, out var v)) return v;
            return 0f;
		}
		
        [ConsoleCommand("ec.give")]
        void cmdMoneyGive(ConsoleSystem.Arg args)
        {
            if (!args.IsAdmin) return;
            var player = args.Args[0];
            var much = args.Args[1];
			
            API_PUT_BALANCE_PLUS(player, much);
            Puts($"Баланс выдан {player} - {much} ₽.");
		}
		
        private BasePlayer FindPlayer(string nameOrId)
        {
            foreach (var check in BasePlayer.activePlayerList)
            {
                if (check.displayName.ToLower().Contains(nameOrId.ToLower()) || check.userID.ToString() == nameOrId)
				return check;
			}
            return null;
		}
		
        private void AnoncePlayer(ulong player, string txt)
        {
            BasePlayer playerBS = FindPlayer(player.ToString());
            if(playerBS == null) return;
            playerBS.ChatMessage(txt);
		}
		
        void OnPlayerConnected(BasePlayer player)
        {
            RegisteredDataUser(player.userID);
		}
		
        void RegisteredDataUser(ulong player)
        {
            if (!player.IsSteamId()) return;
            if (!DataEconomics.ContainsKey(player))
			DataEconomics.Add(player, 1);
		}
		
        void OnServerInitialized()
        {
            foreach(BasePlayer player in BasePlayer.activePlayerList)
			OnPlayerConnected(player);
            timer.Every(360f, WriteData);
		}
		
        void Unload() => WriteData();
        private void OnServerShutdown() => Unload();
        private void Init() => ReadData();
		
        void ReadData()
        {
            DataEconomics = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, float>>("TP/DataEconomics");
		}
        void WriteData() {
            Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("TP/DataEconomics", DataEconomics);
		}
	}
}

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