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

FREE Team : 0.3.2 0.3.2

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Network;
using Network.Visibility;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Oxide.Core;
using Oxide.Core.Configuration;
using Oxide.Core.Libraries;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust;
using Oxide.Game.Rust.Cui;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading;
using Rust;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Team", "eandersson", "0.3.2", ResourceId = 2685)]
    public class Team : RustPlugin
    {
        private Arena arena = null;
        private Data data = null;
        private Walls walls = null;

        private Dictionary<int, RelationshipManager.PlayerTeam> parties = new Dictionary<int, RelationshipManager.PlayerTeam>();

        public void Configure(Arena arena)
        {
            this.arena = arena;
            this.data = arena.data;
            this.walls = arena.walls;
        }

        private void Unload()
        {
            Puts("Unload called...");

            foreach (var team in RelationshipManager.Instance.teams.Values.ToList())
            {
                RelationshipManager.Instance.DisbandTeam(team);
            }
        }

        public void JoinTeam(BasePlayer player, Data.ArenaData arena, Data.Team newTeam)
        {
            if (player == null) return;
            if (newTeam == null) return;
            if (arena == null) return;
            if (newTeam.Players.Count() + 1 > arena.MaxPlayersPerTeam) return;
            if (!arena.ActivePlayers.Contains(player.userID)) arena.ActivePlayers.Add(player.userID);

            LeaveTeam(player, arena);

            NextTick(() =>
            {
                var t = CreateOrValidateTeam(newTeam, player);
                if (t != null)
                {
                    if (!newTeam.Players.Contains(player.userID))
                    {
                        newTeam.Players.Add(player.userID);
                    }
                    covalence.Server.Broadcast(string.Format("{0}: {1} joined team {2} 1.", arena.Name.ToUpper(), player.displayName, newTeam.Name));
                    return;
                }

                if (!parties.ContainsKey(newTeam.Id))
                {
                    Puts("No such party!");
                }

                if (!newTeam.Players.Contains(player.userID))
                {
                    newTeam.Players.Add(player.userID);
                }

                if (!parties[newTeam.Id].AddPlayer(player))
                {
                    Puts("Already on team");
                }

                if (parties[newTeam.Id].GetLeader() == null)
                {
                    parties[newTeam.Id].SetTeamLeader(player.userID);
                    Puts("No leader!");
                }

                covalence.Server.Broadcast(string.Format("{0}: {1} joined team {2} 2.", arena.Name.ToUpper(), player.displayName, newTeam.Name));
            });
        }

        private RelationshipManager.PlayerTeam CreateOrValidateTeam(Data.Team team, BasePlayer player)
        {
            var c = RelationshipManager.Instance.FindPlayersTeam(player.userID);
            if (c != null)
            {
                c.RemovePlayer(player.userID);
            }

            if (!parties.ContainsKey(team.Id))
            {
                Puts(string.Format("New Party with TeamId {0}", team.Id));
                RelationshipManager.PlayerTeam newTeam = RelationshipManager.Instance.CreateTeam();
                RelationshipManager.PlayerTeam playerTeam = newTeam;
                playerTeam.teamLeader = player.userID;
                playerTeam.AddPlayer(player);
                parties.Add(team.Id, playerTeam);
                return playerTeam;
            }

            var currentTeam = RelationshipManager.Instance.FindTeam(parties[team.Id].teamID);
            if (currentTeam == null)
            {
                Puts("Re-creating bad team!");
                if (parties.ContainsKey(team.Id))
                {
                    if (parties[team.Id] != null)
                    {
                        Puts("Trying to Disband previous team!");
                        parties[team.Id].Disband();
                    }

                    parties.Remove(team.Id);
                }

                RelationshipManager.PlayerTeam newTeam = RelationshipManager.Instance.CreateTeam();
                RelationshipManager.PlayerTeam playerTeam = newTeam;
                playerTeam.teamLeader = player.userID;
                playerTeam.AddPlayer(player);
                parties.Add(team.Id, playerTeam);
                return playerTeam;
            }
            return null;
        }

        private void ValidateAndFixTeams()
        {
            //foreach (BasePlayer player in BasePlayer.activePlayerList)
            //{
            //    Data.Team team = this.data.GetPlayerTeam(player);

            //    if (player.currentTeam == 0UL && team != null)
            //    {
            //        if (CreateOrValidateTeam(team, player) == true) return;

            //        if (!parties.ContainsKey(team.Id))
            //        {
            //            Puts("No such party!");
            //        }

            //        if (!parties[team.Id].AddPlayer(player))
            //        {
            //            Puts("Already on team");
            //        }

            //        if (parties[team.Id].GetLeader() == null)
            //        {
            //            parties[team.Id].SetTeamLeader(player.userID);
            //            Puts("No leader!");
            //        }
            //    }
            //}
        }

        public void LeaveTeam(BasePlayer player, Data.ArenaData arena)
        {
            if (player == null) return;

            var currentTeam = this.data.GetPlayerTeam(player);
            if (currentTeam != null)
            {
                covalence.Server.Broadcast(string.Format("{0}: {1} left team {2}.", arena.Name.ToUpper(), player.displayName, currentTeam.Name));
            }

            this.data.ClearUserCacheForArena(player);

            foreach (Data.Team team in arena.Teams.Values)
            {
                if (team.Players.Contains(player.userID))
                {
                    team.Players.Remove(player.userID);
                }

                if (parties.ContainsKey(team.Id))
                {
                    var party = parties[team.Id];
                    if (party == null) continue;
                    party.RemovePlayer(player.userID);
                    if (party.members.Count == 0) parties.Remove(team.Id);
                }
            }

            player.ClearTeam();
        }
    }
}

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