diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/gamehandler.h | 10 | ||||
-rw-r--r-- | src/net/manaserv/gamehandler.cpp | 1 | ||||
-rw-r--r-- | src/net/manaserv/gamehandler.h | 6 | ||||
-rw-r--r-- | src/net/manaserv/manaserv_protocol.h | 10 | ||||
-rw-r--r-- | src/net/manaserv/playerhandler.cpp | 5 | ||||
-rw-r--r-- | src/net/tmwa/gamehandler.cpp | 7 | ||||
-rw-r--r-- | src/net/tmwa/gamehandler.h | 4 |
7 files changed, 37 insertions, 6 deletions
diff --git a/src/net/gamehandler.h b/src/net/gamehandler.h index 599e89b8..40e4b099 100644 --- a/src/net/gamehandler.h +++ b/src/net/gamehandler.h @@ -47,6 +47,16 @@ class GameHandler * Tells whether the protocol is using the MP status bar */ virtual bool canUseMagicBar() const = 0; + + /** + * Tells the range is pixel where the player can pickup items from. + */ + virtual int getPickupRange() const = 0; + + /** + * Tells the range is pixel where the player can talk to an NPC from. + */ + virtual int getNpcTalkRange() const = 0; }; } // namespace Net diff --git a/src/net/manaserv/gamehandler.cpp b/src/net/manaserv/gamehandler.cpp index 9d0bf0d6..89b80e68 100644 --- a/src/net/manaserv/gamehandler.cpp +++ b/src/net/manaserv/gamehandler.cpp @@ -27,7 +27,6 @@ #include "net/manaserv/chathandler.h" #include "net/manaserv/connection.h" #include "net/manaserv/messageout.h" -#include "net/manaserv/manaserv_protocol.h" extern Net::GameHandler *gameHandler; diff --git a/src/net/manaserv/gamehandler.h b/src/net/manaserv/gamehandler.h index b8dda036..2d33710e 100644 --- a/src/net/manaserv/gamehandler.h +++ b/src/net/manaserv/gamehandler.h @@ -27,6 +27,8 @@ #include "net/manaserv/messagehandler.h" +#include "net/manaserv/manaserv_protocol.h" + namespace ManaServ { class GameHandler : public MessageHandler, public Net::GameHandler @@ -56,6 +58,10 @@ class GameHandler : public MessageHandler, public Net::GameHandler /** The ManaServ protocol doesn't use the MP status bar. */ bool canUseMagicBar() const { return false; } + + int getPickupRange() const { return PICKUP_RANGE; } + + int getNpcTalkRange() const { return NPC_TALK_RANGE; } }; } // namespace ManaServ diff --git a/src/net/manaserv/manaserv_protocol.h b/src/net/manaserv/manaserv_protocol.h index 2c09aaa4..aa1976f1 100644 --- a/src/net/manaserv/manaserv_protocol.h +++ b/src/net/manaserv/manaserv_protocol.h @@ -93,8 +93,8 @@ enum { // Game GPMSG_PLAYER_MAP_CHANGE = 0x0100, // S filename, W x, W y GPMSG_PLAYER_SERVER_CHANGE = 0x0101, // B*32 token, S game address, W game port - PGMSG_PICKUP = 0x0110, // W*2 position - PGMSG_DROP = 0x0111, // B slot, B amount + PGMSG_PICKUP = 0x0110, // W * 2 items position + PGMSG_DROP = 0x0111, // W slot, W amount PGMSG_EQUIP = 0x0112, // W inventory slot PGMSG_UNEQUIP = 0x0113, // W item Instance id PGMSG_MOVE_ITEM = 0x0114, // W slot1, W slot2, W amount @@ -441,6 +441,12 @@ enum BeingGender GENDER_UNSPECIFIED }; +/** The permited range to pick up an item */ +const int PICKUP_RANGE = 32 + 16; + +/** The permited range to to talk to a NPC. */ +const int NPC_TALK_RANGE = 32 * 7; + } // namespace ManaServ #endif // MANASERV_PROTOCOL_H diff --git a/src/net/manaserv/playerhandler.cpp b/src/net/manaserv/playerhandler.cpp index 96a4b49a..adb60fb3 100644 --- a/src/net/manaserv/playerhandler.cpp +++ b/src/net/manaserv/playerhandler.cpp @@ -348,10 +348,9 @@ void PlayerHandler::pickUp(FloorItem *floorItem) { if (floorItem) { - int id = floorItem->getId(); MessageOut msg(PGMSG_PICKUP); - msg.writeInt16(id >> 16); - msg.writeInt16(id & 0xFFFF); + msg.writeInt16(floorItem->getPixelX()); + msg.writeInt16(floorItem->getPixelY()); gameServerConnection->send(msg); } } diff --git a/src/net/tmwa/gamehandler.cpp b/src/net/tmwa/gamehandler.cpp index e4dc62b0..93f0b86f 100644 --- a/src/net/tmwa/gamehandler.cpp +++ b/src/net/tmwa/gamehandler.cpp @@ -177,4 +177,11 @@ void GameHandler::setMap(const std::string map) mMap = map.substr(0, map.rfind(".")); } +int GameHandler::getPickupRange() const +{ + if (Game *game = Game::instance()) + return game->getCurrentTileWidth(); + return DEFAULT_TILE_LENGTH; +} + } // namespace TmwAthena diff --git a/src/net/tmwa/gamehandler.h b/src/net/tmwa/gamehandler.h index 968a80c9..4f0525b9 100644 --- a/src/net/tmwa/gamehandler.h +++ b/src/net/tmwa/gamehandler.h @@ -62,6 +62,10 @@ class GameHandler : public MessageHandler, public Net::GameHandler, /** The tmwAthena protocol is making use of the MP status bar. */ bool canUseMagicBar() const { return true; } + int getPickupRange() const; + + int getNpcTalkRange() const { return DEFAULT_TILE_LENGTH * 30; } + private: std::string mMap; ///< Keeps the map filename. int mCharID; /// < Saved for map-server switching |