eluna-scripts-ornfelt/lua/WowEmulationScriptPack/Lua/QueueInterface/possiblecoreedit.txt
2024-09-23 07:59:23 +02:00

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;
}