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

📄 usertable.h

📁 [Server]Distribute.rar这个是分发服务器的源码
💻 H
字号:
// UserTable.h: interface for the CUserTable class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_USERTABLE_H__5BBB3509_10AF_4E68_9B3A_C07E9F23D2A9__INCLUDED_)
#define AFX_USERTABLE_H__5BBB3509_10AF_4E68_9B3A_C07E9F23D2A9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//#include "ServerSystem.h"
//#include <HashTable.h>


BOOL DisconnectUser(DWORD dwConnectionIndex);
BOOL DisconnectUser( DWORD dwConnectionIndex, int flag );

#include "Crypt.h"

struct aGAMEOPTION
{
	BYTE bNoFriend;
	BYTE bNoWhisper;

	aGAMEOPTION():bNoWhisper(0), bNoFriend(0) {}
};

typedef struct tagUSERINFO
{
	DWORD dwConnectionIndex;
	DWORD dwCharacterID;
	DWORD dwUserID;
	BYTE UserLevel;
	DWORD dwMapServerConnectionIndex;
	WORD  wUserMapNum;
	DWORD dwCharacterIDS[4];	// 蜡历啊 啊柳 某腐锅龋甫 厚背窍扁困窃
	BYTE bLoginMapNum[4];

	DWORD State;
	BOOL bRecvDistOut;
	
#ifdef _NETWORKTEST
	DWORD dwStartTrafficTime;
	DWORD dwTrafficForUserSend[MP_MAX];
	DWORD dwTrafficForServerSend[MP_MAX];
	DWORD dwPacketForUserSend[MP_MAX];
	DWORD dwPacketForServerSend[MP_MAX];
	void AddPacketForUser(DWORD c, DWORD size)
	{
		dwTrafficForUserSend[c] += size;
		++dwPacketForUserSend[c];
	}
	void AddPacketForServer(DWORD c, DWORD size)
	{
		dwTrafficForServerSend[c] += size;
		++dwPacketForServerSend[c];
	}
#endif

	DWORD dwUniqueConnectIdx;	// 辑滚俊辑狼 绊蜡 楷搬 锅龋
								// dwConnectionIdx客绰 促抚. 拌加 刘啊窃

	CCrypt crypto;
	BYTE CheckSum;

	aGAMEOPTION GameOption;

	BOOL CheckCorrectCheckSum(BYTE CS)
	{
		if(CS != CheckSum)
			return FALSE;
		++CheckSum;
		return TRUE;
	}

	DWORD dwLastConnectionCheckTime;
	BOOL m_ConnectionCheckFailed;
}USERINFO;

class CUserTable : public CYHHashTable<USERINFO>
{

	DWORD m_MaxUserCount;

	DWORD m_dwUserCount;


	DWORD m_addCount;
	DWORD m_removeCount;

public:
	CUserTable();
	virtual ~CUserTable();
	void SetPositionUserHead() {  CYHHashTable<USERINFO>::SetPositionHead(); }
	USERINFO * GetUserData() { return CYHHashTable<USERINFO>::GetData(); }
	void Init(DWORD dwBucket);
	USERINFO * FindUser(DWORD dwKey);
	BOOL AddUser(USERINFO* pObject,DWORD dwKey);
	USERINFO * RemoveUser(DWORD dwKey);
	void RemoveAllUser();

	DWORD GetUserCount(){ return m_dwUserCount; }

	DWORD GetUserMaxCount(){return m_MaxUserCount;}
	void SetCalcMaxCount(DWORD CurCount);
	
	BOOL SendToUser(DWORD dwKey,DWORD dwUniqueConnectIdx,MSGBASE* pmsg,DWORD size);
	BOOL OnDisconnectUser(DWORD dwKey);

	DWORD GetAddCount() { return m_addCount; }
	DWORD GetRemoveCount() { return m_removeCount; }
};  


extern CUserTable * g_pUserTable;							// key : connectionidx

#endif // !defined(AFX_USERTABLE_H__5BBB3509_10AF_4E68_9B3A_C07E9F23D2A9__INCLUDED_)

⌨️ 快捷键说明

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