📄 mapnetworkmsgparser.cpp
字号:
case MP_USERCONN_SAVEPOINT_SYN:
{
MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
LOGINPOINT_INFO* LoginInfo = GAMERESRCMNGR->GetLoginPointInfo(pmsg->dwData);
ASSERT(LoginInfo);
if(LoginInfo == NULL)
return;
WORD ServerMapNum = GAMERESRCMNGR->GetLoadMapNum();
SavePointUpdate(pmsg->dwObjectID, LoginInfo->Kind, ServerMapNum);
// 甘傈券器牢飘甫 亲惑 0栏肺 悸泼秦霖促.
SaveMapChangePointUpdate(pmsg->dwObjectID, 0);
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
pPlayer->InitMapChangePoint();
pPlayer->SetLoginPoint(LoginInfo->Kind);
}
break;
case MP_USERCONN_BACKTOCHARSEL_SYN:
{
MSGBASE* pmsg = (MSGBASE*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
PARTYMGR->UserLogOut(pPlayer);
FRIENDMGR->UserLogOut(pTempMsg->dwObjectID);
MSGBASE msg;
memcpy(&msg, pmsg, sizeof(MSGBASE));
msg.Protocol = MP_USERCONN_BACKTOCHARSEL_ACK;
g_Network.Send2Server(dwConnectionIndex, (char*)&msg, sizeof(msg));
// 甘酒眶贸府
g_pServerSystem->RemovePlayer(pPlayer->GetID());
//
}
break;
case MP_USERCONN_SETVISIBLE:
{
MSG_DWORD2* pmsg = (MSG_DWORD2*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
pPlayer->SetVisible(FALSE);
PACKEDDATA_OBJ->QuickSendExceptObjectSelf(pPlayer,pmsg,sizeof(MSG_DWORD2));
}
break;
default:
break;
}
}
void MP_MOVEMsgParser(DWORD dwConnectionIndex, char* pMsg, DWORD dwLength)
{
MSGBASE* pTempMsg = (MSGBASE*)pMsg;
switch(pTempMsg->Protocol)
{
case MP_MOVE_TARGET:
{
/*
MOVE_TARGETPOS* pmsg = (MOVE_TARGETPOS*)pMsg;
VECTOR3 Start;
pmsg->spos.Decompress(&Start);
VECTOR3 Target;
pmsg->tpos.Decompress(&Target);
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwMoverID);
if(pPlayer == NULL)
return;
if(pPlayer->GetState() == eObjectState_Die)
return;
//////////////////////////////////////////////////////////////////////////
// 努扼捞攫飘甸狼 面倒 眉农(努扼捞攫飘甸俊辑 窍扁 锭巩俊 鞘夸绝瘤父... 犬牢侩)
// 努扼捞攫飘狼 秦欧殿阑 规瘤窍扁 困秦..
VECTOR3 colpos;
MAPTYPE MapNum = GAMERESRCMNGR->GetLoadMapNum();
if(g_pServerSystem->GetMap()->CollisionCheck(&Start,&Target,&colpos,MapNum))
{
CCharMove::CorrectPlayerPosToServer(pPlayer);
return;
}
//////////////////////////////////////////////////////////////////////////
CCharMove::StartMove(pPlayer,gCurTime,&Start,&Target);
*/
MOVE_TARGETPOS* pmsg = (MOVE_TARGETPOS*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwMoverID);
if(pPlayer == NULL)
return;
if(pPlayer->GetState() == eObjectState_Die)
{
MSG_DWORD msg;
msg.Category = MP_CHAR;
msg.Protocol = MP_CHAR_YOUAREDIED;
pPlayer->SendMsg(&msg,sizeof(msg));
return;
}
if(pPlayer->GetState() == eObjectState_Ungijosik)
{
CCharMove::CorrectPlayerPosToServer(pPlayer);
return;
}
//KES
if(pPlayer->GetState() == eObjectState_Immortal )
{
OBJECTSTATEMGR_OBJ->EndObjectState( pPlayer, eObjectState_Immortal, 0 );
}
if(pmsg->tpos.PosNum >= MAX_CHARTARGETPOSBUF_SIZE)
{
CCharMove::CorrectPlayerPosToServer(pPlayer);
return;
}
//
VECTOR3 Start;
pmsg->GetStartPos(&Start);
VECTOR3* pCurPos = CCharMove::GetPosition(pPlayer);
if(CalcDistanceXZ(pCurPos,&Start) >= 1000)
{
CCharMove::CorrectPlayerPosToServer(pPlayer);
return;
}
pmsg->GetTargetInfo((MOVE_INFO *)pPlayer->GetMoveInfo());
ASSERT(pPlayer->GetMoveInfo()->GetCurTargetPosIdx() < pPlayer->GetMoveInfo()->GetMaxTargetPosIdx());
CCharMove::StartMoveEx(pPlayer,gCurTime,&Start,pPlayer->GetMoveInfo()->GetTargetPosition(pPlayer->GetMoveInfo()->GetCurTargetPosIdx()));
// RaMa
CParty* pParty = PARTYMGR->GetParty(pPlayer->GetPartyIdx());
if(pParty)
{
pParty->SendMemberPos(pPlayer->GetID(), pPlayer->GetMoveInfo());
}
PACKEDDATA_OBJ->QuickSendExceptObjectSelf(pPlayer,pmsg,dwLength);
}
break;
// jsd
case MP_MOVE_ONETARGET:
{
MOVE_ONETARGETPOS* pmsg = (MOVE_ONETARGETPOS*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwMoverID);
if(pPlayer == NULL)
return;
if(pPlayer->GetInited() == FALSE || pPlayer->GetInitedGrid() == FALSE)
return;
if(pPlayer->GetState() == eObjectState_Die)
{
MSG_DWORD msg;
msg.Category = MP_CHAR;
msg.Protocol = MP_CHAR_YOUAREDIED;
pPlayer->SendMsg(&msg,sizeof(msg));
return;
}
if(pPlayer->GetState() == eObjectState_Immortal )
{
OBJECTSTATEMGR_OBJ->EndObjectState( pPlayer, eObjectState_Immortal, 0 );
}
VECTOR3 Start;
pmsg->GetStartPos(&Start);
pmsg->GetTargetInfo((MOVE_INFO *)pPlayer->GetMoveInfo());
ASSERT(pPlayer->GetMoveInfo()->GetCurTargetPosIdx() < pPlayer->GetMoveInfo()->GetMaxTargetPosIdx());
CCharMove::StartMoveEx(pPlayer,gCurTime,&Start,pPlayer->GetMoveInfo()->GetTargetPosition(pPlayer->GetMoveInfo()->GetCurTargetPosIdx()));
// RaMa
CParty* pParty = PARTYMGR->GetParty(pPlayer->GetPartyIdx());
if(pParty)
{
pParty->SendMemberPos(pPlayer->GetID(), pPlayer->GetMoveInfo());
}
MOVE_ONETARGETPOS_FROMSERVER msg;
SetProtocol(&msg,MP_MOVE,MP_MOVE_ONETARGET);
msg.dwObjectID = pPlayer->GetID();
msg.SetStartPos(&Start);
msg.SetTargetPos(pPlayer->GetMoveInfo()->GetTargetPosition(0));
PACKEDDATA_OBJ->QuickSendExceptObjectSelf(pPlayer,&msg,msg.GetSize());
}
break;
//
case MP_MOVE_STOP:
{
MOVE_POS* pmsg = (MOVE_POS*)pMsg;
VECTOR3 pos;
pmsg->cpos.Decompress(&pos);
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwMoverID);
if(pPlayer == NULL)
return;
// 惑怕 函版
//if( !OBJECTSTATEMGR_OBJ->StartObjectState(pPlayer, eObjectState_None, 0) )
// return;
if(pPlayer->GetState() == eObjectState_Move)
OBJECTSTATEMGR_OBJ->EndObjectState(pPlayer,eObjectState_Move);
//////////////////////////////////////////////////////////////////////////
// 努扼捞攫飘甸狼 面倒 眉农(努扼捞攫飘甸俊辑 窍扁 锭巩俊 鞘夸绝瘤父... 犬牢侩)
// 努扼捞攫飘狼 秦欧殿阑 规瘤窍扁 困秦..
VECTOR3 colpos;
VECTOR3* pCurPos = CCharMove::GetPosition(pPlayer);
MAPTYPE MapNum = GAMERESRCMNGR->GetLoadMapNum();
if(g_pServerSystem->GetMap()->CollisionCheck(pCurPos,&pos,&colpos,pPlayer))
{
CCharMove::CorrectPlayerPosToServer(pPlayer);
return;
}
//////////////////////////////////////////////////////////////////////////
// 沥惑利牢 捞悼牢瘤 犬牢窍绊 撇府搁 Correct甫 秦霖促.
if(CCharMove::CheckVaildStop(pPlayer,gCurTime,&pos) == TRUE)
CCharMove::EndMove(pPlayer,gCurTime,&pos); // 沥惑利捞搁 EndMove
PACKEDDATA_OBJ->QuickSendExceptObjectSelf(pPlayer,pmsg,dwLength);
}
break;
case MP_MOVE_WALKMODE:
{
MSGBASE* pmsg = (MSGBASE*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
CCharMove::SetWalkMode(pPlayer);
PACKEDDATA_OBJ->QuickSend(pPlayer,pmsg,dwLength);
}
break;
case MP_MOVE_RUNMODE:
{
MSGBASE* pmsg = (MSGBASE*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
CCharMove::SetRunMode(pPlayer);
PACKEDDATA_OBJ->QuickSend(pPlayer,pmsg,dwLength);
}
break;
case MP_MOVE_KYUNGGONG_SYN:
{
MSG_DWORD2* pmsg = (MSG_DWORD2*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
if(CCharMove::SetKyungGong(pPlayer,(WORD)pmsg->dwData2))
{
pmsg->Protocol = MP_MOVE_KYUNGGONG_ACK;
PACKEDDATA_OBJ->QuickSend(pPlayer,pmsg,dwLength);
}
else
{
pmsg->Protocol = MP_MOVE_KYUNGGONG_NACK;
pPlayer->SendMsg(pmsg,dwLength);
}
}
break;
case MP_MOVE_EFFECTMOVE:
{
MOVE_POS* pmsg = (MOVE_POS*)pMsg;
CObject* pObject = g_pUserTable->FindUser(pmsg->dwMoverID);
if(pObject == NULL)
return;
VECTOR3 pos;
pmsg->cpos.Decompress(&pos);
ASSERTVALID_POSITION(pos);
if(CheckValidPosition(pos) == FALSE)
{
return;
}
CCharMove::SetPosition(pObject,&pos);
// PACKEDDATA_OBJ->QuickSendExceptObjectSelf(pObject,pmsg,dwLength);
}
break;
default:
break;
}
}
void MP_ITEMMsgParser(DWORD dwConnectionIndex, char* pMsg, DWORD dwLength)
{
MSGBASE *pmsg = (MSGBASE *)pMsg;
ITEMMGR->NetworkMsgParse(pmsg->Protocol, pMsg);
/*
MSGBASE* pTempMsg = (MSGBASE*)pMsg;
switch(pTempMsg->Protocol)
{
case MP_ITEM_MOVE_SYN:
{
MSG_ITEM_MOVE_SYN * pmsg = (MSG_ITEM_MOVE_SYN *)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->MoveIcon(pPlayer, pmsg);
}
break;
case MP_ITEM_COMBINE_SYN:
{
MSG_ITEM_COMBINE_SYN * pmsg = (MSG_ITEM_COMBINE_SYN *)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->CombineItem( pPlayer, pmsg );
}
break;
case MP_ITEM_DIVIDE_SYN:
{
MSG_ITEM_DIVIDE_SYN * pmsg = ( MSG_ITEM_DIVIDE_SYN * )pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->DivideItem( pPlayer, pmsg );
}
break;
case MP_ITEM_REM_SYN:
{
MSG_ITEM_REM_SYN * pmsg = (MSG_ITEM_REM_SYN *)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->RemIcon(pPlayer, pmsg);
}
break;
case MP_ITEM_USE_SYN:
{
MSG_ITEM_USE* pmsg = (MSG_ITEM_USE*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->UseItem(pPlayer,pmsg);
}
break;
case MP_ITEM_UPGRADE_SYN:
{
MSG_ITEM_UPGRADE* pmsg = (MSG_ITEM_UPGRADE*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->UpgradeItem(pPlayer,pmsg);
}
break;
case MP_ITEM_BUY_SYN:
{
MSG_WORD* pmsg = (MSG_WORD*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->BuyItem(pPlayer,pmsg);
}
break;
case MP_ITEM_YY_BUY_SYN:
{
MSG_WORD2* pmsg = (MSG_WORD2*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->BuyDupItem(pPlayer,pmsg);
}
break;
case MP_ITEM_SELL_SYN:
{
MSG_ITEM_SELL_SYN * pmsg = (MSG_ITEM_SELL_SYN *)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->SellItem( pPlayer, pmsg );
}
break;
case MP_ITEM_DEALER_SYN:
{
MSG_WORD* pmsg = (MSG_WORD*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
// 烙矫
MSG_WORD msg;
msg.Category = MP_ITEM;
msg.Protocol = MP_ITEM_DEALER_ACK;
msg.dwObjectID = pmsg->dwObjectID;
msg.wData = pmsg->wData;
pPlayer->SendMsg(&msg,sizeof(msg));
}
break;
//////////////////////////////////////////////////////////////////////////
//巩颇
case MP_ITEM_MUNPA_WAREHOUSE_INFO_SYN:
{
MSG_DWORD2* pmsg = (MSG_DWORD2*)pMsg;
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
MUNPAMGR->MunpaWarehouseInfo(pPlayer, pmsg->dwData1, (BYTE)pmsg->dwData2);
}
break;
case MP_ITEM_MUNPA_COMBINE_SYN:
{
MSG_ITEM_COMBINE_SYN * pmsg = (MSG_ITEM_COMBINE_SYN *)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
}
break;
case MP_ITEM_MUNPA_MOVE_SYN:
{
MSG_ITEM_MUNPA_MOVE_SYN * pmsg = (MSG_ITEM_MUNPA_MOVE_SYN *)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
CMunpa* pMunpa = MUNPAMGR->GetMunpa(pmsg->MunpaIDX);
if(pMunpa == NULL)
{
ASSERT(0);
return;
}
ICONMNGR->MoveIconToMunpa(pPlayer, pMunpa, pmsg);
}
break;
case MP_ITEM_MUNPA_WAREHOUSE_LEAVE:
{
MSG_DWORD2* pmsg = (MSG_DWORD2*)pMsg;
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
MUNPAMGR->LeaveWareHouse(pmsg->dwObjectID, pmsg->dwData1, (BYTE)pmsg->dwData2);
}
break;
//////////////////////////////////////////////////////////////////////////
//钎惫
case MP_ITEM_PYOGUK_MOVE_SYN:
{
MSG_ITEM_MUNPA_MOVE_SYN* pmsg = (MSG_ITEM_MUNPA_MOVE_SYN*)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -