diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-01-28 21:00:12 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-01-28 21:00:12 +0300 |
commit | a93722a53e2d50466dfd5512c4a6a1c3dfc60fb1 (patch) | |
tree | b4ade374e591f520ae49b1dcb3317b19d503f089 /src/net/tmwa | |
parent | e5695ad6c41d4deb79504998b2bc5caeb1e61285 (diff) | |
download | manaplus-a93722a53e2d50466dfd5512c4a6a1c3dfc60fb1.tar.gz manaplus-a93722a53e2d50466dfd5512c4a6a1c3dfc60fb1.tar.bz2 manaplus-a93722a53e2d50466dfd5512c4a6a1c3dfc60fb1.tar.xz manaplus-a93722a53e2d50466dfd5512c4a6a1c3dfc60fb1.zip |
Add support for processing player statuses in evol server.
Diffstat (limited to 'src/net/tmwa')
-rw-r--r-- | src/net/tmwa/playerhandler.cpp | 33 | ||||
-rw-r--r-- | src/net/tmwa/playerhandler.h | 1 | ||||
-rw-r--r-- | src/net/tmwa/protocol.h | 1 |
3 files changed, 29 insertions, 6 deletions
diff --git a/src/net/tmwa/playerhandler.cpp b/src/net/tmwa/playerhandler.cpp index 3d48fb341..621a747b0 100644 --- a/src/net/tmwa/playerhandler.cpp +++ b/src/net/tmwa/playerhandler.cpp @@ -22,6 +22,7 @@ #include "net/tmwa/playerhandler.h" +#include "configuration.h" #include "logger.h" #include "net/messagein.h" @@ -227,8 +228,8 @@ void PlayerHandler::processOnlineList(Net::MessageIn &msg) return; } - const char *start = msg.readBytes(size); - const char *buf = start; + char *start = (char*)msg.readBytes(size); + char *buf = start; int addVal = 1; if (serverVersion >= 4) @@ -236,9 +237,9 @@ void PlayerHandler::processOnlineList(Net::MessageIn &msg) while (buf - start + 1 < size && *(buf + addVal)) { - char status = 0; - char ver = 0; - char level = 0; + unsigned char status = 0; + unsigned char ver = 0; + unsigned char level = 0; if (serverVersion >= 4) { status = *buf; @@ -248,7 +249,20 @@ void PlayerHandler::processOnlineList(Net::MessageIn &msg) ver = *buf; } buf ++; - arr.push_back(new OnlinePlayer(buf, status, level, ver)); + + int gender = GENDER_UNSPECIFIED; + if (serverVersion >= 4) + { + if (config.getBoolValue("showgender")) + { + if (status & Being::FLAG_GENDER) + gender = GENDER_MALE; + else + gender = GENDER_FEMALE; + } + } + arr.push_back(new OnlinePlayer((char*)buf, + status, level, gender, ver)); buf += strlen(buf) + 1; } @@ -257,4 +271,11 @@ void PlayerHandler::processOnlineList(Net::MessageIn &msg) delete [] start; } +void PlayerHandler::updateStatus(Uint8 status) +{ + MessageOut outMsg(CMSG_SET_STATUS); + outMsg.writeInt8(status); + outMsg.writeInt8(0); +} + } // namespace TmwAthena diff --git a/src/net/tmwa/playerhandler.h b/src/net/tmwa/playerhandler.h index 0fa524d51..14aa191f6 100644 --- a/src/net/tmwa/playerhandler.h +++ b/src/net/tmwa/playerhandler.h @@ -53,6 +53,7 @@ class PlayerHandler : public MessageHandler, public Ea::PlayerHandler void changeAction(Being::Action action); void processOnlineList(Net::MessageIn &msg); void requestOnlineList(); + void updateStatus(Uint8 status); void respawn(); }; diff --git a/src/net/tmwa/protocol.h b/src/net/tmwa/protocol.h index ddc642101..256f1dce4 100644 --- a/src/net/tmwa/protocol.h +++ b/src/net/tmwa/protocol.h @@ -336,5 +336,6 @@ enum #define CMSG_ONLINE_LIST 0x0210 #define SMSG_ONLINE_LIST 0x0211 #define SMSG_NPC_COMMAND 0x0212 +#define CMSG_SET_STATUS 0x0213 #endif |