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

📄 mapserversocket.h

📁 韩国英雄王座倒闭后流出来部分源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
////////////////////////////////////////////////////////////////////////////////////////
//	MapServerSocket.h
//
//
//
////////////////////////////////////////////////////////////////////////////////////////
#if !defined( _MAPSERVERSOCKET_H__)
#define _MAPSERVERSOCKET_H__

#include <process.h>

#include "tgaBase.h"					//	struct
#include "MemPool.h"					//	皋葛府钱
#include "XPtrList.h"					//	犬厘 CPtrList
#include "SafeMap.h"					//	STL MAP

#include "map.h"						// MAP
#include "BaseData.h"					// Data Base Data

#include "MapDBAccess.h"				// DATA BASE 

#ifdef DEF_AUTHCODE
	#include "AuthCode.h"
#endif

#ifdef DEF_KUMA_GAMBLE
	#include "Gamble.h"
#endif

#ifdef DEF_AZIT
	#include "Azit.h"					//	Azit
#endif

bool	IsSocketValidity( _LPSOCKET_FD pSocketFD );
bool	IsPlayerConnect( _LPSOCKET_FD pSocketFD );

class MapServerSocket ;
typedef MapServerSocket * _LPMAPSOCK ;

////////////////////////////////////////////////////////////////////////////////////////
//	
//
////////////////////////////////////////////////////////////////////////////////////////
class MapServerSocket 
{
public:
	MapServerSocket();
	~MapServerSocket();

	BOOL				m_bPKMode;					//	true PK Mode / false NON-PK Mode

#ifdef DEF_SECURITYPACKET
	int		m_iSeedLength ;
	char 	m_sSeed[40] ;
	char 	m_sSeedKey[20] ;
#endif
	
private:

	//	--------------------------------------------------------------------------------
	//	荤侩磊 包府 Linked-List / STL Map
	//	--------------------------------------------------------------------------------
	CXPtrList	m_listConnection;					//	立加 client 府胶飘


#if defined(DEF_SPEEDHACK) || defined(DEF_KORSPEEDHACK)
	CXPtrList	m_listHackingConnection;					//	秦欧 立加  秦瘤 client 府胶飘
#endif

	CMemPool<_PER_IO_CONTEXT>*	m_pSendIOPool;		//	IO
	CMemPool<_PER_IO_CONTEXT>*	m_pRecvIOPool;		//	IO

	HANDLE		m_hIOCP;							//	IOCP handle

	HANDLE		m_hIOCPThreads[MAX_WORKER_THREAD];	//	IOCP Work Threads
	DWORD		m_dwThreadCount;					//	角 iocp work thread 肮荐

	SOCKET		m_SocketListen;						//	Listen Socket
	
	//	--------------------------------------------------------------------------------
	//	Completed Read 
	//	--------------------------------------------------------------------------------
	HANDLE		m_hReadEventCompleted;				//	IO READ 肯丰登菌澜阑 舅覆
	CXPtrList	m_listReadCompleted;				//	肯丰等 IO 钮, 贸府甫 扁促赴促.

#ifdef DEF_AUTHCODE
	//Jason 2004-10-06
	CAuthCode	m_auth;
#endif

public:

#ifdef DEF_KUMA_GAMBLE	
	CGamble		m_Gamble;
#endif

	char		m_cMsg[100] ;

	void CLOSEHANDLE( HANDLE &x )		//	Close Handle
	{
		if( x != NULL )
		{
			CloseHandle(x);
			x = NULL;
		}
	}

	void CLOSESOCKET( SOCKET &x )
	{
		if( x != INVALID_SOCKET ){
			closesocket(x);
			x = INVALID_SOCKET;
		}
	}

	void CLOSEEVENT( HANDLE &x )
	{
		if( x != NULL ){
			SetEvent(x);
			CloseHandle(x);
			x = NULL;
		}
	}

public:

	// 2005-1-7 badajoa
	// 努扼捞攫飘肺 弊成 焊郴绰 菩哦捞 腹酒辑 袍敲复阑 父甸菌促.
	template < typename PacketPoint	>  

	void  PacketSend_ToClient( _LPSOCKET_FD pSocketFD, DWORD dwPacketID, PacketPoint lpPacket )
	{
		_LPZEMIPACKET lpSendPacket	=	g_pServerMem->ZemiPacket_Pop();

			lpSendPacket->dwCommand		=	dwPacketID ;
			lpSendPacket->dwSize		=	sizeof( *lpPacket);		

			memcpy(lpSendPacket->strPacket,lpPacket , sizeof(*lpPacket) ) ;

			Send_Single( pSocketFD, lpSendPacket );

		g_pServerMem->ZemiPacket_Push(  lpSendPacket );
	}

	void PacketSend_NPCMenuClose(_LPSOCKET_FD pSocketFD, BYTE pNPCType );

	void PacketSend_Emoticon(_LPSOCKET_FD pSocketFD, _LPZP_EMOTICON_ASK pPacket );
	void PacketSend_ChangeAlign(_LPSOCKET_FD pSocketFD);


	void PacketSend_MultiNotConnect();



	void CloseClient(_LPSOCKET_FD lpSktContext );


	//	Jason 2004-07-22
	void UserTrace(_LPSOCKET_FD p, DWORD dwCommand);
	void LogTrace_Player(_LPSOCKET_FD pSockketFD, char* pOption, char* pCharId);

	//Jason 2004-08-26-china
	void ShutdownServer();

#ifdef DEF_AUTHCODE
	//	Jason 2004-10-06
	void Load_AuthCode();
#endif

	
	//	--------------------------------------------------------------------------------
	//	檬扁拳 包访 Functions
	//	--------------------------------------------------------------------------------
	bool Initialize();

	BOOL InitializeEvent();	
	BOOL InitializeNetwork(LPSTR pAddress, UINT pPort);
	BOOL InitializeThread();
	
	_LPPER_IO_CONTEXT	CreateIOContext(_IO_TYPE io);
	_LPSOCKET_FD		CreateSocketContext();




	//	--------------------------------------------------------------------------------
	//	立加 包访 Functions
	//	--------------------------------------------------------------------------------	
	void PacketSend_PlayerNew( _LPSOCKET_FD pSocketFD );	
	void PacketSend_PlayerDelete( _LPSOCKET_FD pSocketFD, DWORD pPlayerHandle );
	void PacketSend_PlayerUpdate(_LPSOCKET_FD pSocketFD);

	void PacketSend_PlayerStart(_LPSOCKET_FD pSocketFD );
	void PacketSend_PlayerBase( _LPSOCKET_FD pSocketFD, _LPZP_PLAYERBASE_REP pPlayerBase );	//	纳腐 扁夯 沥焊 傈价 
	void PacketSend_PlayerList(_LPSOCKET_FD pSocketFD);					//	PC LIST 沥焊
	void PacketSend_SellList(_LPSOCKET_FD pSocketFD);					//	NPC 魄概 ITEM沥焊 
	void PacketSend_ItemSlotList(_LPSOCKET_FD pSocketFD);				//	ITEM SLOT 府胶飘 傈价 // Jason 2004-06-02



	void PacketSend_AzitStatus		(_LPSOCKET_FD pSocketFD, _LPZW_AZITSTATUSLIST_REP pAzitInfo );

	void PacketSend_InventoryAct	(_LPSOCKET_FD pSocketFD, _LPZP_INVENTORYACT_ASK pPacket );

#ifdef 	DEF_GUILDBIGMONEY_BADAJOA20050622
	void PacketSend_GuildBankInfo	(_LPSOCKET_FD pSocketFD, __int64 pBankMoney, BYTE pBankTab );
	void PacketSend_GuildBankUpdate	(_LPSOCKET_FD pSocketFD, __int64 pBankMoney, BYTE pBankTab );
	
#else // #ifdef 	DEF_GUILDBIGMONEY_BADAJOA20050622
	void PacketSend_GuildBankInfo	(_LPSOCKET_FD pSocketFD, int pBankMoney, BYTE pBankTab );
	void PacketSend_GuildBankUpdate	(_LPSOCKET_FD pSocketFD, int pBankMoney, BYTE pBankTab );
#endif // #ifdef 	DEF_GUILDBIGMONEY_BADAJOA20050622

	
	//	--------------------------------------------------------------------------------
	//	Quest Send Functions
	//	--------------------------------------------------------------------------------

	//
	//	Quest惑怕 包访 Functions
	//	
	void PacketSend_QuestComplete	(_LPSOCKET_FD pSocketFD, DWORD pQuestIndex, BOOL pComplete);
	void PacketSend_QuestDelete		(_LPSOCKET_FD pSocketFD, DWORD pQuestIndex);
	void PacketSend_QuestInsert		(_LPSOCKET_FD pSocketFD, CActiveQuest *pActvieQuest);

	//
	//	Quest API包访 Functions
	//
	void PacketSend_QuestNPCSHOUT	(_LPSOCKET_FD pSocketFD, DWORD pNPCID, char *pMsg);

	void PacketSend_QuestShowUI		(_LPSOCKET_FD pSocketFD, DWORD pHandle, BYTE pUI);

	void PacketSend_QuestNPCSAY		(_LPSOCKET_FD pSocketFD, _LPZP_QUESTNPCSAY_REP pNpcSay );
	
	void PacketSend_QuestMsgBox		(_LPSOCKET_FD pSocketFD, _LPZP_QUESTMSGBOX_REP pMsgBox );

	
	void PacketSend_QuestChangeExp	(_LPSOCKET_FD pSocketFD);
	void PacketSend_QuestChangeGold	(_LPSOCKET_FD pSocketFD);
	void PacketSend_QuestKillTimer	(_LPSOCKET_FD pSocketFD, DWORD pQuestIndex, BYTE nTimerID );
	void PacketSend_QuestSetTimer	(_LPSOCKET_FD pSocketFD, DWORD pQuestIndex, BYTE nTimerID, DWORD pExpiredTime );
	void PacketSend_QuestUpdate		(_LPSOCKET_FD pSocketFD, CActiveQuest *pActvieQuest);

	
	void PacketSend_QuestEffect		(_LPSOCKET_FD pSocketFD, int pID, BYTE pOption );

	void PacketSend_QuestMissionComplete(_LPSOCKET_FD pSocketFD, DWORD pQuestIndex, BYTE pComplete);
	void PacketSend_QuestGate		(_LPSOCKET_FD pSocketFD, int pGate, int pLock );





	void PacketSend_EnchantStop		( _LPSOCKET_FD pSocketFD, DWORD pHandle, WORD pSkillIndex, DWORD pSetItemId = 0 ,WORD wAllSkillUp = 0);
	void PacketSend_EnchantStart	( _LPSOCKET_FD pSocketFD, DWORD pHandle, WORD pSkillIndex, DWORD pEnchatTimes, DWORD pSetItemId = 0,WORD wAllSkillUp = 0 );



	void PacketSend_PlayMusic		( _LPSOCKET_FD pSocketFD, _LPZP_PLAYMUSIC_REP pPacket);




	void PacketSend_CurseAttack(NPC *pNPC );
	void PacketSend_CurseAttack(_LPSOCKET_FD pSocketFD);


	void PacketSend_NoticMsg(char pMsg[]);
	void PacketSend_NPCRecall(NPC *pNPC);
	

	void PacketSend_NPCUpdate(NPC *pNPC);
	void PacketSend_NPCEnchantUpdate(NPC *pNPC);

	void PacketSend_ManaLow				( _LPSOCKET_FD pSocketFD, int pNeedMP	);
	void PacketSend_PlayerEnchantUpdate(_LPSOCKET_FD pSocketFD);


	void PacketSend_ItemRefresh			(_LPSOCKET_FD pSocketFD, CItem *pItem );


	void PacketSend_ChangeLevelDown		(_LPSOCKET_FD pSocketFD);
	void PacketSend_WarningMsg			(_LPSOCKET_FD pSocketFD, const char *pszParam, ... );
	
	void PacketSend_NPCSkillAttack		(	BYTE pMapLayer, _POINT	pPoint, _LPZP_SKILLATTACKMULTI_REP pMultiAttack, DWORD pChannelHandle=0);

	void PacketSend_EventItemUse		(_LPSOCKET_FD pSocketFD, DWORD pPlayerHandle, DWORD pItemIdex );
	

	//	--------------------------------------------------------------------------------
	//	某腐 荐摹 函版 傈价 Packet
	//	--------------------------------------------------------------------------------
	void PacketSend_ChangePlayerBase	( _LPSOCKET_FD pSocketFD );					//	纳腐扁夯荐摹 函版 Packet傈价
	void PacketSend_ChangeGold			(_LPSOCKET_FD pSocketFD);					//	榜靛函版 Packet傈价
	void PacketSend_ChangeExp			( _LPSOCKET_FD pSocketFD );					//	版氰摹函版 Packet傈价
	void PacketSend_ChangeLevel			(_LPSOCKET_FD pSocketFD);					//	Level函版 Packet傈价 

	void PacketSend_ChangeMP			(_LPSOCKET_FD pSocketFD,int iGetMP);		//	MP函版 Packet傈价
	void PacketSend_ChangeHP			(_LPSOCKET_FD pSocketFD,int iGetHP);		//	HP函版 Packet傈价 
	void PacketSend_ChangeHPMPDP		(_LPSOCKET_FD pSocketFD);					//	HP MP DP 函版 Packet 傈价 

	void PacketSend_PlayerUpdate		(_LPSOCKET_FD pSocketFD, _POINT_TILE pPoint );


	//	--------------------------------------------------------------------------------
	//	俺牢 惑痢 包访 Functions
	//	--------------------------------------------------------------------------------
	void PacketSend_StallIn				(_LPSOCKET_FD pScoketFD, DWORD pVisiterHandle, DWORD pOwnerHandle);
	void PacketSend_StallListEnd		(_LPSOCKET_FD pSocketFD );
	void PacketSend_StallListStart		(_LPSOCKET_FD pSocketFD, DWORD pVisiterHandle, DWORD pOwnerHandle, char* pSellComment );

	void PacketSend_StallClose			(_LPSOCKET_FD pScoketFD, DWORD pOwnerHandle );
	void PacketSend_StallOut			(_LPSOCKET_FD pScoketFD, DWORD pVisiterHandle, DWORD pOwnerHandle);
	void PacketSend_StallBuy			(_LPSOCKET_FD pSocketFD, _LPZP_STALLBUY_ASK pPacket );

⌨️ 快捷键说明

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