From 47bd619273648da5dc0b8f3992a26cb383165f74 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Fri, 27 Apr 2012 21:44:55 -0300 Subject: [PATCH] more fixes in count/subtypes --- src/otclient/core/item.cpp | 20 +------------------- src/otclient/core/item.h | 12 ++++++------ src/otclient/net/protocolgame.h | 4 ++-- src/otclient/net/protocolgameparse.cpp | 9 ++------- src/otclient/net/protocolgamesend.cpp | 8 ++++---- 5 files changed, 15 insertions(+), 38 deletions(-) diff --git a/src/otclient/core/item.cpp b/src/otclient/core/item.cpp index 0265b39b..9b290583 100644 --- a/src/otclient/core/item.cpp +++ b/src/otclient/core/item.cpp @@ -34,7 +34,7 @@ Item::Item() : Thing() { m_id = 0; - m_countOrSubType = 0; + m_countOrSubType = 1; } ItemPtr Item::create(int id) @@ -44,8 +44,6 @@ ItemPtr Item::create(int id) logTraceError("invalid item id ", id); else { item->setId(id); - if(item->isStackable()) - item->setCount(1); } return item; } @@ -195,19 +193,3 @@ void Item::setId(uint32 id) m_id = id; m_type = g_thingsType.getThingType(m_id, ThingsType::Item); } - -int Item::getCount() -{ - if(isStackable()) - return m_countOrSubType; - else - return 1; -} - -int Item::getSubType() -{ - if(isFluid() || isFluidContainer()) - return m_countOrSubType; - else - return 0; -} diff --git a/src/otclient/core/item.h b/src/otclient/core/item.h index 38000e6f..8a06aa0c 100644 --- a/src/otclient/core/item.h +++ b/src/otclient/core/item.h @@ -36,13 +36,13 @@ public: void draw(const Point& dest, float scaleFactor, bool animate); void setId(uint32 id); - void setCountOrSubType(uint8 value) { m_countOrSubType = value; } - void setCount(int count) { setCountOrSubType(count); } - void setSubType(int subType) { setCountOrSubType(subType); } + void setCountOrSubType(int value) { m_countOrSubType = value; } + void setCount(int count) { m_countOrSubType = count; } + void setSubType(int subType) { m_countOrSubType = subType; } - uint8 getCountOrSubType() { return m_countOrSubType; } - int getSubType(); - int getCount(); + int getCountOrSubType() { return m_countOrSubType; } + int getSubType() { return m_countOrSubType; } + int getCount() { return m_countOrSubType; } uint32 getId() { return m_id; } ItemPtr asItem() { return std::static_pointer_cast(shared_from_this()); } diff --git a/src/otclient/net/protocolgame.h b/src/otclient/net/protocolgame.h index 123fdc0c..4d7c067a 100644 --- a/src/otclient/net/protocolgame.h +++ b/src/otclient/net/protocolgame.h @@ -58,8 +58,8 @@ public: void sendTurnWest(); void sendMove(const Position& fromPos, int itemId, int stackpos, const Position& toPos, int count); void sendInspectNpcTrade(int itemId, int count); - void sendBuyItem(int itemId, int count, int amount, bool ignoreCapacity, bool buyWithBackpack); - void sendSellItem(int itemId, int count, int amount, bool ignoreEquipped); + void sendBuyItem(int itemId, int subType, int amount, bool ignoreCapacity, bool buyWithBackpack); + void sendSellItem(int itemId, int subType, int amount, bool ignoreEquipped); void sendCloseNpcTrade(); void sendRequestTrade(const Position& pos, int thingId, int stackpos, uint playerId); void sendInspectTrade(bool counterOffer, int index); diff --git a/src/otclient/net/protocolgameparse.cpp b/src/otclient/net/protocolgameparse.cpp index 33f6d25d..d819dd9d 100644 --- a/src/otclient/net/protocolgameparse.cpp +++ b/src/otclient/net/protocolgameparse.cpp @@ -509,18 +509,13 @@ void ProtocolGame::parseOpenNpcTrade(InputMessage& msg) std::vector> items; int listCount = msg.getU8(); for(int i = 0; i < listCount; ++i) { - int itemId = msg.getU16(); - int subType = msg.getU8(); - - ItemPtr item = Item::create(itemId); - if(item->isFluidContainer() || item->isFluid()) - item->setSubType(subType); + ItemPtr item = Item::create(msg.getU16()); + item->setSubType(msg.getU8()); std::string name = msg.getString(); int weight = msg.getU32(); int buyPrice = msg.getU32(); int sellPrice = msg.getU32(); - items.push_back(std::make_tuple(item, name, weight, buyPrice, sellPrice)); } diff --git a/src/otclient/net/protocolgamesend.cpp b/src/otclient/net/protocolgamesend.cpp index aa9a68b1..002fa0a2 100644 --- a/src/otclient/net/protocolgamesend.cpp +++ b/src/otclient/net/protocolgamesend.cpp @@ -232,24 +232,24 @@ void ProtocolGame::sendInspectNpcTrade(int itemId, int count) send(msg); } -void ProtocolGame::sendBuyItem(int itemId, int count, int amount, bool ignoreCapacity, bool buyWithBackpack) +void ProtocolGame::sendBuyItem(int itemId, int subType, int amount, bool ignoreCapacity, bool buyWithBackpack) { OutputMessage msg; msg.addU8(Proto::ClientBuyItem); msg.addU16(itemId); - msg.addU8(count); + msg.addU8(subType); msg.addU8(amount); msg.addU8(ignoreCapacity ? 0x01 : 0x00); msg.addU8(buyWithBackpack ? 0x01 : 0x00); send(msg); } -void ProtocolGame::sendSellItem(int itemId, int count, int amount, bool ignoreEquipped) +void ProtocolGame::sendSellItem(int itemId, int subType, int amount, bool ignoreEquipped) { OutputMessage msg; msg.addU8(Proto::ClientSellItem); msg.addU16(itemId); - msg.addU8(count); + msg.addU8(subType); msg.addU8(amount); msg.addU8(ignoreEquipped ? 0x01 : 0x00); send(msg);