summaryrefslogtreecommitdiff
path: root/src/net/tmwa/loginhandler.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-11-30 00:16:26 +0300
committerAndrei Karas <akaras@inbox.ru>2012-11-30 00:16:26 +0300
commite74bad91965068e4b91688a5c3df63bf6f2ca530 (patch)
treea1cf7b902ddb83ed9527e26bc6a0879e8bd130b7 /src/net/tmwa/loginhandler.cpp
parent13c2533f4a2d27f1c9156df2a8ad2851be2016fd (diff)
downloadmv-e74bad91965068e4b91688a5c3df63bf6f2ca530.tar.gz
mv-e74bad91965068e4b91688a5c3df63bf6f2ca530.tar.bz2
mv-e74bad91965068e4b91688a5c3df63bf6f2ca530.tar.xz
mv-e74bad91965068e4b91688a5c3df63bf6f2ca530.zip
Add support for email field in registration form.
Diffstat (limited to 'src/net/tmwa/loginhandler.cpp')
-rw-r--r--src/net/tmwa/loginhandler.cpp52
1 files changed, 39 insertions, 13 deletions
diff --git a/src/net/tmwa/loginhandler.cpp b/src/net/tmwa/loginhandler.cpp
index 7e4eca95f..6a3c95b96 100644
--- a/src/net/tmwa/loginhandler.cpp
+++ b/src/net/tmwa/loginhandler.cpp
@@ -131,20 +131,40 @@ void LoginHandler::changePassword(const std::string &username A_UNUSED,
}
void LoginHandler::sendLoginRegister(const std::string &username,
- const std::string &password)
+ const std::string &password,
+ const std::string &email)
{
- MessageOut outMsg(0x0064);
- outMsg.writeInt32(0); // client version
- outMsg.writeString(username, 24);
- outMsg.writeStringNoLog(password, 24);
-
- /*
- * eAthena calls the last byte "client version 2", but it isn't used at
- * at all. We're retasking it, as a bit mask:
- * 0 - can handle the 0x63 "update host" packet
- * 1 - defaults to the first char-server (instead of the last)
- */
- outMsg.writeInt8(0x03);
+ if (email.empty())
+ {
+ MessageOut outMsg(CMSG_LOGIN_REGISTER);
+ outMsg.writeInt32(0); // client version
+ outMsg.writeString(username, 24);
+ outMsg.writeStringNoLog(password, 24);
+
+ /*
+ * eAthena calls the last byte "client version 2", but it isn't used at
+ * at all. We're retasking it, as a bit mask:
+ * 0 - can handle the 0x63 "update host" packet
+ * 1 - defaults to the first char-server (instead of the last)
+ */
+ outMsg.writeInt8(0x03);
+ }
+ else
+ {
+ MessageOut outMsg(CMSG_LOGIN_REGISTER2);
+ outMsg.writeInt32(0); // client version
+ outMsg.writeString(username, 24);
+ outMsg.writeStringNoLog(password, 24);
+
+ /*
+ * eAthena calls the last byte "client version 2", but it isn't used at
+ * at all. We're retasking it, as a bit mask:
+ * 0 - can handle the 0x63 "update host" packet
+ * 1 - defaults to the first char-server (instead of the last)
+ */
+ outMsg.writeInt8(0x03);
+ outMsg.writeString(email, 24);
+ }
}
ServerInfo *LoginHandler::getCharServer()
@@ -217,4 +237,10 @@ void LoginHandler::processUpdateHost2(Net::MessageIn &msg)
Client::setState(STATE_LOGIN);
}
+int LoginHandler::supportedOptionalActions() const
+{
+ return serverVersion >= 7 ? SetEmailOnRegister | SetGenderOnRegister
+ : SetGenderOnRegister;
+}
+
} // namespace TmwAthena