⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmsdbmsgparser.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		Msg.Protocol = MP_RMTOOL_ADMIN_OPERATORINFO;
		Msg.dwTemplateIdx = tempIdx;
		Msg.bEnd = TRUE;
		Msg.wCount = 0;	
		
		MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
		return;
	}

	DWORD MyIdx = atoi((char*)pData[0].Data[eOI_MyIdx]);
	DWORD startIdx = 0;
	Msg.wCount = 0;

	for( DWORD i = 0 ; i < pMessage->dwResult ; ++i )
	{
		Msg.sOper[Msg.wCount].dwOperIdx = atoi((char*)pData[i].Data[eOI_OperIdx]);
		strcpy(Msg.sOper[Msg.wCount].strOperID, (char*)pData[i].Data[eOI_OperID]);
		strcpy(Msg.sOper[Msg.wCount].strOperName, (char*)pData[i].Data[eOI_OperName]);
		strcpy(Msg.sOper[Msg.wCount].strOperPWD, (char*)pData[i].Data[eOI_OperPwd]);
		Msg.sOper[Msg.wCount].wOperPower = atoi((char*)pData[i].Data[eOI_OperPower]);

		strcpy(Msg.sOper[Msg.wCount].strRegDate, (char*)pData[i].Data[eOI_Date]);
		strcat(Msg.sOper[Msg.wCount].strRegDate, " ");
		strcat(Msg.sOper[Msg.wCount].strRegDate, (char*)pData[i].Data[eOI_Time]);

		startIdx = Msg.sOper[Msg.wCount].dwOperIdx;
		Msg.wCount++;
	}

	Msg.Category = MP_RMTOOL_ADMIN;
	Msg.Protocol = MP_RMTOOL_ADMIN_OPERATORINFO;
	Msg.dwTemplateIdx = tempIdx;

	if( pMessage->dwResult >= 100)
	{
		Msg.bEnd = FALSE;
		TotalOperatorInfo(connectIdx, tempIdx, startIdx, MyIdx);
	}
	else
	{
		// ÇöÀç ±îÁöÀÇ Á¤º¸°¡ ÀüºÎÀÌ´Ù ¶ó°í ¾Ë¸°´Ù.
		Msg.bEnd = TRUE;
	}

	MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
}

void ROperatorLoginCheck(LPQUERY pData, LPDBMESSAGE pMessage)
{
	DWORD count = pMessage->dwResult;
	DWORD connectIdx = pMessage->dwID;

	if( count == 0 ) // ÀÌ»ó ¿À·ù
	{
		TMSG_WORD msg;
		msg.Category = MP_RMTOOL_CONNECT;
		msg.Protocol = MP_RMTOOL_CONNECT_NACK;
		msg.dwTemplateIdx = 0;
		msg.wData = 0;

		MNETWORK->SendToMC(connectIdx, (char*)&msg, sizeof(msg));
		return;
	}

	WORD check = atoi((char*)pData[0].Data[eOI_ErroCode]);

	if( check != 0 ) // Á¢¼Ó ºÒ°¡
	{
		TMSG_WORD msg;
		msg.Category = MP_RMTOOL_CONNECT;
		msg.Protocol = MP_RMTOOL_CONNECT_NACK;
		msg.dwTemplateIdx = 0;
		msg.wData = check;

		MNETWORK->SendToMC(connectIdx, (char*)&msg, sizeof(msg));
		return;
	}

	TMSG_OPERATOR_LOGIN Msg;
	Msg.Category = MP_RMTOOL_CONNECT;
	Msg.Protocol = MP_RMTOOL_CONNECT_ACK;

	Msg.sOper.dwOperIdx = atoi((char*)pData[0].Data[eOI_OperIdx]);
	strcpy(Msg.sOper.strOperID, (char*)pData[0].Data[eOI_OperID]);
	strcpy(Msg.sOper.strOperName, (char*)pData[0].Data[eOI_OperName]);
	strcpy(Msg.sOper.strOperPWD, (char*)pData[0].Data[eOI_OperPwd]);
	Msg.sOper.wOperPower = atoi((char*)pData[0].Data[eOI_OperPower]);

	strcpy(Msg.sOper.strRegDate, (char*)pData[0].Data[eOI_Date]);
	strcat(Msg.sOper.strRegDate, " ");
	strcat(Msg.sOper.strRegDate, (char*)pData[0].Data[eOI_Time]);

	Msg.sIP.dwIPIdx = atoi((char*)pData[0].Data[eOI_IPIdx]);
	strcpy(Msg.sIP.strIP, (char*)pData[0].Data[eOI_IPAdress]);
	strcpy(Msg.sIP.strRegDate, (char*)pData[0].Data[eOI_IPDate]);
	strcat(Msg.sIP.strRegDate, " ");
	strcat(Msg.sIP.strRegDate, (char*)pData[0].Data[eOI_IPTime]);

	MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
	
	// ip regist
	IPCHECKMGR->RegistIP( Msg.sIP.strIP );
	IPCHECKMGR->RegistID( connectIdx, Msg.sOper.dwOperIdx, Msg.sOper.strOperID );
}

void RSearchUserInfo(LPMIDDLEQUERY pData, LPDBMESSAGE pMessage)
{
	DWORD count = pMessage->dwResult;
	WORD tempIdx = HIWORD(pMessage->dwID);
	WORD connectIdx = LOWORD(pMessage->dwID);

	if( count == 0 )
	{
		// ÀÏÄ¡ Á¤º¸ ¾øÀ½À» ¾Ë¸²..
		TMSGBASE msg;
		msg.Category = MP_RMTOOL_USER;
		msg.Protocol = MP_RMTOOL_USERSEARCH_NACK;
		msg.dwTemplateIdx = tempIdx;

		MNETWORK->SendToMC(connectIdx, (char*)&msg, sizeof(msg));
	}
	else
	{
		TMSG_USERSEARCHRESULT Info;

		Info.sUser.bLoginFlag = atoi((char*)pData[0].Data[eUI_IsLogin]);
		Info.sUser.dwMemberNo = atoi((char*)pData[0].Data[eUI_User_Idx]);
		strcpy(Info.sUser.strID, (char*)pData[0].Data[eUI_Id]);
		strcpy(Info.sUser.strPass, (char*)pData[0].Data[eUI_Pwd]);
		strcpy(Info.sUser.strName, (char*)pData[0].Data[eUI_Name]);
		strcpy(Info.sUser.strIdCard, (char*)pData[0].Data[eUI_Idcard]);
		strcpy(Info.sUser.strPhon, (char*)pData[0].Data[eUI_Phone]);
		strcpy(Info.sUser.strEmail, (char*)pData[0].Data[eUI_Email]);
		strcpy(Info.sUser.strRegDateTime, (char*)pData[0].Data[eUI_Regdate]);
		strcpy(Info.sUser.strLastLoginTime, (char*)pData[0].Data[eUI_LastLogintime]);
		strcpy(Info.sUser.strLastLogoutTime, (char*)pData[0].Data[eUI_LastLogouttime]);

		Info.sUser.nTotalTime = atoi((char*)pData[0].Data[eUI_Totaltime]);
		int temp = Info.sUser.nTotalTime;
		int oo, mm, ss;
		ss = temp%60;
		mm = (temp/60)%60;
		oo = (temp/3600);
		sprintf(Info.sUser.strTotalTime, "%d½Ã°£ %dºÐ %dÃÊ", oo, mm, ss );

		Info.sUser.wUserLevel = atoi((char*)pData[0].Data[eUI_UserLevel]);
		Info.wServer = atoi((char*)pData[0].Data[eUI_Char_Server]);

		Info.Category = MP_RMTOOL_USER;
		Info.Protocol = MP_RMTOOL_USERSEARCH_ACK;
		Info.dwTemplateIdx = tempIdx;
		MNETWORK->SendToMC(connectIdx, (char*)&Info, sizeof(Info));
	}
}
/*
void RSearchSimpleCharacterInfo(LPMIDDLEQUERY pData, LPDBMESSAGE pMessage)
{
	DWORD count = pMessage->dwResult;
	WORD tempIdx = HIWORD(pMessage->dwID);
	WORD connectIdx = LOWORD(pMessage->dwID);


	TMSG_SIMPLERESULT Msg;

	Msg.Category = MP_RMTOOL_USER;
	Msg.Protocol = MP_RMTOOL_SIMPLECHARACTER_ACK;
	Msg.dwTemplateIdx = tempIdx;
	Msg.Count = count;

	for(BYTE i=0;i<count;++i)
	{
		Msg.sSimple[i].wServer = atoi((char*)pData[i].Data[0]);
		Msg.sSimple[i].dwCharNo = atoi((char*)pData[i].Data[1]);
		strcpy( Msg.sSimple[i].strName, (char*)pData[i].Data[2]);
		strcpy( Msg.sSimple[i].strCreateDate, (char*)pData[i].Data[3]);
	}

	MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
}
*/
void RCharacterBaseInfo(LPQUERY pData, LPDBMESSAGE pMessage)
{
	DWORD count = pMessage->dwResult;
	WORD tempIdx = HIWORD(pMessage->dwID);
	WORD connectIdx = LOWORD(pMessage->dwID);

	if(!count)
	{
		// error È£Ãâ
		TMSG_WORD Msg;
		Msg.Category = MP_RMTOOL_CHARACTER;
		Msg.Protocol = MP_RMTOOL_CHARACTERINFO_NACK;
		Msg.dwTemplateIdx = tempIdx;
		Msg.wData = 0; //
		MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
		return;
	}

	TMSG_CHARACTER_BASEINFO Msg;
	
	memset(&Msg.m_sObjinfo,0,sizeof(BASEOBJECT_INFO));
	memset(&Msg.m_sTotalinfo,0,sizeof(CHARACTER_TOTALINFO));
	memset(&Msg.m_sHeroinfo,0,sizeof(HERO_TOTALINFO));
	
	Msg.m_sObjinfo.dwObjectID = atoi((char*)pData->Data[eCS_ObjectID]);
	Msg.m_sObjinfo.dwUserID =  atoi((char*)pData->Data[eCS_UserID]);
	Msg.m_sObjinfo.BattleID = 0;
	Msg.m_sObjinfo.BattleTeam = 0;
	strcpy(Msg.m_sObjinfo.ObjectName, (char*)pData->Data[eCS_Name]);
	
	Msg.m_sTotalinfo.Gender = atoi((char*)pData->Data[eCS_Gender]);
	Msg.m_sTotalinfo.Life = atoi((char*)pData->Data[eCS_Life]);
	Msg.m_sTotalinfo.Shield = atoi((char*)pData->Data[eCS_Shield]);
//	strcpy(Msg.m_sTotalinfo.HonorName, (char*)pData->Data[eCS_Repute]);
	Msg.m_sTotalinfo.Stage = atoi((char*)pData->Data[eCS_Stage]);
	Msg.m_sTotalinfo.Level = atoi((char*)pData->Data[eCS_Grade]);
	Msg.m_sTotalinfo.CurMapNum = 0;
	Msg.m_sTotalinfo.LoginMapNum = atoi((char*)pData->Data[eCS_Map]);
	Msg.m_sTotalinfo.FaceType = atoi((char*)pData->Data[eCS_FaceType]);
	Msg.m_sTotalinfo.HairType = atoi((char*)pData->Data[eCS_HeadType]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Hat] = atoi((char*)pData->Data[eCS_Hat]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Weapon] = atoi((char*)pData->Data[eCS_Weapon]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Dress] = atoi((char*)pData->Data[eCS_Dress]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Shoes] = atoi((char*)pData->Data[eCS_Shoes]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Ring1] = atoi((char*)pData->Data[eCS_Ring1]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Ring2] = atoi((char*)pData->Data[eCS_Ring2]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Cape] = atoi((char*)pData->Data[eCS_Cape]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Necklace] = atoi((char*)pData->Data[eCS_Necklace]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Armlet] = atoi((char*)pData->Data[eCS_Armlet]);
	Msg.m_sTotalinfo.WearedItemIdx[eWearedItem_Belt] = atoi((char*)pData->Data[eCS_Belt]);
	Msg.m_sTotalinfo.MunpaID = atoi((char*)pData->Data[eCS_MunpaIDX]);
	Msg.m_sTotalinfo.PositionInMunpa = atoi((char*)pData->Data[eCS_MunpaPositon]);
	Msg.m_sTotalinfo.MapChangePoint_Index = atoi((char*)pData->Data[eCS_MapChangePoint]);
	Msg.m_sTotalinfo.LoginPoint_Index = atoi((char*)pData->Data[eCS_LoginPoint]);

	Msg.m_sHeroinfo.PartyID = atoi((char*)pData->Data[eCS_PartyID]);
	Msg.m_sHeroinfo.wGenGol = atoi((char*)pData->Data[eCS_Gengoal]);
	Msg.m_sHeroinfo.wNaeRyuk = atoi((char*)pData->Data[eCS_Energe]);
	Msg.m_sHeroinfo.wMinChub = atoi((char*)pData->Data[eCS_Dex]);
	Msg.m_sHeroinfo.wCheRyuk = atoi((char*)pData->Data[eCS_Sta]);
	Msg.m_sHeroinfo.wSimMek = atoi((char*)pData->Data[eCS_Simmak]);
	Msg.m_sHeroinfo.Fame = atoi((char*)pData->Data[eCS_Fame]);
	Msg.m_sHeroinfo.wKarma = atoi((char*)pData->Data[eCS_Karma]);
	Msg.m_sHeroinfo.ExpPoint = atoi((char*)pData->Data[eCS_Expoint]);
	Msg.m_sHeroinfo.LevelUpPoint = atoi((char*)pData->Data[eCS_GradeUpPoint]);
	Msg.m_sHeroinfo.Money = atoi((char*)pData->Data[eCS_Money]);
	strcpy(Msg.m_sHeroinfo.MunpaName, (char*)pData->Data[eCS_MunpaName]);
	Msg.m_sHeroinfo.KyungGongGrade = atoi((char*)pData->Data[eCS_QuickPace]);
	Msg.m_sHeroinfo.AbilityExp = atoi((char*)pData->Data[eCS_AbilityExp]);

	// Á¤º¸ º¸³»±â
	Msg.Category = MP_RMTOOL_CHARACTER;
	Msg.Protocol = MP_RMTOOL_CHARACTER_BASEINFO;
	Msg.dwTemplateIdx = tempIdx;
	MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
}

void RCharacterInvenInfo(LPQUERY pData, LPDBMESSAGE pMessage)
{
	DWORD count = pMessage->dwResult;
	WORD tempIdx = HIWORD(pMessage->dwID);
	WORD connectIdx = LOWORD(pMessage->dwID);

	// °¡Á¤!!
	// ¾ÆÀÌÅÛÀÇ Æ÷Áö¼ÇÀº Àý´ë °ãÄ¥¼ö ¾ø´Ù
	// ¾ÆÀÌÅÛÀÇ Ä³¸¯ÅÍ ¹®ÆÄ â°í À妽ºµµ Àý´ë °ãÄ¥¼ö ¾ø´Ù. (ÀÌ°Ç ¾î¶»°Ô º¹±¸ÇϳÄ!!)
	TMSG_CHARACTER_INVENINFO Msg;
	memset(&Msg.m_sIteminfo, 0, sizeof(Msg.m_sIteminfo));

	POSTYPE p = 0;
	for(DWORD  i = 0; i < count; i++)
	{
		POSTYPE ItemPos = atoi((char*)pData[i].Data[eCI_Position]);
		// ±×¸®µå(Àκ¥Å丮)¾ÆÀÌÅÛ ¼ÂÆÃ
		if(ItemPos >= TP_INVENTORY_START && ItemPos < TP_INVENTORY_END)
		{
			ItemPos -= TP_INVENTORY_START;
			Msg.m_sIteminfo.Inventory[ItemPos].dwDBIdx = atoi((char*)pData[i].Data[eCI_DBIDX]);
			Msg.m_sIteminfo.Inventory[ItemPos].wIconIdx = atoi((char*)pData[i].Data[eCI_IDX]);
			Msg.m_sIteminfo.Inventory[ItemPos].Position = atoi((char*)pData[i].Data[eCI_Position]);
			Msg.m_sIteminfo.Inventory[ItemPos].Durability = atoi((char*)pData[i].Data[eCI_Durability]);
			Msg.m_sIteminfo.Inventory[ItemPos].QuickPosition = atoi((char*)pData[i].Data[eCI_QPosition]);
		}
		else if(ItemPos >= TP_WEAR_START && ItemPos < TP_WEAR_END)
		{				
			POSTYPE ItemGrid = ItemPos - TP_WEAR_START;
			Msg.m_sIteminfo.WearedItem[ItemGrid].dwDBIdx = atoi((char*)pData[i].Data[eCI_DBIDX]);
			Msg.m_sIteminfo.WearedItem[ItemGrid].wIconIdx = atoi((char*)pData[i].Data[eCI_IDX]);
			Msg.m_sIteminfo.WearedItem[ItemGrid].Position = atoi((char*)pData[i].Data[eCI_Position]);
			Msg.m_sIteminfo.WearedItem[ItemGrid].Durability = atoi((char*)pData[i].Data[eCI_Durability]);
			Msg.m_sIteminfo.WearedItem[ItemGrid].QuickPosition = atoi((char*)pData[i].Data[eCI_QPosition]);
		}
		else
		{
			ASSERT(0);
			continue;
		}
	}

	// Á¤º¸ º¸³»±â
	Msg.Category = MP_RMTOOL_CHARACTER;
	Msg.Protocol = MP_RMTOOL_CHARACTER_INVENINFO;
	Msg.dwTemplateIdx = tempIdx;
	MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
}

void RCharacterPyogukInfo(LPQUERY pData, LPDBMESSAGE pMessage)
{
	WORD tempIdx = HIWORD(pMessage->dwID);
	WORD connectIdx = LOWORD(pMessage->dwID);

	TMSG_CHARACTER_PYOGUKINFO Msg;
	DWORD UserIdx;

	if( pMessage->dwResult == 0 )
	{
		UserIdx = 0;
		Msg.m_wPyogukNum = 0;
		Msg.m_dwMoney = 0;
	}
	else
	{
		UserIdx = atoi((char*)pData->Data[eCP_UserIdx]);
		Msg.m_wPyogukNum = atoi((char*)pData->Data[eCP_PyogukNum]);
		Msg.m_dwMoney = atoi((char*)pData->Data[eCP_PyogukMoney]);
	}

	if( Msg.m_wPyogukNum != 0)
		CharacterPyogukItemInfo( connectIdx, tempIdx, UserIdx, TP_PYOGUK_START-1 );

	Msg.Category = MP_RMTOOL_CHARACTER;
	Msg.Protocol = MP_RMTOOL_CHARACTER_PYOGUKINFO;
	Msg.dwTemplateIdx = tempIdx;

	MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
}

void RCharacterPyogukItemInfo(LPQUERY pData, LPDBMESSAGE pMessage)
{
	WORD tempIdx = HIWORD(pMessage->dwID);
	WORD connectIdx = LOWORD(pMessage->dwID);

	TMSG_ITEMINFO_LARGECOUNT Msg;
	memset(&Msg, 0, sizeof(Msg));

	if( pMessage->dwResult == 0 )
	{
		// ÇöÀç ±îÁöÀÇ Á¤º¸°¡ ÀüºÎÀÌ´Ù ¶ó°í ¾Ë¸°´Ù.
		Msg.Category = MP_RMTOOL_CHARACTER;
		Msg.Protocol = MP_RMTOOL_CHARACTER_PYOGUKITEMINFO;
		Msg.dwTemplateIdx = tempIdx;
		Msg.m_bEnd = TRUE;
		Msg.m_wCount = 0;

		MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));
		return;
	}

	DWORD UserIdx = atoi((char*)pData[0].Data[ePI_UserId]);
	POSTYPE startPos = 0;
	Msg.m_wCount = 0;

	for( DWORD i = 0 ; i < pMessage->dwResult ; ++i )
	{
		POSTYPE ItemPos = atoi((char*)pData[i].Data[ePI_Position]);
		if(TP_PYOGUK_START<= ItemPos && ItemPos < TP_PYOGUK_END)
		{
			Msg.m_Item[Msg.m_wCount].dwDBIdx			= atoi((char*)pData[i].Data[ePI_DBIDX]);
			Msg.m_Item[Msg.m_wCount].wIconIdx			= atoi((char*)pData[i].Data[ePI_IDX]);
			Msg.m_Item[Msg.m_wCount].Position			= atoi((char*)pData[i].Data[ePI_Position]);
			Msg.m_Item[Msg.m_wCount].QuickPosition	= atoi((char*)pData[i].Data[ePI_QPosition]);
			Msg.m_Item[Msg.m_wCount].Durability		= atoi((char*)pData[i].Data[ePI_Durability]);
			
			startPos = Msg.m_Item[Msg.m_wCount].Position;
			Msg.m_wCount++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -