mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
*Update to Mangos 6963.
--HG-- branch : trunk
This commit is contained in:
@@ -3666,15 +3666,16 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
MailItemsInfo mi;
|
||||
if(has_items)
|
||||
{
|
||||
QueryResult *resultItems = CharacterDatabase.PQuery("SELECT item_guid,item_template FROM mail_items WHERE mail_id='%u'", mail_id);
|
||||
// data needs to be at first place for Item::LoadFromDB
|
||||
QueryResult *resultItems = CharacterDatabase.PQuery("SELECT data,item_guid,item_template FROM mail_items JOIN item_instance ON item_guid = guid WHERE mail_id='%u'", mail_id);
|
||||
if(resultItems)
|
||||
{
|
||||
do
|
||||
{
|
||||
Field *fields2 = resultItems->Fetch();
|
||||
|
||||
uint32 item_guidlow = fields2[0].GetUInt32();
|
||||
uint32 item_template = fields2[1].GetUInt32();
|
||||
uint32 item_guidlow = fields2[1].GetUInt32();
|
||||
uint32 item_template = fields2[2].GetUInt32();
|
||||
|
||||
ItemPrototype const* itemProto = objmgr.GetItemPrototype(item_template);
|
||||
if(!itemProto)
|
||||
@@ -3684,7 +3685,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
}
|
||||
|
||||
Item *pItem = NewItemOrBag(itemProto);
|
||||
if(!pItem->LoadFromDB(item_guidlow, MAKE_NEW_GUID(guid, 0, HIGHGUID_PLAYER)))
|
||||
if(!pItem->LoadFromDB(item_guidlow, MAKE_NEW_GUID(guid, 0, HIGHGUID_PLAYER),resultItems))
|
||||
{
|
||||
pItem->FSetState(ITEM_REMOVED);
|
||||
pItem->SaveToDB(); // it also deletes item object !
|
||||
@@ -6416,13 +6417,13 @@ void Player::UpdateZone(uint32 newZone)
|
||||
|
||||
if(zone->flags & AREA_FLAG_SANCTUARY) // in sanctuary
|
||||
{
|
||||
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_SANCTUARY);
|
||||
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);
|
||||
if(sWorld.IsFFAPvPRealm())
|
||||
RemoveFlag(PLAYER_FLAGS,PLAYER_FLAGS_FFA_PVP);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_SANCTUARY);
|
||||
RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);
|
||||
}
|
||||
|
||||
if(zone->flags & AREA_FLAG_CAPITAL) // in capital city
|
||||
@@ -14979,15 +14980,16 @@ void Player::_LoadInventory(QueryResult *result, uint32 timediff)
|
||||
// load mailed item which should receive current player
|
||||
void Player::_LoadMailedItems(Mail *mail)
|
||||
{
|
||||
QueryResult* result = CharacterDatabase.PQuery("SELECT item_guid, item_template FROM mail_items WHERE mail_id='%u'", mail->messageID);
|
||||
// data needs to be at first place for Item::LoadFromDB
|
||||
QueryResult* result = CharacterDatabase.PQuery("SELECT data, item_guid, item_template FROM mail_items JOIN item_instance ON item_guid = guid WHERE mail_id='%u'", mail->messageID);
|
||||
if(!result)
|
||||
return;
|
||||
|
||||
do
|
||||
{
|
||||
Field *fields = result->Fetch();
|
||||
uint32 item_guid_low = fields[0].GetUInt32();
|
||||
uint32 item_template = fields[1].GetUInt32();
|
||||
uint32 item_guid_low = fields[1].GetUInt32();
|
||||
uint32 item_template = fields[2].GetUInt32();
|
||||
|
||||
mail->AddItem(item_guid_low, item_template);
|
||||
|
||||
@@ -15003,7 +15005,7 @@ void Player::_LoadMailedItems(Mail *mail)
|
||||
|
||||
Item *item = NewItemOrBag(proto);
|
||||
|
||||
if(!item->LoadFromDB(item_guid_low, 0))
|
||||
if(!item->LoadFromDB(item_guid_low, 0, result))
|
||||
{
|
||||
sLog.outError( "Player::_LoadMailedItems - Item in mail (%u) doesn't exist !!!! - item guid: %u, deleted from mail", mail->messageID, item_guid_low);
|
||||
CharacterDatabase.PExecute("DELETE FROM mail_items WHERE item_guid = '%u'", item_guid_low);
|
||||
|
||||
Reference in New Issue
Block a user