fix(Core/ItemHandler): crash buy back item (#2511)
This commit is contained in:
committed by
Stoabrogga
parent
f1f553b509
commit
ae810491e7
@@ -569,5 +569,5 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
|||||||
|
|
||||||
// Recovery Item
|
// Recovery Item
|
||||||
PrepareStatement(CHAR_INS_RECOVERY_ITEM, "INSERT INTO recovery_item (Guid, ItemEntry, Count) VALUES (?, ?, ?)", CONNECTION_SYNCH);
|
PrepareStatement(CHAR_INS_RECOVERY_ITEM, "INSERT INTO recovery_item (Guid, ItemEntry, Count) VALUES (?, ?, ?)", CONNECTION_SYNCH);
|
||||||
PrepareStatement(CHAR_DEL_RECOVERY_ITEM, "DELETE FROM recovery_item WHERE Guid = ? AND ItemEntry = ? ORDER BY Id DESC LIMIT 1", CONNECTION_ASYNC);
|
PrepareStatement(CHAR_DEL_RECOVERY_ITEM, "DELETE FROM recovery_item WHERE Guid = ? AND ItemEntry = ? AND Count = ? ORDER BY Id DESC LIMIT 1", CONNECTION_ASYNC);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -784,19 +784,20 @@ void WorldSession::HandleBuybackItem(WorldPacket & recvData)
|
|||||||
InventoryResult msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, pItem, false);
|
InventoryResult msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, pItem, false);
|
||||||
if (msg == EQUIP_ERR_OK)
|
if (msg == EQUIP_ERR_OK)
|
||||||
{
|
{
|
||||||
_player->ModifyMoney(-(int32)price);
|
|
||||||
_player->RemoveItemFromBuyBackSlot(slot, false);
|
|
||||||
_player->ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount());
|
|
||||||
_player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM, pItem->GetEntry(), pItem->GetCount());
|
|
||||||
_player->StoreItem(dest, pItem, true);
|
|
||||||
|
|
||||||
if (sWorld->getBoolConfig(CONFIG_ITEMDELETE_VENDOR))
|
if (sWorld->getBoolConfig(CONFIG_ITEMDELETE_VENDOR))
|
||||||
{
|
{
|
||||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RECOVERY_ITEM);
|
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RECOVERY_ITEM);
|
||||||
stmt->setUInt32(0, _player->GetGUID());
|
stmt->setUInt32(0, _player->GetGUID());
|
||||||
stmt->setUInt32(1, pItem->GetEntry());
|
stmt->setUInt32(1, pItem->GetEntry());
|
||||||
|
stmt->setUInt32(2, pItem->GetCount());
|
||||||
CharacterDatabase.Execute(stmt);
|
CharacterDatabase.Execute(stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_player->ModifyMoney(-(int32)price);
|
||||||
|
_player->RemoveItemFromBuyBackSlot(slot, false);
|
||||||
|
_player->ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount());
|
||||||
|
_player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM, pItem->GetEntry(), pItem->GetCount());
|
||||||
|
_player->StoreItem(dest, pItem, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_player->SendEquipError(msg, pItem, NULL);
|
_player->SendEquipError(msg, pItem, NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user