Пример #1
0
        private void ViewBackpack(BasePlayer player, string cmd, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, AdminPermission))
            {
                PrintToChat(player, lang.GetMessage("No Permission", this, player.UserIDString));
                return;
            }

            if (args.Length != 1)
            {
                PrintToChat(player, lang.GetMessage("View Backpack Syntax", this, player.UserIDString));
                return;
            }

            string  failureMessage;
            IPlayer result = FindPlayer(args[0], out failureMessage);

            if (result == null)
            {
                PrintToChat(player, failureMessage);
                return;
            }

            Backpack backpack = Backpack.Get((result.Object as BasePlayer).userID);

            timer.Once(0.5f, () => backpack.Open(player));
        }
Пример #2
0
 private void OnUsagePermissionChanged(string userIdString)
 {
     if (permission.UserHasPermission(userIdString, UsagePermission))
     {
         var userId = ulong.Parse(userIdString);
         Backpack.Get(userId).Initialize();
     }
 }
Пример #3
0
 private void OpenBackpackChatCommand(BasePlayer player, string cmd, string[] args)
 {
     if (permission.UserHasPermission(player.UserIDString, UsagePermission))
     {
         timer.Once(0.5f, () => Backpack.Get(player.userID).Open(player));
     }
     else
     {
         PrintToChat(player, lang.GetMessage("No Permission", this, player.UserIDString));
     }
 }
Пример #4
0
        private void OpenBackpackConsoleCommand(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();

            if (player == null)
            {
                return;
            }

            if (permission.UserHasPermission(player.UserIDString, UsagePermission))
            {
                Backpack.Get(player.userID).Open(player);
            }
            else
            {
                PrintToChat(player, lang.GetMessage("No Permission", this, player.UserIDString));
            }
        }
Пример #5
0
        private void OnEntityDeath(BaseCombatEntity victim, HitInfo info)
        {
            if (victim is BasePlayer && !(victim is NPCPlayer) && !(victim is HTNPlayer))
            {
                var player   = (BasePlayer)victim;
                var backpack = Backpack.Get(player.userID);

                backpack.ForceClose();

                if (_config.EraseOnDeath)
                {
                    backpack.EraseContents();
                }
                else if (_config.DropOnDeath)
                {
                    backpack.Drop(player.transform.position);
                }
            }
        }
Пример #6
0
        private void OpenBackpackConsoleCommand(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();

            if (player == null || !player.IsAlive())
            {
                return;
            }

            if (permission.UserHasPermission(player.UserIDString, UsagePermission))
            {
                player.EndLooting();
                timer.Once(0.1f, () => Backpack.Get(player.userID).Open(player));
            }
            else
            {
                PrintToChat(player, lang.GetMessage("No Permission", this, player.UserIDString));
            }
        }
Пример #7
0
        private void OnEntityDeath(BaseCombatEntity victim, HitInfo info)
        {
            if (victim is BasePlayer && !victim.IsNpc)
            {
                var player = (BasePlayer)victim;
                DestroyGUI(player);

                if (Backpack.HasBackpackFile(player.userID))
                {
                    var backpack = Backpack.Get(player.userID);

                    backpack.ForceCloseAllLooters();

                    if (permission.UserHasPermission(player.UserIDString, KeepOnDeathPermission))
                    {
                        return;
                    }

                    if (_config.EraseOnDeath)
                    {
                        backpack.EraseContents();
                    }
                    else if (_config.DropOnDeath)
                    {
                        var droppedContainer = backpack.Drop(player.transform.position);

                        if (droppedContainer != null && ConVar.Server.corpses)
                        {
                            if (_lastDroppedBackpacks.ContainsKey(player.userID))
                            {
                                _lastDroppedBackpacks[player.userID] = droppedContainer;
                            }
                            else
                            {
                                _lastDroppedBackpacks.Add(player.userID, droppedContainer);
                            }
                        }
                    }
                }
            }
        }
Пример #8
0
        private void FetchBackpackItemConsoleCommand(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();

            if (player == null || !player.IsAlive())
            {
                return;
            }

            if (!permission.UserHasPermission(player.UserIDString, FetchPermission))
            {
                PrintToChat(player, lang.GetMessage("No Permission", this, player.UserIDString));
                return;
            }

            if (!arg.HasArgs(2))
            {
                PrintToConsole(player, lang.GetMessage("Backpack Fetch Syntax", this, player.UserIDString));
                return;
            }

            if (!VerifyCanOpenBackpack(player, player.userID))
            {
                return;
            }

            string[] args    = arg.Args;
            string   itemArg = args[0];
            int      itemID;

            ItemDefinition itemDefinition = ItemManager.FindItemDefinition(itemArg);

            if (itemDefinition != null)
            {
                itemID = itemDefinition.itemid;
            }
            else
            {
                // User may have provided an itemID instead of item short name
                if (!int.TryParse(itemArg, out itemID))
                {
                    PrintToChat(player, lang.GetMessage("Invalid Item", this, player.UserIDString));
                    return;
                }

                itemDefinition = ItemManager.FindItemDefinition(itemID);

                if (itemDefinition == null)
                {
                    PrintToChat(player, lang.GetMessage("Invalid Item", this, player.UserIDString));
                    return;
                }
            }

            int desiredAmount;

            if (!int.TryParse(args[1], out desiredAmount))
            {
                PrintToChat(player, lang.GetMessage("Invalid Item Amount", this, player.UserIDString));
                return;
            }

            if (desiredAmount < 1)
            {
                PrintToChat(player, lang.GetMessage("Invalid Item Amount", this, player.UserIDString));
                return;
            }

            string   itemLocalizedName  = itemDefinition.displayName.translated;
            Backpack backpack           = Backpack.Get(player.userID);
            int      quantityInBackpack = backpack.GetItemQuantity(itemID);

            if (quantityInBackpack == 0)
            {
                PrintToChat(player, lang.GetMessage("Item Not In Backpack", this, player.UserIDString), itemLocalizedName);
                return;
            }

            if (desiredAmount > quantityInBackpack)
            {
                desiredAmount = quantityInBackpack;
            }

            int amountTransferred = backpack.MoveItemsToPlayerInventory(player, itemID, desiredAmount);

            if (amountTransferred > 0)
            {
                PrintToChat(player, lang.GetMessage("Items Fetched", this, player.UserIDString), amountTransferred, itemLocalizedName);
            }
            else
            {
                PrintToChat(player, lang.GetMessage("Fetch Failed", this, player.UserIDString), itemLocalizedName);
            }
        }