private string TribesmanRemove(Session session, string[] parms) { bool help = false; string playerName = string.Empty; string tribeName = string.Empty; try { var p = new OptionSet { { "?|help|h", v => help = true }, { "tribe=", v => tribeName = v.TrimMatchingQuotes() }, { "player=", v => playerName = v.TrimMatchingQuotes() }, }; p.Parse(parms); } catch (Exception) { help = true; } if (help || string.IsNullOrEmpty(playerName) || string.IsNullOrEmpty(tribeName)) { return("TribesmanRemove --tribe=tribe_name --player=player_name"); } uint playerId; if (!world.FindPlayerId(playerName, out playerId)) { return("Player not found"); } uint tribeId; if (!tribeManager.FindTribeId(tribeName, out tribeId)) { return("Tribe not found"); } Dictionary <uint, IPlayer> players; return(locker.Lock(out players, playerId, tribeId).Do(() => { ITribe tribe = players[tribeId].Tribesman.Tribe; Error ret = tribe.RemoveTribesman(playerId, true); if (ret != Error.Ok) { return Enum.GetName(typeof(Error), ret); } return "OK"; })); }
public Error Remove(ITribe tribe) { if (tribe.AssignmentCount > 0) { return(Error.TribeHasAssignment); } if (!Tribes.TryRemove(tribe.Id, out tribe)) { return(Error.TribeNotFound); } strongholdManager.RemoveStrongholdsFromTribe(tribe); tribe.Owner.LastDeletedTribe = SystemClock.Now; dbManager.Save(tribe.Owner); foreach (var tribesman in new List <ITribesman>(tribe.Tribesmen)) { tribe.RemoveTribesman(tribesman.Player.PlayerId, wasKicked: false, doNotRemoveIfOwner: false); } UnsubscribeEvents(tribe); // Soft delete tribe dbManager.Query( String.Format("UPDATE `{0}` SET deleted = 1, name = @name WHERE id = @id LIMIT 1", Tribe.DB_TABLE), new[] { new DbColumn("id", tribe.Id, DbType.String), new DbColumn("name", String.Format("{0} (DELETED)", tribe.Name), DbType.String) }); return(Error.Ok); }