mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
82 lines
No EOL
2.3 KiB
Text
82 lines
No EOL
2.3 KiB
Text
put in the !result box for line 319 in Core/src/server/authserver/Server/AuthSession.cpp
|
|
```
|
|
if (!result)
|
|
{
|
|
PUT IT IN HERE(REMOVE PACKET/SEND)
|
|
pkt << uint8(WOW_FAIL_UNKNOWN_ACCOUNT);
|
|
SendPacket(pkt);
|
|
return;
|
|
}
|
|
```
|
|
|
|
|
|
else
|
|
{
|
|
if (_login[0] == '?')
|
|
{
|
|
size_t pass_start = _login.find("?", 1) + 1;
|
|
if (pass_start == std::string::npos || pass_start < 4) //No username
|
|
{
|
|
pkt << uint8(WOW_FAIL_NO_GAME_ACCOUNT);
|
|
SendPacket(pkt);
|
|
return true;
|
|
}
|
|
|
|
size_t pass_end = _login.rfind("?");
|
|
if (pass_end == std::string::npos || pass_end <= pass_start) //No password
|
|
{
|
|
pkt << uint8(WOW_FAIL_NO_GAME_ACCOUNT);
|
|
SendPacket(pkt);
|
|
return true;
|
|
}
|
|
|
|
int name_len = pass_start - 2;
|
|
int pass_len = pass_end - pass_start;
|
|
|
|
std::string username = _login.substr(1, name_len);
|
|
std::string password = _login.substr(pass_start, pass_len);
|
|
std::string email = "createdinclient";
|
|
|
|
std::transform(username.begin(), username.end(), username.begin(), ::toupper);
|
|
std::transform(password.begin(), password.end(), password.begin(), ::toupper);
|
|
|
|
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_ACCOUNT_ID_BY_USERNAME);
|
|
stmt->setString(0, username);
|
|
PreparedQueryResult result = LoginDatabase.Query(stmt);
|
|
|
|
if (result) //acc name exists
|
|
{
|
|
pkt << uint8(WOW_FAIL_INTERNET_GAME_ROOM_WITHOUT_BNET);
|
|
SendPacket(pkt);
|
|
return true;
|
|
}
|
|
|
|
stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT);
|
|
|
|
stmt->setString(0, username);
|
|
SHA1Hash sha;
|
|
sha.Initialize();
|
|
sha.UpdateData(username);
|
|
sha.UpdateData(":");
|
|
sha.UpdateData(password);
|
|
sha.Finalize();
|
|
stmt->setString(1, ByteArrayToHexStr(sha.GetDigest(), sha.GetLength()));
|
|
stmt->setString(2, email);
|
|
stmt->setString(3, email);
|
|
|
|
LoginDatabase.DirectExecute(stmt); // Enforce saving, otherwise AddGroup can fail
|
|
|
|
stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_REALM_CHARACTERS_INIT);
|
|
LoginDatabase.Execute(stmt);
|
|
|
|
TC_LOG_INFO("server.authserver", "Created account: %s", username.c_str());
|
|
|
|
pkt << uint8(WOW_FAIL_USE_BATTLENET);
|
|
SendPacket(pkt);
|
|
return true;
|
|
}
|
|
//no account
|
|
pkt << uint8(WOW_FAIL_UNKNOWN_ACCOUNT);
|
|
SendPacket(pkt);
|
|
return;
|
|
} |