Implement a general way to store selection data for gossip and fix trainer exploit

This commit is contained in:
hondacrx
2017-08-15 10:42:52 -04:00
parent 000aa1d993
commit 8d113d506d
7 changed files with 48 additions and 13 deletions
+5
View File
@@ -367,6 +367,9 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.MailReturnToSender)]
void HandleMailReturnToSender(MailReturnToSender packet)
{
if (!CanOpenMailBox(_player.PlayerTalkClass.GetInteractionData().SourceGuid))
return;
Player player = GetPlayer();
Mail m = player.GetMail(packet.MailID);
if (m == null || m.state == MailState.Deleted || m.deliver_time > Time.UnixTime || m.sender != packet.SenderGUID.GetCounter())
@@ -576,6 +579,8 @@ namespace Game
response.Mails.Add(new MailListEntry(m, player));
}
player.PlayerTalkClass.GetInteractionData().Reset();
player.PlayerTalkClass.GetInteractionData().SourceGuid = packet.Mailbox;
SendPacket(response);
// recalculate m_nextMailDelivereTime and unReadMails