summaryrefslogtreecommitdiff
path: root/src/net/tmwa/loginhandler.cpp
diff options
context:
space:
mode:
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