Example #1
0
            public void SpawnVisual(BasePlayer player)
            {
                if (_visualEntity != null || !Configuration.ShowOnBack)
                {
                    return;
                }

                BaseEntity           entity    = GameManager.server.CreateEntity(BackpackPrefab, new Vector3(0, -0.1f, 0), Quaternion.Euler(-5, -90, 180));
                DroppedItemContainer container = entity as DroppedItemContainer;

                container.inventory = new ItemContainer();
                container.inventory.ServerInitialize(null, 0);
                container.inventory.GiveUID();
                container.inventory.entityOwner = container;
                container.inventory.SetFlag(ItemContainer.Flag.NoItemInput, true);
                container.CancelInvoke(container.RemoveMe);

                var visualBackpack = entity.gameObject.AddComponent <VisualBackpack>();

                visualBackpack.Backpack = this;

                entity.limitNetworking = true;

                entity.SetParent(player, StringPool.Get(BackBone));
                entity.SetFlag(BaseEntity.Flags.Locked, true);
                entity.Spawn();
                entity.name = "backpack";

                _visualEntity = entity;
            }
    public static DroppedItemContainer Drop(
        string prefab,
        Vector3 pos,
        Quaternion rot,
        params ItemContainer[] containers)
    {
        int num = 0;

        for (int index = 0; index < containers.Length; ++index)
        {
            ItemContainer container = containers[index];
            num += container.itemList != null ? container.itemList.Count : 0;
        }
        if (num == 0)
        {
            return((DroppedItemContainer)null);
        }
        BaseEntity entity = GameManager.server.CreateEntity(prefab, pos, rot, true);

        if (Object.op_Equality((Object)entity, (Object)null))
        {
            return((DroppedItemContainer)null);
        }
        DroppedItemContainer droppedItemContainer = entity as DroppedItemContainer;

        if (Object.op_Inequality((Object)droppedItemContainer, (Object)null))
        {
            droppedItemContainer.TakeFrom(containers);
        }
        droppedItemContainer.Spawn();
        return(droppedItemContainer);
    }
Example #3
0
            public void Drop(Vector3 position)
            {
                if (_itemContainer.itemList.Count > 0)
                {
                    BaseEntity           entity    = GameManager.server.CreateEntity(BackpackPrefab, position, Quaternion.identity);
                    DroppedItemContainer container = entity as DroppedItemContainer;

                    container.playerName    = $"{FindOwnerPlayer()?.Name ?? "Somebody"}'s Backpack";
                    container.playerSteamID = _ownerId;

                    container.inventory = new ItemContainer();
                    container.inventory.ServerInitialize(null, _itemDataCollection.Count);
                    container.inventory.GiveUID();
                    container.inventory.entityOwner = container;
                    container.inventory.SetFlag(ItemContainer.Flag.NoItemInput, true);

                    foreach (Item item in _itemContainer.itemList.ToArray())
                    {
                        if (!item.MoveToContainer(container.inventory))
                        {
                            item.Remove();
                            item.DoRemove();
                        }
                    }

                    container.ResetRemovalTime();
                    container.Spawn();

                    if (!_instance._config.SaveBackpacksOnServerSave)
                    {
                        SaveData();
                    }
                }
            }
 private object CanLootEntity(BasePlayer player, DroppedItemContainer container)
 {
     if (CanLootBackpack && CanLootBackpackPlugin)
     {
         return(null);
     }
     if (CheckHelper(player, container as BaseEntity))
     {
         return(null);
     }
     if (((container as BaseEntity).name.Contains("item_drop_backpack") && !CanLootBackpack) || ((container as BaseEntity).name.Contains("droppedbackpack") && !CanLootBackpackPlugin))
     {
         if (IsFriend(container.playerSteamID, player.userID))
         {
             return(null);
         }
         if (UsePermission && !permission.UserHasPermission(container.playerSteamID.ToString(), BackpackPerm))
         {
             return(null);
         }
         if (container.playerSteamID < 76561197960265728L || player.userID == container.playerSteamID)
         {
             return(null);
         }
         SendReply(player, lang.GetMessage("OnTryLootBackpack", this, player.UserIDString));
         return(true);
     }
     return(null);
 }
Example #5
0
        private void GiveBackpackWorldmodel(BasePlayer player)
        {
            SphereEntity sph = GameManager.server.CreateEntity(spherePrefab, player.eyes.position, player.transform.rotation) as SphereEntity;

            sph.Spawn();
            sph.lerpSpeed     = 0f;
            sph.currentRadius = 0.6f;
            sph.SetParent(player, "spine3");
            sph.transform.localPosition = new Vector3(-0.08f, 0, 0);
            sph.transform.rotation      = Quaternion.Euler(0, 270, 180);
            DroppedItemContainer gObj = GameManager.server.CreateEntity(itemWorldModel, player.transform.position) as DroppedItemContainer;

            //PrintComponents(sph);
            gObj.ResetRemovalTime(9999999999999);
            //gObj.transform.localPosition = new Vector3(0, 0, 0);
            //gObj.transform.rotation = Quaternion.Euler(0, 270, 180);
            gObj.Spawn();
            UnityEngine.Object.DestroyImmediate(gObj.GetComponent <Rigidbody>());
            gObj.SetParent(sph);
            gObj.transform.localPosition = new Vector3(0, 0, 0);
            gObj.SendNetworkUpdateImmediate();
            timer.Once(1.0f, () => {
                gObj.SetParent(player, "spine3");
                gObj.transform.localPosition = new Vector3(-0.08f, 0.0f, 0);
                gObj.transform.rotation      = Quaternion.Euler(0, 270, 180);
                timer.Once(0.2f, () => {
                    sph?.Kill();
                });
            });
        }
Example #6
0
            public void Drop(Vector3 position)
            {
                if (Inventory.Items.Count > 0)
                {
                    BaseEntity           entity    = GameManager.server.CreateEntity(BackpackPrefab, position, Quaternion.identity);
                    DroppedItemContainer container = entity as DroppedItemContainer;

                    container.inventory = new ItemContainer();
                    container.inventory.ServerInitialize(null, Inventory.Items.Count);
                    container.inventory.GiveUID();
                    container.inventory.entityOwner = container;
                    container.inventory.SetFlag(ItemContainer.Flag.NoItemInput, true);

                    foreach (Item item in Inventory.Items.Select(i => i.ToItem()))
                    {
                        if (!item.MoveToContainer(container.inventory))
                        {
                            item.Remove();
                        }
                    }

                    container.ResetRemovalTime();

                    container.Spawn();

                    container.playerName    = "Backpack";
                    container.playerSteamID = ownerID;

                    entity.name = "droppedbackpack";
                }

                EraseContents();
            }
Example #7
0
    public static DroppedItemContainer Drop(string prefab, Vector3 pos, Quaternion rot, params ItemContainer[] containers)
    {
        int num = 0;

        foreach (ItemContainer itemContainer in containers)
        {
            num += ((itemContainer.itemList != null) ? itemContainer.itemList.Count : 0);
        }
        if (num == 0)
        {
            return(null);
        }
        BaseEntity baseEntity = GameManager.server.CreateEntity(prefab, pos, rot);

        if (baseEntity == null)
        {
            return(null);
        }
        DroppedItemContainer droppedItemContainer = baseEntity as DroppedItemContainer;

        if (droppedItemContainer != null)
        {
            droppedItemContainer.TakeFrom(containers);
        }
        droppedItemContainer.Spawn();
        return(droppedItemContainer);
    }
Example #8
0
 object CanLootEntity(BasePlayer player, DroppedItemContainer container)
 {
     if (container.playerName.Equals("_back"))
     {
         bool canPickup = false;
         foreach (var item in container.inventory.itemList.ToList())
         {
             canPickup = CheckForMultipleBackpacks(player.inventory.containerMain, item) == null;
             if (!canPickup)
             {
                 break;
             }
             item.MoveToContainer(player.inventory.containerMain);
         }
         if (canPickup)
         {
             container.Kill();
             GiveBackpackWorldmodel(player);
         }
         return(false);
     }
     else
     {
         return(null);
     }
 }
    public static DroppedItemContainer Drop(string prefab, Vector3 pos, Quaternion rot, params ItemContainer[] containers)
    {
        int num = 0;

        for (int i = 0; i < (int)containers.Length; i++)
        {
            ItemContainer itemContainer = containers[i];
            num = num + (itemContainer.itemList != null ? itemContainer.itemList.Count : 0);
        }
        if (num == 0)
        {
            return(null);
        }
        BaseEntity baseEntity = GameManager.server.CreateEntity(prefab, pos, rot, true);

        if (baseEntity == null)
        {
            return(null);
        }
        DroppedItemContainer droppedItemContainer = baseEntity as DroppedItemContainer;

        if (droppedItemContainer != null)
        {
            droppedItemContainer.TakeFrom(containers);
        }
        droppedItemContainer.Spawn();
        return(droppedItemContainer);
    }
Example #10
0
        private void DropRecyclerContents(BaseEntity e)
        {
            if (e is Recycler && this.IsRecycleBox(e))
            {
                Recycler r = e as Recycler;
                if ((r?.inventory?.itemList?.Count ?? 0) == 0)
                {
                    return;
                }

                BasePlayer p = this.PlayerFromRecycler(r.net.ID);
                if (p == null)
                {
                    return;
                }
                this.PrintToChat(p, this.GetMessage("Recycle", "Dropped", p));

                List <Item> items = r.inventory.itemList.ToList();

                if (this.Data.Settings.InventoryBeforeBag)
                {
                    for (int i = 0; i < items.Count; i++)
                    {
                        Item item = items[i];

                        bool flag = false;
                        if (!p.inventory.containerMain.IsFull())
                        {
                            flag = item.MoveToContainer(p.inventory.containerMain);
                        }
                        if (!flag && !p.inventory.containerBelt.IsFull())
                        {
                            item.MoveToContainer(p.inventory.containerBelt);
                        }

                        if (flag)
                        {
                            items.RemoveAt(i);
                            i--;
                        }
                    }
                }

                if (items.Count == 0)
                {
                    return;
                }

                DroppedItemContainer bag = GameManager.server.CreateEntity(Recycle.BackpackPrefab, p.transform.position + Vector3.up, Quaternion.identity) as DroppedItemContainer;
                bag.enableSaving = false;
                bag.TakeFrom(r.inventory);
                bag.Spawn();
                bag.lootPanelName = "smallwoodbox";
                bag.playerSteamID = p.userID;
                this.DroppedBags.Add(bag.net.ID, new EntityAndPlayer {
                    Entity = bag, Player = p
                });
            }
        }
Example #11
0
 private object CanLootEntity(BasePlayer p, DroppedItemContainer con)
 {
     if (this.DroppedBags.ContainsKey(con.net.ID) && this.DroppedBags[con.net.ID].Player.userID != p.userID)
     {
         return(false);
     }
     return(null);
 }
        void SetDespawnTime(DroppedItemContainer container)
        {
            float despawnTime = container.inventory.itemList.Max(x => settings.Instance.GetDespawnTime(x));

            timer.In(1f, () => //Time to make sure that despawn time isnt reset by the float.max value
            {
                container?.ResetRemovalTime(despawnTime);
            });
        }
 public void DropItems()
 {
     if (this.containers != null)
     {
         DroppedItemContainer droppedItemContainer = ItemContainer.Drop("assets/prefabs/misc/item drop/item_drop_backpack.prefab", base.transform.position, Quaternion.identity, this.containers);
         if (droppedItemContainer != null)
         {
             droppedItemContainer.playerName    = this.playerName;
             droppedItemContainer.playerSteamID = this.playerSteamID;
         }
     }
 }
Example #14
0
 void OnEntitySpawned(BaseNetworkable entity)
 {
     // ignore loot box collision
     NextTick(() =>
     {
         if (entity == null)
         {
             return;
         }
         DroppedItemContainer droppedContainer = entity as DroppedItemContainer;
         if (droppedContainer != null)
         {
             timer.Once(300f, () =>
             {
                 if (droppedContainer != null && !droppedContainer.IsDestroyed)
                 {
                     droppedContainer.Kill();
                 }
             });
         }
         DroppedItem item = entity as DroppedItem;
         if (item != null)
         {
             if (item?.item?.info?.worldModelPrefab == null)
             {
                 return;
             }
             if (!item.item.info.worldModelPrefab.isValid)
             {
                 return;
             }
             try
             {
                 if (rotatingItems.Count < limit)
                 {
                     var component = item?.gameObject?.AddComponent <RotatePickupComponent>();
                     if (component == null || component.Error)
                     {
                         UnityEngine.Object.Destroy(component);
                         return;
                     }
                     rotatingItems.Add(entity, component);
                 }
             }
             catch (Exception ex)
             {
                 Puts(ex.Message + Environment.NewLine + ex.StackTrace);
                 throw;
             }
         }
     });
 }
Example #15
0
            public DroppedItemContainer Drop(Vector3 position)
            {
                object hookResult = Interface.CallHook("CanDropBackpack", OwnerId, position);

                if (hookResult is bool && (bool)hookResult == false)
                {
                    return(null);
                }

                if (_itemContainer.itemList.Count == 0)
                {
                    return(null);
                }

                BaseEntity           entity    = GameManager.server.CreateEntity(BackpackPrefab, position, Quaternion.identity);
                DroppedItemContainer container = entity as DroppedItemContainer;

                // This needs to be set to "genericlarge" to allow up to 7 rows to be displayed.
                container.lootPanelName = "genericlarge";

                // The player name is being ignore due to the panelName being "genericlarge".
                // TODO: Try to figure out a way to have 7 rows with custom name.
                container.playerName    = $"{FindOwnerPlayer()?.Name ?? "Somebody"}'s Backpack";
                container.playerSteamID = OwnerId;

                container.inventory = new ItemContainer();
                container.inventory.ServerInitialize(null, _itemContainer.itemList.Count);
                container.inventory.GiveUID();
                container.inventory.entityOwner = container;
                container.inventory.SetFlag(ItemContainer.Flag.NoItemInput, true);

                foreach (Item item in _itemContainer.itemList.ToArray())
                {
                    if (!item.MoveToContainer(container.inventory))
                    {
                        item.Remove();
                        item.DoRemove();
                    }
                }

                container.ResetRemovalTime();
                container.Spawn();

                ItemManager.DoRemoves();

                if (!_instance._config.SaveBackpacksOnServerSave)
                {
                    SaveData();
                }

                return(container);
            }
    public void DropItems()
    {
        if (this.containers == null)
        {
            return;
        }
        DroppedItemContainer droppedItemContainer = ItemContainer.Drop("assets/prefabs/misc/item drop/item_drop_backpack.prefab", ((Component)this).get_transform().get_position(), Quaternion.get_identity(), this.containers);

        if (!Object.op_Inequality((Object)droppedItemContainer, (Object)null))
        {
            return;
        }
        droppedItemContainer.playerName    = this.playerName;
        droppedItemContainer.playerSteamID = this.playerSteamID;
    }
Example #17
0
        private void CreateOutputContainer()
        {
            Vector3    position = Position + (Recycler.transform.forward * 0f) + (Recycler.transform.up * 0.72f) + (Recycler.transform.right * -0.25f);
            Quaternion rotation = Recycler.ServerRotation * Quaternion.Euler(90, 0, 0);

            outputContainer = CreateItemContainer(position, rotation, Lang.Translate(null, "crafted-items"), out outputInventory);

            var rigidBody = outputContainer.GetComponent <Rigidbody>();

            rigidBody.isKinematic = true;             // Prevent physics from moving the container.

            // Add a hidden inventory slot in output container to prevent it from despawning when closing empty loot.
            outputInventory.capacity = 37;
            var item = ItemManager.Create(ItemManager.FindItemDefinition("gears"), 1);

            item.MoveToContainer(outputInventory, outputInventory.capacity - 1);
        }
    public DroppedItemContainer Drop(string prefab, Vector3 pos, Quaternion rot)
    {
        if ((this.itemList != null ? !(bool)this.itemList.Count : true))
        {
            return(null);
        }
        BaseEntity baseEntity = GameManager.server.CreateEntity(prefab, pos, rot, true);

        if (baseEntity == null)
        {
            return(null);
        }
        DroppedItemContainer droppedItemContainer = baseEntity as DroppedItemContainer;

        if (droppedItemContainer != null)
        {
            droppedItemContainer.TakeFrom(new ItemContainer[] { this });
        }
        droppedItemContainer.Spawn();
        return(droppedItemContainer);
    }
Example #19
0
    public DroppedItemContainer Drop(string prefab, Vector3 pos, Quaternion rot)
    {
        if (itemList == null || itemList.Count == 0)
        {
            return(null);
        }
        BaseEntity baseEntity = GameManager.server.CreateEntity(prefab, pos, rot);

        if (baseEntity == null)
        {
            return(null);
        }
        DroppedItemContainer droppedItemContainer = baseEntity as DroppedItemContainer;

        if (droppedItemContainer != null)
        {
            droppedItemContainer.TakeFrom(this);
        }
        droppedItemContainer.Spawn();
        return(droppedItemContainer);
    }
    public DroppedItemContainer Drop(string prefab, Vector3 pos, Quaternion rot)
    {
        if ((this.itemList != null ? this.itemList.Count : 0) == 0)
        {
            return((DroppedItemContainer)null);
        }
        BaseEntity entity = GameManager.server.CreateEntity(prefab, pos, rot, true);

        if (Object.op_Equality((Object)entity, (Object)null))
        {
            return((DroppedItemContainer)null);
        }
        DroppedItemContainer droppedItemContainer = entity as DroppedItemContainer;

        if (Object.op_Inequality((Object)droppedItemContainer, (Object)null))
        {
            droppedItemContainer.TakeFrom(this);
        }
        droppedItemContainer.Spawn();
        return(droppedItemContainer);
    }
Example #21
0
        private object CheckAction(Item item, string action, BasePlayer player)
        {
            if (item.skin != skinID)
            {
                return(null);
            }

            if (string.Equals(action, "drop", StringComparison.OrdinalIgnoreCase))
            {
                BaseEntity           entity    = GameManager.server.CreateEntity(itemWorldModel, player.transform.position + Vector3.up, Quaternion.identity);
                DroppedItemContainer container = entity as DroppedItemContainer;

                container.lootPanelName = "genericlarge";

                if (player != null)
                {
                    container.playerName    = $"_back";
                    container.playerSteamID = player.userID;
                }
                container.inventory = new ItemContainer();
                container.inventory.ServerInitialize(null, 42);
                container.inventory.GiveUID();
                container.inventory.entityOwner = container;
                container.inventory.SetFlag(ItemContainer.Flag.NoItemInput, true);
                if (item.MoveToContainer(container.inventory))
                {
                    container.ResetRemovalTime();
                    container.Spawn();

                    ItemManager.DoRemoves();
                    DeleteBackpackWorldmodel(player);
                    return(true);
                }
                return(null);
            }

            NextTick(() => { OpenContainer(player, item.contents); });
            return(true);
        }
Example #22
0
 private object CanLootEntity(BasePlayer player, DroppedItemContainer container)
 {
     return(CanLoot(container.ShortPrefabName, player));
 }
Example #23
0
 private object CanLootEntity(BasePlayer player, DroppedItemContainer container)
 {
     Puts("2");
     return(null);
 }
 void Awake()
 {
     entity  = GetComponent <DroppedItemContainer>();
     enabled = false;
 }