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); }
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); }
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(); }); }); }
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(); }
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); }
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); }
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 }); } }
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; } } }
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; } } }); }
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; }
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); }
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); }
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); }
private object CanLootEntity(BasePlayer player, DroppedItemContainer container) { return(CanLoot(container.ShortPrefabName, player)); }
private object CanLootEntity(BasePlayer player, DroppedItemContainer container) { Puts("2"); return(null); }
void Awake() { entity = GetComponent <DroppedItemContainer>(); enabled = false; }