common/CommonDefines.h
Bitte melden Sie sich an, um diesen Anhang zu sehen.
common/tables.h
Bitte melden Sie sich an, um diesen Anhang zu sehen.
game\src\input_db.cpp
Bitte melden Sie sich an, um diesen Anhang zu sehen.
game\src\desc.cpp
Code
- // Search
- if (m_lpCharacter) { // Add ADBOVE
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY bool bCanUseLoginByKey = true;
- #endif // Add bellow inside the if (m_lpCharacter) statement
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY bCanUseLoginByKey = m_lpCharacter->CanUseLoginByKey();
- #endif
- // Search
- strlcpy(pack.passwd, m_accountTable.passwd, sizeof(pack.passwd)); // Add bellow
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY pack.bCanUseLoginByKey = bCanUseLoginByKey;
- #endif
Bitte melden Sie sich an, um diesen Anhang zu sehen.
game\src\char.h
Bitte melden Sie sich an, um diesen Anhang zu sehen.
game\src\char.cpp
Code
- // Search
- void CHARACTER::Create(const char * c_pszName, DWORD vid, bool isPC)
- // Add before (In the CHARACTER::Initialize):)
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY m_bCanUseLoginByKey = false;
- #endif
- // In function bool CHARACTER::WarpSet search: Stop(); Save();
- // Add above
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY m_bCanUseLoginByKey = true;
- #endif
- // In function bool CHARACTER::MoveChannel search: Stop(); Save();
- // Add above
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY m_bCanUseLoginByKey = true;
- #endif
- // If you have any warping functions, you need to adapt yourself.
- // As an example, in the Sonitex offlineshop warp function to teleport to shop there is no need to add since we are using WarpSet at the end
- // But make sure you check all your warp functions (if you have any extra)
Bitte melden Sie sich an, um diesen Anhang zu sehen.
db\src\ClientManagerLogin.cpp
Code
- // Search if (memcmp(pkLoginData->GetClientKey(), p->adwClientKey, sizeof(DWORD) * 4)) { const DWORD * pdwClientKey = pkLoginData->GetClientKey();
- sys_log(0, "LOGIN_BY_KEY client key differ %s %lu %lu %lu %lu, %lu %lu %lu %lu", r.login, p->adwClientKey[0], p->adwClientKey[1], p->adwClientKey[2], p->adwClientKey[3], pdwClientKey[0], pdwClientKey[1], pdwClientKey[2], pdwClientKey[3]);
- pkPeer->EncodeReturn(HEADER_DG_LOGIN_NOT_EXIST, dwHandle); return; }
- // Add bellow
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY if(!pkLoginData->IsAllowLoginByKey() && pkLoginData->IsAfterValidLogout()) { char szLogQuery[512]; snprintf(szLogQuery, sizeof(szLogQuery), "INSERT INTO log.hack_log (time, login, name, ip, server, why) VALUES(NOW(), '%s', '%s', '%s', '%s', '%s')", r.login, "NO-NAME", p->szIP, "DB-SERVER", "CH_CONNECT HACK"); std::unique_ptr<SQLMsg> pMsg(CDBManager::instance().DirectQuery(szLogQuery, SQL_ACCOUNT));
- sys_log(0, "LOGIN_BY_KEY without request %s %lu", r.login, p->dwLoginKey);
- TPacketDGLoginAlready ptog; strlcpy(ptog.szLogin, szLogin, sizeof(ptog.szLogin)); pkPeer->EncodeHeader(HEADER_DG_LOGIN_ALREADY, dwHandle, sizeof(TPacketDGLoginAlready)); pkPeer->Encode(&ptog, sizeof(TPacketDGLoginAlready)); return; }
- pkLoginData->SetAllowLoginByKey(false); pkLoginData->SetIsAfterValidLogout(false);
- #endif // Search int pid[PLAYER_PER_ACCOUNT];
- // Add bellow: #ifdef ENABLE_LOGIN_BY_KEY_SECURITY pLoginData->SetIsAfterValidLogout(true); pLoginData->SetAllowLoginByKey(packet->bCanUseLoginByKey);
- #endif
Bitte melden Sie sich an, um diesen Anhang zu sehen.
db\src\LoginData.cpp
Bitte melden Sie sich an, um diesen Anhang zu sehen.
db\src\LoginData.h
Code
- // Search void SetLastPlayerID(DWORD id) { m_dwLastPlayerID = id; }
- // Add bellow
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY bool IsAllowLoginByKey() const { return m_bAllowLoginByKey; } void SetAllowLoginByKey(bool bFlag) { m_bAllowLoginByKey = bFlag; }
- bool IsAfterValidLogout() const { return m_bIsAfterValidLogout; } void SetIsAfterValidLogout(bool bFlag) { m_bIsAfterValidLogout = bFlag; }
- #endif
- // Search TAccountTable m_data;
- // Add bellow
- #ifdef ENABLE_LOGIN_BY_KEY_SECURITY bool m_bIsAfterValidLogout; bool m_bAllowLoginByKey;
- #endif
Bitte melden Sie sich an, um diesen Anhang zu sehen.