diff options
Diffstat (limited to 'src/server/game/Handlers/MailHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/MailHandler.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 5aeb59e7383..14b6df23061 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -532,13 +532,18 @@ void WorldSession::HandleMailTakeMoney(WorldPacket& recvData) return; } - player->SendMailResult(mailId, MAIL_MONEY_TAKEN, MAIL_OK); + if (!player->ModifyMoney(m->money, false)) + { + player->SendMailResult(mailId, MAIL_MONEY_TAKEN, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_TOO_MUCH_GOLD); + return; + } - player->ModifyMoney(m->money); m->money = 0; m->state = MAIL_STATE_CHANGED; player->m_mailsUpdated = true; + player->SendMailResult(mailId, MAIL_MONEY_TAKEN, MAIL_OK); + // save money and mail to prevent cheating SQLTransaction trans = CharacterDatabase.BeginTransaction(); player->SaveGoldToDB(trans); |