📄 cmsdbmsgparser.cpp
字号:
}
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 + -