void CustomQuest2ReqUser(PMSG_QUEST2_REQ_USER* lpMsg,int aIndex) { char szName[MAX_IDSTRING+1]; szName[MAX_IDSTRING] = '\0'; memcpy(szName,lpMsg->szName,MAX_IDSTRING); PMSG_QUEST2_ANS_USER pMsg = {0}; PHeadSubSetB((LPBYTE)&pMsg,0x65,0x11,sizeof(pMsg)); pMsg.aIndex = lpMsg->aIndex; strcpy(pMsg.szName,szName); char szQuery[256]; sprintf(szQuery,"SELECT QUEST_DATA FROM T_CustomQuest2 WHERE CHAR_NAME = '%s'",szName); switch( g_MyEventDB.ReadBlob(szQuery,&pMsg.m_UserData) ) { case 0: sprintf(szQuery,"INSERT INTO T_CustomQuest2 (CHAR_NAME,QUEST_DATA) VALUES ('%s',?)",szName); g_MyEventDB.WriteBlob(szQuery,&pMsg.m_UserData,sizeof(pMsg.m_UserData)); break; case sizeof(pMsg.m_UserData): break; default: return; } DataSend(aIndex,(LPBYTE)&pMsg,sizeof(pMsg)); }
int IsUser(char *szId, char *pass, char * JoominNumber, char & Block, int & DBNumber) { char szQuery[512]; sprintf(szQuery,"SELECT memb_guid, memb___id, sno__numb, bloc_code from MEMB_INFO WHERE memb___id='%s'", szId); if(g_JoinServerDB.Exec(szQuery) == FALSE) { g_Window.ServerLogAdd(ST_JOINSERVER,"error-L3 : ID:'%s' PASS:'******'",szId, pass); g_JoinServerDB.Clear(); return 2; } if(g_JoinServerDB.Fetch() == SQL_NO_DATA) { g_JoinServerDB.Clear(); if( g_JSInfo.bAutoreg == TRUE && strlen(szId) >= g_JSInfo.AutoRegMinLength && strlen(pass) >= g_JSInfo.AutoRegMinLength ) { if( g_JSInfo.bMD5 == TRUE ) { sprintf(szQuery,"INSERT INTO MEMB_INFO (memb___id,memb__pwd,bloc_code,ctl1_code) VALUES ('%s',dbo.fn_md5('%s','%s'),0,0)", szId,pass,szId); } else { sprintf(szQuery,"INSERT INTO MEMB_INFO (memb___id,memb__pwd,bloc_code,ctl1_code) VALUES ('%s','%s',0,0)", szId,pass); } if( g_JoinServerDB.Exec(szQuery) == FALSE ) { g_Window.ServerLogAdd(ST_JOINSERVER,"error-L3 : ID:'%s' PASS:'******'",szId, pass); g_JoinServerDB.Clear(); return 2; } g_JoinServerDB.Clear(); sprintf(szQuery,"SELECT memb_guid, memb___id, sno__numb, bloc_code from MEMB_INFO WHERE memb___id='%s'",szId); if(g_JoinServerDB.Exec(szQuery) == FALSE) { g_Window.ServerLogAdd(ST_JOINSERVER,"error-L3 : ID:'%s' PASS:'******'",szId, pass); g_JoinServerDB.Clear(); return 2; } if(g_JoinServerDB.Fetch() == SQL_NO_DATA) { g_JoinServerDB.Clear(); return 2; } } else { return 2; } } DBNumber = g_JoinServerDB.GetInt("memb_guid"); char szBlock[2]=""; g_JoinServerDB.GetStr("sno__numb", JoominNumber); g_JoinServerDB.GetStr("bloc_code", szBlock); Block = szBlock[0]; if(g_JSInfo.bMD5 == TRUE) { BYTE btPass[16]={0}; g_JoinServerDB.Clear(); sprintf(szQuery,"SELECT memb__pwd FROM MEMB_INFO WHERE memb___id = '%s'",szId); if(g_JoinServerDB.ReadBlob(szQuery,btPass) <= 0) { g_JoinServerDB.Clear(); return 0; } DWORD dwAccKey = MakeAccountKey(szId); MD5 pMD5Hash; if( pMD5Hash.MD5_CheckValue(pass, (char*)btPass, dwAccKey) == FALSE ) { g_JoinServerDB.Clear(); return 0; } } else { char szPass[MAX_IDSTRING+1] = {0}; g_JoinServerDB.Clear(); sprintf(szQuery,"SELECT memb__pwd FROM MEMB_INFO WHERE memb___id = '%s'",szId); if(g_JoinServerDB.Exec(szQuery) == FALSE || g_JoinServerDB.Fetch() == SQL_NO_DATA) { g_JoinServerDB.Clear(); return 0; } g_JoinServerDB.GetStr("memb__pwd",szPass); g_JoinServerDB.Clear(); if(strlen(szPass) < 1) { return 0; } if(strcmp(szPass,pass) != NULL) { return 0; } } g_JoinServerDB.Clear(); return TRUE; }