public static bool Prefix(ref Block __instance, int _indexInBlockActivationCommands, WorldBase _world, int _cIdx, Vector3i _blockPos, BlockValue _blockValue, EntityAlive _player) { // Check if this feature is enabled. if (!Configuration.CheckFeatureStatus(AdvFeatureClass, Feature)) { return(true); } if (_blockValue.ischild) { return(true); } TileEntitySecureDoor tileEntitySecureDoor = (TileEntitySecureDoor)_world.GetTileEntity(_cIdx, _blockPos); if (tileEntitySecureDoor == null) { return(true); } if (!tileEntitySecureDoor.IsLocked() || tileEntitySecureDoor.IsUserAllowed(GamePrefs.GetString(EnumGamePrefs.PlayerId))) { return(true); } if (tileEntitySecureDoor.IsLocked()) { // 1 == try to open locked door. if (_indexInBlockActivationCommands == 1) { // Check if the player has lock picks. LocalPlayerUI playerUI = (_player as EntityPlayerLocal).PlayerUI; XUiM_PlayerInventory playerInventory = playerUI.xui.PlayerInventory; ItemValue item = ItemClass.GetItem("resourceLockPick", false); if (playerInventory.GetItemCount(item) == 0) { playerUI.xui.CollectedItemList.AddItemStack(new ItemStack(item, 0), true); GameManager.ShowTooltip(_player as EntityPlayerLocal, Localization.Get("ttLockpickMissing")); return(false); } tileEntitySecureDoor.SetLocked(true); XUiC_PickLocking.Open(playerUI, tileEntitySecureDoor, _blockValue, _blockPos); return(false); } } return(true); }
public override void Execute(List <string> _params, CommandSenderInfo _senderInfo) { try { if (_params.Count != 1) { SingletonMonoBehaviour <SdtdConsole> .Instance.Output(string.Format("[SERVERTOOLS] Wrong number of arguments, expected 1, found '{0}'", _params.Count)); return; } if (!string.IsNullOrEmpty(_senderInfo.RemoteClientInfo.CrossplatformId.CombinedString)) { LinkedList <Chunk> chunkArray = new LinkedList <Chunk>(); DictionaryList <Vector3i, TileEntity> tiles = new DictionaryList <Vector3i, TileEntity>(); ChunkClusterList chunklist = GameManager.Instance.World.ChunkClusters; for (int i = 0; i < chunklist.Count; i++) { ChunkCluster chunk = chunklist[i]; chunkArray = chunk.GetChunkArray(); foreach (Chunk _c in chunkArray) { tiles = _c.GetTileEntities(); foreach (TileEntity tile in tiles.dict.Values) { TileEntityType type = tile.GetTileEntityType(); if (type.ToString().Equals("SecureDoor")) { TileEntitySecureDoor SecureDoor = (TileEntitySecureDoor)tile; if (!SecureDoor.IsUserAllowed(_senderInfo.RemoteClientInfo.CrossplatformId)) { List <PlatformUserIdentifierAbs> _users = SecureDoor.GetUsers(); _users.Add(_senderInfo.RemoteClientInfo.CrossplatformId); SecureDoor.SetModified(); } } } } } } SingletonMonoBehaviour <SdtdConsole> .Instance.Output(string.Format("[SERVERTOOLS] Door access set for '{0}'", _senderInfo.RemoteClientInfo.CrossplatformId.CombinedString)); } catch (Exception e) { Log.Out(string.Format("[SERVERTOOLS] Error in SecureDoorAccess.Execute: {0}", e.Message)); } }