mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Core/PacketIO: Updated & enabled CMSG_AUTO_EQUIP_ITEM_SLOT
This commit is contained in:
@@ -628,7 +628,7 @@ void AchievementMgr<Guild>::SaveToDB(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
template<class T>
|
||||
void AchievementMgr<T>::LoadFromDB(PreparedQueryResult achievementResult, PreparedQueryResult criteriaResult)
|
||||
void AchievementMgr<T>::LoadFromDB(PreparedQueryResult /*achievementResult*/, PreparedQueryResult /*criteriaResult*/)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -112,23 +112,20 @@ void WorldSession::HandleSwapInvItemOpcode(WorldPackets::Item::SwapInvItem& swap
|
||||
_player->SwapItem(src, dst);
|
||||
}
|
||||
|
||||
void WorldSession::HandleAutoEquipItemSlotOpcode(WorldPacket& recvData)
|
||||
void WorldSession::HandleAutoEquipItemSlotOpcode(WorldPackets::Item::AutoEquipItemSlot& autoEquipItemSlot)
|
||||
{
|
||||
ObjectGuid itemguid;
|
||||
uint8 dstslot;
|
||||
recvData >> itemguid >> dstslot;
|
||||
|
||||
// cheating attempt, client should never send opcode in that case
|
||||
if (!Player::IsEquipmentPos(INVENTORY_SLOT_BAG_0, dstslot))
|
||||
if (autoEquipItemSlot.Inv.Items.size() != 1 || !Player::IsEquipmentPos(INVENTORY_SLOT_BAG_0, autoEquipItemSlot.ItemDstSlot))
|
||||
return;
|
||||
|
||||
Item* item = _player->GetItemByGuid(itemguid);
|
||||
uint16 dstpos = dstslot | (INVENTORY_SLOT_BAG_0 << 8);
|
||||
Item* item = _player->GetItemByGuid(autoEquipItemSlot.Item);
|
||||
uint16 dstPos = autoEquipItemSlot.ItemDstSlot | (INVENTORY_SLOT_BAG_0 << 8);
|
||||
uint16 srcPos = autoEquipItemSlot.Inv.Items[0].Slot | (uint32(autoEquipItemSlot.Inv.Items[0].ContainerSlot) << 8);
|
||||
|
||||
if (!item || item->GetPos() == dstpos)
|
||||
if (!item || item->GetPos() != srcPos || srcPos == dstPos)
|
||||
return;
|
||||
|
||||
_player->SwapItem(item->GetPos(), dstpos);
|
||||
_player->SwapItem(srcPos, dstPos);
|
||||
}
|
||||
|
||||
void WorldSession::HandleSwapItem(WorldPackets::Item::SwapItem& swapItem)
|
||||
|
||||
@@ -266,6 +266,13 @@ void WorldPackets::Item::AutoEquipItem::Read()
|
||||
>> Slot;
|
||||
}
|
||||
|
||||
void WorldPackets::Item::AutoEquipItemSlot::Read()
|
||||
{
|
||||
_worldPacket >> Inv
|
||||
>> Item
|
||||
>> ItemDstSlot;
|
||||
}
|
||||
|
||||
void WorldPackets::Item::AutoStoreBagItem::Read()
|
||||
{
|
||||
_worldPacket >> Inv
|
||||
|
||||
@@ -233,6 +233,18 @@ namespace WorldPackets
|
||||
uint8 PackSlot = 0;
|
||||
};
|
||||
|
||||
class AutoEquipItemSlot final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
AutoEquipItemSlot(WorldPacket&& packet) : ClientPacket(CMSG_AUTO_EQUIP_ITEM_SLOT, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Item;
|
||||
uint8 ItemDstSlot = 0;
|
||||
InvUpdate Inv;
|
||||
};
|
||||
|
||||
class AutoStoreBagItem final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -180,7 +180,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_AUTOSTORE_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Bank::AutoStoreBankItem, &WorldSession::HandleAutoStoreBankItemOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_AUTOSTORE_BANK_REAGENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::AutoEquipItem, &WorldSession::HandleAutoEquipItemOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_AUTO_EQUIP_ITEM_SLOT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoEquipItemSlotOpcode );
|
||||
DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM_SLOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::AutoEquipItemSlot, &WorldSession::HandleAutoEquipItemSlotOpcode);
|
||||
DEFINE_HANDLER(CMSG_AUTO_STORE_BAG_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Item::AutoStoreBagItem, &WorldSession::HandleAutoStoreBagItemOpcode);
|
||||
DEFINE_HANDLER(CMSG_BANKER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleBankerActivateOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEFIELD_LEAVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleBattlefieldLeaveOpcode );
|
||||
|
||||
@@ -253,6 +253,7 @@ namespace WorldPackets
|
||||
namespace Item
|
||||
{
|
||||
class AutoEquipItem;
|
||||
class AutoEquipItemSlot;
|
||||
class AutoStoreBagItem;
|
||||
class BuyItem;
|
||||
class BuyBackItem;
|
||||
@@ -1159,7 +1160,7 @@ class WorldSession
|
||||
void HandleListInventoryOpcode(WorldPackets::NPC::Hello& packet);
|
||||
void HandleAutoStoreBagItemOpcode(WorldPackets::Item::AutoStoreBagItem& packet);
|
||||
void HandleReadItem(WorldPacket& recvPacket);
|
||||
void HandleAutoEquipItemSlotOpcode(WorldPacket& recvPacket);
|
||||
void HandleAutoEquipItemSlotOpcode(WorldPackets::Item::AutoEquipItemSlot& autoEquipItemSlot);
|
||||
void HandleSwapItem(WorldPackets::Item::SwapItem& swapItem);
|
||||
void HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet);
|
||||
void HandleWrapItemOpcode(WorldPacket& recvPacket);
|
||||
|
||||
Reference in New Issue
Block a user