Example #1
0
        private static void HandleUpgradeBuff(GameSession session, PacketReader packet)
        {
            int buffId = packet.ReadInt();

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

            if (guild == null)
            {
                return;
            }

            GuildBuff buff = guild.Buffs.First(x => x.Id == buffId);

            // get next level's data
            GuildBuffLevel metadata = GuildBuffMetadataStorage.GetGuildBuffLevelData(buffId, buff.Level + 1);

            GuildPropertyMetadata guildProperty = GuildPropertyMetadataStorage.GetMetadata(guild.Exp);

            if (guildProperty.Level < metadata.LevelRequirement)
            {
                return;
            }

            if (guild.Funds < metadata.UpgradeCost)
            {
                return;
            }

            guild.ModifyFunds(session, guildProperty, -metadata.UpgradeCost);
            buff.Level++;
            guild.BroadcastPacketGuild(GuildPacket.UpgradeBuff(buffId, buff.Level, session.Player.Name));
        }
Example #2
0
        private static void HandleTransferLeader(GameSession session, PacketReader packet)
        {
            string target = packet.ReadUnicodeString();

            Player newLeader = GameServer.Storage.GetPlayerByName(target);

            if (newLeader == null)
            {
                return;
            }

            Player oldLeader = session.Player;

            Guild guild = GameServer.GuildManager.GetGuildByLeader(oldLeader);

            if (guild == null || guild.LeaderCharacterId != oldLeader.CharacterId)
            {
                return;
            }
            GuildMember newLeaderMember = guild.Members.FirstOrDefault(x => x.Player.CharacterId == newLeader.CharacterId);
            GuildMember oldLeaderMember = guild.Members.FirstOrDefault(x => x.Player.CharacterId == oldLeader.CharacterId);

            newLeaderMember.Rank    = 0;
            oldLeaderMember.Rank    = 1;
            guild.LeaderCharacterId = newLeader.CharacterId;
            guild.LeaderAccountId   = newLeader.AccountId;
            guild.LeaderName        = newLeader.Name;

            session.Send(GuildPacket.TransferLeaderConfirm(newLeader));
            guild.BroadcastPacketGuild(GuildPacket.AssignNewLeader(newLeader, oldLeader));
            guild.AssignNewLeader(oldLeader, newLeader);
        }
Example #3
0
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
     {
         client.Guild.DonateCPs(client, guild.Data);
     }
 }
Example #4
0
        private static void HandleUpgradeHome(GameSession session, PacketReader packet)
        {
            int themeId = packet.ReadInt();

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

            if (guild == null || guild.Leader != session.Player)
            {
                return;
            }

            GuildHouseMetadata houseMetadata = GuildHouseMetadataStorage.GetMetadataByThemeId(guild.HouseRank + 1, themeId);

            if (houseMetadata == null)
            {
                return;
            }

            GuildPropertyMetadata guildProperty = GuildPropertyMetadataStorage.GetMetadata(guild.Exp);

            if (guildProperty.Level < houseMetadata.RequiredLevel ||
                guild.Funds < houseMetadata.UpgradeCost)
            {
                return;
            }

            guild.ModifyFunds(session, guildProperty, -houseMetadata.UpgradeCost);
            guild.HouseRank  = houseMetadata.Level;
            guild.HouseTheme = houseMetadata.Theme;
            guild.BroadcastPacketGuild(GuildPacket.ChangeHouse(session.Player.Name, guild.HouseRank, guild.HouseTheme)); // need to confirm if this is the packet used when upgrading
        }
Example #5
0
        private static void HandleInvite(GameSession session, PacketReader packet)
        {
            string targetPlayer = packet.ReadUnicodeString();

            Guild guild = GameServer.GuildManager.GetGuildByLeader(session.Player);

            if (guild == null)
            {
                return;
            }

            Player playerInvited = GameServer.Storage.GetPlayerByName(targetPlayer);

            if (playerInvited == null)
            {
                session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.UnableToSendInvite));
            }

            if (playerInvited.Guild != null)
            {
                session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.CharacterIsAlreadyInAGuild));
                return;
            }

            if (guild.Members.Count >= guild.Capacity)
            {
                //TODO Plug in 'full guild' error packets
                return;
            }

            session.Send(GuildPacket.InviteConfirm(playerInvited));
            playerInvited.Session.Send(GuildPacket.SendInvite(session.Player, playerInvited, guild));
        }
Example #6
0
        private static void HandleGuildNotice(GameSession session, PacketReader packet)
        {
            packet.ReadByte();
            string notice = packet.ReadUnicodeString();

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

            if (guild == null)
            {
                return;
            }

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

            if (member == null)
            {
                return;
            }

            if (!((GuildRights)guild.Ranks[member.Rank].Rights).HasFlag(GuildRights.CanGuildNotice))
            {
                return;
            }

            session.Send(GuildPacket.GuildNoticeConfirm(notice));
            guild.BroadcastPacketGuild(GuildPacket.GuildNoticeChange(session.Player, notice));
        }
Example #7
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));
                }
            }
        }
Example #8
0
        private static void HandleDisband(GameSession session)
        {
            Guild guild = GameServer.GuildManager.GetGuildByLeader(session.Player);

            if (guild == null)
            {
                return;
            }

            // Remove any applications
            if (guild.Applications.Count > 0)
            {
                foreach (GuildApplication application in guild.Applications)
                {
                    Player player = GameServer.Storage.GetPlayerById(application.CharacterId);
                    if (player == null)
                    {
                        continue;
                    }
                    application.Remove(player, guild);
                    // TODO: Send mail to player as rejected auto message
                }
            }
            session.Send(GuildPacket.DisbandConfirm());
            session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag(session.Player));
            guild.RemoveMember(session.Player);
            GameServer.GuildManager.RemoveGuild(guild);
            DatabaseManager.Guilds.Delete(guild.Id);
        }
    private static void HandleNameVoucher(GameSession session, PacketReader packet, Item item)
    {
        string newName = packet.ReadUnicodeString();
        string oldName = session.Player.Name;

        session.Player.Name = newName;

        session.Player.Inventory.ConsumeItem(session, item.Uid, 1);

        session.Send(CharacterListPacket.NameChanged(session.Player.CharacterId, newName));

        // Update name on socials
        foreach (Club club in session.Player.Clubs)
        {
            club.BroadcastPacketClub(ClubPacket.UpdateMemberName(oldName, newName, session.Player.CharacterId));
            if (club.LeaderCharacterId == session.Player.CharacterId)
            {
                club.LeaderName = newName;
            }
        }

        if (session.Player.Guild is not null)
        {
            session.Player.Guild?.BroadcastPacketGuild(GuildPacket.UpdateMemberName(oldName, newName));
            if (session.Player.Guild.LeaderCharacterId == session.Player.CharacterId)
            {
                session.Player.Guild.LeaderName = newName;
            }
        }

        session.Player.Party?.BroadcastPacketParty(PartyPacket.UpdatePlayer(session.Player));

        // TODO: Needs to redirect player to character selection screen after pop-up
    }
Example #10
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));
                }
            }
        }
Example #11
0
        private static void HandleCheckIn(GameSession session)
        {
            Guild guild = GameServer.GuildManager.GetGuildById(session.Player.Guild.Id);

            if (guild == null)
            {
                return;
            }
            GuildMember member = guild.Members.First(x => x.Player == session.Player);

            // Check if attendance timestamp is today
            DateTimeOffset date = DateTimeOffset.FromUnixTimeSeconds(member.AttendanceTimestamp);

            if (date == DateTime.Today)
            {
                return;
            }

            int contributionAmount         = GuildContributionMetadataStorage.GetContributionAmount("attend");
            GuildPropertyMetadata property = GuildPropertyMetadataStorage.GetMetadata(guild.Exp);

            member.AddContribution(contributionAmount);
            member.AttendanceTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds() + Environment.TickCount;
            session.Send(GuildPacket.CheckInBegin());
            Item guildCoins = new Item(30000861)
            {
                Amount = property.AttendGuildCoin
            };

            InventoryController.Add(session, guildCoins, true);
            guild.AddExp(session, property.AttendExp);
            guild.ModifyFunds(session, property, property.AttendFunds);
            guild.BroadcastPacketGuild(GuildPacket.UpdatePlayerContribution(member, contributionAmount));
            session.Send(GuildPacket.FinishCheckIn(member));
        }
Example #12
0
        private static void HandleChangeHomeTheme(GameSession session, PacketReader packet)
        {
            int themeId = packet.ReadInt();

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

            if (guild == null || guild.LeaderCharacterId != session.Player.CharacterId)
            {
                return;
            }

            GuildHouseMetadata houseMetadata = GuildHouseMetadataStorage.GetMetadataByThemeId(guild.HouseRank, themeId);

            if (houseMetadata == null)
            {
                return;
            }

            GuildPropertyMetadata guildProperty = GuildPropertyMetadataStorage.GetMetadata(guild.Exp);

            if (guild.Funds < houseMetadata.UpgradeCost)
            {
                return;
            }

            guild.ModifyFunds(session, guildProperty, -houseMetadata.RethemeCost);
            guild.HouseTheme = houseMetadata.Theme;
            guild.BroadcastPacketGuild(GuildPacket.ChangeHouse(session.Player.Name, guild.HouseRank, guild.HouseTheme));
        }
Example #13
0
    private static void HandleGuildMail(GameSession session, IPacketReader packet)
    {
        string title = packet.ReadUnicodeString();
        string body  = packet.ReadUnicodeString();

        Player sender = session.Player;
        Guild  guild  = sender.Guild;

        if (guild == null)
        {
            return;
        }

        byte      senderRank = sender.GuildMember.Rank;
        GuildRank guildRank  = guild.Ranks[senderRank];

        if (!guildRank.HasRight(GuildRights.CanGuildMail))
        {
            session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.InsufficientPermissions));
            return;
        }

        session.Send(GuildPacket.SendMail());

        IEnumerable <long> recipientIds = guild.Members.Select(c => c.Player.CharacterId);

        foreach (long recipientId in recipientIds)
        {
            MailHelper.SendMail(MailType.Player, recipientId, sender.CharacterId, sender.Name, title, body, "", "", new(), 0, 0, out Mail mail);
        }
    }
 public void AddExp(GameSession session, int expGain)
 {
     Exp += expGain;
     BroadcastPacketGuild(GuildPacket.UpdateGuildExp(Exp));
     session.Send(GuildPacket.UpdateGuildStatsNotice(expGain, 0));
     DatabaseManager.Guilds.Update(this);
 }
Example #15
0
        private static void HandleSearchGuildByName(GameSession session, PacketReader packet)
        {
            string name = packet.ReadUnicodeString();

            List <Guild> guildList = GameServer.GuildManager.GetGuildListByName(name);

            session.Send(GuildPacket.DisplayGuildList(guildList));
        }
Example #16
0
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
     {
         if (client.GuildMemberInfo.Rank == Enums.GuildRank.GuildLeader)
             client.Guild.SetBullentin(client, guild.Strings[0]);
     }
 }
Example #17
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));
        }
Example #18
0
        public static void Handle(Entities.GameClient client, GuildPacket guild)
        {
            if (guild.Data == 0)
                return;
            if (guild.Data == client.EntityUID)
                return;
            if (client.Guild == null)
                return;
            if (client.ApplyGuildMemberUID == 0)
            {
                Entities.GameClient inviteto;
                if (Core.Kernel.Clients.TrySelect(guild.Data, out inviteto))
                {
                    if (!inviteto.IsInMap(client))
                        return;

                    if (inviteto.Guild == null && client.Guild != null)
                    {
                        if (client.GuildMemberInfo.Rank == Enums.GuildRank.DeputyLeader ||
                            client.GuildMemberInfo.Rank == Enums.GuildRank.GuildLeader)
                        {
                            inviteto.ApplyGuildMemberUID = client.EntityUID;
                            using (var invite = new Packets.GuildPacket(new Packets.StringPacker()))
                            {
                                invite.Action = Enums.GuildAction.InviteJoin;
                                invite.Data = client.EntityUID;
                                inviteto.Send(invite);
                            }
                        }
                    }
                }
                return;
            }

            if (client.ApplyGuildMemberUID != guild.Data)
                return;
            client.ApplyGuildMemberUID = 0;

            Entities.GameClient newclient;
            if (Core.Kernel.Clients.TrySelect(guild.Data, out newclient))
            {
                if (!newclient.IsInMap(client))
                    return;

                if (newclient.Guild == null && client.Guild != null)
                {
                    if (client.GuildMemberInfo.Rank == Enums.GuildRank.DeputyLeader ||
                        client.GuildMemberInfo.Rank == Enums.GuildRank.GuildLeader)
                    {
                        client.Guild.AddMember(newclient);
                        newclient.LoadGuildInfo();
                        //newclient.Screen.FullUpdate();
                    }
                }
            }
        }
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
     {
         if (client.GuildMemberInfo.Rank != Enums.GuildRank.GuildLeader)
         {
             client.Guild.RemoveMember(client.GuildMemberInfo);
         }
     }
 }
Example #20
0
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
     {
         if (client.GuildMemberInfo.Rank == Enums.GuildRank.GuildLeader)
         {
             client.Guild.KickMember(guild.Strings[0]);
         }
     }
 }
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
     {
         if (client.GuildMemberInfo.Rank != Enums.GuildRank.GuildLeader)
         {
             client.Guild.RemoveMember(client.GuildMemberInfo);
         }
     }
 }
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
     {
         client.SendGuild();
         using (var announce = new Packets.GuildPacket(new Packets.StringPacker(client.Guild.Bullentin)))
         {
             announce.Data = Core.Kernel.TimeGet(Enums.TimeType.Day);
             announce.Action = Enums.GuildAction.SetAnnounce;
             client.Send(announce);
         }
     }
 }
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
     {
         client.SendGuild();
         using (var announce = new Packets.GuildPacket(new Packets.StringPacker(client.Guild.Bullentin)))
         {
             announce.Data   = Core.Kernel.TimeGet(Enums.TimeType.Day);
             announce.Action = Enums.GuildAction.SetAnnounce;
             client.Send(announce);
         }
     }
 }
Example #24
0
        private static void HandleCreate(GameSession session, PacketReader packet)
        {
            string guildName = packet.ReadUnicodeString();

            if (session.Player.Guild != null)
            {
                return;
            }

            if (!session.Player.Wallet.Meso.Modify(-2000))
            {
                session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.NotEnoughMesos));
                return;
            }


            Guild newGuild;

            if (DatabaseManager.GuildExists(guildName))
            {
                session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.GuildWithSameNameExists));
                return;
            }
            newGuild = new(guildName);

            if (!DatabaseManager.CreateGuild(newGuild))
            {
                throw new ArgumentException("Could not create guild");
            }

            GameServer.GuildManager.AddGuild(newGuild);
            newGuild.AddLeader(session.Player);

            session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag2(session.Player, guildName));
            session.Send(GuildPacket.Create(guildName));

            string inviter = ""; // nobody because nobody invited the guild leader

            GuildMember member = newGuild.Members.FirstOrDefault(x => x.Player == session.Player);

            session.Send(GuildPacket.UpdateGuild(newGuild));
            session.Send(GuildPacket.MemberBroadcastJoinNotice(member, inviter, false));
            session.Send(GuildPacket.MemberJoin(session.Player));

            // Remove any applications
            foreach (GuildApplication application in session.Player.GuildApplications)
            {
                Guild guild = GameServer.GuildManager.GetGuildById(application.GuildId);
                application.Remove(session.Player, guild);
            }
        }
Example #25
0
        private static void HandleLeave(GameSession session)
        {
            Guild guild = GameServer.GuildManager.GetGuildById(session.Player.Guild.Id);

            if (guild == null)
            {
                return;
            }

            session.Send(GuildPacket.LeaveConfirm());
            session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag(session.Player));
            guild.BroadcastPacketGuild(GuildPacket.MemberLeaveNotice(session.Player));
            guild.RemoveMember(session.Player);
        }
Example #26
0
        private static void HandleListGuild(GameSession session, PacketReader packet)
        {
            bool toggle = packet.ReadBool();

            Guild guild = GameServer.GuildManager.GetGuildByLeader(session.Player);

            if (guild == null)
            {
                return;
            }

            guild.Searchable = toggle;
            session.Send(GuildPacket.ListGuildConfirm(toggle));
            session.Send(GuildPacket.ListGuildUpdate(session.Player, toggle));
        }
Example #27
0
    private static void HandleInviteResponse(GameSession session, PacketReader packet)
    {
        long   guildId   = packet.ReadLong();
        string guildName = packet.ReadUnicodeString();

        packet.ReadShort();
        string inviterName = packet.ReadUnicodeString();
        string inviteeName = packet.ReadUnicodeString();
        byte   response    = packet.ReadByte(); // 01 accept

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

        if (guild == null)
        {
            return;
        }

        Player inviter = GameServer.PlayerManager.GetPlayerByName(inviterName);

        if (inviter == null)
        {
            return;
        }

        if (response == 00)
        {
            inviter.Session.Send(GuildPacket.InviteNotification(inviteeName, 256));
            session.Send(GuildPacket.InviteResponseConfirm(inviter, session.Player, guild, response));
            return;
        }

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

        if (member == null)
        {
            return;
        }

        inviter.Session.Send(GuildPacket.InviteNotification(inviteeName, response));
        session.Send(GuildPacket.InviteResponseConfirm(inviter, session.Player, guild, response));
        session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag2(session.Player, guildName));
        guild.BroadcastPacketGuild(GuildPacket.MemberBroadcastJoinNotice(member, inviterName, true));
        guild.BroadcastPacketGuild(GuildPacket.MemberJoin(session.Player), session);
        session.Send(GuildPacket.UpdateGuild(guild));
        TrophyManager.OnGuildJoin(session.Player);
    }
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     uint guilduid = guild.Data;
     if (guilduid > 0)
     {
         Data.Guild realguild;
         if (Core.Kernel.Guilds.TrySelect(guilduid, out realguild))
         {
             using (var stringpacket = new Packets.StringPacket(new StringPacker(realguild.StringInfo)))
             {
                 stringpacket.Action = Enums.StringAction.Guild;
                 stringpacket.Data = guilduid;
                 client.Send(stringpacket);
             }
         }
     }
 }
Example #29
0
        private static void HandleKick(GameSession session, PacketReader packet)
        {
            string target = packet.ReadUnicodeString();

            Player targetPlayer = GameServer.Storage.GetPlayerByName(target);

            if (targetPlayer == null)
            {
                return;
            }

            Guild guild = GameServer.GuildManager.GetGuildByLeader(session.Player);

            if (guild == null)
            {
                return;
            }

            if (targetPlayer.CharacterId == guild.LeaderCharacterId)
            {
                //TODO: Error packets
                return;
            }

            GuildMember selfPlayer = guild.Members.FirstOrDefault(x => x.Player == session.Player);

            if (selfPlayer == null)
            {
                return;
            }

            if (!((GuildRights)guild.Ranks[selfPlayer.Rank].Rights).HasFlag(GuildRights.CanInvite))
            {
                return;
            }

            session.Send(GuildPacket.KickConfirm(targetPlayer));
            if (targetPlayer.Session != null)
            {
                targetPlayer.Session.Send(GuildPacket.KickNotification(session.Player));
                targetPlayer.Session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag(targetPlayer));
            }
            guild.RemoveMember(targetPlayer);
            guild.BroadcastPacketGuild(GuildPacket.KickMember(targetPlayer, session.Player));
        }
Example #30
0
        public static void Handle(Entities.GameClient client, GuildPacket guild)
        {
            uint guilduid = guild.Data;

            if (guilduid > 0)
            {
                Data.Guild realguild;
                if (Core.Kernel.Guilds.TrySelect(guilduid, out realguild))
                {
                    using (var stringpacket = new Packets.StringPacket(new StringPacker(realguild.StringInfo)))
                    {
                        stringpacket.Action = Enums.StringAction.Guild;
                        stringpacket.Data   = guilduid;
                        client.Send(stringpacket);
                    }
                }
            }
        }
Example #31
0
    private static void HandleGuildDonate(GameSession session, PacketReader packet)
    {
        int donateQuantity = packet.ReadInt();
        int donationAmount = donateQuantity * 10000;

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

        if (guild == null)
        {
            return;
        }

        GuildPropertyMetadata guildProperty = GuildPropertyMetadataStorage.GetMetadata(guild.Exp);

        GuildMember member = guild.Members.First(x => x.Player == session.Player);

        if (member.DailyDonationCount >= guildProperty.DonationMax)
        {
            return;
        }

        if (!session.Player.Wallet.Meso.Modify(-donationAmount))
        {
            session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.NotEnoughMesos));
            return;
        }

        Item coins = new(30000861)
        {
            Rarity = 4,
            Amount = guildProperty.DonateGuildCoin * donateQuantity
        };

        session.Player.Inventory.AddItem(session, coins, true);

        int contribution = GuildContributionMetadataStorage.GetContributionAmount("donation");

        member.DailyDonationCount += (byte)donateQuantity;
        member.AddContribution(contribution * donateQuantity);
        guild.ModifyFunds(session, guildProperty, donationAmount);
        session.Send(GuildPacket.UpdatePlayerDonation());
        guild.BroadcastPacketGuild(GuildPacket.UpdatePlayerContribution(member, donateQuantity));
    }
Example #32
0
        private static void HandleUpdateRank(GameSession session, PacketReader packet)
        {
            byte   rankIndex  = packet.ReadByte();
            byte   rankIndex2 = packet.ReadByte(); // repeat
            string rankName   = packet.ReadUnicodeString();
            int    rights     = packet.ReadInt();

            Guild guild = GameServer.GuildManager.GetGuildByLeader(session.Player);

            if (guild == null || guild.LeaderCharacterId != session.Player.CharacterId)
            {
                return;
            }

            guild.Ranks[rankIndex].Name   = rankName;
            guild.Ranks[rankIndex].Rights = rights;
            session.Send(GuildPacket.UpdateRankConfirm(guild, rankIndex));
            guild.BroadcastPacketGuild(GuildPacket.UpdateRankNotice(guild, rankIndex));
        }
Example #33
0
        private static void HandleLoadGuildList(GameSession session, PacketReader packet)
        {
            int focusAttributes = packet.ReadInt();

            List <Guild> guildList = GameServer.GuildManager.GetGuildList();

            if (guildList.Count == 0)
            {
                return;
            }

            if (focusAttributes == -1)
            {
                session.Send(GuildPacket.DisplayGuildList(guildList));
                return;
            }

            // TODO: Filter guilds with focusAttributes
            session.Send(GuildPacket.DisplayGuildList(guildList));
        }
Example #34
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Guild guild = GameServer.GuildManager.GetGuildById(trigger.Session.Player.Guild.Id);

        if (guild == null)
        {
            trigger.Session.SendNotice("Player is not in a guild to add funds. Make sure you join one.");
            return;
        }
        int guildFunds = trigger.Get <int>("amount");

        if (guildFunds <= 0)
        {
            trigger.Session.SendNotice("Amount must be more than 0 to add.");
            return;
        }
        guild.Funds = guildFunds;
        guild.BroadcastPacketGuild(GuildPacket.UpdateGuildFunds(guild.Funds));
        DatabaseManager.Guilds.Update(guild);
    }
Example #35
0
        private void HandleCreate(GameSession session, PacketReader packet)
        {
            string guildName = packet.ReadUnicodeString();

            if (!session.Player.Wallet.Meso.Modify(-2000))
            {
                short NoticeCode = 5121;
                session.Send(GuildPacket.ErrorNotice(NoticeCode));
                return;
            }

            session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag(session.Player, guildName));
            session.Send(GuildPacket.Create(guildName));

            string inviter  = ""; // nobody because nobody invited the guild leader
            byte   response = 0;  // 0 to not display invite notification
            byte   rank     = 0;  // set to leader rank

            Guild newGuild = new(guildName, new List <Player> {
                session.Player
            });
Example #36
0
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     using (var msg = Packets.Message.MessageCore.CreateSystem(client.Name, Core.MessageConst.USE_GUILD_DIRECTOR))
         client.Send(msg);
 }
Example #37
0
 public static void Handle(Entities.GameClient client, GuildPacket guild)
 {
     if (client.Guild != null)
         client.Guild.DonateCPs(client, guild.Data);
 }