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")); } }
//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); }
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")); } }
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!"); }
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); }
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); } } }
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")); } }
/// <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); }
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; } }
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); } } }
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)); }
public void AutoCloseDoor(InteractableDoor door) => StartCoroutine(_AutoCloseDoor(door));
private IEnumerator _AutoCloseDoor(InteractableDoor door) { yield return(new WaitForSeconds(_autoCloseDoorsDelay)); Util.ToggleDoor(door, false); }
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; } } } } }
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; } }