Пример #1
0
        private static void HandleWithdrawApplication(GameSession session, PacketReader packet)
        {
            long guildApplicationId = packet.ReadLong();

            GuildApplication application = session.Player.GuildApplications.FirstOrDefault(x => x.Id == guildApplicationId);

            if (application == null)
            {
                return;
            }

            Guild guild = GameServer.GuildManager.GetGuildById(application.GuildId);

            if (guild == null)
            {
                return;
            }

            application.Remove(session.Player, guild);

            session.Send(GuildPacket.WithdrawApplicationPlayerUpdate(application, guild.Name));
            foreach (GuildMember member in guild.Members)
            {
                if (((GuildRights)guild.Ranks[member.Rank].Rights).HasFlag(GuildRights.CanInvite))
                {
                    member.Player.Session.Send(GuildPacket.WithdrawApplicationGuildUpdate(application.Id));
                }
            }
        }
Пример #2
0
        private static void HandleSubmitApplication(GameSession session, PacketReader packet)
        {
            long guildId = packet.ReadLong();

            if (session.Player.GuildApplications.Count >= 10)
            {
                return;
            }

            Guild guild = GameServer.GuildManager.GetGuildById(guildId);

            if (guild == null)
            {
                return;
            }

            GuildApplication application = new GuildApplication(session.Player.CharacterId, guild.Id);

            application.Add(session.Player, guild);

            session.Send(GuildPacket.SubmitApplication(application, guild.Name));
            foreach (GuildMember member in guild.Members)
            {
                if (((GuildRights)guild.Ranks[member.Rank].Rights).HasFlag(GuildRights.CanInvite))
                {
                    member.Player.Session.Send(GuildPacket.SendApplication(application, session.Player));
                }
            }
        }
Пример #3
0
 public static bool CreateGuildApplication(GuildApplication application)
 {
     using (DatabaseContext context = new DatabaseContext())
     {
         context.GuildApplications.Add(application);
         return(SaveChanges(context));
     }
 }
Пример #4
0
        public static Packet WithdrawApplicationPlayerUpdate(GuildApplication application, string guildName)
        {
            PacketWriter pWriter = PacketWriter.Of(SendOp.GUILD);

            pWriter.WriteEnum(GuildPacketMode.WithdrawApplicationPlayerUpdate);
            pWriter.WriteLong(application.Id);
            pWriter.WriteUnicodeString(guildName);
            return(pWriter);
        }
Пример #5
0
        public static Packet SubmitApplication(GuildApplication application, string guildName)
        {
            PacketWriter pWriter = PacketWriter.Of(SendOp.GUILD);

            pWriter.WriteEnum(GuildPacketMode.SubmitApplication);
            pWriter.WriteLong(application.Id);
            pWriter.WriteUnicodeString(guildName);
            return(pWriter);
        }
Пример #6
0
 public void Update(GuildApplication guildApplication)
 {
     QueryFactory.Query(TableName).Where("id", guildApplication.Id).Update(new
     {
         character_id       = guildApplication.CharacterId,
         guild_id           = guildApplication.GuildId,
         creation_timestamp = guildApplication.CreationTimestamp
     });
 }
Пример #7
0
 public long Insert(GuildApplication guildApplication)
 {
     return(QueryFactory.Query(TableName).InsertGetId <long>(new
     {
         character_id = guildApplication.CharacterId,
         guild_id = guildApplication.GuildId,
         creation_timestamp = guildApplication.CreationTimestamp
     }));
 }
Пример #8
0
        private static void HandleApplicationResponse(GameSession session, PacketReader packet)
        {
            long guildApplicationId = packet.ReadLong();
            byte response           = packet.ReadByte();

            Guild guild = GameServer.GuildManager.GetGuildById(session.Player.Guild.Id);

            if (guild == null)
            {
                return;
            }

            GuildApplication application = guild.Applications.FirstOrDefault(x => x.Id == guildApplicationId);

            if (application == null)
            {
                return;
            }

            Player applier = GameServer.Storage.GetPlayerById(application.CharacterId);

            session.Send(GuildPacket.ApplicationResponse(guildApplicationId, applier.Name, response));
            if (response == 1)
            {
                session.Send(GuildPacket.InviteNotification(applier.Name, response));
            }
            guild.BroadcastPacketGuild(GuildPacket.ApplicationResponseBroadcastNotice(session.Player.Name, applier.Name, response, guildApplicationId));
            application.Remove(applier, guild);

            if (applier.Session != null)
            {
                applier.Session.Send(GuildPacket.ApplicationResponseToApplier(guild.Name, guildApplicationId, response));
            }

            if (response == 0)
            {
                if (applier.Session != null)
                {
                    // TODO: Send System mail for rejection
                }
                return;
            }

            guild.AddMember(applier);
            if (applier.Session != null)
            {
                applier.Session.Send(GuildPacket.InviteResponseConfirm(session.Player, applier, guild, response));
                applier.Session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag2(applier, guild.Name));
            }

            GuildMember member = guild.Members.FirstOrDefault(x => x.Player == applier);

            guild.BroadcastPacketGuild(GuildPacket.MemberBroadcastJoinNotice(member, session.Player.Name, false));
            guild.BroadcastPacketGuild(GuildPacket.MemberJoin(applier));
            guild.BroadcastPacketGuild(GuildPacket.UpdateGuild(guild));
        }
Пример #9
0
        public static Packet SendApplication(GuildApplication application, Player player)
        {
            PacketWriter pWriter = PacketWriter.Of(SendOp.GUILD);

            pWriter.WriteEnum(GuildPacketMode.SendApplication);
            pWriter.WriteLong(application.Id);
            pWriter.WriteLong(application.GuildId);
            pWriter.WriteLong(player.AccountId);
            pWriter.WriteLong(player.CharacterId);
            pWriter.WriteUnicodeString(player.Name);
            pWriter.WriteUnicodeString(player.ProfileUrl);
            pWriter.WriteEnum(player.Job);
            pWriter.WriteEnum(player.JobCode);
            pWriter.WriteInt(player.Levels.Level);
            foreach (int trophyCategory in player.TrophyCount)
            {
                pWriter.WriteInt(trophyCategory);
            }
            pWriter.WriteLong(DateTimeOffset.Now.ToUnixTimeSeconds() + Environment.TickCount);
            return(pWriter);
        }