public static void OnQueryGetMailItem(WorldClient client, INetPacketStream packet) { var onQueryGetMailItem = new QueryGetMailItemPacket(packet); var queryGetMailItemEvent = new QueryGetMailItemEventArgs(onQueryGetMailItem.MailId); client.Player.NotifySystem <MailboxSystem>(queryGetMailItemEvent); }
private void GetMailItem(IPlayerEntity player, QueryGetMailItemEventArgs e) { var database = DependencyContainer.Instance.Resolve <IDatabase>(); var mail = database.Mails.Get(x => x.Id == e.MailId && x.ReceiverId == player.PlayerData.Id); if (mail is null) { return; } if (mail.HasReceivedItem) { return; } if (!player.Inventory.HasAvailableSlots()) { WorldPacketFactory.SendDefinedText(player, DefineText.TID_GAME_LACKSPACE); return; } mail.HasReceivedItem = true; int availableSlot = player.Inventory.GetAvailableSlot(); player.Inventory.Items[availableSlot] = new Item(mail.Item); database.Complete(); WorldPacketFactory.SendRemoveMail(player, mail, RemovedFromMail.Item); }