local.cpp
来自「国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国」· C++ 代码 · 共 201 行
CPP
201 行
#include "stdafx.h"
#include "MasterServer.h"
#include "Manager.h"
#include "local.h"
#include "user.h"
CLocal::CLocal()
{
m_pMap = NULL;
m_pAuthIndex = NULL;
m_pAuthCode = NULL;
m_wPort = 0;
m_iList = -1;
m_lStartTime = 0;
m_lEndTime = 0;
m_nUserCnt = 0;
m_nUserMax = 0;
m_nCurPacketSize = 0;
m_nMaxPacketSize = 0;
m_pPacketSize = NULL;
}
CLocal::~CLocal()
{
SAFE_DELETE_ARRAY(m_pMap);
SAFE_DELETE_ARRAY(m_pAuthIndex);
SAFE_DELETE_ARRAY(m_pAuthCode);
SAFE_DELETE_ARRAY(m_pPacketSize);
}
void CLocal::Init(int nSockIndex)
{
m_nAccount = g_cMasterServer.m_cLocalConn.account[nSockIndex];
if(!strcmp(g_cMasterServer.m_cLocalConn.type[nSockIndex], "MASTERSERVER"))
{
//付胶磐辑滚 府胶飘沥焊 技泼
char *pAddr, *pDomain;
net_info(pAddr, pDomain);
m_nType = M_MASTERSERVER;
m_nState = STATE_DISCONNECT;
m_dwRemoteIP = inet_addr(pAddr);
m_wPort = g_cMasterServer.m_cConfig.sys_port_tcp;
g_cMasterServer.m_cConfig.sys_account = m_nAccount;
}
else if(!strcmp(g_cMasterServer.m_cLocalConn.type[nSockIndex], "LOBBYSERVER"))
m_nType = M_LOBBYSERVER;
else if(!strcmp(g_cMasterServer.m_cLocalConn.type[nSockIndex], "GAMESERVER"))
m_nType = M_GAMESERVER;
else if(!strcmp(g_cMasterServer.m_cLocalConn.type[nSockIndex], "PATCHSERVER"))
m_nType = M_PATCHSERVER;
else if(!strcmp(g_cMasterServer.m_cLocalConn.type[nSockIndex], "RELAYSERVER"))
m_nType = M_RELAYSERVER;
else
{
_printf("**********************************exception************************************\n");
_log("LOCAL%d TypeError[type == %s] CLocal::Init()", m_nIndex, g_cMasterServer.m_cLocalConn.type[nSockIndex]);
return;
}
strcpy(m_szName, g_cMasterServer.m_cLocalConn.name[nSockIndex]);
if(g_cMasterServer.m_cLocalConn.mode[nSockIndex])
{
strcpy(m_szMode, g_cMasterServer.m_cLocalConn.mode[nSockIndex]);
//狐弗 贸府甫 困秦 葛靛甫 沥荐屈栏肺..
if(!strcmp(m_szMode, "辑官捞国葛靛"))
m_nMode = MODE_SURVIVAL;
else if(!strcmp(m_szMode, "痢飞葛靛"))
m_nMode = MODE_STRIKE;
else
{
strcpy(m_szMode, "None");
m_nMode = MODE_NONE; //俊矾寸;
}
}
else
{
strcpy(m_szMode, "None");
m_nMode = MODE_NONE; //俊矾酒聪寸
}
g_cMasterServer.GetManager()->SetServerList(this);
}
void CLocal::Open()
{
CClient::Open();
if(m_nType == M_MASTERSERVER)
{
m_nState = STATE_LOGIN;
m_lStartTime = time(NULL);
g_cMasterServer.GetManager()->SetInfoServerStart(this);
}
g_cMasterServer.GetManager()->SetServerList(this);
}
BOOL CLocal::Insert(DWORD dwAddr, WORD wPort)
{
if(m_nState != STATE_DISCONNECT)
{
IN_ADDR in_addr;
in_addr.s_addr = dwAddr;
if(m_nState == STATE_CLOSE)
{
_printf("**********************************exception************************************\n");
_log("LOCAL%d StateError[!STATE_DISCONNECT] CLocal::Insert() > 牢刘登瘤 臼篮 肺拿辑滚 立加[%s:%s]", m_nIndex, inet_ntoa(in_addr), GetStateLog());
return FALSE;
}
_printf("**********************************exception************************************\n");
_log("LOCAL%d StateError[!STATE_DISCONNECT] CLocal::Insert() > 捞固 劝己拳等 家南俊 肺拿辑滚 吝汗立加[%s:%s]", m_nIndex, inet_ntoa(in_addr), GetStateLog());
return FALSE;
}
m_nState = STATE_CONNECT;
m_dwRemoteIP = dwAddr;
m_wPort = wPort;
m_nUserCnt = 0;
m_nUserMax = 0;
m_nCurPacketSize = 0;
m_nMaxPacketSize = 0;
return TRUE;
}
void CLocal::SetInfo(char **pInfoPack)
{
//肺拿辑滚 沥焊技泼
net_data(pInfoPack, &m_nUserLimit, 1);
if(m_nType == M_GAMESERVER)
{
net_data(pInfoPack, &m_nMapCnt, 1);
SAFE_DELETE_ARRAY(m_pMap);
m_pMap = new BYTE[m_nMapCnt];
net_data(pInfoPack, m_pMap, m_nMapCnt);
}
else if(m_nType == M_RELAYSERVER)
{
SAFE_DELETE_ARRAY(m_pPacketSize);
m_pPacketSize = new UINT64[m_nUserLimit];
memset(m_pPacketSize, 0, sizeof(UINT64) * m_nUserLimit);
}
m_nState = STATE_JOINLOGIN;
}
void CLocal::Join()
{
#ifdef _DBG_ENGINE
_printf("辑滚眠啊(%s)\n", m_szName);
#endif
m_nState = STATE_LOGIN;
m_lStartTime = time(NULL);
if(m_nType == M_LOBBYSERVER)
msc_server_add(m_nIndex);
g_cMasterServer.GetManager()->SetInfoServerStart(this);
g_cMasterServer.GetManager()->SetServerList(this);
}
void CLocal::Delete()
{
#ifdef _DBG_ENGINE
_printf("辑滚 辆丰(%s)\n", m_szName);
#endif
if(m_nType == M_LOBBYSERVER && m_nState == STATE_LOGIN)
msc_server_delete(m_nIndex);
if(m_nState != STATE_CLOSE)
{
m_nState = STATE_DISCONNECT;
m_lEndTime = time(NULL);
g_cMasterServer.GetManager()->SetInfoServerEnd(this);
}
g_cMasterServer.m_cpUser[m_nIndex].Delete(); //秦寸 蜡历抛捞喉档 立加檬扁拳 茄促
g_cMasterServer.GetManager()->SetServerList(this);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?