Ok....
It looks like the zone you are leaving stores the pets inventory into the DB using a loop of inserts. The zone you are entering retrieves the list with a single select.
Sometimes, depending on how fast you zone and how many items are in the pets inventory list, the receiving zone does the select before the sending zone has finished putting the items in.
I added a LOCK TABLES character_pet_inventory WRITE on the side saving the data, along with a release after the loop of inserts. I then added a LOCK TABLES READ on the destination zone's code to reload the data with the select.
I zoned 25 times and it has not failed with 12 pet items. That's never happened for me before, so I think that got it.
I'll post the code after a week or so of testing.
|