Save items with itemstate ITEM_CHANGED using DELETE followed by an INSERT query (wrapped in a transaction).
--HG-- branch : trunk
This commit is contained in:
+5
-2
@@ -17777,13 +17777,16 @@ void Player::_SaveInventory()
|
|||||||
Bag *container = item->GetContainer();
|
Bag *container = item->GetContainer();
|
||||||
uint32 bag_guid = container ? container->GetGUIDLow() : 0;
|
uint32 bag_guid = container ? container->GetGUIDLow() : 0;
|
||||||
|
|
||||||
switch(item->GetState())
|
switch (item->GetState())
|
||||||
{
|
{
|
||||||
case ITEM_NEW:
|
case ITEM_NEW:
|
||||||
CharacterDatabase.PExecute("INSERT INTO character_inventory (guid,bag,slot,item,item_template) VALUES ('%u', '%u', '%u', '%u', '%u')", GetGUIDLow(), bag_guid, item->GetSlot(), item->GetGUIDLow(), item->GetEntry());
|
CharacterDatabase.PExecute("INSERT INTO character_inventory (guid,bag,slot,item,item_template) VALUES ('%u', '%u', '%u', '%u', '%u')", GetGUIDLow(), bag_guid, item->GetSlot(), item->GetGUIDLow(), item->GetEntry());
|
||||||
break;
|
break;
|
||||||
case ITEM_CHANGED:
|
case ITEM_CHANGED:
|
||||||
CharacterDatabase.PExecute("UPDATE character_inventory SET guid='%u', bag='%u', slot='%u', item_template='%u' WHERE item='%u'", GetGUIDLow(), bag_guid, item->GetSlot(), item->GetEntry(), item->GetGUIDLow());
|
CharacterDatabase.BeginTransaction();
|
||||||
|
CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item = '%u'", item->GetGUIDLow());
|
||||||
|
CharacterDatabase.PExecute("INSERT INTO character_inventory (guid,bag,slot,item,item_template) VALUES ('%u', '%u', '%u', '%u', '%u')", GetGUIDLow(), bag_guid, item->GetSlot(), item->GetGUIDLow(), item->GetEntry());
|
||||||
|
CharacterDatabase.CommitTransaction();
|
||||||
break;
|
break;
|
||||||
case ITEM_REMOVED:
|
case ITEM_REMOVED:
|
||||||
CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item = '%u'", item->GetGUIDLow());
|
CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item = '%u'", item->GetGUIDLow());
|
||||||
|
|||||||
Reference in New Issue
Block a user