예제 #1
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            PlayerLook look = ((UnturnedPlayer)caller).Player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    BarricadeManager.tryGetInfo(door.transform, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    door.updateToggle(open);

                    BarricadeManager.instance.channel.send("tellToggleDoor", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index,
                        open
                    });

                    UnturnedChat.Say(caller, Util.Translate("door_toggle", open ? "opened" : "closed"));
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_door"));
                }
            }
예제 #2
0
        //DOOR
        public static bool Prefix(bool newOpen, InteractableDoor __instance, ref bool ____isOpen, ref Transform ___barrierTransform,
                                  ref BoxCollider ___placeholderCollider)
        {
            ____isOpen = newOpen;

            AudioSource r = __instance.GetComponent <AudioSource>();

            r.pitch = 1.25f;
            r.Play();

            ___barrierTransform.gameObject.SetActive(!newOpen);

            Animation x = __instance.GetComponent <Animation>();

            x["Open"].speed  = 2f;
            x["Close"].speed = 2f;

            if (newOpen)
            {
                x.Play("Open");
            }
            else
            {
                x.Play("Close");
            }

            return(false);
        }
예제 #3
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            PlayerLook look = ((UnturnedPlayer)caller).Player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    Util.ToggleDoor(door, open);

                    UnturnedChat.Say(caller, Util.Translate("door_toggle", open ? "opened" : "closed"));

                    if (open && BreakAndEnter.instance.Configuration.Instance.AutoCloseDoors)
                    {
                        BreakAndEnter.instance.AutoCloseDoor(door);
                    }
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_door"));
                }
            }
예제 #4
0
        public override void Execute(FreneticScript.CommandSystem.CommandQueue queue, CommandEntry entry)
        {
            bool      enable = BooleanTag.TryFor(entry.GetArgumentObject(queue, 1)).Internal;
            EntityTag entity = EntityTag.For(entry.GetArgumentObject(queue, 0));

            if (entity == null)
            {
                queue.HandleError(entry, "Invalid entity!");
                return;
            }
            BarricadeTag barricadeTag;
            byte         x;
            byte         y;
            ushort       plant;
            ushort       index;

            if (entity.TryGetBarricade(out barricadeTag, out x, out y, out plant, out index))
            {
                UnityEngine.GameObject obj  = barricadeTag.Internal.gameObject;
                InteractableDoor       door = obj.GetComponent <InteractableDoor>();
                if (door != null)
                {
                    SendMessage("tellToggleDoor", x, y, plant, index, !door.isOpen);
                    barricadeTag.InternalData.barricade.state[16] = (byte)(!door.isOpen ? 0 : 1);
                    return;
                }
                InteractableFire fire = obj.GetComponent <InteractableFire>();
                if (fire != null)
                {
                    SendMessage("tellToggleFire", x, y, plant, index, !fire.isLit);
                    barricadeTag.InternalData.barricade.state[0] = (byte)(!fire.isLit ? 0 : 1);
                    return;
                }
                InteractableGenerator generator = obj.GetComponent <InteractableGenerator>();
                if (generator != null)
                {
                    SendMessage("tellToggleGenerator", x, y, plant, index, !generator.isPowered);
                    barricadeTag.InternalData.barricade.state[0] = (byte)(!generator.isPowered ? 0 : 1);
                    EffectManager.sendEffect(8, EffectManager.SMALL, barricadeTag.Internal.position);
                    return;
                }
                InteractableSafezone safezone = obj.GetComponent <InteractableSafezone>();
                if (generator != null)
                {
                    SendMessage("tellToggleSafezone", x, y, plant, index, !safezone.isPowered);
                    barricadeTag.InternalData.barricade.state[0] = (byte)(!safezone.isPowered ? 0 : 1);
                    EffectManager.sendEffect(8, EffectManager.SMALL, barricadeTag.Internal.position);
                    return;
                }
                InteractableSpot spot = obj.GetComponent <InteractableSpot>();
                if (spot != null)
                {
                    SendMessage("tellToggleSpot", x, y, plant, index, !spot.isPowered);
                    barricadeTag.InternalData.barricade.state[0] = (byte)(!spot.isPowered ? 0 : 1);
                    EffectManager.sendEffect(8, EffectManager.SMALL, barricadeTag.Internal.position);
                    return;
                }
            }
            queue.HandleError(entry, "That entity isn't powerable!");
        }
예제 #5
0
        public static void ToggleDoor(InteractableDoor door, bool open)
        {
            BarricadeManager.tryGetInfo(door.transform, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);
            door.updateToggle(open);

            BarricadeManager.instance.channel.send("tellToggleDoor", ESteamCall.ALL,
                                                   ESteamPacket.UPDATE_RELIABLE_BUFFER, x, y, plant, index, open);
        }
예제 #6
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            var PlayerCaller = (UnturnedPlayer)caller;

            InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

            if (component != null)
            {
                bool             isregistered = false;
                InteractableDoor door         = component.door;
                bool             flag         = !door.isOpen;
                byte             x;
                byte             y;
                ushort           plant;
                ushort           index;
                BarricadeRegion  barricadeRegion;
                BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                var           ID            = barricadedrop.instanceID;
                foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                {
                    if (doorinfo.ID == ID)
                    {
                        isregistered = true;
                        if (caller.HasPermission(doorinfo.permission))

                        {
                            //OPEN THE DOOOOOOOR
                            Rocket.Core.Logging.Logger.Log("Player has perm: " + doorinfo.permission);
                            SteamCaller steamCaller = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
                            door.updateToggle(flag);
                            steamCaller.channel.send("tellToggleDoor", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                            {
                                x,
                                y,
                                plant,
                                index,
                                flag
                            });
                            Rocket.Core.Logging.Logger.Log("Player toggled door " + doorinfo.ID);
                            UnturnedChat.Say(caller, doorinfo.name + " door toggled", Color.yellow);
                        }
                        else
                        {
                            UnturnedChat.Say(caller, "You do not have the right permissions to open this door", Color.red);
                        }
                    }
                }
                if (isregistered == false)
                {
                    UnturnedChat.Say(caller, "Door is not registered!", Color.red);
                }
            }
        }
예제 #7
0
        public override CommandResult OnExecute(ICommandSource src, ICommandArgs args)
        {
            var player = src.ToPlayer();
            var look   = player.Look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    BarricadeManager.tryGetInfo(door.transform, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    BarricadeManager manager = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    door.updateToggle(open);

                    manager.channel.send("tellToggleDoor", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index,
                        open
                    });

                    EssLang.Send(src, "DOOR_TOGGLED", open ? "opened" : "closed");
                    return(CommandResult.Success());
                }
                else
                {
                    return(CommandResult.LangError("DOOR_INVALID"));
                }
            }
예제 #8
0
    /// <summary>
    /// Gets the closest door to worldOrigin on the path from worldOrigin to targetPos (if there is one)
    /// Assumes that
    /// </summary>
    /// <param name="worldOrigin">Origin World position to check from. This is required because e.g. Windoors may not appear closed from certain positions.</param>
    /// <param name="targetPos">target world position to check</param>
    /// <returns>The DoorTrigger of the closed door object specified in the summary, null if no such object
    /// exists at that location</returns>
    public static InteractableDoor GetClosedDoorAt(Vector3Int worldOrigin, Vector3Int targetPos, bool isServer)
    {
        // Check door on the local tile first
        Vector3Int       localTarget = Instance.WorldToLocalInt(targetPos, AtPoint(targetPos, isServer).Matrix);
        InteractableDoor originDoor  = Instance.GetFirst <InteractableDoor>(worldOrigin, isServer);

        if (originDoor && !originDoor.GetComponent <RegisterDoor>().IsPassableTo(localTarget, isServer))
        {
            return(originDoor);
        }

        // No closed door on local tile, check target tile
        Vector3Int       localOrigin = Instance.WorldToLocalInt(worldOrigin, AtPoint(worldOrigin, isServer).Matrix);
        InteractableDoor targetDoor  = Instance.GetFirst <InteractableDoor>(targetPos, isServer);

        if (targetDoor && !targetDoor.GetComponent <RegisterDoor>().IsPassable(localOrigin, isServer))
        {
            return(targetDoor);
        }

        // No closed doors on either tile
        return(null);
    }
예제 #9
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            var PlayerCaller = (UnturnedPlayer)caller;
            InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

            if (component != null)
            {
                InteractableDoor door = component.door;
                bool             flag = !door.isOpen;
                byte             x;
                byte             y;
                ushort           plant;
                ushort           index;

                BarricadeRegion barricadeRegion;
                BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                var           ID            = barricadedrop.instanceID;
                UnturnedChat.Say(caller, "Index of this door is: " + index);
                UnturnedChat.Say(caller, "Instance ID of this door is:" + ID);
                return;
            }
        }
예제 #10
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            if (args.Length > 2 || args.Length < 1)
            {
                UnturnedChat.Say(caller, "invalid arguments", Color.red);
                return;
            }
            else if (args.Length == 2)
            {
                var  doorname     = args[0];
                var  newperm      = args[1];
                bool isregistered = false;
                foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                {
                    if (doorinfo.name == doorname)
                    {
                        isregistered        = true;
                        doorinfo.permission = "Registereddoor." + newperm;
                        miscstuff.Instance.Configuration.Save();
                        UnturnedChat.Say(caller, "Door perm changed successfully to " + newperm);
                        return;
                    }
                }
                if (isregistered == false)
                {
                    UnturnedChat.Say(caller, "door does not exist with that name", Color.red);
                    return;
                }
            }
            else if (args.Length == 1)
            {
                var  newperm      = args[0];
                bool isregistered = false;
                var  PlayerCaller = (UnturnedPlayer)caller;

                InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

                if (component != null)
                {
                    InteractableDoor door = component.door;
                    bool             flag = !door.isOpen;
                    byte             x;
                    byte             y;
                    ushort           plant;
                    ushort           index;
                    BarricadeRegion  barricadeRegion;
                    BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index,
                                                out barricadeRegion);
                    BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                    var           ID            = barricadedrop.instanceID;
                    foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                    {
                        if (doorinfo.ID == ID)
                        {
                            isregistered        = true;
                            doorinfo.permission = "Registereddoor." + newperm;
                            UnturnedChat.Say(caller, "Door perm changed successfully to " + newperm);
                            miscstuff.Instance.Configuration.Save();
                        }
                    }

                    if (isregistered == false)
                    {
                        UnturnedChat.Say(caller, "door is not registered", Color.red);
                    }
                }
                else
                {
                    UnturnedChat.Say(caller, "Not looking at a valid door!", Color.red);
                }
            }
        }
 public static void SendOpenDoor(ushort plant, byte x, byte y, ushort index, InteractableDoor interactableDoor, BarricadeRegion barricadeRegion)
 {
     BarricadeManager.ServerSetDoorOpen(interactableDoor, !interactableDoor.isOpen);
 }
        public void Execute(IRocketPlayer caller, string[] args)
        {
            if (args.Length > 1)
            {
                UnturnedChat.Say(caller, "invalid arguments", Color.red);
                return;
            }
            else if (args.Length == 1)
            {
                bool isregistered = false;
                foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                {
                    if (doorinfo.name == args[0])
                    {
                        isregistered = true;
                        miscstuff.Instance.Configuration.Instance.listofregistereddoors.Remove(doorinfo);
                        UnturnedChat.Say(caller, "Door" + doorinfo.name + " Unregistered!");
                        miscstuff.Instance.Configuration.Save();
                    }
                }
                if (isregistered == false)
                {
                    UnturnedChat.Say(caller, "Registered Door does not exist with that name", Color.red);
                }
            }
            else if (args.Length == 0)
            {
                var PlayerCaller = (UnturnedPlayer)caller;
                InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);
                if (component != null)
                {
                    InteractableDoor door = component.door;
                    bool             flag = !door.isOpen;
                    byte             x;
                    byte             y;
                    ushort           plant;
                    ushort           index;
                    BarricadeRegion  barricadeRegion;
                    BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                    BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                    var           ID            = barricadedrop.instanceID;



                    bool isregistered = false;
                    foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                    {
                        if (doorinfo.ID == ID)
                        {
                            isregistered = true;
                            miscstuff.Instance.Configuration.Instance.listofregistereddoors.Remove(doorinfo);
                            UnturnedChat.Say(caller, "Door" + doorinfo.name + " Unregistered!");
                            miscstuff.Instance.Configuration.Save();
                        }
                    }

                    if (isregistered == false)
                    {
                        UnturnedChat.Say(caller, "That door is not registered!", Color.red);
                    }
                }

                else
                {
                    UnturnedChat.Say(caller, "You are not looking at a valid object", Color.red);
                }
            }
        }
예제 #13
0
        protected override async UniTask OnExecuteAsync()
        {
            if (Context.Parameters.Length > 1)
            {
                throw new CommandWrongUsageException(Context);
            }

            if (Context.Parameters.Length == 1)
            {
                string searchTerm    = Context.Parameters[0];
                IUser  potentialUser =
                    await m_UserManager.FindUserAsync(KnownActorTypes.Player, searchTerm, UserSearchMode.FindByNameOrId);

                if (potentialUser == null)
                {
                    throw new UserFriendlyException(m_StringLocalizer["general:invalid_player",
                                                                      new { Player = searchTerm }]);
                }

                await Context.Actor.PrintMessageAsync(m_StringLocalizer["investigate:success",
                                                                        new { Player = searchTerm, ID = potentialUser.Id }]);

                return;
            }

            if (!(Context.Actor is UnturnedUser uPlayer))
            {
                throw new CommandWrongUsageException(Context);
            }

            PlayerLook  look    = uPlayer.Player.Player.look;
            RaycastInfo raycast = DamageTool.raycast(new Ray(look.aim.position, look.aim.forward), 256f,
                                                     RayMasks.DAMAGE_SERVER);

            Transform raycastTransform = raycast.transform;

            if (raycastTransform == null)
            {
                throw new UserFriendlyException(m_StringLocalizer["investigate:no_object"]);
            }

            CSteamID ownerSteamID = CSteamID.Nil;

            if (raycast.vehicle != null)
            {
                ownerSteamID = raycast.vehicle.lockedOwner;
            }

            InteractableBed bed = raycastTransform.GetComponentInChildren <InteractableBed>();

            if (bed != null)
            {
                ownerSteamID = bed.owner;
            }

            InteractableDoor door = raycastTransform.GetComponentInChildren <InteractableDoor>();

            if (door != null)
            {
                ownerSteamID = door.owner;
            }

            InteractableStorage storage = raycastTransform.GetComponentInChildren <InteractableStorage>();

            if (storage != null)
            {
                ownerSteamID = storage.owner;
            }

            await uPlayer.PrintMessageAsync(GetObjectOwner(ownerSteamID));
        }
예제 #14
0
 public void AutoCloseDoor(InteractableDoor door) => StartCoroutine(_AutoCloseDoor(door));
예제 #15
0
        private IEnumerator _AutoCloseDoor(InteractableDoor door)
        {
            yield return(new WaitForSeconds(_autoCloseDoorsDelay));

            Util.ToggleDoor(door, false);
        }
예제 #16
0
 public void Update()
 {
     if (lastCheck == null || (DateTime.Now - lastCheck).TotalMilliseconds >= 1500)
     {
         //enabled = (bool)ctrl_Connector.hack_Settings.getSetting("enable_smartUI").value;
         lastCheck = DateTime.Now;
     }
     if (enabled)
     {
         displayInfo.Clear();
         if (PlayerInteract.interactable != null)
         {
             if (PlayerInteract.interactable is InteractableStorage)
             {
                 InteractableStorage storage = (InteractableStorage)PlayerInteract.interactable;
                 displayInfo.Add("Type: Storage");
                 //if (storage.owner != CSteamID.Nil)
                 //{
                 //displayInfo.Add("Owner: " + tool_ToolZ.getSteamPlayer(storage.owner.m_SteamID).playerID.playerName);
                 //}
                 displayInfo.Add("Locked: " + (getLocked(storage) ? "Yes" : "No"));
                 displayInfo.Add("HasItems: " + (storage.items.getItemCount() > 0 ? "Yes" : "No"));
                 //hasCrack = getLocked(storage);
                 int disp = getDisplay();
                 info_window.width = disp;
                 info_window.x     = Screen.width - disp - 10;
                 inte = PlayerInteract.interactable;
             }
             else if (PlayerInteract.interactable is InteractableDoor)
             {
                 InteractableDoor door = (InteractableDoor)PlayerInteract.interactable;
                 displayInfo.Add("Type: Door");
                 //if (door.owner != CSteamID.Nil)
                 //{
                 //displayInfo.Add("Owner: " + tool_ToolZ.getSteamPlayer(door.owner.m_SteamID).playerID.playerName);
                 //}
                 displayInfo.Add("Locked: " + (getLocked(door) ? "Yes" : "No"));
                 //hasCrack = getLocked(door);
                 int disp = getDisplay();
                 info_window.width = disp;
                 info_window.x     = Screen.width - disp - 10;
                 inte = PlayerInteract.interactable;
             }
         }
         else
         {
             hasCrack = false;
             RaycastHit hit;
             if (tool_ToolZ.getLookingAt(out hit))
             {
                 if (DamageTool.getPlayer(hit.transform) && DamageTool.getPlayer(hit.transform) != tool_ToolZ.getLocalPlayer())
                 {
                     Player p = DamageTool.getPlayer(hit.transform);
                     displayInfo.Add("Type: Player");
                     displayInfo.Add("Name: " + p.name);
                     displayInfo.Add("Health: " + p.life.health);
                     displayInfo.Add("Food: " + p.life.food);
                     displayInfo.Add("Water: " + p.life.water);
                     displayInfo.Add("Stamina: " + p.life.stamina);
                     displayInfo.Add("Distance: " + Math.Round(tool_ToolZ.getDistance(p.transform.position), 0));
                     if (tool_ToolZ.getLocalPlayer().equipment.asset != null && tool_ToolZ.getLocalPlayer().equipment.asset is ItemWeaponAsset)
                     {
                         displayInfo.Add("Will hit: " + (tool_ToolZ.getDistance(p.transform.position) <= ((ItemWeaponAsset)tool_ToolZ.getLocalPlayer().equipment.asset).range ? "Yes" : "No"));
                     }
                     int disp = getDisplay();
                     info_window.width = disp;
                     info_window.x     = Screen.width - disp - 10;
                 }
                 else if (DamageTool.getZombie(hit.transform))
                 {
                     Zombie t = DamageTool.getZombie(hit.transform);
                     displayInfo.Add("Type: Zombie");
                     displayInfo.Add("Health: " + getHealth(t));
                     displayInfo.Add("Distance: " + Math.Round(tool_ToolZ.getDistance(t.transform.position), 0));
                     if (tool_ToolZ.getLocalPlayer().equipment.asset != null && tool_ToolZ.getLocalPlayer().equipment.asset is ItemWeaponAsset)
                     {
                         displayInfo.Add("Will hit: " + (tool_ToolZ.getDistance(t.transform.position) <= ((ItemWeaponAsset)tool_ToolZ.getLocalPlayer().equipment.asset).range ? "Yes" : "No"));
                     }
                     int disp = getDisplay();
                     info_window.width = disp;
                     info_window.x     = Screen.width - disp - 10;
                 }
                 else if (DamageTool.getAnimal(hit.transform))
                 {
                     Animal t = DamageTool.getAnimal(hit.transform);
                     displayInfo.Add("Type: Animal");
                     displayInfo.Add("Health: " + getHealth(t));
                     displayInfo.Add("Distance: " + Math.Round(tool_ToolZ.getDistance(t.transform.position), 0));
                     if (tool_ToolZ.getLocalPlayer().equipment.asset != null && tool_ToolZ.getLocalPlayer().equipment.asset is ItemWeaponAsset)
                     {
                         displayInfo.Add("Will hit: " + (tool_ToolZ.getDistance(t.transform.position) <= ((ItemWeaponAsset)tool_ToolZ.getLocalPlayer().equipment.asset).range ? "Yes" : "No"));
                     }
                     int disp = getDisplay();
                     info_window.width = disp;
                     info_window.x     = Screen.width - disp - 10;
                 }
             }
         }
     }
 }
예제 #17
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            var PlayerCaller = (UnturnedPlayer)caller;

            // actually get the door you are looking at
            if (args.Length != 2)
            {
                UnturnedChat.Say(caller, "Invalid arguments", Color.red);
                return;
            }
            InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

            if (component != null)
            {
                var name              = args[0];
                var permissionname    = args[1];
                InteractableDoor door = component.door;
                byte             x;
                byte             y;
                ushort           plant;
                ushort           index;

                BarricadeRegion barricadeRegion;
                BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                var permission             = "Registereddoor." + permissionname;
                Registereddoortype tempvar = new Registereddoortype();
                tempvar.name         = name;
                tempvar.permission   = permission;
                tempvar.steamid      = PlayerCaller.CSteamID.ToString();
                tempvar.doorposition = door.transform.position;
                BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                var           ID            = barricadedrop.instanceID;
                tempvar.ID = ID;
                if (miscstuff.Instance.Configuration.Instance.listofregistereddoors.Count > 0)
                {
                    foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                    {
                        if (doorinfo.name == tempvar.name)
                        {
                            UnturnedChat.Say(caller, "A door already exists with that name!", Color.red);
                            return;
                        }
                        else if (doorinfo.ID == ID)
                        {
                            UnturnedChat.Say(caller, "This door " + doorinfo.name + " is already registered!", Color.red);
                            return;
                        }
                    }
                }


                miscstuff.Instance.Configuration.Instance.listofregistereddoors.Add(tempvar);
                UnturnedChat.Say(caller, "Door Registered!", Color.blue);
                miscstuff.Instance.Configuration.Save();
            }
            else
            {
                UnturnedChat.Say(caller, "Not looking at a door!");
                return;
            }
        }