diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/being.h | 1 | ||||
-rw-r--r-- | src/net/beinghandler.cpp | 16 | ||||
-rw-r--r-- | src/net/charserverhandler.cpp | 7 |
3 files changed, 18 insertions, 6 deletions
diff --git a/src/being.h b/src/being.h index 2f711fb8..3ddff097 100644 --- a/src/being.h +++ b/src/being.h @@ -96,6 +96,7 @@ class Being : public Sprite TOPCLOTHES_SPRITE, HAIR_SPRITE, HAT_SPRITE, + GLOVES_SPRITE, WEAPON_SPRITE, SHIELD_SPRITE, VECTOREND_SPRITE diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index e077ab14..f48e7751 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -68,6 +68,7 @@ void BeingHandler::handleMessage(MessageIn *msg) Uint32 id; Uint16 job, speed; Uint16 headTop, headMid, headBottom; + Uint16 shoes, gloves; Sint16 param1; Sint8 type; Being *srcBeing, *dstBeing; @@ -124,8 +125,8 @@ void BeingHandler::handleMessage(MessageIn *msg) headTop = msg->readInt16(); headMid = msg->readInt16(); hairColor = msg->readInt16(); - msg->readInt16(); // clothes color -not used - msg->readInt16(); // head dir + shoes = msg->readInt16(); + gloves = msg->readInt16(); msg->readInt16(); // guild msg->readInt16(); // unknown msg->readInt16(); // unknown @@ -138,6 +139,8 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); dstBeing->setSprite(Being::HAT_SPRITE, headTop); + dstBeing->setSprite(Being::SHOE_SPRITE, shoes); + dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); dstBeing->setHairStyle(hairStyle, hairColor); if (msg->getId() == SMSG_BEING_MOVE) @@ -312,6 +315,9 @@ void BeingHandler::handleMessage(MessageIn *msg) case 9: // eAthena LOOK_SHOES dstBeing->setSprite(Being::SHOE_SPRITE, id); break; + case 10: // LOOK_GLOVES + dstBeing->setSprite(Being::GLOVES_SPRITE, id); + break; default: logger->log("SMSG_BEING_CHANGE_LOOKS: unsupported type: " "%d, id: %d", type, id); @@ -360,8 +366,8 @@ void BeingHandler::handleMessage(MessageIn *msg) headTop = msg->readInt16(); headMid = msg->readInt16(); hairColor = msg->readInt16(); - msg->readInt16(); // clothes color - not used - msg->readInt16(); // head dir + shoes = msg->readInt16(); + gloves = msg->readInt16(); msg->readInt32(); // guild msg->readInt32(); // emblem msg->readInt16(); // manner @@ -372,6 +378,8 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); dstBeing->setSprite(Being::HAT_SPRITE, headTop); + dstBeing->setSprite(Being::SHOE_SPRITE, shoes); + dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); dstBeing->setHairStyle(hairStyle, hairColor); if (msg->getId() == SMSG_PLAYER_MOVE) diff --git a/src/net/charserverhandler.cpp b/src/net/charserverhandler.cpp index 91f098ba..b421bc2b 100644 --- a/src/net/charserverhandler.cpp +++ b/src/net/charserverhandler.cpp @@ -191,7 +191,10 @@ LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot) tempPlayer->mGp = msg.readInt32(); tempPlayer->mJobXp = msg.readInt32(); tempPlayer->mJobLevel = msg.readInt32(); - msg.skip(8); // unknown + tempPlayer->setSprite(Being::SHOE_SPRITE, msg.readInt16()); + tempPlayer->setSprite(Being::GLOVES_SPRITE, msg.readInt16()); + msg.readInt16(); // Cape + msg.readInt16(); // Misc1 msg.readInt32(); // option msg.readInt32(); // karma msg.readInt32(); // manner @@ -208,7 +211,7 @@ LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot) tempPlayer->mLevel = msg.readInt16(); msg.readInt16(); // skill point tempPlayer->setSprite(Being::BOTTOMCLOTHES_SPRITE, msg.readInt16()); // head bottom - tempPlayer->setSprite(Being::SHIELD_SPRITE, msg.readInt16()); + tempPlayer->setSprite(Being::SHIELD_SPRITE, msg.readInt16()); tempPlayer->setSprite(Being::HAT_SPRITE, msg.readInt16()); // head option top tempPlayer->setSprite(Being::TOPCLOTHES_SPRITE, msg.readInt16()); // head option mid int hairColor = msg.readInt16(); |