void JGAnsMapSvrAuth(PMSG_ANS_MAPSVRAUTH * lpMsg) { if ( !OBJMAX_RANGE(lpMsg->iIndex)) { LogAddC(2, "[MapServerMng] Packet Error JG [0x7B] - Index out of bound : %d", lpMsg->iIndex); return; } LPOBJ lpObj = &gObj[lpMsg->iIndex]; memcpy(lpObj->Name, lpMsg->szCharName, MAX_ACCOUNT_LEN); if ( lpObj->m_bMapSvrMoveReq == false ) { LogAddC(2, "[MapServerMng] MapSvr MoveReq Error JG [0x7B] - No Request [%s] (%d)", lpObj->AccountID, lpObj->m_Index); gObjDel(lpMsg->iIndex); return; } BOOL bAuthOK = FALSE; int iSendResult = 0; char szId[11]; char szJN[21] = ""; int iIndex = lpMsg->iIndex; SDHP_DBCHARINFOREQUEST pMsg; char szName[11]; memset(szId, 0, sizeof(szId)); memcpy(szId, lpMsg->szAccountID, MAX_ACCOUNT_LEN); memcpy(szJN, lpMsg->cJoominNumber, sizeof(lpMsg->cJoominNumber)); switch ( lpMsg->iResult ) { case 0: iSendResult = 0; bAuthOK = FALSE; if ( !gObjSetAccountLogin(iIndex, szId, lpMsg->iUserNumber, lpMsg->iDBNumber, szJN)) { GJPAccountFail(iIndex, szId, lpMsg->iDBNumber, lpMsg->iUserNumber); lpMsg->iResult = 4; } else { LogAddTD(lMsg.Get(MSGGET(1, 211)), gObj[iIndex].Ip_addr, szId, lpMsg->iUserNumber, lpMsg->iDBNumber); iSendResult = 1; bAuthOK = TRUE; } if ( lpMsg->iUserNumber == 0 && lpMsg->iDBNumber == 0 ) { LogAddTD(lMsg.Get(MSGGET(1, 212)), szId, lpMsg->iUserNumber, lpMsg->iDBNumber); } switch ( lpMsg->btBlockCode ) { case 70: // 0x46 gObj[iIndex].m_cAccountItemBlock = 1; break; } break; default: iSendResult = 0; bAuthOK = FALSE; break; } GCAnsMapSvrAuth(iIndex, iSendResult); if ( bAuthOK == FALSE ) { LogAddC(2, "[MapServerMng] [%s][%s] JG [0x7B] - Join Result Failed : RST:%d, BLK:%c", szId, lpMsg->szCharName, lpMsg->iResult, lpMsg->btBlockCode); gObjDel(lpMsg->iIndex); return; } gObj[iIndex].m_sPrevMapSvrCode = lpMsg->wPrevMapSvrCode; gObj[iIndex].m_sDestMapNumber = lpMsg->wMapNumber; gObj[iIndex].m_btDestX = lpMsg->btX; gObj[iIndex].m_btDestY = lpMsg->btY; gObj[iIndex].bEnableDelCharacter = FALSE; #if (ENABLETEST_ARCA == 1) if( g_ArcaBattle.IsArcaBattleServer() ) { g_ArcaBattle.SendArcaBattlePlayInfo(gObj[iIndex], 1); g_ArcaBattle.SendArcaBattleCurrentState(gObj[iIndex]); } #endif PHeadSetB((LPBYTE)&pMsg, 0x06, sizeof(pMsg)); memset(szName, 0, sizeof(szName)); memcpy(szName, lpMsg->szCharName, MAX_ACCOUNT_LEN); BuxConvert(szName, MAX_ACCOUNT_LEN); memcpy(pMsg.Name, szName, MAX_ACCOUNT_LEN); strcpy(pMsg.AccountID, lpMsg->szAccountID); pMsg.Number = lpObj->m_Index; cDBSMng.Send((PCHAR)&pMsg, pMsg.h.size); LogAddTD("[MapServerMng] [%s][%s] JG [0x7B] - Join Result OK : RST:%d, BLK:%c", szId, lpMsg->szCharName, lpMsg->iResult, lpMsg->btBlockCode); }
void JGAnsMapSvrAuth(PMSG_ANS_MAPSVRAUTH * lpMsg) { if ( !OBJMAX_RANGE(lpMsg->iIndex)) { LogAdd( "[MapServerMng] Packet Error JG [0x7B] - Index out of bound : %d", lpMsg->iIndex); return; } LPOBJ lpObj = &gObj[lpMsg->iIndex]; memcpy(lpObj->Name, lpMsg->szCharName, MAX_ACCOUNT_LEN); if ( lpObj->m_bMapSvrMoveReq == false ) { LogAdd( "[MapServerMng] MapSvr MoveReq Error JG [0x7B] - No Request [%s] (%d)", lpObj->AccountID, lpObj->m_Index); gObjDel(lpMsg->iIndex); return; } BOOL bAuthOK = FALSE; int iSendResult = 0; char szId[11]; char szJN[14] = ""; int iIndex = lpMsg->iIndex; SDHP_DBCHARINFOREQUEST pMsg; char szName[11]; memset(szId, 0, sizeof(szId)); memcpy(szId, lpMsg->szAccountID, MAX_ACCOUNT_LEN); memcpy(szJN, lpMsg->cJoominNumber, sizeof(lpMsg->cJoominNumber)); switch ( lpMsg->iResult ) { case 0: iSendResult = 0; bAuthOK = FALSE; if ( !gObjSetAccountLogin(iIndex, szId, lpMsg->iUserNumber, lpMsg->iDBNumber, szJN)) { GJPAccountFail(iIndex, szId, lpMsg->iDBNumber, lpMsg->iUserNumber); lpMsg->iResult = 4; } else { LogAdd("***0467*** login : (%s)[%s] number:%d/ db:%d", gObj[iIndex].Ip_addr, szId, lpMsg->iUserNumber, lpMsg->iDBNumber); iSendResult = 1; bAuthOK = TRUE; } if ( lpMsg->iUserNumber == 0 && lpMsg->iDBNumber == 0 ) { LogAdd("Both user number and DB number are 0 (%s) %d %d", szId, lpMsg->iUserNumber, lpMsg->iDBNumber); } switch ( lpMsg->btBlockCode ) { case 70: // 0x46 gObj[iIndex].m_cAccountItemBlock = 1; break; } break; default: iSendResult = 0; bAuthOK = FALSE; break; } GCAnsMapSvrAuth(iIndex, iSendResult); if ( bAuthOK == FALSE ) { LogAdd( "[MapServerMng] [%s][%s] JG [0x7B] - Join Result Failed : RST:%d, BLK:%c", szId, lpMsg->szCharName, lpMsg->iResult, lpMsg->btBlockCode); gObjDel(lpMsg->iIndex); return; } gObj[iIndex].m_sPrevMapSvrCode = lpMsg->wPrevMapSvrCode; gObj[iIndex].m_sDestMapNumber = lpMsg->wMapNumber; gObj[iIndex].m_btDestX = lpMsg->btX; gObj[iIndex].m_btDestY = lpMsg->btY; gObj[iIndex].bEnableDelCharacter = FALSE; PHeadSetB((LPBYTE)&pMsg, 0x06, sizeof(pMsg)); memset(szName, 0, sizeof(szName)); memcpy(szName, lpMsg->szCharName, MAX_ACCOUNT_LEN); BuxConvert(szName, MAX_ACCOUNT_LEN); memcpy(pMsg.Name, szName, MAX_ACCOUNT_LEN); strcpy_s(pMsg.AccountID, sizeof(pMsg.AccountID), lpMsg->szAccountID); pMsg.Number = lpObj->m_Index; wsDataServerCli.DataSend((PCHAR)&pMsg, pMsg.h.size); LogAdd("[MapServerMng] [%s][%s] JG [0x7B] - Join Result OK : RST:%d, BLK:%c", szId, lpMsg->szCharName, lpMsg->iResult, lpMsg->btBlockCode); }