So a lot of people use Plugin Clans
Auto lock is awsome but dose not support clans. Here is a fix if you would like to support clans in Auto Lock
Add:
[PluginReference]
private Plugin Clans;Edit: private void OnEntityBuilt
private void OnEntityBuilt(HeldEntity plan, GameObject go)
{
var player = plan.GetOwnerPlayer();
if (player == null) return;
if (!permission.UserHasPermission(player.UserIDString, PermissionUse)) return;
var entity = go.ToBaseEntity() as DecayEntity;
if (entity == null || _config.Disabled.Contains(entity.PrefabName)) return;
var container = entity as StorageContainer;
if (entity.IsLocked() || container != null && container.inventorySlots < 12 ||
!container && !(entity is AnimatedBuildingBlock)) return;
if (_noEscape != null)
{
if (_config.NoEscapeSettings.BlockRaid && _noEscape.Call<bool>("IsRaidBlocked", player.UserIDString))
{
player.ChatMessage(lang.GetMessage("RaidBlocked", this, player.UserIDString));
return;
}
if (_config.NoEscapeSettings.BlockCombat &&
_noEscape.Call<bool>("IsCombatBlocked", player.UserIDString))
{
player.ChatMessage(lang.GetMessage("CombatBlocked", this, player.UserIDString));
return;
}
}
var playerData = CreateDataIfAbsent(player.UserIDString);
if (!playerData.Enabled || !HasCodeLock(player)) return;
var code = GameManager.server.CreateEntity("assets/prefabs/locks/keypad/lock.code.prefab") as CodeLock;
if (code != null)
{
code.gameObject.Identity();
code.SetParent(entity, entity.GetSlotAnchorName(BaseEntity.Slot.Lock));
code.Spawn();
code.code = playerData.Code;
code.hasCode = true;
entity.SetSlot(BaseEntity.Slot.Lock, code);
// Add the player who built the entity to the whitelist
code.whitelistPlayers.Add(player.userID);
// Clan integration: Add clan members to the whitelist
if (Clans != null)
{
string clanTag = Clans.Call<string>("GetClanOf", player.UserIDString);
if (clanTag != null)
{
List<string> clanMembers = Clans.Call<List<string>>("GetClanMembers", player.UserIDString);
foreach (var memberId in clanMembers)
{
ulong memberUserId;
if (ulong.TryParse(memberId, out memberUserId))
{
code.whitelistPlayers.Add(memberUserId);
}
}
}
}
code.SetFlag(BaseEntity.Flags.Locked, true);
Effect.server.Run("assets/prefabs/locks/keypad/effects/lock-code-deploy.prefab", code.transform.position);
}
TakeCodeLock(player);
player.ChatMessage(string.Format(lang.GetMessage("CodeAdded", this, player.UserIDString),
player.net.connection.info.GetBool("global.streamermode") ? "****" : playerData.Code));
}