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

FREE Stages : 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("Stages", "eandersson", "0.3.2", ResourceId = 2683)]
    public class Stages : RustPlugin
    {
        private Arena arena = null;
        private Data data = null;
        private Setup setup = null;
        private Team team = null;
        private Ui ui = null;
        private Walls walls = null;

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

        public void ClearArena(Data.ArenaData arena)
        {
            this.walls.Remove(arena.Id);

            int itemsKilled = 0;

            foreach (var entity in arena.GetSleepingBags())
            {
                if (entity.IsDestroyed == false)
                {
                    entity.Kill();
                    itemsKilled += 1;
                }
            }

            if (arena.Center == null) return;

            List<BaseEntity> list = new List<BaseEntity>();
            Vis.Entities(arena.Center.transform.position, 200.0f, list);
            foreach (BaseEntity entity in list)
            {
                if (entity == null) continue;
                if (entity is NPCVendingMachine) continue;

                if (entity is BuildingBlock || entity is DroppedItem ||
                    entity.PrefabName == Data.PrefabQuarry ||
                    entity.PrefabName == Data.PrefabQuarryStatic ||
                    Data.DespawnItems.Contains(entity.ShortPrefabName) ||
                    arena.ActivePlayers.Contains(entity.OwnerID))
                {
                    if (entity.IsDestroyed == false)
                    {
                        entity.Kill();
                        itemsKilled += 1;
                    }
                }
            }

            Puts(string.Format("Killed {0} entities from Arena {1}", itemsKilled, arena.Name.ToUpper()));
        }

        public void StartWaitingStage(Data.ArenaData arena)
        {
            this.walls.Remove(arena.Id);

            arena.CurrentStage = (int) Data.Stages.Waiting;
            arena.ScrapMultiplier = 1;
            arena.StageEndTime = null;
            arena.StageStartTime = DateTime.UtcNow.ToString();
            arena.CurrentStageName = "Waiting";

            this.ClearArena(arena);
        }

        public void StartWarmupStage(Data.ArenaData arena)
        {
            DateTime now = DateTime.UtcNow;
            DateTime rs = now.AddMinutes(5f);
            arena.CurrentStage = (int) Data.Stages.Warmup;
            arena.StageEndTime = rs.ToString();
            arena.StageStartTime = DateTime.UtcNow.ToString();
            arena.CurrentStageName = "Warmup";
        }

        public void StartBuildingStage(Data.ArenaData arena)
        {
            int playerCount = arena.TotalPlayers();
            if (playerCount < Data.MinPlayerAllowed)
            {
                this.StartWarmupStage(arena);
                return;
            }

            DateTime now = DateTime.UtcNow;
            DateTime rs = now.AddMinutes(20f);

            this.setup.StartArena(arena.Name);

            arena.CurrentStage = (int) Data.Stages.Building;
            arena.StageEndTime = rs.ToString();
            arena.StageStartTime = DateTime.UtcNow.ToString();
            arena.CurrentStageName = "Building";

            timer.Once(3.0f, () => {
                NextTick(() =>
                {
                    foreach (BasePlayer player in BasePlayer.activePlayerList)
                    {
                        Data.Team team = this.data.GetPlayerTeam(player);
                        if (team == null) continue;
                        if (arena != team.Arena) continue;

                        Utility.Teleport(player, this.data.GetSpawnPoint(team, player));

                        NextTick(() => { Utility.GiveStartingItems(player); });
                    }
                });
            });

            covalence.Server.Broadcast(string.Format("[{0}] Building phase has started!", arena.Name.ToUpper()));
        }

        public void StartAttackingStage(Data.ArenaData arena)
        {
            int remaning = this.data.GetTeamsWithCupboards(arena).Count();
            if (remaning <= 1)
            {
                covalence.Server.Broadcast("No TCs built! Ending game.");
                this.StartGameOverStage(arena);
                return;
            }

            DateTime now = DateTime.UtcNow;
            arena.CurrentStage = (int) Data.Stages.Attacking;
            arena.CurrentStageName = "Attacking";
            arena.StageEndTime = null;
            arena.StageStartTime = DateTime.UtcNow.ToString();

            this.walls.Remove(arena.Id);

            covalence.Server.Broadcast(string.Format("[{0}] Attacking phase has started!", arena.Name.ToUpper()));
        }

        public void StartGameOverStage(Data.ArenaData arena)
        {
            DateTime now = DateTime.UtcNow;
            DateTime rs = now.AddMinutes(3f);

            arena.CurrentStage = (int) Data.Stages.GameOver;
            arena.CurrentStageName = "GameOver";
            arena.StageEndTime = rs.ToString();
            arena.StageStartTime = DateTime.UtcNow.ToString();
            arena.GameOver = true;
        }

        public void ResetArena(Data.ArenaData arena)
        {
            if (arena == null) return;

            foreach (ulong player in arena.GetPlayers())
            {
                this.team.LeaveTeam(this.data.GetPlayer(player), arena);
            }

            arena.Reset();
        }
    }
}

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