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

FREE ClanVIP : 1.2.1 1.2.1

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

namespace Oxide.Plugins
{
    [Info("ClanVIP", "Eh3ani", "1.2.1")]
    [Description("Gives VIP if clan has X+ members; Removes VIP when leaving clan or clan < X members.")]
    public class ClanVIP : CovalencePlugin
    {
        #region Configuration (Editable)

        // Minimum clan members required for VIP
        private const int minClanMembers = 4;

        // Name of the VIP group to grant/remove
        private const string vipGroup = "vip";

        #endregion

        // Reference to the Clans plugin
        [PluginReference] private Plugin Clans;

        void Init()
        {
            // Create VIP group if it doesn't exist
            if (!permission.GroupExists(vipGroup))
            {
                permission.CreateGroup(vipGroup, "VIP Group", 0);
                Puts($"Created '{vipGroup}' group.");
            }
        }

        // Hook: When a player joins a clan
        void OnClanMemberJoined(string userID, string tag)
        {
            if (Clans == null) return;

            // Get clan members after the new member joined
            var clan = Clans.Call<Newtonsoft.Json.Linq.JObject>("GetClan", tag);
            var members = clan?["members"]?.ToObject<List<string>>();
            if (members == null || members.Count < minClanMembers) return;

            // Give VIP to all members if clan has enough members
            foreach (var memberID in members)
                AddVip(memberID);
        }

        // Hook: When a player leaves a clan
        void OnClanMemberGone(string userID, string tag)
        {
            // Remove VIP from the leaving player
            RemoveVip(userID);  

            if (Clans == null) return;

            // Get remaining clan members after someone left
            var clan = Clans.Call<Newtonsoft.Json.Linq.JObject>("GetClan", tag);
            var members = clan?["members"]?.ToObject<List<string>>();
            
            // If clan members fall below required number, remove VIP from remaining members
            if (members == null || members.Count < minClanMembers)
            {
                if (members != null)
                {
                    foreach (var memberID in members)
                        RemoveVip(memberID);
                }
            }
        }

        // Adds VIP group to a player
        void AddVip(string userID)
        {
            if (!permission.UserHasGroup(userID, vipGroup))
            {
                permission.AddUserGroup(userID, vipGroup);
                var player = players.FindPlayerById(userID);
                player?.Message("You have been added to VIP.");
            }
        }

        // Removes VIP group from a player
        void RemoveVip(string userID)
        {
            if (permission.UserHasGroup(userID, vipGroup))
            {
                permission.RemoveUserGroup(userID, vipGroup);
                var player = players.FindPlayerById(userID);
                player?.Message("Your VIP status has been removed.");
            }
        }

        // Hook: Check player's VIP on server join
        void OnUserConnected(IPlayer player)
        {
            timer.Once(5f, () => CheckPlayerVip(player));
        }

        // Check and update VIP for a player
        void CheckPlayerVip(IPlayer player)
        {
            if (Clans == null) return;

            var clanTag = Clans.Call<string>("GetClanOf", player.Id);
            
            // Remove VIP if player is not in a clan
            if (string.IsNullOrEmpty(clanTag))
            {
                RemoveVip(player.Id);
                return;
            }

            // Get clan members to check if clan size is sufficient
            var clanMembers = Clans.Call<List<string>>("GetClanMembers", player.Id);
            if (clanMembers != null && clanMembers.Count >= minClanMembers)
                AddVip(player.Id);
            else
                RemoveVip(player.Id);
        }
    }
}

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