Advertisement
Rochet2

Transmogrification.patch

Jun 26th, 2012
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.82 KB | None | 0 0
  1. diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
  2. index 1d5fcae..5b98c5f 100755
  3. --- a/src/server/game/Entities/Item/Item.h
  4. +++ b/src/server/game/Entities/Item/Item.h
  5. @@ -339,6 +339,9 @@ class Item : public Object
  6.  
  7.          void BuildUpdate(UpdateDataMapType&);
  8.  
  9. +       uint32 FakeOwner; // custom
  10. +       uint32 FakeEntry; // custom
  11. +
  12.          uint32 GetScriptId() const { return GetTemplate()->ScriptId; }
  13.      private:
  14.          std::string m_text;
  15. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
  16. index 42d342c..ae38219 100755
  17. --- a/src/server/game/Entities/Player/Player.cpp
  18. +++ b/src/server/game/Entities/Player/Player.cpp
  19. @@ -12486,7 +12486,19 @@ void Player::SetVisibleItemSlot(uint8 slot, Item* pItem)
  20.  {
  21.      if (pItem)
  22.      {
  23. -        SetUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * 2), pItem->GetEntry());
  24. +       // custom
  25. +       if(pItem->FakeEntry && pItem->FakeOwner == GetGUIDLow())
  26. +           SetUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * 2), pItem->FakeEntry);
  27. +       else
  28. +       {
  29. +           if(pItem->FakeEntry || pItem->FakeOwner)
  30. +           {
  31. +               CharacterDatabase.PExecute("UPDATE item_instance SET FakeEntry = 0, FakeOwner = 0 WHERE guid = %u", pItem->GetGUIDLow());
  32. +               pItem->FakeEntry = NULL;
  33. +               pItem->FakeOwner = NULL;
  34. +           }
  35. +           SetUInt32Value(PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * 2), pItem->GetEntry());
  36. +       }
  37.          SetUInt16Value(PLAYER_VISIBLE_ITEM_1_ENCHANTMENT + (slot * 2), 0, pItem->GetEnchantmentId(PERM_ENCHANTMENT_SLOT));
  38.          SetUInt16Value(PLAYER_VISIBLE_ITEM_1_ENCHANTMENT + (slot * 2), 1, pItem->GetEnchantmentId(TEMP_ENCHANTMENT_SLOT));
  39.      }
  40. @@ -17629,6 +17641,8 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff)
  41.              {
  42.                  uint32 bagGuid  = fields[11].GetUInt32();
  43.                  uint8  slot     = fields[12].GetUInt8();
  44. +               item->FakeEntry = fields[15].GetUInt32(); // custom
  45. +               item->FakeOwner = fields[16].GetUInt32(); // custom
  46.  
  47.                  uint8 err = EQUIP_ERR_OK;
  48.                  // Item is not in bag
  49. diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
  50. index 89cc6ab..b362898 100644
  51. --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
  52. +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
  53. @@ -82,7 +82,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
  54.      PREPARE_STATEMENT(CHAR_INS_CHARACTER_SEASONALQUESTSTATUS, "INSERT INTO character_queststatus_seasonal (guid, quest, event) VALUES (?, ?, ?)", CONNECTION_ASYNC)
  55.      PREPARE_STATEMENT(CHAR_SEL_CHARACTER_REPUTATION, "SELECT faction, standing, flags FROM character_reputation WHERE guid = ?", CONNECTION_ASYNC)
  56.      PREPARE_STATEMENT(CHAR_SEL_CHARACTER_INVENTORY, "SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, bag, slot, "
  57. -    "item, itemEntry FROM character_inventory ci JOIN item_instance ii ON ci.item = ii.guid WHERE ci.guid = ? ORDER BY bag, slot", CONNECTION_ASYNC)
  58. +    "item, itemEntry, FakeEntry, FakeOwner FROM character_inventory ci JOIN item_instance ii ON ci.item = ii.guid WHERE ci.guid = ? ORDER BY bag, slot", CONNECTION_ASYNC)
  59.      PREPARE_STATEMENT(CHAR_SEL_CHARACTER_ACTIONS, "SELECT a.button, a.action, a.type FROM character_action as a, characters as c WHERE a.guid = c.guid AND a.spec = c.activespec AND a.guid = ? ORDER BY button", CONNECTION_ASYNC)
  60.      PREPARE_STATEMENT(CHAR_SEL_CHARACTER_MAILCOUNT, "SELECT COUNT(id) FROM mail WHERE receiver = ? AND (checked & 1) = 0 AND deliver_time <= ?", CONNECTION_ASYNC)
  61.      PREPARE_STATEMENT(CHAR_SEL_CHARACTER_MAILDATE, "SELECT MIN(deliver_time) FROM mail WHERE receiver = ? AND (checked & 1) = 0", CONNECTION_ASYNC)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement