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

FREE ExtendedCrafting : 0.3.6 0.3.6

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

namespace Oxide.Plugins
{
    [Info("Extended Crafting", "nivex & judess69er", "0.3.6")]
    [Description("Allows players to deploy additional entities.")]
    class ExtendedCrafting : RustPlugin
    {
		#region Engine
        private static Dictionary<NetworkableId, ExtendedController> _controllers = new Dictionary<NetworkableId, ExtendedController>();
        private const int _layerMask = Layers.Mask.Terrain | Layers.Mask.World | Layers.Mask.Construction;
        private List<int> _layers = new List<int> { (int)Layer.World, (int)Layer.Terrain };
        private const string permAllow = "extendedcrafting.allow";
        private const string permFree = "extendedcrafting.free";
        private Dictionary<ulong, ExtendedInfo> _skins = new Dictionary<ulong, ExtendedInfo>();
        private static ExtendedCrafting Instance;
        private RaycastHit _hit;

        public class ExtendedController : FacepunchBehaviour
        {
            internal BaseCombatEntity entity;
            internal RaycastHit hit;
            internal ExtendedInfo ei;
            internal NetworkableId uid;

            private void Awake()
            {
                entity = GetComponent<BaseCombatEntity>();
                _controllers[uid = entity.net.ID] = this;
                ei = Instance._skins[entity.skinID];
                if (ei.destroy.ground) InvokeRepeating(CheckGround, 5f, 5f);
            }

            private void CheckGround()
            {
                var position = entity.transform.position;

                if (!Physics.Raycast(position + new Vector3(0f, 0.1f, 0f), Vector3.down, out hit, 4f, _layerMask) || hit.distance > 0.2f)
                {
                    if (ei.destroy.give)
                    {
                        ei.GiveItem(position);
                    }

                    foreach (var effect in ei.destroy.effects)
                    {
                        Effect.server.Run(effect, position);
                    }

                    CancelInvoke(CheckGround);
                    entity.Kill();
                }
            }

            public void TryPickup(BasePlayer player)
            {
                if (!ei.pickup.enabled)
                {
                    Message(player, "Disabled");
                    return;
                }

                if (ei.pickup.privilege && !player.CanBuild())
                {
                    Message(player, "Build");
                    return;
                }

                if (ei.pickup.owner && entity.OwnerID != player.userID)
                {
                    Message(player, "Owner");
                    return;
                }

                if (entity.SecondsSinceDealtDamage < 30f)
                {
                    Message(player, "Damaged");
                    return;
                }

                var ice = entity as IItemContainerEntity;

                if (ice?.inventory != null)
                {
                    DropUtil.DropItems(ice.inventory, entity.transform.position + Vector3.up);
                }

                entity.Invoke(entity.KillMessage, 0.01f);
                ei.GiveItem(player, true);
            }

            private void OnDestroy()
            {
                _controllers?.Remove(uid);
                Destroy(this);
            }
        }

        #region Hooks

        private void Init()
        {
            Instance = this;
            Unsubscribe(nameof(CanBuild));
            permission.RegisterPermission(permAllow, this);
            permission.RegisterPermission(permFree, this);
            _controllers = new Dictionary<NetworkableId, ExtendedController>();
        }

        private void OnServerInitialized(bool isStartup)
        {
            config.entities.Values.ToList().ForEach(ei =>
            {
                _skins[ei.item.skin] = ei;

                var ci = ei.craft.items.FirstOrDefault(x => x.definition == null);

                if (ci != null)
                {
                    ei.craft.enabled = false;

                    Puts("Invalid item {0} configured for '{1}'", ci.shortname, ei.itemname);
                }

                if (ei.land || ei.distance > 0)
                {
                    Subscribe(nameof(CanBuild));
                }
            });

            foreach (var entity in BaseNetworkable.serverEntities.OfType<BaseEntity>())
            {
                if (entity.OwnerID != 0uL && _skins.ContainsKey(entity.skinID))
                {
                    entity.gameObject.AddComponent<ExtendedController>();
                }
            }
        }

        private void Unload()
        {
            foreach (var controller in _controllers.ToList())
            {
                UnityEngine.Object.Destroy(controller.Value);
            }
			
            Instance = null;
            _controllers = null;
        }

        private void OnEntityBuilt(Planner plan, GameObject go)
        {
            var entity = go.ToBaseEntity();

            config.entities.Values.FirstOrDefault(x => x.item.skin == entity.skinID)?.Spawn(entity);
        }

        private void OnHammerHit(BasePlayer player, HitInfo hitInfo)
        {
            var entity = hitInfo.HitEntity;

            if (entity == null || entity.IsDestroyed || !_skins.ContainsKey(entity.skinID))
            {
                return;
            }

            ExtendedController controller;
            if (_controllers.TryGetValue(entity.net.ID, out controller) && !controller.IsInvoking("TryPickup"))
            {
                controller.Invoke(() => controller.TryPickup(player), 0.25f);
            }
        }

        private object CanBuild(Planner planner, Construction construction, Construction.Target target)
        {
            Item item = planner.GetItem();
            ExtendedInfo ei;

            if (!_skins.TryGetValue(item.skin, out ei))
            {
                return null;
            }

            var buildPos = target.entity && target.entity.transform && target.socket ? target.GetWorldPosition() : target.position;

            if (ei.land && (!Physics.Raycast(buildPos + Vector3.up, Vector3.down, out _hit, 4f) || !_layers.Contains(_hit.collider.gameObject.layer)))
            {
                return false;
            }
            else if (ei.distance > 0 && Vector3.Distance(buildPos, planner.transform.position) < ei.distance)
            {
                return false;
            }

            return null;
        }

        #endregion Hooks

        #region Helpers

        private void CommandExtended(IPlayer p, string command, string[] args)
        {
            var player = p.Object as BasePlayer;

            if (args.Length == 2 && (p.IsServer || player.IsAdmin))
            {
                ExtendedInfo.GiveItem(p, command, args);
                return;
            }

            if (p.IsServer)
            {
                p.Reply($"{command} <name> <steamid>");
                return;
            }

            var ei = config.entities.Values.FirstOrDefault(m => m.command == command);

            if (ei.CanCraft(player))
            {
                ei.GiveItem(player);
            }
        }

        #endregion Helpers
		
		#endregion Engine	
        #region Configuration

        private static void Message(BasePlayer player, string key, params object[] args)
        {
            Instance.Player.Message(player, _(key, player.UserIDString, args), Instance.config.chatid);
        }

        private static string _(string key, string id = null, params object[] args)
        {
            return string.Format(Instance.lang.GetMessage(key, Instance, id), args);
        }

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["NoPermission"] = "You do not have permission to use this command!",
                ["ItemAmount"] = "You are missing {0}",
                ["Pickup"] = "You picked up {0}!",
                ["Received"] = "You received {0}!",
                ["Disabled"] = "Pickup disabled!",
                ["Build"] = "You cannot do this while building blocked!",
                ["Damaged"] = "You cannot pick this up yet!",
                ["NoCraft"] = "You cannot craft this item.",
                ["Owner"] = "You are not allowed to pick this up!",
            }, this);
        }

        public class CraftItem
        {
            public string shortname;
            public int amount;
            public ulong skin;
            internal ItemDefinition _definition;

            internal int itemid => definition.itemid;
            internal string displayName => definition.displayName.english;

            public CraftItem(string shortname, int amount, ulong skin = 0uL)
            {
                this.shortname = shortname;
                this.amount = amount;
                this.skin = skin;
            }

            internal ItemDefinition definition
            {
                get
                {
                    if (_definition == null)
                    {
                        _definition = ItemManager.FindItemDefinition(shortname);
                    }

                    return _definition;
                }
            }
        }

        public class CraftSettings
        {
            [JsonProperty("items", ObjectCreationHandling = ObjectCreationHandling.Replace)]
            public List<CraftItem> items;
            public bool enabled;

            public CraftSettings(bool enabled)
            {
                this.enabled = enabled;
            }
        }

        public class DestroySettings
        {
            [JsonProperty("effects", ObjectCreationHandling = ObjectCreationHandling.Replace)]
            public List<string> effects;
            public bool give;
            public bool ground;

            public DestroySettings(bool give, bool ground)
            {
                this.give = give;
                this.ground = ground;
            }
        }

        public class PickupSettings
        {
            public bool enabled;
            public bool owner;
            public bool privilege;

            public PickupSettings(bool enabled, bool owner, bool privilege)
            {
                this.enabled = enabled;
                this.owner = owner;
                this.privilege = privilege;
            }
        }

        public class ExtendedInfo
        {
            public CraftSettings craft;
            public DestroySettings destroy;
            public PickupSettings pickup;
            public CraftItem item;
            public string prefab;
            public string itemname;
            public string command;
            public bool land;
            public float distance;

            public Item CreateItem()
            {
                Item item = ItemManager.CreateByName(this.item.shortname, this.item.amount, this.item.skin);

                if (!string.IsNullOrEmpty(itemname))
                {
                    item.name = itemname;
                }

                return item;
            }

            public static void GiveItem(IPlayer server, string command, string[] args)
            {
                var ei = Instance.config.entities.Values.FirstOrDefault(x => x.item.shortname.Equals(args[0], StringComparison.OrdinalIgnoreCase));

                if (ei == null)
                {
                    server.Reply($"{args[0]} does not exist in config");
                    server.Reply($"{command} <shortname> <steamid>");
                }

                var target = RustCore.FindPlayer(args[1]);

                if (target == null)
                {
                    server.Reply($"{args[1]} player not found");
                }
                else ei.GiveItem(target);
            }

            public void GiveItem(BasePlayer player, bool pickup = false)
            {
                Item item = CreateItem();

                player.inventory.GiveItem(item);

                Message(player, pickup ? "Pickup" : "Received", item.info.displayName.english);
            }

            public void GiveItem(Vector3 position)
            {
                CreateItem().DropAndTossUpwards(position);
            }

            public bool CanCraft(BasePlayer player)
            {
                if (!craft.enabled)
                {
                    return false;
                }

                if (!player.IPlayer.HasPermission(permAllow))
                {
                    Message(player, "NoPermission");
                    return false;
                }

                if (player.IPlayer.HasPermission(permFree))
                {
                    return true;
                }

                bool flag = true;

                foreach (var ci in craft.items)
                {
                    int amount = player.inventory.GetAmount(ci.itemid);

                    if (amount < ci.amount)
                    {
                        Message(player, _("ItemAmount", player.UserIDString, $"{ci.displayName} x{ci.amount - amount}"));
                        flag = false;
                    }
                }

                if (flag)
                {
                    craft.items.ForEach(ci => player.inventory.Take(null, ci.itemid, ci.amount));
                }

                return flag;
            }

            public void Spawn(BaseEntity other)
            {
                var entity = GameManager.server.CreateEntity(prefab, other.transform.position, other.transform.rotation);

                if (entity == null)
                {
                    return;
                }

                entity.skinID = item.skin;
                entity.OwnerID = other.OwnerID;                
                entity.Spawn();
                entity.gameObject.AddComponent<ExtendedController>();

                other.transform.position = new Vector3(0f, -500f, 0f);
                other.TransformChanged();
                other.Invoke(other.KillMessage, 0.1f);
            }
        }
        private Configuration config;

        public class Configuration
        {
            [JsonProperty(PropertyName = "Entities", ObjectCreationHandling = ObjectCreationHandling.Replace)]
            public Dictionary<string, ExtendedInfo> entities { get; set; } = new Dictionary<string, ExtendedInfo>();

            [JsonProperty(PropertyName = "Steam ChatID")]
            public ulong chatid { get; set; }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                SaveConfig();
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
                LoadDefaultConfig();
            }
            config.entities.Values.ToList().ForEach(ei =>
            {
                AddCovalenceCommand(ei.command, nameof(CommandExtended));
            });
        }

        protected override void LoadDefaultConfig()
        {
            config = GetDefaultConfig();
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(config, true);
        }
		#endregion Configuration
        #region Item Tables (226)
        private Configuration GetDefaultConfig()
        {
            return new Configuration
            {
                chatid = 0,
                entities = new Dictionary<string, ExtendedInfo>
                {
                    #region Deployables (20)
					
					#region Large (13)
					
                    #region Recycler
                    ["Recycler Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 500),
                                new CraftItem("metal.fragments", 5000),
                                new CraftItem("metal.refined", 50),
                                new CraftItem("gears", 10),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("box.repair.bench", 1, 1594245394),
                        command = "recycler.craft",
                        land = false,
                        itemname = "Personal Recycler",
                        prefab = "assets/bundled/prefabs/static/recycler_static.prefab",
                    },
                    #endregion Recycler
                    #region Indoor Large Furnace
                    ["Indoor Furnace Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 500),
                                new CraftItem("stones", 500),
                                new CraftItem("wood", 600),
                                new CraftItem("lowgradefuel", 75),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("furnace", 1, 1992717673),
                        command = "furnace.craft",
                        land = false,
                        itemname = "Indoor Large Furnace",
                        prefab = "assets/prefabs/deployable/furnace.large/furnace.large.prefab",
                    },
                    #endregion Indoor Large Furnace
                    #region Indoor Oil Refinery
                    ["Indoor Oil Refinery Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 500),
                                new CraftItem("stones", 500),
                                new CraftItem("wood", 600),
                                new CraftItem("lowgradefuel", 75),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("furnace", 1, 1293296287),
                        command = "refinery.craft",
                        land = false,
                        itemname = "Indoor Oil Refinery",
                        prefab = "assets/prefabs/deployable/oil refinery/refinery_small_deployed.prefab",
                    },
                    #endregion Indoor Oil Refinery
                    #region Advanced Water Pump
                    ["Advanced Water Pump Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 500),
                                new CraftItem("wood", 250),
                                new CraftItem("metal.fragments", 200),
                                new CraftItem("gears", 1),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, false),
                        item = new CraftItem("electric.fuelgenerator.small", 1, 1284169891),
                        command = "waterpump.craft",
                        land = false,
                        itemname = "Advanced Water Pump",
                        prefab = "assets/prefabs/deployable/playerioents/waterpump/water.pump.deployed.prefab",
                    },
                    #endregion Advanced Water Pump
                    #region Waterwell
                    ["Waterwell Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("wood", 5000),
                                new CraftItem("metal.fragments", 1000),
                                new CraftItem("scrap", 500),
                                new CraftItem("metal.refined", 100),
                                new CraftItem("sheetmetal", 50),
                                new CraftItem("bucket.water", 1),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("water.catcher.small", 1, 204391461),
                        command = "waterwell.craft",
                        land = false,
                        itemname = "Waterwell",
                        prefab = "assets/prefabs/deployable/water well/waterwellstatic.prefab",
                    },
                    #endregion Waterwell
                    #region Small Modular Reactor
                    ["Small Modular Reactor Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("metal.fragments", 7500),
                                new CraftItem("metal.refined", 1000),
                                new CraftItem("techparts", 250),
                                new CraftItem("sheetmetal", 150),
                                new CraftItem("metalpipe", 50),
                                new CraftItem("targeting.computer", 10),
                                new CraftItem("propanetank", 5),
                                new CraftItem("fridge", 5),
                                new CraftItem("waterpump", 3),
                                new CraftItem("computerstation", 1),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("electric.generator.small", 1, 295829489),
                        command = "smr.craft",
                        land = false,
                        itemname = "Small Modular Reactor",
                        prefab = "assets/prefabs/deployable/playerioents/generators/generator.small.prefab",
                    },
                    #endregion Small Modular Reactor
                    #region One Sided Town Sign Post
                    ["One Sided Town Sign Post Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("wood", 100),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("sign.post.town", 1, 1832422579),
                        command = "townsign1.craft",
                        land = false,
                        itemname = "One Sided Town Sign Post",
                        prefab = "assets/prefabs/deployable/signs/sign.post.town.prefab",
                    },
                    #endregion One Sided Town Sign Post
                    #region Two Sided Town Sign Post
                    ["Two Sided Town Sign Post Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("wood", 100),
                                new CraftItem("metal.fragments", 50),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("sign.post.town.roof", 1, 826309791),
                        command = "townsign2.craft",
                        land = false,
                        itemname = "Two Sided Town Sign Post",
                        prefab = "assets/prefabs/deployable/signs/sign.post.town.roof.prefab",
                    },
                    #endregion Two Sided Town Sign Post
                    #region Hobobarrel
                    ["Hobobarrel Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("wood", 150),
                                new CraftItem("metal.fragments", 100),
                                new CraftItem("sheetmetal", 5),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("hobobarrel", 1, 1442559428),
                        command = "hobobarrel.craft",
                        land = false,
                        itemname = "Hobobarrel",
                        prefab = "assets/prefabs/misc/twitch/hobobarrel/hobobarrel.deployed.prefab",
                    },
                    #endregion Hobobarrel
                    #region Car Shredder
                    ["Car Shredder Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("metal.fragments", 50000),
                                new CraftItem("scrap", 10000),
                                new CraftItem("crude.oil", 5000),
                                new CraftItem("metal.refined", 2500),
                                new CraftItem("sheetmetal", 500),
                                new CraftItem("metalblade", 500),
                                new CraftItem("metalspring", 100),
                                new CraftItem("metalpipe", 100),
                                new CraftItem("gears", 100),
                                new CraftItem("sparkplug3", 40),
                                new CraftItem("piston3", 20),
                                new CraftItem("valve3", 20),
                                new CraftItem("crankshaft3", 10),
                                new CraftItem("carburetor3", 5),
                                new CraftItem("vehicle.1mod.engine", 5),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("abovegroundpool", 1, 352130972),
                        command = "shredder.craft",
                        land = false,
                        itemname = "Car Shredder - Rotation is 1 rotation behind",
                        prefab = "assets/content/structures/carshredder/carshredder.entity.prefab",
                    },
                    #endregion Car Shredder
                    #region Pumpjack
                    ["Pumpjack Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("wood", 25000),
                                new CraftItem("metal.fragments", 10000),
                                new CraftItem("scrap", 5000),
                                new CraftItem("metal.refined", 1500),
                                new CraftItem("sheetmetal", 100),
                                new CraftItem("gears", 75),
                                new CraftItem("metalpipe", 50),
                                new CraftItem("metalspring", 25),
                                new CraftItem("piston3", 5),
                                new CraftItem("valve3", 5),
                                new CraftItem("carburetor3", 3),
                                new CraftItem("crankshaft3", 2),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("water.catcher.large", 1, 1130709577),
                        command = "pumpjack.craft",
                        land = false,
                        itemname = "Pumpjack",
                        prefab = "assets/bundled/prefabs/static/pumpjack-static.prefab",
                    },
                    #endregion Pumpjack
                    #region Mining Quarry
                    ["Mining Quarry Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("metal.fragments", 25000),
                                new CraftItem("wood", 15000),
                                new CraftItem("scrap", 5000),
                                new CraftItem("metal.refined", 1500),
                                new CraftItem("sheetmetal", 100),
                                new CraftItem("gears", 75),
                                new CraftItem("metalpipe", 50),
                                new CraftItem("metalspring", 25),
                                new CraftItem("piston3", 5),
                                new CraftItem("valve3", 5),
                                new CraftItem("carburetor3", 3),
                                new CraftItem("crankshaft3", 2),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("water.catcher.large", 1, 1052926200),
                        command = "quarry.craft",
                        land = false,
                        itemname = "Mining Quarry",
                        prefab = "assets/bundled/prefabs/static/miningquarry_static.prefab",
                    },
                    #endregion Mining Quarry
                    #region Clan Banner
                    ["Clan Banner Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("wood", 100),
                                new CraftItem("metal.fragments", 50),
                                new CraftItem("cloth", 20),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item = new CraftItem("sign.pole.banner.large", 1, 2070189026),
                        command = "clanbanner.craft",
                        land = false,
                        itemname = "Clan Banner",
                        prefab = "assets/prefabs/deployable/signs/sign.pole.banner.large.prefab",
                    },
                    #endregion Clan Banner

					#endregion Large
                    #region Animals (6)
					
                    #region Chicken
                    ["Chicken Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 25),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("rustige_egg_d", 1, 9999999998),
                        command = "chicken.craft",
                        land = false,
                        itemname = "Chicken",
                        prefab = "assets/rust.ai/agents/chicken/chicken.prefab",
                    },
                    #endregion Chicken
                    #region Boar
                    ["Boar Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 50),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("rustige_egg_e", 1, 9999999997),
                        command = "boar.craft",
                        land = false,
                        itemname = "Boar",
                        prefab = "assets/rust.ai/agents/boar/boar.prefab",
                    },
                    #endregion Boar
                    #region Bear
                    ["Bear Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 125),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("rustige_egg_a", 1, 9999999996),
                        command = "bear.craft",
                        land = false,
                        itemname = "Bear",
                        prefab = "assets/rust.ai/agents/bear/bear.prefab",
                    },
                    #endregion Bear
                    #region PolarBear
                    ["PolarBear Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 150),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("rustige_egg_c", 1, 9999999995),
                        command = "polarbear.craft",
                        land = false,
                        itemname = "PolarBear",
                        prefab = "assets/rust.ai/agents/bear/polarbear.prefab",
                    },
                    #endregion PolarBear
                    #region Stag
                    ["Stag Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 75),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("rustige_egg_e", 1, 9999999994),
                        command = "stag.craft",
                        land = false,
                        itemname = "Stag",
                        prefab = "assets/rust.ai/agents/stag/stag.prefab",
                    },
                    #endregion Stag
                    #region Wolf
                    ["Wolf Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("scrap", 100),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("rustige_egg_b", 1, 9999999993),
                        command = "wolf.craft",
                        land = false,
                        itemname = "Wolf",
                        prefab = "assets/rust.ai/agents/wolf/wolf.prefab",
                    },
                    #endregion Wolf
					
					
                    #endregion Animals
                    #region Vehicles (1)

                    #region M270 Multiple Launch Rocket System
                    ["M270 Multiple Launch Rocket System Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("metal.fragments", 7500),
                                new CraftItem("scrap", 1250),
                                new CraftItem("metal.refined", 500),
								new CraftItem("techparts", 100),
								new CraftItem("samsite", 2),
								new CraftItem("targeting.computer", 1),
								new CraftItem("computerstation", 1),
								new CraftItem("vehicle.1mod.cockpit.armored", 1),
                                new CraftItem("vehicle.1mod.passengers.armored", 1),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(false, true, true),
                        item = new CraftItem("water.catcher.large", 1, 1449152644),
                        command = "mlrs.craft",
                        land = false,
                        itemname = "M270 Multiple Launch Rocket System",
                        prefab = "assets/content/vehicles/mlrs/mlrs.entity.prefab",
                    },
                    #endregion M270 Multiple Launch Rocket System0
					
                    #endregion Vehicles
					
                    #endregion Deployables
                    #region Items (66)
                    #region Attire (14)
					
                    #region Diving Mask
                    ["Diving Mask Config Settings"] = new ExtendedInfo
                    {
                        craft = new CraftSettings(true)
                        {
                            items = new List<CraftItem>
                            {
                                new CraftItem("cloth", 100),
                                new CraftItem("tarp", 10),
                                new CraftItem("sewingkit", 5),
                            }
                        },
                        destroy = new DestroySettings(true, false)
                        {
                            effects = new List<string>
                            {
                                "assets/bundled/prefabs/fx/item_break.prefab",
                                "assets/bundled/prefabs/fx/impacts/stab/rock/stab_rock_01.prefab"
                            }
                        },
                        pickup = new PickupSettings(true, true, true),
                        item 
// ... [Code preview truncated due to length. Full source in attached file] ...

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