Example #1
0
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);

}
Example #2
0
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);

}