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

📄 mapnetworkmsgparser.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				ICONMNGR->MoveIconToPyoguk(pPlayer, pmsg);
			}
			break;
		case MP_ITEM_PYOGUK_INFO_SYN:
			{
				MSG_BYTE* pmsg = (MSG_BYTE*)pMsg;
				CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
				if(pPlayer == NULL)
					return;
	
				ICONMNGR->SendPyogukItemInfo(pmsg->bData, pPlayer);	
			}
			break;
		default:
			break;
		} */
	
}
void MP_MUGONGMsgParser(DWORD dwConnectionIndex, char* pMsg, DWORD dwLength)
{
	MSGBASE* pTempMsg = (MSGBASE*)pMsg;
	MUGONGMNGR->NetworkMsgParse(pTempMsg->Protocol, pMsg);
/*
		MSGBASE* pTempMsg = (MSGBASE*)pMsg;
		switch(pTempMsg->Protocol)
		{
		case MP_MUGONG_MOVE_SYN:
			{
				MSG_MUGONG_MOVEINFO * msg = (MSG_MUGONG_MOVEINFO *)pMsg;
				CPlayer * player = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
				MUGONGMGR_OBJ->MoveMugong(player, msg);
			}
			break;
		case MP_MUGONG_ADD_SYN:
			{
				MSG_MUGONG_ADD * msg = (MSG_MUGONG_ADD *)pMsg;
				CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
				if(pPlayer == NULL)
					return;
				MUGONGMGR_OBJ->AddMugong(pPlayer, msg);
			}
			break;
	
		case MP_MUGONG_REM_SYN:
			{
				MSG_MUGONG_REM_SYN * msg = (MSG_MUGONG_REM_SYN *)pMsg;
				CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
				if(pPlayer == NULL)
					return;
				MUGONGMGR_OBJ->RemMugong(pPlayer, msg);
			}
			break;
		case MP_MUGONG_DELETEGROUNDADD_SYN:
			{
			
			}
			break;
		case MP_MUGONG_DELETEINVENTORYADD_SYN:
			{
				MSG_MUGONG_DELINVADD_SYN * msg = (MSG_MUGONG_DELINVADD_SYN *)pMsg;
				// MUGONG DEL
				// INVENTORY ADD
				CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
				if(pPlayer == NULL)
					return;
				MUGONGMGR_OBJ->AddMugongInInventory(pPlayer, msg);		// include DB
			}
			break;
		default:
			break;
		} */
	
}
void MP_CHEATMsgParser(DWORD dwConnectionIndex, char* pMsg, DWORD dwLength)
{
	MSGBASE* pTempMsg = (MSGBASE*)pMsg;
	CPlayer* pSender = (CPlayer*)g_pUserTable->FindUser( pTempMsg->dwObjectID );
	if(pSender)
	{
		if( pSender->GetUserLevel() > 5 )
		{
			char buf[64];
			sprintf(buf, "User Lvl Chk! Character_idx : %d", pTempMsg->dwObjectID);
			ASSERTMSG(0, buf);
			return;
		}
	}
	switch(pTempMsg->Protocol)
	{

	case MP_CHEAT_WHEREIS_SYN:
		{
			MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;

			CPlayer* pSearcher	= (CPlayer*)g_pUserTable->FindUser( pmsg->dwObjectID );
			CPlayer* pTarget	= (CPlayer*)g_pUserTable->FindUser( pmsg->dwData );
			if( !pTarget )
			{
				MSG_BYTE msg;
				msg.Category	= MP_CHEAT;
				msg.Protocol	= MP_CHEAT_WHEREIS_NACK;
				msg.dwObjectID	= pmsg->dwObjectID;
				msg.bData		= CHATERR_ERROR;
				if( pSearcher )
					pSearcher->SendMsg( &msg, sizeof( msg ) );
				else
					g_Network.Send2Server( dwConnectionIndex, (char*)&msg, sizeof(msg) );

				return;
			}

			MSG_WHERE_INFO msgWhere;
			msgWhere.Category	= MP_CHEAT;
			msgWhere.Protocol	= MP_CHEAT_WHEREIS_MAPSERVER_ACK;
			msgWhere.dwObjectID	= pmsg->dwObjectID;
			msgWhere.wMapNum	= g_pServerSystem->GetMapNum();
			msgWhere.bChannel	= pTarget->GetGridID();

			VECTOR3 TargetPos = *CCharMove::GetPosition(pTarget);
			msgWhere.cpos.Compress(&TargetPos);

			if( pSearcher )
				pSearcher->SendMsg( &msgWhere, sizeof( msgWhere ) );
			else
				g_Network.Send2Server( dwConnectionIndex, (char*)&msgWhere, sizeof( msgWhere ) );
		}
		break;
	case MP_CHEAT_HIDE_SYN:
		{
			MSG_NAME_DWORD* pmsg = (MSG_NAME_DWORD*)pMsg;
//			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
//			if(pPlayer == NULL)
//				return;
			CPlayer* pPlayer;

			if( pmsg->Name[0] == 0 )	//hero
				pPlayer = (CPlayer*)g_pUserTable->FindUser( pmsg->dwObjectID );
			else
				pPlayer = (CPlayer*)g_pUserTable->FindUserForName( pmsg->Name );
			if( !pPlayer )	return;
			
			if( pmsg->dwData == 1 )
				pPlayer->SetVisible(FALSE);
			else
				pPlayer->SetVisible(TRUE);

			MSG_DWORD2 msg;
			msg.Category	= MP_CHEAT;
			msg.Protocol	= MP_CHEAT_HIDE_ACK;
			msg.dwObjectID	= pPlayer->GetID();
			msg.dwData1		= pPlayer->GetID();
			msg.dwData2		= pmsg->dwData;

			PACKEDDATA_OBJ->QuickSend( pPlayer, &msg, sizeof(MSG_DWORD2) );
		}
		break;
//	case MP_CHEAT_BANCHARACTER_SYN:
//		{
//			MSG_NAME* pmsg = (MSG_NAME*)pMsg;
//			CPlayer* pPlayer = g_pUserTable->FindUser(pmsg->dwObjectID);
//			if(!pPlayer) break;
//			CPlayer* pBanPlayer = 
//		}
//		break;
	case MP_CHEAT_PKALLOW_SYN:
		{
			MSG_WORD2* pmsg = (MSG_WORD2*)pMsg;
			BOOL bAllow = (BOOL)pmsg->wData2;
			PKMGR->SetPKAllowWithMsg( bAllow );
		}
		break;

	case MP_CHEAT_MOVETOCHAR_SYN:
		{
			MSG_NAME_DWORD* pmsg = (MSG_NAME_DWORD*)pMsg;

			CObject* pPlayer = g_pUserTable->FindUser( pmsg->dwObjectID );
			if( !pPlayer ) return;
			CObject* pTarget = g_pUserTable->FindUserForName( pmsg->Name );			
			if( !pTarget ) return;
			
			VECTOR3 TargetPos;

			MOVE_POS msg;
			msg.Category	= MP_CHEAT;
			msg.Protocol	= MP_CHEAT_MOVE_ACK;

			if( pmsg->dwData == 0 )
			{
				TargetPos = *CCharMove::GetPosition(pTarget);
				CCharMove::SetPosition( pPlayer,&TargetPos);
				msg.cpos.Compress(&TargetPos);
				((CPlayer*)pPlayer)->SendMsg( &msg, sizeof(msg) );
			}
			else
			{
				TargetPos = *CCharMove::GetPosition(pPlayer);
				CCharMove::SetPosition( pTarget,&TargetPos);
				msg.cpos.Compress(&TargetPos);
				((CPlayer*)pTarget)->SendMsg( &msg, sizeof(msg) );
				//弊府靛俊父 焊郴搁 登绰啊?
			}

/*			
			MOVE_POS* pmsg = (MOVE_POS*)pMsg;
			VECTOR3 pos;
			CObject* pObject = g_pUserTable->FindUser(pmsg->dwObjectID);
			if(pObject == NULL)
				return;
			CObject* pTargetObject = g_pUserTable->FindUser(pmsg->dwMoverID);		// targetID
			if(pTargetObject == NULL)
				return;
			VECTOR3 TargetPos = *CCharMove::GetPosition(pTargetObject);
			CCharMove::SetPosition(pObject,&TargetPos);
			pmsg->cpos.Compress(&TargetPos);

			pmsg->Protocol = MP_CHEAT_MOVE_ACK;

			((CPlayer*)pObject)->SendMsg(pmsg,sizeof(MOVE_POS));
*/
		}
		break;
	case MP_CHEAT_MOVE_SYN:
		{
			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);

			pmsg->Protocol = MP_CHEAT_MOVE_ACK;

			((CPlayer*)pObject)->SendMsg(pmsg,sizeof(MOVE_POS));

		}
		break;
		
	case MP_CHEAT_MOVEUSER_SYN:
		{
			MOVE_POS_USER* pmsg = (MOVE_POS_USER*)pMsg;

			CObject* pObject = g_pUserTable->FindUserForName(pmsg->Name);
			if(pObject == NULL)
				return;

			VECTOR3 pos;
			pmsg->cpos.Decompress(&pos);
			CCharMove::SetPosition(pObject,&pos);

			MOVE_POS posMsg;
			posMsg.Category = MP_CHEAT;
			posMsg.Protocol = MP_CHEAT_MOVE_ACK;
			posMsg.cpos.Compress(&pos);

			((CPlayer*)pObject)->SendMsg(&posMsg,sizeof(posMsg));
			//郴 弊府靛俊父 焊辰促?
		}
		break;
		
	case MP_CHEAT_CHANGEMAP_SYN:
		{
/*			MSG_WORD* pmsg = (MSG_WORD*)pMsg;
			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
			pmsg->Protocol = MP_CHEAT_CHANGEMAP_ACK;
			pPlayer->SendMsg(pmsg,sizeof(MSG_WORD));
*/
			MSG_NAME_DWORD2* pmsg = (MSG_NAME_DWORD2*)pMsg;
			CPlayer* pPlayer;

			if( pmsg->Name[0] == 0 )
				pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
			else
				pPlayer = (CPlayer*)g_pUserTable->FindUserForName(pmsg->Name);

			if(pPlayer == NULL)
				return;

			if( CHANNELSYSTEM->GetChannelID( pmsg->dwData2 ) == 0 )
			{
				MSG_DWORD msg;
				msg.Category	= MP_CHEAT;
				msg.Protocol	= MP_CHEAT_CHANGEMAP_NACK;
				msg.dwData		= pPlayer->GetGridID() - 1;
				pPlayer->SendMsg( &msg, sizeof( msg ) );
				return;
			}
				
			MAPCHANGE_INFO* ChangeInfo = GAMERESRCMNGR->GetMapChangeInfoForDestMapNum( (WORD)pmsg->dwData1 );
			if( !ChangeInfo ) return;	//nackif( !ChangeInfo ) return;	//nack
			SaveMapChangePointUpdate( pPlayer->GetID(), ChangeInfo->Kind );
					
			g_pServerSystem->RemovePlayer( pPlayer->GetID() );

			MSG_DWORD msg;
			msg.Category	= MP_USERCONN;
			msg.Protocol	= MP_USERCONN_MAP_OUT_WITHMAPNUM;
			msg.dwObjectID	= pPlayer->GetID();
			msg.dwData		= pmsg->dwData1;

			g_Network.Broadcast2AgentServer( (char*)&msg, sizeof(msg));
		}
		break;
	case MP_CHEAT_LIFE_SYN:
		{
		}
		break;
	case MP_CHEAT_MP_SYN:
		{
			
		}
		break;
	case MP_CHEAT_ITEM_SYN:
		{
			MSG_WORD2* pmsg = (MSG_WORD2*)pMsg;
			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
			if(!pPlayer) return;
			if(ITEMMGR->GetItemInfo(pmsg->wData1))
				ITEMMGR->CheatObtainItem( pPlayer, pmsg->wData1, pmsg->wData2 );

//			if(ITEMMGR->MonsterObtainItem(pPlayer, pmsg->wData1, 0) == 0)
//			{
				//if(pPlayer->GetPartyIdx())
				//{
				//	PARTYMGR->SendObtainItemMsg(pPlayer, pmsg->wData);	
				//}
//			}
		}
		break;
	case MP_CHEAT_MANA_SYN:
		{
			MSG_WORD* pmsg = (MSG_WORD*)pMsg;
			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
			if(!pPlayer) return;
			int tmp = pPlayer->GetMaxNaeRyuk() - (pPlayer->GetNaeRyuk()+pmsg->wData);
			if(tmp < 0)
				pPlayer->SetNaeRyuk(pPlayer->GetMaxNaeRyuk());
			else
				pPlayer->SetNaeRyuk(pPlayer->GetNaeRyuk()+pmsg->wData);
		}
		break;
		
	case MP_CHEAT_ADDMUGONG_SYN:
		{
			MSG_WORD3* pmsg = (MSG_WORD3*)pMsg;
			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
			if(!pPlayer) return;

			MUGONGBASE* info = pPlayer->GetMugongBaseByMugongIdx(pmsg->wData1);
			if(info != NULL)
				return;

			MSGBASE msg;
			msg.Category = MP_CHEAT;
			if( MUGONGMNGR->AddMugong(pPlayer, pmsg->wData1, pmsg->wData2) )
			{
				msg.Protocol = MP_CHEAT_ADDMUGONG_ACK;
				LogCheat(pPlayer->GetID(),eCHT_AddMugong,pmsg->wData2,pmsg->wData1,0);
			}
			else
			{
				msg.Protocol = MP_CHEAT_ADDMUGONG_NACK;
			}
			pPlayer->SendMsg( &msg, sizeof(msg) );
		}
		break;
	case MP_CHEAT_MUGONGSUNG_SYN:
		{
			MSG_WORD2* pmsg = (MSG_WORD2*)pMsg;
			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
			if(!pPlayer) return;

			MUGONGBASE* info = pPlayer->GetMugongBaseByMugongIdx(pmsg->wData1);
			if(info == NULL)
				return;

			pPlayer->SetPlayerMugongSung(info->Position,(BYTE)pmsg->wData2,eLog_MugongCheatLevelup);
			LogCheat(pPlayer->GetID(),eCHT_MugongSung,pmsg->wData2,pmsg->wData1,0);

			info->ExpPoint = 0;
			
			MSG_MUGONGEXP msg;
			msg.Category	= MP_MUGONG;
			msg.Protocol	= MP_MUGONG_EXPPOINT_NOTIFY;
			msg.absPos		= info->Position;
			msg.ExpPoint	= info->ExpPoint;
			pPlayer->SendMsg(&msg,sizeof(msg));

			if(info->Sung == 6 || info->Sung == 11)
			{
				CSkillInfo* pSkillInfo = SKILLMGR->GetSkillInfo(info->wIconIdx);
				if(pSkillInfo == NULL)
					return;
				pPlayer->AddExpPointToMugong(info->wIconIdx,pSkillInfo->GetNeedExp(info->Sung),FALSE);
			}

		}
		break;
		
	case MP_CHEAT_MONEY_SYN:
		{
			MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
			if(!pPlayer) return;

			if( pPlayer->GetMoney() > pmsg->dwData )
				pPlayer->SetMoney(pPlayer->GetMoney() - pmsg->dwData, MONEY_SUBTRACTION, 0, eItemTable_Inventory, eMoneyLog_GetCheatMoney, 0);
			else if( pPlayer->GetMoney() < pmsg->dwData )
				pPlayer->SetMoney(pmsg->dwData - pPlayer->GetMoney(), MONEY_ADDITION, 0, eItemTable_Inventory, eMoneyLog_GetCheatMoney, 0);
			
			LogCheat(pPlayer->GetID(),eCHT_Money,pmsg->dwData,0,0);
		}
		break;

	case MP_CHEAT_RELOADING:
		{
			g_pServerSystem->ReloadResourceData();
		}
		break;

	case MP_CHEAT_LEVELUP_SYN:
		{
			MSG_WORD* pmsg = (MSG_WORD*)pMsg;
			CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
			if(!pPlayer) 
				return;
			EXPTYPE pointForLevel=0;
			LEVELTYPE curlvl = pPlayer->GetLevel();
			if(curlvl > pmsg->wData)
				return;
			else
			{
				LEVELTYPE diff = pmsg->wData - curlvl;
				for(LEVELTYPE i=0; i<diff; ++i)
				{
					pointForLevel = pointForLevel + GAMERESRCMNGR->GetMaxExpPoint(pPlayer->GetLevel()+i);
					
				}
				pPlayer->SetLevel(pmsg->wData-1);
				pPlayer->SetPlayerExpPoint(pointForLevel);
				pPlayer->SetPlayerExpPoint(1);					
				
				// YH
				CharacterHeroInfoUpdate(pPlayer);
				CharacterTotalInfoUpdate(pPlayer);		

				LogCheat(pPlayer->GetID(),eCHT_LevelUp,pmsg->wData,0,0);		
			}
		}
		break;

⌨️ 快捷键说明

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