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

FREE ClanObjectLimit : 1.0.0 1.0.0

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

namespace Oxide.Plugins
{
    [Info("ClanObjectLimit", "YourName", "1.0.0")]
    [Description("Sets a limit on the number of objects a clan can place on the server.")]
    public class ClanObjectLimit : RustPlugin
    {
        private Dictionary<string, int> clanObjectCounts = new Dictionary<string, int>();

        private void OnServerInitialized()
        {
            LoadData();
            InitializeLimits();
        }

        private void OnNewSave(string filename)
        {
            clanObjectCounts.Clear();
        }

        private void Unload()
        {
            SaveData();
        }

        private void InitializeLimits()
        {
            var clans = plugins.Find("Clans");
            if (clans == null)
            {
                Puts("Clans plugin not found.Make sure you have Clans installed.");
                return;
            }

            clans.Call("RegisterClanHook", this, "OnClanAddOrUpdate");
        }

        private void OnClanAddOrUpdate(string tag)
        {
            if (!clanObjectCounts.ContainsKey(tag))
                clanObjectCounts[tag] = 0;
        }

        private void OnEntitySpawned(BaseNetworkable entity)
        {
            if (!entity.isServer || !entity.isActiveAndEnabled)
                return;

            var buildingBlock = entity as BuildingBlock;
            if (buildingBlock == null)
                return;

            var ownerId = buildingBlock.OwnerID.ToString();
            var ownerClan = GetClanByPlayerId(ownerId);
            if (ownerClan == null)
                return;

            if (!clanObjectCounts.ContainsKey(ownerClan))
                clanObjectCounts[ownerClan] = 0;

            clanObjectCounts[ownerClan]++;

            if (clanObjectCounts[ownerClan] > GetClanObjectLimit())
            {
                buildingBlock.Kill(BaseNetworkable.DestroyMode.None);
                SendReply(buildingBlock.OwnerID, "You have reached the maximum number of objects you can place.");
            }
        }

        private string GetClanByPlayerId(string playerId)
        {
            var clans = plugins.Find("Clans");
            if (clans == null)
                return null;

            var clanData = clans.Call("GetClan", playerId);
            if (clanData != null)
                return clanData.ToString();

            return null;
        }

        private int GetClanObjectLimit()
        {
            // Change this method to return the desired object limit for clans
            return 50;
        }

        // Save and load data using Oxide's datafile system
        private void SaveData() => Interface.Oxide.DataFileSystem.WriteObject(Name, clanObjectCounts);
        private void LoadData()
        {
            try
            {
                clanObjectCounts = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<string, int>>(Name);
            }
            catch
            {
                clanObjectCounts = new Dictionary<string, int>();
            }
        }
    }
}

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