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

FREE SnowMoped : 0.0.3 0.0.3

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Newtonsoft.Json;
using Oxide.Core;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("SnowMobile","megargan","0.0.3")]
    class SnowMoped : RustPlugin
    {
        #region Configuration
        private static Configuration _config = new Configuration();
        public class Configuration
        {
            [JsonProperty("Скин ID обычного снегохода")]
            public ulong SkinIDSimple { get; set; } = 2742584081;
            
            [JsonProperty("Скин ID снегохода tomaha")]
            public ulong SkinIDTomaha { get; set; } = 2745113546;

            [JsonProperty("Скин ID снегохода ultra")]
            public ulong SkinIDUltra { get; set; } = 2750417732;

            [JsonProperty("Количество топлива внутри снегохода")]
            public int FuelAmount { get; set; } = 100;

            public static Configuration GetNewConfiguration()
            {
                return new Configuration
                {
                };
            }
        }
        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                _config = Config.ReadObject<Configuration>();
                if (_config == null) LoadDefaultConfig();
            }
            catch
            {
                Puts("!!!!ОШИБКА КОНФИГУРАЦИИ!!!! создаем новую");
                LoadDefaultConfig();
            }

            NextTick(SaveConfig);
        }

        private void OnServerInitialized()
        {
            if (_config.SkinIDTomaha == 0 || _config.SkinIDSimple == 0 || _config.SkinIDUltra == 0)
            {
                Puts("Значение skinID в конфиге не может быть 0");
                Interface.Oxide.UnloadPlugin(Name);
            }
        }
        protected override void LoadDefaultConfig() => _config = Configuration.GetNewConfiguration();
        protected override void SaveConfig() => Config.WriteObject(_config);
        #endregion

        private object CanBuild(Planner planner, Construction prefab, Construction.Target target)
        {
            if (planner == null || prefab == null || target.player == null) return null;
            if (planner.skinID != _config.SkinIDTomaha && planner.skinID != _config.SkinIDSimple) return null;
            RaycastHit hit;
            if (Physics.Raycast(new Vector3(target.position.x, target.position.y + 1, target.position.z),Vector3.down, out hit, 2f,
                    LayerMask.GetMask(new string[] {"Terrain", "Construction" })) && !hit.collider.name.Contains("building core") && !hit.collider.name.Contains("rock_cliff") && hit.GetEntity() == null) return null;
            SendReply(target.player, "Нельзя ставить на скалах или постройках!");
            return false;
        }
        private void OnEntitySpawned(StorageContainer entity)
        {
            if (entity.skinID == _config.SkinIDSimple || entity.skinID == _config.SkinIDTomaha || entity.skinID == _config.SkinIDUltra)
            {
                var transform = entity.transform;
                Vector3 ePos = transform.position;
                Snowmobile snowmobil = null;
                if (entity.skinID == _config.SkinIDSimple)
                {
                    snowmobil = GameManager.server.CreateEntity(
                        "assets/content/vehicles/snowmobiles/snowmobile.prefab", ePos,
                        transform.rotation * new Quaternion(0, 1f, 0, 1f), true) as Snowmobile;
                }
                else if (entity.skinID == _config.SkinIDTomaha)
                {
                    snowmobil = GameManager.server.CreateEntity(
                        "assets/content/vehicles/snowmobiles/tomahasnowmobile.prefab", ePos,
                        transform.rotation * new Quaternion(0, 1f, 0, 1f), true) as Snowmobile;
                } else if (entity.skinID == _config.SkinIDUltra)
                {
                    snowmobil = GameManager.server.CreateEntity(
                        "assets/content/vehicles/snowmobiles/tomahasnowmobile.prefab", ePos,
                        transform.rotation * new Quaternion(0, 1f, 0, 1f), true) as Snowmobile;
                    snowmobil.engineKW = 90000;
                    snowmobil.badTerrainDrag = 0f;
                    snowmobil.airControlStability = 10000f;
                    snowmobil.hurtTriggerMinSpeed = 10000f;
                } else return;
                snowmobil.Spawn();
                if (_config.FuelAmount > 0)
                    snowmobil.GetFuelSystem().GetFuelContainer().inventory.AddItem(ItemManager.FindItemDefinition("lowgradefuel"), _config.FuelAmount);
                
                NextTick(() => entity.Kill());
            } else return;
        }

        [ChatCommand("givemobile")]
        private void MobileAddChat(BasePlayer player, string command, string[] args)
        {
            if (!player.IsAdmin) return;
            if (args == null || args.Length == 0)
            {
                player.ChatMessage("snowmobile.add [nick/id] [1-3] 1 - обычный 2 - tomaha 3 - ultra");
                return;
            }

            BasePlayer target = BasePlayer.Find(args[0]);
            int snowtype = 0;
            if (!int.TryParse(args[1], out snowtype))
            {
                player.ChatMessage("snowmobile.add [nick/id] [1-3] 1 - обычный 2 - tomaha 3 - ultra");
                return;
            }
            CreateMobile(target, snowtype);
        }
        [ConsoleCommand("snowmobile.add")]
        private void MobileAdd(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            if(!arg.IsAdmin) return;
            if (!arg.HasArgs())
            {
                PrintWarning("snowmobile.add [nick/id] [1-3] 1 - обычный 2 - tomaha 3 - ultra");
                if(player != null) player.ChatMessage("snowmobile.add [nick/id] [1-3] 1 - обычный 2 - tomaha 3 - ultra");
                return;
            }
            BasePlayer target = BasePlayer.Find(arg.Args[0]);
            if (target == null)
            {
                PrintWarning("Игрок не найден!");
                if(player != null) player.ChatMessage("Игрок не найден!");
            }
            int snowtype = 0;
            if (!int.TryParse(arg.Args[1], out snowtype))
            {
                PrintWarning("snowmobile.add [nick/id] [1-3] 1 - обычный 2 - tomaha 3 - ultra");
                if(player != null) player.ChatMessage("snowmobile.add [nick/id] [1-3] 1 - обычный 2 - tomaha 3 - ultra");
                return;
            }
            CreateMobile(target, snowtype);
        }

        private void CreateMobile(BasePlayer target, int snowtype)
        {
            Item snow = null;
            switch (snowtype)
            {
                case 1:
                {
                    snow = ItemManager.CreateByName("coffin.storage", 1, _config.SkinIDSimple);
                    snow.name = "SNOW MOBILE";
                    break;
                }
                case 2:
                {
                    snow = ItemManager.CreateByName("coffin.storage", 1, _config.SkinIDTomaha);
                    snow.name = "SNOW MOBILE TOMAHA";
                    break;
                }
                case 3:
                {
                    snow = ItemManager.CreateByName("coffin.storage", 1, _config.SkinIDUltra);
                    snow.name = "SNOW MOBILE TOMAHA-ULTRA";
                    break;
                }
            }
            if (snow != null)
            {
                
                if (!target.inventory.GiveItem(snow))
                    snow.Drop(target.inventory.containerMain.dropPosition, target.inventory.containerMain.dropVelocity);
            }
        }
    }
}

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