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

FREE Utility : 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("Utility", "eandersson", "0.3.2", ResourceId = 2687)]
    public class Utility : RustPlugin
    {
        public readonly static int LayerGround = Rust.Layers.Solid | Rust.Layers.Mask.Water;

        public static void ClearInventory(BasePlayer player)
        {
            if (player == null) return;

            PlayerInventory inventory = player.inventory;
            if (inventory != null)
            {
                inventory.DoDestroy();
                inventory.ServerInit(player);
            }
        }

        public static void DisableTimeOfDay()
        {
            var time = UnityEngine.Object.FindObjectOfType<TOD_Time>();
            time.ProgressTime = false;
        }

        public static List<Vector3> GetCircumferencePositions(Vector3 center, float radius, float next, float y)
        {
            var positions = new List<Vector3>();
            float degree = 0f;

            while (degree < 360)
            {
                float angle = (float)(2 * Math.PI / 360) * degree;
                float x = center.x + radius * (float)Math.Cos(angle);
                float z = center.z + radius * (float)Math.Sin(angle);
                var position = new Vector3(x, center.y, z);

                position.y = y == 0f ? TerrainMeta.HeightMap.GetHeight(position) : y;
                positions.Add(position);

                degree += next;
            }

            return positions;
        }

        public static double GetDistanceBetween(Vector3 obj1, Vector3 obj2)
        {
            Vector3 difference = new Vector3(
                         obj1.x - obj2.x,
                         obj1.y - obj2.y,
                         obj1.z - obj2.z);

            double distance = Math.Sqrt(
            Math.Pow(difference.x, 2f) +
            Math.Pow(difference.y, 2f) +
            Math.Pow(difference.z, 2f));

            return distance;
        }

        public static Vector3 GetGroundPosition(Vector3 position)
        {
            RaycastHit hitinfo;
            if (Physics.Raycast(position + Vector3.up * 200, Vector3.down, out hitinfo, 250f, LayerGround))
                position.y = hitinfo.point.y;
            else position.y = TerrainMeta.HeightMap.GetHeight(position);

            return position;
        }

        public static void GiveStartingItems(BasePlayer player)
        {
            if (player == null) return;

            Utility.ClearInventory(player);
            foreach (string itemName in Data.StartItems)
            {
                Item item = ItemManager.CreateByName(itemName, 1);
                player.GiveItem(item);
            }
        }

        public static Vector3 RandomizePosition(Vector3 position, float randomness = 10f)
        {
            return position + new Vector3(
               (UnityEngine.Random.value - 0.5f) * randomness, 0f, (UnityEngine.Random.value - 0.5f) * randomness
            );
        }

        public static void SetBuildTimes()
        {
            foreach (var bp in ItemManager.bpList)
            {
                if (bp.userCraftable)
                {
                    if (Data.CustomCraftableBuildTime.ContainsKey(bp.name))
                        bp.time = Data.CustomCraftableBuildTime[bp.name];
                    else if (bp.name.StartsWith("ammo"))
                        bp.time = 1.0f;
                    else
                        bp.time = 5.0f;
                }
            }
        }

        public static void SetMaxHealth(BasePlayer player)
        {
            if (player == null) return;

            player.health = 100;
            player.metabolism.calories.Increase(500);
            player.metabolism.hydration.Increase(250);
        }

        public static void SetServerDefaults()
        {
            ConVar.Server.itemdespawn = 32f;
            ConVar.Server.itemdespawn = int.MaxValue - 1;
            ConVar.Decay.upkeep = true;
            ConVar.Decay.upkeep_period_minutes = 7200.0f;
            ConVar.Decay.upkeep_grief_protection = 0.0f;
            ConVar.Spawn.min_rate = 1.0f;
            ConVar.Spawn.max_rate = 1.0f;
            ConVar.Spawn.min_density = 1.0f;
            ConVar.Spawn.max_density = 1.0f;
            ConVar.Spawn.tick_populations = 5.0f;
            ConVar.Spawn.tick_individuals = 60.0f;
        }

        public static void SetStackSizes()
        {
            var gameitemList = ItemManager.itemList;
            foreach (var item in gameitemList)
            {
                if (item.stackable == 1000)
                {
                    item.stackable = 10000;
                }
                else if (item.stackable == 100)
                {
                    item.stackable = 1000;
                }
                else if (item.stackable == 2 || item.stackable == 3)
                {
                    item.stackable = 6;
                }
                else if (item.stackable == 128)
                {
                    item.stackable = 512;
                }
                else if (item.name.Contains("fuel.lowgrade.item"))
                {
                    item.stackable = 1000;
                }
            }
        }

        public static void Teleport(BasePlayer player, Vector3 targetPosition)
        {
            player.EnsureDismounted();
            player.Teleport(targetPosition);
        }

        public static void UnlockAllBlueprints(BasePlayer player)
        {
            player.ClientRPCPlayer(null, player, "craftMode", 1);

            var info = SingletonComponent<ServerMgr>.Instance.persistance.GetPlayerInfo(player.userID);
            info.unlockedItems = ItemManager.bpList.Select(x => x.targetItem.itemid).ToList();
            SingletonComponent<ServerMgr>.Instance.persistance.SetPlayerInfo(player.userID, info);

            player.SendNetworkUpdateImmediate(false);
            player.ClientRPCPlayer<int>(null, player, "UnlockedBlueprint", 0);
        }
    }
}

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