Пример #1
0
        public ActionResult SetPoster(string characterId, string guildId, string message)
        {
            //find guild
            var guildObject = GetGuild(guildId);

            if (guildObject == null)
            {
                return(new ActionResult(ReturnCode.GuildNotFound));
            }

            //find member
            GuildMember member = null;

            if (!guildObject.TryGetMember(characterId, out member))
            {
                return(new ActionResult(ReturnCode.GuildMemberNotFound));
            }

            //check privilegies
            if (!member.IsAddMemberGranted())
            {
                return(new ActionResult(ReturnCode.GuildPrivilegeNotEnough));
            }

            guildObject.SetPoster(message);
            guildObject.AddTransaction(CoalitionTransaction.MakeTransaction(CoalitionTransactionType.set_poster, member.characterName, characterId, 0));
            MarkModified(guildId);
            SendGuildUpdateEvent(characterId, guildObject.GetInfo(mApplication));

            return(new ActionResult(ReturnCode.Ok, new Hashtable {
                { (int)SPC.DayPoster, message }
            }));
        }
Пример #2
0
        public bool KickMember(string moderCharacterID, string login, string characterID, string guildID)
        {
            var guild = GetGuild(guildID);

            if (guild == null)
            {
                return(false);
            }

            GuildMember moderMember = null;

            if (!guild.TryGetMember(moderCharacterID, out moderMember))
            {
                return(false);
            }

            if (!moderMember.IsAddMemberGranted())
            {
                return(false);
            }

            return(RemoveMember(login, characterID, guildID));
        }
Пример #3
0
        public bool SendInviteToGuildNotification(string sourceLogin, string sourceCharacterID, string targetLogin, string targetCharacterID, string guildID)
        {
            var sourcePlayer = mApplication.Players.GetExistingPlayerByLogin(sourceLogin);
            var targetPlayer = mApplication.Players.GetExistingPlayerByLogin(targetLogin);

            if (sourcePlayer == null)
            {
                log.Info("don't exists source player");
                return(false);
            }

            if (targetPlayer == null)
            {
                log.Info("don't exists target player");
                return(false);
            }

            var sourceCharacter = sourcePlayer.Data.GetCharacter(sourceCharacterID);
            var targetCharacter = targetPlayer.Data.GetCharacter(targetCharacterID);

            if (sourceCharacter == null)
            {
                log.Info("source character not found");
                return(false);
            }
            if (targetCharacter == null)
            {
                log.Info("target character not found");
                return(false);
            }

            if (targetCharacter.HasGuild())
            {
                log.Info("target character already in some guild");
                return(false);
            }

            Guild targetGuild = GetGuild(guildID);

            if (targetGuild == null)
            {
                log.Info("guild not found");
                return(false);
            }
            GuildMember sourceMember = null;

            if (!targetGuild.TryGetMember(sourceCharacterID, out sourceMember))
            {
                log.Info("source member not found");
                return(false);
            }

            if (!sourceMember.IsAddMemberGranted())
            {
                log.Info("not granted add members");
                return(false);
            }

            //string text = string.Format("{0} invited you to group {1}. Do you want accept to group?", sourceLogin, targetGuild.name);
            Hashtable notificationData = new Hashtable {
                { (int)SPC.Action, (int)GuildAction.AddMember },
                { (int)SPC.Guild, guildID },
                { (int)SPC.SourceLogin, sourceLogin },
                { (int)SPC.Name, targetGuild.name }
            };

            string uniqueID     = sourceCharacterID + sourceLogin + targetCharacterID + targetLogin + guildID + NotificationSourceServiceType.Guild.ToString() + NotificationSubType.InviteToGuild.ToString();
            var    notification = mApplication.Notifications.Create(uniqueID, "s_note_invite_guild", notificationData, NotficationRespondAction.YesDelete,
                                                                    NotificationSourceServiceType.Guild, NotificationSubType.InviteToGuild);

            mApplication.Notifications.SetNotificationToCharacter(targetCharacterID, notification);
            return(true);
        }