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

📄 cmsdbmsgparser.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		}
		else
		{
			ASSERT(0);
			continue;
		}
	}

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

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

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

void RCharacterMugongInfo(LPQUERY pData, LPDBMESSAGE pMessage)
{
	WORD tempIdx = HIWORD(pMessage->dwID);
	WORD connectIdx = LOWORD(pMessage->dwID);
	DWORD count = pMessage->dwResult;
	
	TMSG_CHARACTER_MUGONGINFO Msg;
	TMSG_CHARACTER_MUGONGINFO2 Msg2;
	memset(&Msg, 0, sizeof(TMSG_CHARACTER_MUGONGINFO));
	memset(&Msg2, 0, sizeof(TMSG_CHARACTER_MUGONGINFO2));

	DWORD ec = 0;
	for(DWORD i = 0; i < count; i++)
	{
		WORD Mugongidx = (WORD)atoi((char*)pData[i].Data[eCM_IDX]);
			
		POSTYPE MugongPos = atoi((char*)pData[i].Data[eCM_Position]) - TP_MUGONG_START;

		if( Msg.m_sMugongInfo.mugong[MugongPos].dwDBIdx == 0 )
		{
			Msg.m_sMugongInfo.mugong[MugongPos].wIconIdx = Mugongidx;
			Msg.m_sMugongInfo.mugong[MugongPos].dwDBIdx = atoi((char*)pData[i].Data[eCM_DBIDX]);
			Msg.m_sMugongInfo.mugong[MugongPos].ExpPoint = atoi((char*)pData[i].Data[eCM_ExpPoint]);
			Msg.m_sMugongInfo.mugong[MugongPos].Sung = atoi((char*)pData[i].Data[eCM_Sung]);
			Msg.m_sMugongInfo.mugong[MugongPos].Position = atoi((char*)pData[i].Data[eCM_Position]);
			Msg.m_sMugongInfo.mugong[MugongPos].QuickPosition = atoi((char*)pData[i].Data[eCM_QPosition]);
			Msg.m_sMugongInfo.mugong[MugongPos].bWear = atoi((char*)pData[i].Data[eCM_Wear]);
		}
		else
		{
			if( ec < 5 )
			{
				Msg2.m_MugongBase[ec].wIconIdx = Mugongidx;
				Msg2.m_MugongBase[ec].dwDBIdx = atoi((char*)pData[i].Data[eCM_DBIDX]);
				Msg2.m_MugongBase[ec].ExpPoint = atoi((char*)pData[i].Data[eCM_ExpPoint]);
				Msg2.m_MugongBase[ec].Sung = atoi((char*)pData[i].Data[eCM_Sung]);
				Msg2.m_MugongBase[ec].Position = atoi((char*)pData[i].Data[eCM_Position]);
				Msg2.m_MugongBase[ec].QuickPosition = atoi((char*)pData[i].Data[eCM_QPosition]);
				Msg2.m_MugongBase[ec].bWear = atoi((char*)pData[i].Data[eCM_Wear]);
				
				++ec;
				Msg2.m_dwCount = ec;
			}
		}
	}

	Msg.Category = MP_RMTOOL_CHARACTER;
	Msg.Protocol = MP_RMTOOL_CHARACTER_MUGONGINFO;
	Msg.dwTemplateIdx = tempIdx;
	MNETWORK->SendToMC(connectIdx, (char*)&Msg, sizeof(Msg));

	if( Msg2.m_dwCount )
	{
		Msg2.Category = MP_RMTOOL_CHARACTER;
		Msg2.Protocol = MP_RMTOOL_CHARACTER_MUGONGINFO2;
		Msg2.dwTemplateIdx = tempIdx;
		MNETWORK->SendToMC(connectIdx, (char*)&Msg2, sizeof(TMSG_CHARACTER_MUGONGINFO2));
	}
}

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

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

//	ASSERT(pMessage->dwResult == 1);

	if( pMessage->dwResult == 1 )
	{
		for(int kind = 0;kind<eAGK_Max;++kind)
			memcpy(Msg.sAbility.AbilityDataArray[kind], (char*)pData[0].Data[kind+1], MAX_ABILITY_NUM_PER_GROUP+1);
	}

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

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

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

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

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

	if( count == 0 )
	{
		// ÇöÀç±îÁöÀÇ Á¤º¸°¡ ÀüºÎÀÓÀ» ÀǹÌÇÑ´Ù.
		Msg.bEnd = TRUE;
		Msg.wCount = 0;

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

	DWORD UserIdx = atoi((char*)pData[0].Data[eCIOI_UserID]);
	DWORD CharIdx = atoi((char*)pData[0].Data[eCIOI_CharID]);
	DWORD StartIdx = 0;

	for( DWORD i = 0 ; i < count ; ++i )
	{
		Msg.OptionInfo[i].dwOptionIdx			= (DWORD)atoi((char*)pData[i].Data[eCIOI_OptionID]);
		Msg.OptionInfo[i].dwItemDBIdx			= (DWORD)atoi((char*)pData[i].Data[eCIOI_ItemDBID]);
		Msg.OptionInfo[i].GenGol				= (WORD)atoi((char*)pData[i].Data[eCIOI_GenGol]);
		Msg.OptionInfo[i].MinChub				= (WORD)atoi((char*)pData[i].Data[eCIOI_MinChub]);				
		Msg.OptionInfo[i].CheRyuk				= (WORD)atoi((char*)pData[i].Data[eCIOI_CheRyuk]);				
		Msg.OptionInfo[i].SimMek				= (WORD)atoi((char*)pData[i].Data[eCIOI_SimMek]);					
		Msg.OptionInfo[i].Life					= (DWORD)atoi((char*)pData[i].Data[eCIOI_Life]);					
		Msg.OptionInfo[i].NaeRyuk				= (WORD)atoi((char*)pData[i].Data[eCIOI_NaeRyuk]);				
		Msg.OptionInfo[i].Shield				= (DWORD)atoi((char*)pData[i].Data[eCIOI_Shield]);					
		Msg.OptionInfo[i].AttrRegist.SetElement_Val(ATTR_FIRE,		atof((char*)pData[i].Data[eCIOI_FireAttrRegist]) );
		Msg.OptionInfo[i].AttrRegist.SetElement_Val(ATTR_WATER,	atof((char*)pData[i].Data[eCIOI_WaterAttrRegist]) );
		Msg.OptionInfo[i].AttrRegist.SetElement_Val(ATTR_TREE,		atof((char*)pData[i].Data[eCIOI_TreeAttrRegist]) );
		Msg.OptionInfo[i].AttrRegist.SetElement_Val(ATTR_IRON,		atof((char*)pData[i].Data[eCIOI_GoldAttrRegist]) );
		Msg.OptionInfo[i].AttrRegist.SetElement_Val(ATTR_EARTH,	atof((char*)pData[i].Data[eCIOI_EarthAttrRegist]) );
		Msg.OptionInfo[i].PhyAttack			= (WORD)atoi((char*)pData[i].Data[eCIOI_PhyAttack]);
		Msg.OptionInfo[i].CriticalPercent		= (WORD)atoi((char*)pData[i].Data[eCIOI_Critical]);
		Msg.OptionInfo[i].AttrAttack.SetElement_Val(ATTR_FIRE,		atof((char*)pData[i].Data[eCIOI_FireAttrAttack]) );
		Msg.OptionInfo[i].AttrAttack.SetElement_Val(ATTR_WATER,	atof((char*)pData[i].Data[eCIOI_WaterAttrAttack]) );
		Msg.OptionInfo[i].AttrAttack.SetElement_Val(ATTR_TREE,		atof((char*)pData[i].Data[eCIOI_TreeAttrAttack]) );
		Msg.OptionInfo[i].AttrAttack.SetElement_Val(ATTR_IRON,		atof((char*)pData[i].Data[eCIOI_GoldAttrAttack]) );
		Msg.OptionInfo[i].AttrAttack.SetElement_Val(ATTR_EARTH,	atof((char*)pData[i].Data[eCIOI_EarthAttrAttack]) );
		Msg.OptionInfo[i].PhyDefense			= (WORD)atoi((char*)pData[i].Data[eCIOI_PhyDefense]);				

		Msg.wCount++;
		StartIdx = Msg.OptionInfo[i].dwItemDBIdx;
	}

	if( count >= 100 )
	{
		Msg.bEnd = FALSE;
		CharacterItemOptionInfo( connectIdx, tempIdx, UserIdx, CharIdx, StartIdx );
	}
	else
	{
		// ÇöÀç ±îÁöÀÇ Á¤º¸°¡ ÀüºÎÀÌ´Ù ¶ó°í ¾Ë¸°´Ù.
		Msg.bEnd = TRUE;
	}

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

void RSearchMunpaIdx(LPQUERY 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_MUNPA;
		msg.Protocol = MP_RMTOOL_MUNPASEARCH_NACK;
		msg.dwTemplateIdx = tempIdx;

		MNETWORK->SendToMC(connectIdx, (char*)&msg, sizeof(msg));
	}
	else
	{
		DWORD dwMunpaIdx = atoi((char*)pData[0].Data[0]);
		MunpaBaseInfo(connectIdx, tempIdx, dwMunpaIdx);
	}
}

void RMunpaBaseInfo(LPQUERY 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_MUNPA;
		msg.Protocol = MP_RMTOOL_MUNPASEARCH_NACK;
		msg.dwTemplateIdx = tempIdx;

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

		Info.sBaseInfo.dwMunpaIdx = atoi((char*)pData[0].Data[eMB_MunpaId]);
		strcpy(Info.sBaseInfo.strMunpaName, (char*)pData[0].Data[eMB_MunpaName]);
		strcpy(Info.sBaseInfo.strMunjuName, (char*)pData[0].Data[eMB_MunjuName]);
		
		strcpy(Info.sBaseInfo.strRegDate, (char*)pData[0].Data[eMB_RegDate]);
		strcat(Info.sBaseInfo.strRegDate, " ");
		strcat(Info.sBaseInfo.strRegDate, (char*)pData[0].Data[eMB_RegTime]);

		Info.sBaseInfo.wMemberNum = atoi((char*)pData[0].Data[eMB_MemberNum]);
		Info.sBaseInfo.wLocation = atoi((char*)pData[0].Data[eMB_Location]);
		Info.sBaseInfo.bMunpaLevel = atoi((char*)pData[0].Data[eMB_MunpaLevel]);
		Info.sBaseInfo.dwFamous = atoi((char*)pData[0].Data[eMB_Famous]);
		Info.sBaseInfo.bKind = atoi((char*)pData[0].Data[eMB_Kind]);
		Info.sBaseInfo.dwMoney = atoi((char*)pData[0].Data[eMB_MunpaMoney]);

		Info.Category = MP_RMTOOL_MUNPA;
		Info.Protocol = MP_RMTOOL_MUNPABASEINFO;
		Info.dwTemplateIdx = tempIdx;

		MunpaItemInfo(connectIdx, tempIdx, Info.sBaseInfo.dwMunpaIdx, TP_MUNPAWAREHOUSE_START - 1 );
		MunpaMemberInfo(connectIdx, tempIdx, Info.sBaseInfo.dwMunpaIdx, 0);

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

void RMunpaItemInfo(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_MUNPA;
		Msg.Protocol = MP_RMTOOL_MUNPAITEMINFO;
		Msg.dwTemplateIdx = tempIdx;
		Msg.m_bEnd = TRUE;
		Msg.m_wCount = 0;

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

	DWORD MunpaIdx = 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_MUNPAWAREHOUSE_START<= ItemPos && ItemPos < TP_MUNPAWAREHOUSE_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++;
		}
		else
		{
			ASSERT(0);
			continue;
		}
	}

	Msg.Category = MP_RMTOOL_MUNPA;
	Msg.Protocol = MP_RMTOOL_MUNPAITEMINFO;
	Msg.dwTemplateIdx = tempIdx;

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

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

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

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

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

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

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

	for( DWORD i = 0 ; i < pMessage->dwResult ; ++i )
	{
		Msg.sMember[Msg.wCount].dwCharno		= atoi((char*)pData[i].Data[eMM_MemberIdx]);
		strcpy(Msg.sMember[Msg.wCount].strName, (char*)pData[i].Data[eMM_MemberName]);
		Msg.sMember[Msg.wCount].level		= atoi((char*)pData[i].Data[eMM_MemberLevel]);
		Msg.sMember[Msg.wCount].bJikChek		= atoi((char*)pData[i].Data[eMM_MemberJikChek]);

		strcpy(Msg.sMember[Msg.wCount].strRegDate, (char*)pData[i].Data[eMM_MemberDate]);
		strcat(Msg.sMember[Msg.wCount].strRegDate, " ");
		strcat(Msg.sMember[Msg.wCount].strRegDate, (char*)pData[i].Data[eMM_MemberTime]);
			
		startIdx = Msg.sMember[Msg.wCount].dwCharno;
		Msg.wCount++;
	}

	Msg.Category = MP_RMTOOL_MUNPA;
	Msg.Protocol = MP_RMTOOL_MUNPAMEMBERINFO;
	Msg.dwTemplateIdx = tempIdx;

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

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

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

⌨️ 快捷键说明

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