diff options
Diffstat (limited to 'src/net/ea/gamehandler.cpp')
-rw-r--r-- | src/net/ea/gamehandler.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/net/ea/gamehandler.cpp b/src/net/ea/gamehandler.cpp index 3625b9ab..cabaf763 100644 --- a/src/net/ea/gamehandler.cpp +++ b/src/net/ea/gamehandler.cpp @@ -22,6 +22,7 @@ #include "net/ea/gamehandler.h" #include "client.h" +#include "game.h" #include "localplayer.h" #include "log.h" @@ -110,17 +111,22 @@ void GameHandler::connect() const Token &token = static_cast<LoginHandler*>(Net::getLoginHandler())->getToken(); + + if (Client::getState() == STATE_CONNECT_GAME) + { + mCharID = player_node->getId(); + // Change the player's ID to the account ID to match what eAthena uses + player_node->setId(token.account_ID); + } + // Send login infos MessageOut outMsg(CMSG_MAP_SERVER_CONNECT); outMsg.writeInt32(token.account_ID); - outMsg.writeInt32(player_node->getId()); + outMsg.writeInt32(mCharID); outMsg.writeInt32(token.session_ID1); outMsg.writeInt32(token.session_ID2); outMsg.writeInt8((token.sex == GENDER_MALE) ? 1 : 0); - // Change the player's ID to the account ID to match what eAthena uses - player_node->setId(token.account_ID); - // We get 4 useless bytes before the real answer comes in (what are these?) mNetwork->skip(4); } @@ -137,7 +143,7 @@ void GameHandler::disconnect() void GameHandler::inGame() { - // TODO + Game::instance()->changeMap(mMap); } void GameHandler::mapLoaded(const std::string &mapName) @@ -160,4 +166,9 @@ void GameHandler::ping(int tick) msg.writeInt32(tick); } +void GameHandler::setMap(const std::string map) +{ + mMap = map.substr(0, map.rfind(".")); +} + } // namespace EAthena |