#include "stdafx.h" #include "RYL_GameDB.h" #include #include // UID¿¡ °É·ÁÀÖ´Â ¸ðµç ij¸¯ÅÍ Á¤º¸¸¦ °¡Á®¿Â´Ù. bool CGameDB::UIDByCharacterList(unsigned long UID, unsigned int nAgentType, unsigned int nOldServerID, void* GetData) { char* first = reinterpret_cast(GetData); unsigned char* lpCount = reinterpret_cast(first); char* In_CharPos = static_cast(first + 1); CGameDB::In_UserInfo TblUserInfo; CGameDB::Out_CharList* lpOut_CharList; *lpCount = 0; ZeroMemory(&TblUserInfo, sizeof(CGameDB::In_UserInfo)); if (UnifiedConst::Part2Selectable == nAgentType) { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Char1, Char2, Char3, Char4, Char5 FROM UserInfo " "WHERE UID = %d AND OldServerGroupID = %d", UID, nOldServerID); } else { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Char1, Char2, Char3, Char4, Char5 FROM UserInfo " "WHERE UID = %d AND OldServerGroupID IN (%d, %d)", UID, UnifiedConst::ROW, UnifiedConst::Part2Unified); } if (true == ExecuteQuery(m_szQuery)) { if(this->GetData(&TblUserInfo)) { char* CharCID = reinterpret_cast(&TblUserInfo); for(int cnt = 0; cnt < SIZE::MAX_CHAR_SLOT; cnt++) { unsigned long* CID = reinterpret_cast(CharCID + (sizeof(unsigned long) * cnt)); lpOut_CharList = reinterpret_cast( In_CharPos + ((*lpCount) * sizeof(CGameDB::Out_CharList))); if(*CID) { lpOut_CharList->m_UID = UID; lpOut_CharList->m_CID = *CID; CIDByCharacterName(*CID, lpOut_CharList->m_szCharName); *lpCount += 1; } } return true; } } return false; } bool CGameDB::UIDbyUserInfo(unsigned long dwUID, unsigned int nAgentType, unsigned int nOldServerID, void* GetData) { if (UnifiedConst::Part2Selectable == nAgentType) { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Char1, Char2, Char3, Char4, Char5 FROM UserInfo " "WHERE UID = %d AND OldServerGroupID = %d", dwUID, nOldServerID); } else { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Char1, Char2, Char3, Char4, Char5 FROM UserInfo " "WHERE UID = %d AND OldServerGroupID IN (%d, %d)", dwUID, UnifiedConst::ROW, UnifiedConst::Part2Unified); } if (true == ExecuteQuery(m_szQuery)) { if(this->GetData(GetData)) { return true; } } return false; } bool CGameDB::GetUserNation(unsigned int nAgentType, unsigned long dwUID, unsigned long dwCID, void* GetData) { // CID´ë½Å OldServerGroupID¸¦ ¹ÞÀ¸¸é ±ò²ûÇÏÁö¸¸ // ±×·¸°Ô ÇÏ·Á¸é Ŭ¶óÀ̾ðÆ®ÂÊ¿¡ ¾Ö·Î»çÇ×ÀÌ ²ÉÇÉ´Ù. if (UnifiedConst::Part2Selectable == nAgentType) { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Nation FROM UserInfo " "WHERE UID = %d AND (Char1 = %u OR Char2 = %u OR Char3 = %u OR Char4 = %u OR Char5 = %u)", dwUID, dwCID, dwCID, dwCID, dwCID, dwCID); } else { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Nation FROM UserInfo " "WHERE UID = %d AND OldServerGroupID IN (%d, %d)", dwUID, UnifiedConst::ROW, UnifiedConst::Part2Unified); } if (true == ExecuteQuery(m_szQuery)) { if (this->GetData(GetData)) { return true; } } ERRLOG1(g_Log, "°èÁ¤ ±¹°¡ ¾ò±â ½ÇÆÐ- %s", GetErrorString()); return false; } // ij¸¯ÅÍ À̸§À¸·Î °Ë»ö bool CGameDB::CNameByCharacterList(char* szCharacterName, void* GetData) { char* first = reinterpret_cast(GetData); unsigned char* lpCount = reinterpret_cast(first); char* In_CharPos = static_cast(first + 1); CGameDB::Out_CharList* lpOut_CharList = reinterpret_cast(In_CharPos); unsigned long dwCID; _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT NewCID FROM TblUnifiedCharList " "WHERE NewCID IN (SELECT CID FROM CharInfo WHERE Name = '%s') " "AND (OldServerGroupID <= 15 OR OldServerGroupID IN (%d, %d, %d))", szCharacterName, UnifiedConst::ROW, UnifiedConst::Part2Unified, UnifiedConst::Part2Selectable); if (true == ExecuteQuery(m_szQuery)) { if (this->GetData(&dwCID)) { *lpCount = 1; lpOut_CharList = reinterpret_cast(In_CharPos); lpOut_CharList->m_CID = dwCID; if(!CIDByCharacterName(dwCID, lpOut_CharList->m_szCharName)) { return false; } if(!CIDByUID(dwCID, &lpOut_CharList->m_UID)) { return false; } } else { return false; } } return true; } bool CGameDB::CharacterNameByCID(char* szCharacterName, void* GetData) { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT CID FROM CharInfo WHERE Name = '%s'", szCharacterName); if(!ExecuteQueryGetData(m_szQuery, GetData)) { ERRLOG2(g_Log, "Äõ¸® ½ÇÆÐ. Äõ¸®-%s, ¿¡·¯-%s", m_szQuery, GetErrorString()); return false; } return true; } // CID·Î ij¸¯ÅÍ °Ë»ö bool CGameDB::CIDByCharacterList(unsigned long CID, void* GetData) { char* first = reinterpret_cast(GetData); unsigned char* lpCount = reinterpret_cast(first); char* In_CharPos = static_cast(first + 1); CGameDB::Out_CharList* lpOut_CharList = reinterpret_cast(In_CharPos); *lpCount = 1; lpOut_CharList->m_CID = CID; if (false == CIDByCharacterName(CID, lpOut_CharList->m_szCharName)) { return false; } if (false == CIDByUID(CID, &lpOut_CharList->m_UID)) { return false; } return true; } // CID·Î UID°Ë»ö bool CGameDB::CIDByUID(unsigned long CID, void* GetData) { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT UID FROM UserInfo WHERE Char1 = %d OR Char2 = %d OR Char3 = %d OR Char4 = %d OR Char5 = %d", CID, CID, CID, CID, CID); if (true == ExecuteQuery(m_szQuery)) { if (this->GetData(GetData)) { return true; } } GetData = NULL; return false; } // CID·Î ij¸¯ÅÍ À̸§ °Ë»ö bool CGameDB::CIDByCharacterName(unsigned long CID, void* GetData) { _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Name FROM CharInfo WHERE CID = %d", CID); if (true == ExecuteQuery(m_szQuery)) { if(this->GetData(GetData)) { return true; } } GetData = NULL; return false; } bool CGameDB::ChangeName(unsigned long dwCID, char* szName) { // Áß°è¼­¹ö¿¡ ij¸¯¸í º¯°æÀ» Á÷Á¢ ¿äûÇÏ´Â ¹æ½ÄÀ¸·Î º¯°æµÇ¾úÀ½. /* _snprintf(m_szQuery, MAX_QUERY_LENGTH, "UPDATE CharInfo SET Name = '%s' WHERE CID = %d", szName, dwCID); if(!ExecuteQuery(m_szQuery)) { return false; } */ return true; } bool CGameDB::UseCharacterName(char* szName) { char result[20]; _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT Name FROM CharInfo WHERE Name = '%s'", szName); if(ExecuteQuery(m_szQuery)) { if(GetData(result)) { return true; } } return false; } unsigned char CGameDB::GetOldServerGroupID(unsigned long dwCID) { unsigned char cOldServerGroupID = 0; _snprintf(m_szQuery, MAX_QUERY_LENGTH, "SELECT OldServerGroupID FROM UserInfo" " WHERE Char1 = %u OR Char2 = %u OR Char3 = %u OR Char4 = %u OR Char5 = %u", dwCID, dwCID, dwCID, dwCID, dwCID); if (true == ExecuteQueryGetData(m_szQuery, &cOldServerGroupID)) { return cOldServerGroupID; } return 0; }