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

📄 mapnetworkmsgparser.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:

	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 + -