コード例 #1
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            Transform transform;

            transform = RaycastHelper.GetBarricadeTransform(player.Player, out _, out _);
            if (transform == null)
            {
                transform = RaycastHelper.GetStructureTransform(player.Player, out _);
            }

            if (transform == null)
            {
                MessageHelper.Send(caller, "DoorNotLooking");
                return;
            }

            Door door = pluginInstance.DoorService.GetDoorOrItem(transform);

            if (door == null)
            {
                MessageHelper.Send(caller, "DoorNotForSale");
                return;
            }

            MessageHelper.Send(caller, "CheckDoorSuccess", door.Id, door.PriceString, door.OwnerName);
        }
コード例 #2
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            Transform transform = RaycastHelper.GetBarricadeTransform(player.Player, out _, out BarricadeDrop drop);

            if (transform == null || drop.interactable as InteractableDoor == null)
            {
                MessageHelper.Send(caller, "DoorNotLooking");
                return;
            }

            Door door = pluginInstance.DoorService.GetDoor(transform);

            if (door == null || door.IsSold)
            {
                MessageHelper.Send(caller, "DoorNotForSale");
                return;
            }

            decimal balance = Uconomy.Instance.Database.GetBalance(caller.Id);

            if (balance < door.Price)
            {
                MessageHelper.Send(caller, "BuyDoorCantAfford", door.PriceString);
                return;
            }

            Uconomy.Instance.Database.IncreaseBalance(caller.Id, -door.Price);
            Uconomy.Instance.Database.IncreaseBalance(door.OwnerId, door.Price);
            pluginInstance.DoorService.BuyDoor(door, player.Player);

            MessageHelper.Send(caller, "BuyDoorSuccess", door.PriceString);
        }
コード例 #3
0
        private void LoadDoors(int i)
        {
            database.Reload();

            foreach (Door door in database.Doors)
            {
                Vector3 pos = door.Position.ToVector3();
                door.Transform = RaycastHelper.GetBarricadeTransform(pos);

                if (door.Transform == null)
                {
                    Logger.LogWarning($"Door #{door.Id} transform not found");
                }

                foreach (DoorItem item in door.Items)
                {
                    pos = item.Position.ToVector3();

                    if (item.IsBarricade)
                    {
                        item.Transform = RaycastHelper.GetBarricadeTransform(pos);
                    }
                    else
                    {
                        item.Transform = RaycastHelper.GetStructureTransform(pos);
                    }

                    if (item.Transform == null)
                    {
                        Logger.LogWarning($"Door #{door.Id} item transform not found");
                    }
                }
            }
        }
コード例 #4
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length < 1)
            {
                MessageHelper.Send(caller, "SellDoorFormat");
                return;
            }

            if (!decimal.TryParse(command[0], out decimal price))
            {
                MessageHelper.Send(caller, "SellDoorWrongPrice", command[0]);
                return;
            }

            price = Math.Abs(price);

            UnturnedPlayer player = (UnturnedPlayer)caller;

            Transform transform = RaycastHelper.GetBarricadeTransform(player.Player, out BarricadeData barricadeData, out BarricadeDrop drop);

            if (transform == null || drop.interactable as InteractableDoor == null)
            {
                MessageHelper.Send(caller, "DoorNotLooking");
                return;
            }

            if (barricadeData.owner != player.CSteamID.m_SteamID)
            {
                MessageHelper.Send(caller, "DoorNotOwner");
                return;
            }

            Door door = pluginInstance.DoorService.GetDoor(transform);

            // update door price
            if (door != null)
            {
                pluginInstance.DoorService.UpdateDoorPrice(door, price, player.Player);
                MessageHelper.Send(caller, "SellDoorSuccess", door.Id, door.PriceString);
                return;
            }

            if (!player.IsAdmin && !player.HasPermission("selldoor.admin"))
            {
                MessageHelper.Send(caller, "SellDoorNoPermission");
                return;
            }

            door = pluginInstance.DoorService.SellDoor(transform, price, player.Player);
            MessageHelper.Send(caller, "SellDoorSuccess", door.Id, door.PriceString);
        }
コード例 #5
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            int  doorId = 0;
            bool flag   = true;

            if (command.Length > 0)
            {
                flag = false;
                if (!int.TryParse(command[0], out doorId))
                {
                    MessageHelper.Send(caller, "WrongDoorId", command[0]);
                    return;
                }
            }

            Door door;

            if (flag)
            {
                Transform transform = RaycastHelper.GetBarricadeTransform(player.Player, out _, out BarricadeDrop drop);

                if (transform == null || drop.interactable as InteractableDoor == null)
                {
                    MessageHelper.Send(caller, "DoorNotLooking");
                    return;
                }
                door = pluginInstance.DoorService.GetDoor(transform);
            }
            else
            {
                door = pluginInstance.DoorService.GetDoor(doorId);
            }


            if (door == null)
            {
                MessageHelper.Send(caller, "DoorNotForSale");
                return;
            }

            pluginInstance.DoorService.RemoveDoor(door);
            MessageHelper.Send(caller, "DeleteDoorSucccess", door.Id, door.Items.Count);
        }
コード例 #6
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            Transform transform = RaycastHelper.GetBarricadeTransform(player.Player, out _, out BarricadeDrop drop);

            if (transform == null || drop.interactable as InteractableDoor == null)
            {
                MessageHelper.Send(caller, "DoorNotLooking");
                return;
            }

            Door door = pluginInstance.DoorService.GetDoor(transform);

            if (door == null || door.IsSold)
            {
                MessageHelper.Send(caller, "DoorNotForSale");
                return;
            }

            MessageHelper.Send(caller, "CostDoorPrice", door.PriceString);
        }
コード例 #7
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            string    name      = string.Empty;
            Transform transform = RaycastHelper.GetBarricadeTransform(player.Player, out BarricadeData barricadeData, out BarricadeDrop drop);

            if (transform == null)
            {
                transform = RaycastHelper.GetStructureTransform(player.Player, out StructureData structureData);
                if (transform != null)
                {
                    name = structureData.structure.asset.itemName;
                }
            }
            else
            {
                name = barricadeData.barricade.asset.itemName;
            }

            if (transform == null)
            {
                MessageHelper.Send(caller, "DoorItemNotLooking");
                return;
            }

            Door door = pluginInstance.DoorService.GetDoorFromItem(transform);

            if (door == null)
            {
                MessageHelper.Send(caller, "NotDoorItem", name);
                return;
            }

            pluginInstance.DoorService.RemoveDoorItem(door, transform);
            MessageHelper.Send(caller, "UnlinkDoorSuccess", name, door.Id);
        }
コード例 #8
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (command.Length < 1)
            {
                MessageHelper.Send(caller, "LinkDoorFormat");
                return;
            }

            if (!int.TryParse(command[0], out int doorId))
            {
                MessageHelper.Send(caller, "LinkDoorWrongDoorId", command[0]);
                return;
            }

            DoorItem doorItem = new DoorItem();
            string   name     = string.Empty;
            ulong    ownerId  = 0;

            doorItem.Transform = RaycastHelper.GetBarricadeTransform(player.Player, out BarricadeData barricadeData, out BarricadeDrop drop);

            if (doorItem.Transform == null)
            {
                doorItem.Transform = RaycastHelper.GetStructureTransform(player.Player, out StructureData structureData);
                if (doorItem.Transform != null)
                {
                    ownerId = structureData.owner;
                    name    = structureData.structure.asset.itemName;
                    doorItem.IsBarricade = false;
                    doorItem.IsSign      = false;
                }
            }
            else
            {
                ownerId = barricadeData.owner;
                name    = barricadeData.barricade.asset.itemName;
                doorItem.IsBarricade = true;
                doorItem.IsSign      = drop.interactable is InteractableSign;
            }

            if (doorItem.Transform == null)
            {
                MessageHelper.Send(caller, "DoorItemNotLooking");
                return;
            }

            if (ownerId != player.CSteamID.m_SteamID)
            {
                MessageHelper.Send(caller, "DoorItemNotOwner", name);
                return;
            }

            if (pluginInstance.DoorService.IsDoor(doorItem.Transform))
            {
                MessageHelper.Send(caller, "DoorItemAlready", name);
                return;
            }

            Door door = pluginInstance.DoorService.GetDoor(doorId);

            if (door == null)
            {
                MessageHelper.Send(caller, "DoorNotFound", doorId);
                return;
            }

            pluginInstance.DoorService.AddDoorItem(door, doorItem);
            MessageHelper.Send(caller, "LinkDoorSuccess", name, doorId);
        }