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

📄 main.cpp

📁 A3服务端AccountServer源代码
💻 CPP
字号:
//#include <windows.h>

#include <stdio.h>
#include "StdInc.h"
#include "Defines.h"
#include "Common.h"
#include "LoopSleepMgr.h"


// Global Variables
int		g_ServerVersion;
BYTE	g_byThisServerID;
char	g_szThisServerIP[16];
int		g_nThisServerPort;
char	g_szMainServerIP[16];
int		g_nMainServerPort;
int		g_nGateServerNum;

int		g_MsgDfltHeaderSize;
int		g_MsgG2SHeaderSize;
int		g_MsgC2SHeaderSize;
int		g_MsgS2SHeaderSize;

int		g_MaxMap;
BOOL	g_bRunServer=FALSE;
BYTE	*g_MapZoneInfo = NULL;


// Global Objects
CListenServer	ListenServer;
CSvrManage		GateManage;
CMainServer		MainServer;
CTickManage		TickManage;
CFDB			FDB;
CAccountManage	AccountManage;
CMsgCrypt		MsgCrypt;


// Local Functions
BOOL	Load();
void	GlobalInit();
void	Close();

BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType);


int	main()
{
	CLoopSleepMgr	MainLoopSleepMgr;

	SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE);

	if (Load() == FALSE)
	{
		printf("Load() fail!!\n");
		goto Err0;
	}

	GlobalInit();

	if (ListenServer.Init() == FALSE)
	{
		printf("ListenServer.Init() fail!!\n");
		goto Err0;
	}
	
	if (MainServer.RunServer() == FALSE)
	{
		printf("MainServer.RunServer() fail!!\n");
		goto Err1;
	}

	if (GateManage.Init(g_nGateServerNum) == FALSE)
	{
		printf("GateManage.Init() fail!!\n");
		goto Err2;
	}

	TickManage.Init();

	printf("AccountServer Run...\n");


	MainLoopSleepMgr.SetValue(10);		// Loop = 10 * 64 雀/檬 

	g_bRunServer = TRUE;
	while(g_bRunServer)
	{
		TickManage.Proc();

		MainServer.SvrProc();	
		
		GateManage.StandbyServerProc();
		GateManage.ServerProc();

		MainLoopSleepMgr.LoopSleep();
	}

	Close();

	return 0;


Err2:
	MainServer.OnClose();
Err1:
	ListenServer.OnClose();
Err0:
	return -1;
}





BOOL	Load()
{
	// set Global Variables out of SvrInfo.ini
	g_ServerVersion = GetPrivateProfileInt("SvrInfo", "ServerVersion", 100, "./SvrInfo.ini");
	g_byThisServerID = GetPrivateProfileInt("SvrInfo", "ThisServerID", 255, "./SvrInfo.ini");
	GetPrivateProfileString("SvrInfo", "ThisServerIP", "loopback", g_szThisServerIP, 16, "./SvrInfo.ini");
	g_nThisServerPort = GetPrivateProfileInt("SvrInfo", "ThisServerPort", 7777, "./SvrInfo.ini");
	GetPrivateProfileString("SvrInfo", "MainServerIP", "loopback", g_szMainServerIP, 16, "./SvrInfo.ini");
	g_nMainServerPort = GetPrivateProfileInt("SvrInfo", "MainServerPort", 5555, "./SvrInfo.ini");
	g_nGateServerNum = GetPrivateProfileInt("SvrInfo", "GateServerNum", 2, "./SvrInfo.ini");


	g_MapZoneInfo = new BYTE [g_MaxMap];

	// set 'map index & zone server id' table
	char str[32];
	int i = -1;
	while(++i < g_MaxMap)
	{
		wsprintf (str, "Map%d", i);
		g_MapZoneInfo[i] = GetPrivateProfileInt("MapZone", str, 0, "./SvrInfo.ini");
	}

	return TRUE;
}


void	GlobalInit()
{
	// 檬扁拳秦具 窍绰 蔼甸阑 咯扁辑 檬扁拳钦聪促. 
	
	g_MsgDfltHeaderSize = sizeof(MSG_DFLT_HEADER);
	g_MsgG2SHeaderSize = sizeof(MSG_G2S_HEADER);
	g_MsgC2SHeaderSize = sizeof(MSG_C2S_HEADER);
	g_MsgS2SHeaderSize = sizeof(MSG_S2S_HEADER);

	MsgCrypt.SetMsgHeaderSize(sizeof(MSG_S2C_HEADER));
}


void	Close()
{
	MainServer.OnClose();
	GateManage.Close();
	ListenServer.OnClose();
}



BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType)
{	
	switch(dwCtrlType)
	{
	case CTRL_C_EVENT:
	case CTRL_BREAK_EVENT:
		return FALSE;

	case CTRL_CLOSE_EVENT:
	case CTRL_LOGOFF_EVENT:
	case CTRL_SHUTDOWN_EVENT:

		g_bRunServer = FALSE;
		Sleep(100);
		break;

	default : return FALSE;
	}
		
	return TRUE;
}

⌨️ 快捷键说明

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