Exemple #1
0
        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";
            }));
        }
Exemple #2
0
        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);
        }