private void CheckAdminRights() { const string spider = "Space_spider"; const string wolf = "SpaceWolf"; foreach (var item in Players) { var pLevel = item.Value.PromoteLevel; var playerId = item.Key; var player = item.Value; var wasAdmin = Admins.ContainsKey(playerId); if (pLevel == MyPromoteLevel.Admin || pLevel == MyPromoteLevel.Owner || pLevel == MyPromoteLevel.SpaceMaster) { var character = player.Character; var isAdmin = false; if (character != null) { if (character.Definition.Id.SubtypeName.Equals(wolf) || character.Definition.Id.SubtypeName.StartsWith(spider)) { continue; } if (MySafeZone.CheckAdminIgnoreSafezones(player.SteamUserId)) { isAdmin = true; } else { foreach (var gridAi in GridTargetingAIs.Values) { if (gridAi.Targets.ContainsKey((MyEntity)character) && gridAi.Weapons.Count > 0 && ((IMyTerminalBlock)gridAi.Weapons[0].MyCube).HasPlayerAccess(playerId)) { if (MyIDModule.GetRelationPlayerBlock(playerId, gridAi.AiOwner) == MyRelationsBetweenPlayerAndBlock.Enemies) { isAdmin = true; break; } } } } if (isAdmin) { Admins[playerId] = character; AdminMap[character] = player; continue; } } } if (wasAdmin) { IMyCharacter removeCharacter; IMyPlayer removePlayer; Admins.TryRemove(playerId, out removeCharacter); AdminMap.TryRemove(removeCharacter, out removePlayer); } } }