public void SendGift(long id, short vnum, byte amount, sbyte rare, byte upgrade, bool isNosmall) { Item it = ServerManager.GetItem(vnum); if (it != null) { if (it.ItemType != ItemType.Weapon && it.ItemType != ItemType.Armor && it.ItemType != ItemType.Specialist) { upgrade = 0; } else if (it.ItemType != ItemType.Weapon && it.ItemType != ItemType.Armor) { rare = 0; } if (rare > 8 || rare < -2) { rare = 0; } if ((upgrade > 10) && it.ItemType != ItemType.Specialist) { upgrade = 0; } else if (it.ItemType == ItemType.Specialist && (upgrade > 15)) { upgrade = 0; } // maximum size of the amount is 99 if (amount > 99) { amount = 99; } MailDTO mail = new MailDTO() { AttachmentAmount = it.Type == InventoryType.Etc || it.Type == InventoryType.Main ? amount : (byte)1, IsOpened = false, Date = DateTime.Now, ReceiverId = id, SenderId = id, AttachmentRarity = (byte)rare, AttachmentUpgrade = upgrade, IsSenderCopy = false, Title = isNosmall ? "NOSMALL" : "NOSTALE", AttachmentVNum = vnum, SenderClass = Class, SenderGender = Gender, SenderHairColor = HairColor, SenderHairStyle = HairStyle, EqPacket = GenerateEqListForPacket(), SenderMorphId = Morph == 0 ? (short)-1 : (short)((Morph > short.MaxValue) ? 0 : Morph) }; DAOFactory.MailDAO.InsertOrUpdate(ref mail); if (id == CharacterId) { MailList.Add(((MailList.Any() ? MailList.OrderBy(s => s.Key).Last().Key : 0) + 1), mail); Session.SendPacket(GenerateParcel(mail)); Session.SendPacket(GenerateSay($"{Language.Instance.GetMessageFromKey("ITEM_GIFTED")} {mail.AttachmentAmount}", 12)); } } }
public string GeneratePost(MailDTO mail, byte type) { return $"post 1 {type} {MailList.First(s => s.Value.MailId == (mail.MailId)).Key} 0 {(mail.IsOpened ? 1 : 0)} {mail.Date:yyMMddHHmm} {DAOFactory.CharacterDAO.LoadById(mail.SenderId).Name} {mail.Title}"; }
public string GeneratePostMessage(MailDTO mailDTO, byte type) { CharacterDTO sender = DAOFactory.CharacterDAO.LoadById(mailDTO.SenderId); return $"post 5 {type} {MailList.First(s => s.Value == (mailDTO)).Key} 0 0 {(byte)mailDTO.SenderClass} {(byte)mailDTO.SenderGender} {mailDTO.SenderMorphId} {(byte)mailDTO.SenderHairStyle} {(byte)mailDTO.SenderHairColor} {mailDTO.EqPacket} {sender.Name} {mailDTO.Title} {mailDTO.Message}"; }
public string GenerateParcel(MailDTO mail) { return mail.AttachmentVNum != null ? $"parcel 1 1 {MailList.First(s => s.Value.MailId == (mail.MailId)).Key} {(mail.Title == "NOSMALL" ? 1 : 4)} 0 {mail.Date:yyMMddHHmm} {mail.Title} {mail.AttachmentVNum} {mail.AttachmentAmount} {(byte)ServerManager.GetItem((short)mail.AttachmentVNum).Type}" : string.Empty; }