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

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

        private List<Data.VendingItem> components = new List<Data.VendingItem>();
        private List<Data.VendingItem> building = new List<Data.VendingItem>();
        private List<Data.VendingItem> scrap = new List<Data.VendingItem>();
        private List<Data.VendingItem> armor = new List<Data.VendingItem>();
        private List<Data.VendingItem> attire = new List<Data.VendingItem>();
        private List<Data.VendingItem> weapons = new List<Data.VendingItem>();

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

            LoadVendingItems();
        }

        private void LoadVendingItems()
        {
            building.Add(new Data.VendingItem("sewingkit", 1, "scrap", 5));
            building.Add(new Data.VendingItem("metalblade", 1, "scrap", 5));
            building.Add(new Data.VendingItem("techparts", 1, "scrap", 25));
            building.Add(new Data.VendingItem("gears", 1, "scrap", 25));
            building.Add(new Data.VendingItem("lowgradefuel", 50, "scrap", 10));
            building.Add(new Data.VendingItem("leather", 100, "scrap", 10));

            components.Add(new Data.VendingItem("riflebody", 1, "scrap", 250));
            components.Add(new Data.VendingItem("smgbody", 1, "scrap", 30));
            components.Add(new Data.VendingItem("semibody", 1, "scrap", 15));
            components.Add(new Data.VendingItem("metalpipe", 1, "scrap", 5));
            components.Add(new Data.VendingItem("metalspring", 1, "scrap", 10));
            components.Add(new Data.VendingItem("roadsigns", 1, "scrap", 10));
            components.Add(new Data.VendingItem("rope", 1, "scrap", 1));

            armor.Add(new Data.VendingItem("coffeecan.helmet", 1, "scrap", 75));
            armor.Add(new Data.VendingItem("roadsign.gloves", 1, "scrap", 50));
            armor.Add(new Data.VendingItem("roadsign.jacket", 1, "scrap", 150));
            armor.Add(new Data.VendingItem("roadsign.kilt", 1, "scrap", 100));

            scrap.Add(new Data.VendingItem("scrap", 10, "wood", 600));
            scrap.Add(new Data.VendingItem("scrap", 20, "stones", 600));
            scrap.Add(new Data.VendingItem("scrap", 50, "metal.fragments", 600));
            scrap.Add(new Data.VendingItem("scrap", 500, "metal.fragments", 6000));
            scrap.Add(new Data.VendingItem("scrap", 250, "metal.refined", 50));
            
            weapons.Add(new Data.VendingItem("rifle.bolt", 1, "scrap", 8000));
            weapons.Add(new Data.VendingItem("rifle.lr300", 1, "scrap", 400));
            weapons.Add(new Data.VendingItem("rifle.m39", 1, "scrap", 300));
            weapons.Add(new Data.VendingItem("jackhammer", 1, "scrap", 400)); 

            attire.Add(new Data.VendingItem("rocket.launcher", 1, "scrap", 500));
            attire.Add(new Data.VendingItem("explosive.timed", 1, "scrap", 250));
            attire.Add(new Data.VendingItem("ammo.rocket.basic", 1, "scrap", 100));
            attire.Add(new Data.VendingItem("weapon.mod.small.scope", 1, "scrap", 1600));
        }

        private MiningQuarry CreateCenterQuarry(ulong ownerId, Vector3 postion)
        {
            Vector3 spawnPos = postion;
            Quaternion rotation = Quaternion.Euler(new Vector3(0f, 0f, 0f));
            MiningQuarry entity = GameManager.server.CreateEntity(Data.PrefabQuarryStatic, spawnPos, rotation, true) as MiningQuarry;
            entity.isStatic = false;
            entity.OwnerID = ownerId;
            // entity.SetFlag(BaseEntity.Flags.On, true, true, true);
            // entity.InvokeRepeating(new Action(entity.ProcessResources), entity.processRate, entity.processRate);
            entity.Spawn();
            entity.fuelStoragePrefab.instance.GetComponent<StorageContainer>().isLootable = false;
            var fuel = ItemManager.CreateByName("lowgradefuel", 10000);
            fuel.MoveToContainer(entity.fuelStoragePrefab.instance.GetComponent<StorageContainer>().inventory);
            return entity;
        }

        public void StartArena(string Id)
        {
            var arena = this.data.Arenas[Id];

            this.walls.Create(arena.Id, arena.Center.transform.position);

            foreach (var quarry in arena.Quarries)
            {
                Vector3 spawnPos = quarry.transform.position;
                Quaternion rotation = Quaternion.Euler(new Vector3(0f, 90f, 0f));
                MiningQuarry entity = GameManager.server.CreateEntity(Data.PrefabQuarry, spawnPos, rotation, true) as MiningQuarry;

                entity.OwnerID = arena.Id;
                entity.SetFlag(BaseEntity.Flags.On, true, true, true);
                entity.InvokeRepeating(new Action(entity.ProcessResources), entity.processRate, entity.processRate);
                entity.Spawn();
                entity.fuelStoragePrefab.instance.GetComponent<StorageContainer>().isLootable = false;
                var fuel = ItemManager.CreateByName("lowgradefuel", 10000);
                fuel.MoveToContainer(entity.fuelStoragePrefab.instance.GetComponent<StorageContainer>().inventory);
            }

            MiningQuarry centerQuarry = CreateCenterQuarry(arena.Id, arena.Center.transform.position);
            this.data.CenterMiningQuarryToArena.Add(centerQuarry, arena);
        }

        public void InitializeArenas()
        {
            Puts("Initializing Arenas");
            this.data.InitialStartingPositions.Clear();

            foreach (var spawn in UnityEngine.Object.FindObjectsOfType<GameObject>())
            {
                if (spawn.name.Contains("letter_"))
                {
                    string name = spawn.name.Split('/').Last();
                    name = name.Split('.').First();
                    name = name.Split('_').Last();
                    this.data.Arenas.Add(name, new Data.ArenaData(Convert.ToUInt64(this.data.Arenas.Count()), spawn, name));
                }
                else if (spawn.name.Contains("spawn_point"))
                {
                    this.data.InitialStartingPositions.Add(spawn.transform.position);
                }
            }

            foreach (NPCVendingMachine vending in BaseNetworkable.serverEntities.Where(e => e?.name != null).OfType<NPCVendingMachine>().ToList())
            {
                if (vending.name == Data.PrefabVendingComponents)
                {
                    SetupVendingMachine(vending, components);
                }
                else if (vending.name == Data.PrefabVendingFarming)
                {
                    SetupVendingMachine(vending, scrap);
                }
                else if (vending.name == Data.PrefabVendingBuilding)
                {
                    SetupVendingMachine(vending, building);
                }
                else if (vending.name == Data.PrefabVendingExtra)
                {
                    SetupVendingMachine(vending, armor);
                }
                else if (vending.name == Data.PrefabVendingAttire)
                {
                    SetupVendingMachine(vending, attire);
                }
                else if (vending.name == Data.PrefabVendingWeapons)
                {
                    SetupVendingMachine(vending, weapons);
                }
            }

            foreach (var spawn in UnityEngine.Object.FindObjectsOfType<GameObject>().Where(e => e.name == Data.ArenaRespawn).ToList())
            {
                foreach (var arena in this.data.Arenas.Values)
                {
                    double distance = Utility.GetDistanceBetween(arena.Entity.transform.position, spawn.transform.position);

                    if (distance < 250.0f)
                    {
                        List<BaseEntity> list = new List<BaseEntity>();
                        Vis.Entities(spawn.transform.position, 1.0f, list);
                        foreach (var x in list)
                        {
                            x.Kill();
                        }

                        arena.Respawnpoint = spawn;
                        break;
                    }
                }
            }

            foreach (var spawn in UnityEngine.Object.FindObjectsOfType<GameObject>().Where(e => e.name == Data.ArenaTeamQuarry).ToList())
            {
                foreach (var arena in this.data.Arenas.Values)
                {
                    double distance = Utility.GetDistanceBetween(arena.Entity.transform.position, spawn.transform.position);

                    if (distance < 200.0f)
                    {
                        List<BaseEntity> list = new List<BaseEntity>();
                        Vis.Entities(spawn.transform.position, 1.0f, list);
                        foreach (var x in list)
                        {
                            x.Kill();
                        }

                        arena.Quarries.Add(spawn);
                        break;
                    }
                }
            }

            foreach (var spawn in UnityEngine.Object.FindObjectsOfType<GameObject>().Where(e => e.name == Data.ArenaCenterQuarry).ToList())
            {
                foreach (var arena in this.data.Arenas.Values)
                {
                    double distance = Utility.GetDistanceBetween(arena.Entity.transform.position, spawn.transform.position);

                    if (distance < 200.0f)
                    {
                        List<BaseEntity> list = new List<BaseEntity>();
                        Vis.Entities(spawn.transform.position, 1.0f, list);
                        foreach (var x in list)
                        {
                            x.Kill();
                        }

                        arena.Center = spawn;
                        break;
                    }
                }
            }

            foreach (var spawn in UnityEngine.Object.FindObjectsOfType<GameObject>().Where(e => e.name == Data.ArenaTeamSpawn).ToList())
            {
                foreach (var arena in this.data.Arenas.Values)
                {
                    double distance = Utility.GetDistanceBetween(arena.Entity.transform.position, spawn.transform.position);

                    if (distance < 200.0f)
                    {
                        foreach (var team in arena.Teams.Values)
                        {
                            if (team.Spawnpoint == null)
                            {
                                team.Spawnpoint = spawn;
                                break;
                            }
                        }
                        break;
                    }
                }
            }
        }

        private void SetupVendingMachine(NPCVendingMachine vending, List<Data.VendingItem> items)
        {
            List<NPCVendingOrder.Entry> temp = new List<NPCVendingOrder.Entry>();
            foreach (var item in items)
            {
                temp.Add(new NPCVendingOrder.Entry
                {
                    currencyAmount = item.CurrnencyAmount,
                    currencyAsBP = false,
                    currencyItem = item.currency,
                    sellItem = item.item,
                    sellItemAmount = item.ItemAmount,
                    sellItemAsBP = false
                });
            }

            vending.vendingOrders.orders = temp.ToArray();
            vending.InstallFromVendingOrders();
        }
    }
}

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