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

📄 cudpsocket.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	SendtoPacket( pUDPPacket );
}


////////////////////////////////////////////////////////////////////////////////////////
//	秦寸 荤侩磊 茫扁
//
//
////////////////////////////////////////////////////////////////////////////////////////
void CUdpSocket::FindPlayer(_LPSOCKET_FD lpSocketFd ,char * lpPlayerID, BYTE nOP ) 
{
	_LPUDPPACKET			lpSendPacket	= (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;
	
	_LPZC_FINDPLAYER_ASK	lpPacket		= (_LPZC_FINDPLAYER_ASK)lpSendPacket->strPacket;
		
	lpSendPacket->dwCommand		= ZC_FINDPLAYER_ASK ;
	memcpy(lpPacket->strPlayerID, lpPlayerID,20) ;
	memcpy(lpPacket->cIp,_Module.m_szUdpIP,20 );
	lpPacket->wPort				= _Module.m_nMapPORT ;		 
	lpSendPacket->pSocketFD		= lpSocketFd ;
	lpPacket->nOP = nOP ;

	lpPacket->dwMapID	= g_pMap->GetMapSeq(lpSocketFd->pPlayer->m_nMapLayer )  ;

	lpPacket->wX = lpSocketFd->pPlayer->m_Tile.x ;
	lpPacket->wY = lpSocketFd->pPlayer->m_Tile.y ;

	SendtoWorldServer(lpSendPacket) ;
}

////////////////////////////////////////////////////////////////////////////////////////
//	GM疙飞阑 辑滚肺 傈价窃
//
////////////////////////////////////////////////////////////////////////////////////////
void CUdpSocket::ServerCommand(_LPSOCKET_FD lpSocketFd,BYTE nServerCommand,bool bOnOff )
{
	_LPUDPPACKET lpSendPacket = (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;
	
	_LPZC_SERVERCOMMAND lpPacket	= (_LPZC_SERVERCOMMAND)		lpSendPacket->strPacket ;
		
	lpSendPacket->dwCommand		= ZC_SERVERCOMMAND  ;
	lpSendPacket->pSocketFD		= lpSocketFd ;

	lpPacket->dwMapID	= 0 ;

	lpPacket->nCOMMAND	= nServerCommand ;

	lpPacket->bOnOff	= bOnOff ;

	SendtoWorldServer(lpSendPacket) ;
}


////////////////////////////////////////////////////////////////////////////////////////
//	漂沥 荤侩磊俊霸 郴府绰 COMMAND
//	Jason 2004-07-22
//
////////////////////////////////////////////////////////////////////////////////////////
//void CUdpSocket::ServerCommand(_LPSOCKET_FD lpSocketFd,BYTE nServerCommand, char* pCharId, bool bOnOff )
//Jason Added
void CUdpSocket::ServerCommand(_LPSOCKET_FD lpSocketFd,BYTE nServerCommand, char* pGMID, char* pCharId, bool bOnOff )
{
	_LPUDPPACKET lpSendPacket = (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;
	
	_LPZC_SERVERCOMMAND lpPacket	= (_LPZC_SERVERCOMMAND)		lpSendPacket->strPacket ;
		
	lpSendPacket->dwCommand		= ZC_SERVERCOMMAND  ;
	lpSendPacket->pSocketFD		= lpSocketFd ;

	lpPacket->dwMapID	= 0 ;

	lpPacket->nCOMMAND	= nServerCommand ;

	lpPacket->bOnOff	= bOnOff ;

	_tcscpy(lpPacket->strPlayerID, pCharId);

	SendtoWorldServer(lpSendPacket) ;
}


////////////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////////////
void CUdpSocket::PartyChat(_LPZW_PARTYCHAT_ASK lpPartyChat_Ask ) 
{

	_LPUDPPACKET lpSendPacket = (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;

	lpSendPacket->dwCommand = ZC_PARTYCHAT_ASK ;

	memcpy(lpSendPacket->strPacket,lpPartyChat_Ask,sizeof(_ZW_PARTYCHAT_ASK)) ;

	SendtoWorldServer(lpSendPacket) ;
}


////////////////////////////////////////////////////////////////////////////////////////
//	UDP Message肺 辨靛 傍瘤 皋矫瘤甫 傈价窃
//
////////////////////////////////////////////////////////////////////////////////////////
void CUdpSocket::SendGuildNotice(_LPZP_GUILDMSG_ASK lpGuildNotice ) 
{
	_LPUDPPACKET lpSendPacket = (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;

	lpSendPacket->dwCommand = ZC_GUILD_NOTICE;

	_LPZC_GUILDMSG_ASK p = (_LPZC_GUILDMSG_ASK) lpSendPacket->strPacket ;

	memcpy(&p->lpGuildMsg,lpGuildNotice,sizeof(_ZP_GUILDMSG_ASK)) ;

	p->dwMapID = 0  ;
	
	SendtoWorldServer(lpSendPacket) ;
}


#ifdef DEF_GUILDBANK

////////////////////////////////////////////////////////////////////////////////////////
//	UDP Message肺 辨靛 傍瘤 皋矫瘤甫 傈价窃
//
////////////////////////////////////////////////////////////////////////////////////////
void CUdpSocket::SendGuildNotice( char *pGuildName, char *pMsg )
{
	_LPUDPPACKET lpSendPacket = (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;

		lpSendPacket->dwCommand = ZC_GUILD_NOTICE;
		
		_LPZC_GUILDMSG_ASK p = (_LPZC_GUILDMSG_ASK) lpSendPacket->strPacket ;
		p->dwMapID = 0  ;		//	World Server俊辑 葛电 Map Server俊 傈价窃

		_LPZP_GUILDMSG_ASK	pGuildMsg = (_LPZP_GUILDMSG_ASK)(&p->lpGuildMsg);

		pGuildMsg->nType			=	4;									//	犬牢饶 昏力 贸府窃
		memcpy( pGuildMsg->strGuildName	, pGuildName,	PLAYERID_LEN);
		memcpy( pGuildMsg->strPlayerID	, pGuildName,	PLAYERID_LEN);		//	犬牢饶 昏力 贸府窃
		memcpy( pGuildMsg->strMsg		, pMsg,			100			);
		
		SendtoWorldServer(lpSendPacket) ;
}



#endif


////////////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////////////
void CUdpSocket::SendChatMsg(_LPSOCKET_FD lpSocketFd ,_LPZP_CHATWHISPER_ASK lpPacket ) 
{

	_LPUDPPACKET lpSendPacket = (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;

	lpSendPacket->dwCommand = ZC_CHATWHISPER_ASK ;

	_LPZC_CHATWHISPER_ASK lpChatWisper = (_LPZC_CHATWHISPER_ASK)	lpSendPacket->strPacket ;

	memcpy(lpChatWisper,lpPacket,sizeof(_ZP_CHATWHISPER_ASK))  ;

	memcpy(lpChatWisper->cIp,_Module.m_szUdpIP,20 );

	lpChatWisper->wPort		= _Module.m_nMapPORT ;

	lpSendPacket->pSocketFD = lpSocketFd ;

	SendtoWorldServer(lpSendPacket) ;
}


////////////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////////////
void CUdpSocket::SendNoticeMsg(DWORD dwMapID,char * lpMsg ) 
{
	_LPUDPPACKET lpSendPacket = (_LPUDPPACKET) m_pUDPIOPool->Alloc() ;

	lpSendPacket->dwCommand = ZC_NOTICE ;

	_LPZW_NOTICEMSG lpNotice = (_LPZW_NOTICEMSG)	lpSendPacket->strPacket ;

	memcpy(lpNotice->strMsg ,lpMsg,100)  ;

	lpNotice->dwMapID = dwMapID ;

	SendtoWorldServer(lpSendPacket) ;
}



////////////////////////////////////////////////////////////////////////////////////////
//	UDP 
//
////////////////////////////////////////////////////////////////////////////////////////
bool CUdpSocket::bInit(char * pIPAddr,int iPort)
{
	SOCKADDR_IN saTemp;

	if (!bCreateSock()) 
	{
#ifdef DEF_JASONTEST
		ErrorMsg("Error: File Name(%s), Line(%d)", __FILE__, __LINE__ );
#endif
		return false ;
	}

#ifdef DEF_NEWREGISTRY
	m_pUDPIOPool = new CMemPool<_UDPPACKET>(_Module.m_dwMaxUser);	
#else
	m_pUDPIOPool = new CMemPool<_UDPPACKET>(MAX_SOCKET_CONTEXT);
#endif

	saTemp.sin_family = AF_INET;
	saTemp.sin_port = ::htons(iPort);

	// 林家甫 瘤沥窍瘤 臼疽促. 磊悼栏肺 且寸. 
	if (NULL == pIPAddr)
	{
		saTemp.sin_addr.s_addr = ::htons(INADDR_ANY) ; 
	}
	else 
	{
		saTemp.sin_addr.s_addr = inet_addr(pIPAddr );
	}

	int reuse = 1;

	int nRet = setsockopt(m_ListenSock, SOL_SOCKET, SO_REUSEADDR, (char FAR *)&reuse, sizeof(int));     
	if (nRet == SOCKET_ERROR) 
	{     
		ErrorMsg( "(X) UDP Reuse addr error" );
	} 

	if (bind(m_ListenSock, (struct sockaddr *) &saTemp, sizeof(saTemp)) == SOCKET_ERROR)
	{
		wsprintf(m_cMsg,"Bind Error: %d\n", WSAGetLastError());
		OutputDebugString(m_cMsg);

		CLOSESOCKET(m_ListenSock);

		return false;
	}

	//	焊尘 绢靛饭胶俊 包茄 汲沥 
	m_SendAddr.sin_family = AF_INET;
	m_SendAddr.sin_port = htons( _Module.m_nWorldPORT  );    
	m_SendAddr.sin_addr.s_addr =  inet_addr(_Module.m_szWorldIP );


	m_LogAddr.sin_family = AF_INET;
	m_LogAddr.sin_port = htons( _Module.m_nLogPORT  );    
	m_LogAddr.sin_addr.s_addr =  inet_addr(_Module.m_szLogIP );


	//	thread Start 
	if (!bStartThread()) return false ;


	for(int i =0; i < DEF_MAXCONTROLPACKET; i++ )
	{
		OnTransFunc[i].proc	= UDPPacket_Nothing;
	}


	//
	//	龋免且 窃荐 捞抚阑 窃荐 器牢磐 硅凯俊 笼绢 持绰促. 
	//
 	OnTransFunc[ZC_FINDPLAYER_ASK	].proc	= UDPPacket_Ask_FindPlayer;
	OnTransFunc[ZC_FINDPLAYER_REP	].proc	= UDPPacket_Rep_FindPlayer;

	OnTransFunc[ZC_CHATWHISPER_ASK	].proc	= UDPPacket_Ask_ChatWhisper;
	OnTransFunc[ZC_CHATWHISPER_REP	].proc	= UDPPacket_Rep_ChatWhisper;

	OnTransFunc[ZC_PARTYCHAT_ASK	].proc	= UDPPacket_Ask_PartyChat;
	OnTransFunc[ZC_NOTICE			].proc	= UDPPacket_Notice;
	OnTransFunc[ZC_GUILD_NOTICE		].proc	= UDPPacket_GuildNoticeMsg;
	OnTransFunc[ZC_SERVERCOMMAND	].proc	= UDPPacket_ServerCommand;

	return (true);
}

////////////////////////////////////////////////////////////////////////////////////////
//	MAP SERVER秦寸	PLAYER沥焊 夸没
//
////////////////////////////////////////////////////////////////////////////////////////
void UDPPacket_Ask_FindPlayer(_LPUDPSOCKET lpUdpSocket  ,_LPUDPPACKET lpUdpPacket) 
{
	_LPZC_FINDPLAYER_ASK p = (_LPZC_FINDPLAYER_ASK)lpUdpPacket->strPacket;
	
	_LPUDPPACKET lpPacket = (_LPUDPPACKET) lpUdpSocket->m_pUDPIOPool->Alloc() ;

	_LPZC_FINDPLAYER_REP lpSendPacket = (_LPZC_FINDPLAYER_REP)		lpPacket->strPacket ;

	memcpy(lpSendPacket, p,sizeof(_ZC_FINDPLAYER_ASK)) ;

	lpPacket->pSocketFD = lpUdpPacket->pSocketFD ;
	

	//	庇富 惑措甫 茫澜 
	_LPSOCKET_FD pToSocket = g_pMap->Find_Player( p->strPlayerID );
	
	if (pToSocket)
	{
		if( p->nOP == GM_CMD_SUMMONPLAYER)
		{
			_LPZEMIPACKET lpSendPacket  =	 g_pServerMem->ZemiPacket_Pop();	
			
				_LPZG_MOVEMAP_ASK	pMoveMap = (_LPZG_MOVEMAP_ASK)lpSendPacket->strPacket;

				memcpy( pMoveMap->strPlayerID, p->strPlayerID, sizeof( pMoveMap->strPlayerID ) );
				pMoveMap->dwMapID		=	p->dwMapID;
				pMoveMap->nX			=	p->wX;
				pMoveMap->nY			=	p->wY;

				PacketGM_MoveMap(g_pServer, pToSocket, lpSendPacket );
					
			g_pServerMem->ZemiPacket_Push( lpSendPacket );
			
		}
		else
		{

			if( p->nOP == GM_CMD_TELEPORTPLAYER)
			{
				lpSendPacket->dwMapID = g_pMap->GetMapSeq( pToSocket->pPlayer->m_nMapLayer ) ;
			}

			lpSendPacket->wX = pToSocket->pPlayer->m_Tile.x ;
			lpSendPacket->wY = pToSocket->pPlayer->m_Tile.y ;

			// 庇加富 汲沥捞 登绢 乐栏搁 
			if(pToSocket->pPlayer->m_bOptionWhisper )
				lpSendPacket->nResult = 1 ;
			// 庇加富 芭何 汲沥捞搁 
			else 
				lpSendPacket->nResult = 2 ;
		}
		
	}
	else
	{
		lpSendPacket->nResult = 0 ;
	}

	lpPacket->dwCommand = ZC_FINDPLAYER_REP ;

	lpUdpSocket->SendtoWorldServer(lpPacket) ;

}

⌨️ 快捷键说明

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