masterserver.h

来自「国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国」· C头文件 代码 · 共 199 行

H
199
字号
#ifndef __MASTERSERVER_H
#define __MASTERSERVER_H


#define MSINIT	"./config.ini"
#define DBMAIN_DSN	"121.140.107.167"
//#define DBMAIN_DSN	"192.168.0.5"
#define DBMAIN_DSA	"mcgames_admin"
#define DBMAIN_DSP	"mca0415"
#define DBMAIN_DBN	"_MCGames"


struct _SPINFO;
struct _MSGINFO;

class CManager;
class CLocal;
class CUser;
class CItemMap;


typedef struct _CONFIG
{
	//config.ini
	char *sys_connection_db[MAX_CONNECTION_DB+1];

	char sys_name[LEN_SVRNAME+1];
	char sys_group[LEN_SVRNAME+1];
	unsigned short sys_port_udp;
	unsigned short sys_port_tcp;
	unsigned short sys_maxlocal;
	unsigned short sys_maxuser;
	unsigned short sys_cgiproc;
	unsigned short sys_frame;
	unsigned short sys_block_cnt;
	unsigned long *sys_block_addr;
	unsigned short sys_version_hi;
	unsigned short sys_version_lo;
	unsigned __int64 sys_account;	//辑滚沥焊 罐酒棵锭 鞘夸茄 虐蔼
	unsigned short sys_udp_cnt;

	//DB俊辑 罐酒棵 沥焊
	unsigned char sys_auth_size;
	unsigned char sys_auth_cnt;
	unsigned char *sys_auth_index;
	unsigned char *sys_auth_code;

	_CONFIG():sys_block_cnt(0)
	{
		sys_auth_index = NULL;
		sys_auth_code = NULL;
		sys_block_addr = NULL;

		int i=MAX_CONNECTION_DB+1;
		while(i--)	sys_connection_db[i] = NULL;
	}

	~_CONFIG()
	{
		int i=MAX_CONNECTION_DB+1;
		while(i--)	SAFE_DELETE_ARRAY(sys_connection_db[i]);

		SAFE_DELETE_ARRAY(sys_block_addr);
		SAFE_DELETE_ARRAY(sys_auth_index);
		SAFE_DELETE_ARRAY(sys_auth_code);
	}
} CONFIG;

typedef struct _LOCALCONN
{
	short local_cnt;
	short local_limit;

	UINT64 *account;
	char **type;
	char **name;
	char **mode;

	_LOCALCONN():local_cnt(0)
	{
		account=NULL;
		name=NULL;
		mode=NULL;
		type=NULL;
	}

	~_LOCALCONN()
	{
		if(type)
		{
			int i=local_limit;
			while(i--)	SAFE_DELETE_ARRAY(type[i]);

			SAFE_DELETE_ARRAY(type);
		}
		if(name)
		{
			int i=local_limit;
			while(i--)	SAFE_DELETE_ARRAY(name[i]);

			SAFE_DELETE_ARRAY(name);
		}
		if(mode)
		{
			int i=local_limit;
			while(i--)	SAFE_DELETE_ARRAY(mode[i]);

			SAFE_DELETE_ARRAY(mode);
		}

		local_cnt=0;

		SAFE_DELETE_ARRAY(account);
	}
} LOCALCONN;

typedef struct _GARAGE_ENUM
{
	UINT64 account[MAX_MECHANIC_SLOT];
	DWORD id[MAX_MECHANIC_SLOT];
	DWORD fight[MAX_MECHANIC_SLOT];
	BYTE dur[MAX_MECHANIC_SLOT];
	BYTE skin[MAX_MECHANIC_SLOT];
	BYTE color[MAX_MECHANIC_SLOT];
	BYTE main_slot[MAX_MECHANIC_SLOT];
	BYTE sub_slot[MAX_MECHANIC_SLOT];
	BYTE back_slot1[MAX_MECHANIC_SLOT];
	BYTE back_slot2[MAX_MECHANIC_SLOT];
	BYTE back_slot3[MAX_MECHANIC_SLOT];
} GARAGE_ENUM;


class CMasterServer : public CServer
{
protected:
	virtual CClient *OnAccept(int nSockIndex, DWORD dwAddr);
	virtual void OnConnect(int nSockIndex, char *pAddr, WORD wPort);
	virtual void OnClose(int nSockIndex, bool bNormal);
	virtual void OnRecv(int nSockIndex, int nMessage, DWORD dwErrCode, char *pPacket, DWORD *pSize);

	static void SPThread(void *pArg);
	void SPCall();
	BOOL SPError(void *pspInfo);
	void SPCallback();
	void SPHandler(int nSockIndex, int iSP, void *pParam);

	void LoadINI();			//ini颇老俊辑 沥焊佬扁
	BOOL SetupSystem();		//矫胶袍沥焊甫 皋葛府俊 棵赴促
	BOOL SetupNetwork();	//匙飘况农 沥焊甫 皋葛府俊 棵赴促
	BOOL SetupDatabase();	//单捞磐海捞胶 沥焊甫 皋葛府俊 棵赴促

public:
	CMasterServer();
	virtual ~CMasterServer();

	virtual BOOL Init();
	virtual BOOL IsStopping();
	virtual BOOL Run();

	CManager *GetManager()		{ return m_cpManager; }
	_SPINFO *GetSpObj()			{ return m_spInfo->_new(); }
	_MSGINFO *GetMsgObj()		{ return m_msgInfo; }
	void SetSp(_SPINFO *spObj)	{ m_spSendQ->_push(spObj); }

	BOOL SendAll(void *ioc);

	BOOL DispatchMessage(LPMSG msg);

	void RegiLocal();
	void Open();

private:
	CADOConnection m_dbGame;
	CADOConnection m_dbMain;

	CManager *m_cpManager;

	_MSGINFO			*m_msgInfo;
	mempool<_SPINFO>	*m_spInfo;
	queue<_SPINFO *>	*m_spSendQ;
	queue<_SPINFO *>	*m_spRecvQ;

public:
	CONFIG m_cConfig;
	LOCALCONN m_cLocalConn;
	GARAGE_ENUM m_cGarageEnum;

	CLocal *m_cpLocal;
	CUser *m_cpUser;
	CItemMap *m_cpItemMap;
	CLocal *m_pTag;
};


extern CMasterServer g_cMasterServer;


#endif

⌨️ 快捷键说明

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