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

📄 lobbyserver.cpp

📁 国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国内还没有,所以找不到测试
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		case CLS_TEAM_SELECT:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_TEAM_SELECT\n", nSockIndex, GetTickCount());
#endif
			cls_team_select(nSockIndex, pPacket);
			break;
		case CLS_OTHER_INFO:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_OTHER_INFO\n", nSockIndex, GetTickCount());
#endif
			cls_other_info(nSockIndex, pPacket);
			break;
		case CLS_ITEM_BUY:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_ITEM_BUY\n", nSockIndex, GetTickCount());
#endif
			cls_item_buy(nSockIndex, pPacket);
			break;
		case CLS_ITEM_PRESENT:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_ITEM_PRESENT\n", nSockIndex, GetTickCount());
#endif
			cls_item_present(nSockIndex, pPacket);
			break;
		case CLS_MECHANIC_BUY:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_MECHANIC_BUY\n", nSockIndex, GetTickCount());
#endif
			cls_mechanic_buy(nSockIndex, pPacket);
			break;
		case CLS_MECHANIC_SELL:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_MECHANIC_SELL\n", nSockIndex, GetTickCount());
#endif
			cls_mechanic_sell(nSockIndex, pPacket);
			break;
		case CLS_MECHANIC_REPAIR:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_MECHANIC_REPAIR\n", nSockIndex, GetTickCount());
#endif
			cls_mechanic_repair(nSockIndex, pPacket);
			break;
		case CLS_MECHANIC_DESTROY:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_MECHANIC_DESTROY\n", nSockIndex, GetTickCount());
#endif
			cls_mechanic_destroy(nSockIndex, pPacket);
			break;
		case CLS_MECHANIC_EQUIP:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_MECHANIC_EQUIP\n", nSockIndex, GetTickCount());
#endif
			cls_mechanic_equip(nSockIndex, pPacket);
			break;
		case CLS_MECHANIC_INVEN:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_MECHANIC_INVEN\n", nSockIndex, GetTickCount());
#endif
			cls_mechanic_inven(nSockIndex, pPacket);
			break;
		case CLS_GAME_READY:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_GAME_READY\n", nSockIndex, GetTickCount());
#endif
			cls_game_ready(nSockIndex, pPacket);
			break;
		case CLS_CHANNEL_OUT:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_CHANNEL_OUT\n", nSockIndex, GetTickCount());
#endif
			cls_channel_out(nSockIndex);
			break;
		case CLS_FAILED_GAMEIN:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_CLIENT::CLS_FAILED_GAMEIN\n", nSockIndex, GetTickCount());
#endif
			cls_failed_gamein(nSockIndex);
			break;

		default:
			cls_dummy(nSockIndex, pPacket, nMessage, *pSize);
		}
		break;

	case M_MASTERSERVER:
		switch(SUB(nMessage))
		{
		case S_CLOSED:
			_printf("**********************************exception************************************\n");
			_log("ConnectError[MASTERSERVER] CLobbyServer::OnRecv() > S_CLOSED");
			break;
		case S_AUTHOR:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::S_AUTHOR\n", nSockIndex, GetTickCount());
#endif
			msls_author(nSockIndex, pPacket);
			break;
		case S_VERIFY:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::S_VERIFY(OK)\n", nSockIndex, GetTickCount());
#endif
			msls_verify(nSockIndex, pPacket);
			break;
		case S_LOGIN:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::S_LOGIN\n", nSockIndex, GetTickCount());
#endif
			msls_login(nSockIndex, pPacket);
			break;

		case S_AUTHOR_INFO:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::S_AUTHOR_INFO\n", nSockIndex, GetTickCount());
#endif
			msls_author_info(nSockIndex, pPacket, *pSize);
			break;

		case S_CONFIG_ITEM:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::S_CONFIG_ITEM\n", nSockIndex, GetTickCount());
#endif
			msls_config_item(nSockIndex, pPacket);
			break;
		case S_CONFIG_ITEMLIST:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::S_CONFIG_ITEMLIST\n", nSockIndex, GetTickCount());
#endif
			msls_config_itemlist(nSockIndex, pPacket);
			break;

		case MSLS_USER_INFO:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::MSLS_USER_INFO\n", nSockIndex, GetTickCount());
#endif
			msls_user_info(nSockIndex, pPacket);
			break;

		case MSLS_LOGIN_INFO:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::MSLS_LOGIN_INFO\n", nSockIndex, GetTickCount());
#endif
			msls_login_info(nSockIndex, pPacket);
			break;

		case MSLS_USER_CONNECT:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::MSLS_USER_CONNECT\n", nSockIndex, GetTickCount());
#endif
			msls_user_connect(nSockIndex, pPacket);
			break;
		case MSLS_GAMEZONE_INFO:
			if(dwErrCode)
			{
				short lobby_channelindex, lobby_roomindex;
				net_data(&pPacket, &lobby_channelindex, 1);
				net_data(&pPacket, &lobby_roomindex, 1);

				switch(dwErrCode)
				{
				case ERR_GAMESERVER_NOTFOUND:
#ifdef _DBG_ENGINE
					_printf("[%d:%u] M_MASTERSERVER::MSLS_GAMEZONE_INFO(ERR_GAMESERVER_NOTFOUND)\n", nSockIndex, GetTickCount());
#endif
					if(lobby_channelindex < 0 || lobby_channelindex >= g_cLobbyServer.m_cConfig.cfg_maxchannel)
					{
						_printf("**********************************exception************************************\n", nSockIndex, GetTickCount());
						_log("LOBBY%d IndexError[channel < 0 || channel >= %d] CLobbyServer::OnRecv() > MSLS_GAMEZONE_INFO:ERR_GAMESERVER_NOTFOUND",
							lobby_channelindex, g_cLobbyServer.m_cConfig.cfg_maxchannel);
						return;
					}
					if(lobby_roomindex < 0 || lobby_roomindex >= g_cLobbyServer.m_cConfig.cfg_maxroom)
					{
						_printf("**********************************exception************************************\n", nSockIndex, GetTickCount());
						_log("ROOM%d IndexError[room < 0 || room >= %d] CLobbyServer::OnRecv() > MSLS_GAMEZONE_INFO:ERR_GAMESERVER_NOTFOUND",
							lobby_roomindex, g_cLobbyServer.m_cConfig.cfg_maxroom);
						return;
					}
					break;

				case ERR_GAMEZONE_CREATE_FULL:
#ifdef _DBG_ENGINE
					_printf("[%d:%u] M_MASTERSERVER::MSLS_GAMEZONE_INFO(ERR_GAMEZONE_CREATE_FULL)\n", nSockIndex, GetTickCount());
#endif
					if(lobby_channelindex < 0 || lobby_channelindex >= g_cLobbyServer.m_cConfig.cfg_maxchannel)
					{
						_printf("**********************************exception************************************\n", nSockIndex, GetTickCount());
						_log("LOBBY%d IndexError[channel < 0 || channel >= %d] CLobbyServer::OnRecv() > MSLS_GAMEZONE_INFO:ERR_GAMEZONE_CREATE_FULL",
							lobby_channelindex, g_cLobbyServer.m_cConfig.cfg_maxchannel);
						return;
					}
					if(lobby_roomindex < 0 || lobby_roomindex >= g_cLobbyServer.m_cConfig.cfg_maxroom)
					{
						_printf("**********************************exception************************************\n", nSockIndex, GetTickCount());
						_log("ROOM%d IndexError[room < 0 || room >= %d] CLobbyServer::OnRecv() > MSLS_GAMEZONE_INFO:ERR_GAMEZONE_CREATE_FULL",
							lobby_roomindex, g_cLobbyServer.m_cConfig.cfg_maxroom);
						return;
					}
					break;

				case ERR_GAMEZONE_CREATE_FAIL:
#ifdef _DBG_ENGINE
					_printf("[%d:%u] M_MASTERSERVER::MSLS_GAMEZONE_INFO(ERR_GAMEZONE_CREATE_FAIL)\n", nSockIndex, GetTickCount());
#endif
					if(lobby_channelindex < 0 || lobby_channelindex >= g_cLobbyServer.m_cConfig.cfg_maxchannel)
					{
						_printf("**********************************exception************************************\n", nSockIndex, GetTickCount());
						_log("LOBBY%d IndexError[channel < 0 || channel >= %d] CLobbyServer::OnRecv() > MSLS_GAMEZONE_INFO:ERR_GAMEZONE_CREATE_FAIL",
							lobby_channelindex, g_cLobbyServer.m_cConfig.cfg_maxchannel);
						return;
					}
					if(lobby_roomindex < 0 || lobby_roomindex >= g_cLobbyServer.m_cConfig.cfg_maxroom)
					{
						_printf("**********************************exception************************************\n", nSockIndex, GetTickCount());
						_log("ROOM%d IndexError[room < 0 || room >= %d] CLobbyServer::OnRecv() > MSLS_GAMEZONE_INFO:ERR_GAMEZONE_CREATE_FAIL",
							lobby_roomindex, g_cLobbyServer.m_cConfig.cfg_maxroom);
						return;
					}
					break;
				}

				CLobby *pLobby = m_cpLobby + lobby_channelindex;
				CRoom *pRoom = pLobby->m_cpRoom + lobby_roomindex;

				void *ioc = net_message(M_LOBBYSERVER, LSC_GAME_START, dwErrCode);
				if(ioc)	pRoom->SendAll(ioc);

				pRoom->m_nState = CRoom::STATE_WAITING;
				break;
			}

#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::MSLS_GAMEZONE_INFO\n", nSockIndex, GetTickCount());
#endif
			msls_gamezone_info(nSockIndex, pPacket);
			break;
		case MSLS_PLAYER_INFO:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::MSLS_PLAYER_INFO\n", nSockIndex, GetTickCount());
#endif
			msls_player_info(nSockIndex, pPacket);
			break;
		case MSLS_GAME_END:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::MSLS_GAME_END\n", nSockIndex, GetTickCount());
#endif
			msls_game_end(nSockIndex, pPacket);
			break;
		case MSLS_GAME_OUT:
#ifdef _DBG_ENGINE
			_printf("[%d:%u] M_MASTERSERVER::MSLS_GAME_OUT\n", nSockIndex, GetTickCount());
#endif
			msls_game_out(nSockIndex, pPacket);
			break;
		}
		break;
	}
}

BOOL CLobbyServer::Run()
{
	if(!CServer::Run())
		return FALSE;

	return TRUE;
}

BOOL CLobbyServer::IsStopping()
{
	return TRUE;
}

void CLobbyServer::UpdateThread(void *pArg)
{
	Sleep(200);

	if(g_cLobbyServer.m_bExit)	return;
}

void CLobbyServer::SendAll(void *ioc)
{
	int i=0;
	while(i < m_cConfig.sys_maxuser)
	{
		if(m_cpUser[i].m_nState == CClient::STATE_CHANNEL)	//菩哦 罐阑 霖厚啊 登乐绰 蜡历甸
		{
			if(!net_broadcast(m_cpUser[i].m_nIndex, ioc))
				net_disconnect(m_cpUser[i].m_nIndex, false);
		}
		++i;
	}

	net_endcast(ioc);
}

void CLobbyServer::SendAll(void *ioc, int nUserIndex)
{
	int i=0;
	while(i < m_cConfig.sys_maxuser)
	{
		if(m_cpUser[i].m_nState == CClient::STATE_CHANNEL && m_cpUser[i].m_nIndex != nUserIndex)
		{
			if(!net_broadcast(m_cpUser[i].m_nIndex, ioc))
				net_disconnect(m_cpUser[i].m_nIndex, false);
		}
		++i;
	}

	net_endcast(ioc);
}

void CLobbyServer::SendClan(void *ioc, char *pClanName)
{
	int i=0;
	while(i < m_cConfig.sys_maxuser)
	{
		if(m_cpUser[i].m_nState == CClient::STATE_CHANNEL &&	//菩哦 罐阑 霖厚啊 登乐绰 蜡历甸
			!strcmp(m_cpUser[i].m_szClan, pClanName))
		{
			if(!net_broadcast(m_cpUser[i].m_nIndex, ioc))
				net_disconnect(m_cpUser[i].m_nIndex, false);
		}
		++i;
	}

	net_endcast(ioc);
}

BOOL CLobbyServer::SendMaster(void *ioc)
{
	return net_send(m_cConfig.sys_master_server, ioc);
}

void CLobbyServer::Open()
{
	char *szMode[] = {"烹钦", "辑官捞国", "单胶概摹", "标惯", "痢飞"};

	char *pAddr, *pDomain;
	if(!net_info(pAddr, pDomain))		return;

	char szTitle[256];

	if(m_cConfig.sys_mode)
	{
		if(m_cConfig.sys_udp_cnt > 1)
		{
			sprintf(szTitle, "%s:%s - %s [%s] - %s:%d:%d~%d - %s",
				m_cConfig.sys_name, m_cConfig.sys_group, m_cConfig.sys_type, szMode[m_cConfig.sys_mode],
				pAddr, m_cConfig.sys_port_tcp, m_cConfig.sys_port_udp,
				m_cConfig.sys_port_udp + m_cConfig.sys_udp_cnt - 1, pDomain);
		}
		else
		{
			sprintf(szTitle, "%s:%s - %s [%s] - %s:%d:%d - %s",
				m_cConfig.sys_name, m_cConfig.sys_group, m_cConfig.sys_type, szMode[m_cConfig.sys_mode],
				pAddr, m_cConfig.sys_port_tcp, m_cConfig.sys_port_udp, pDomain);
		}
	}
	else
	{
		if(m_cConfig.sys_udp_cnt > 1)
		{
			sprintf(szTitle, "%s:%s - %s - %s:%d:%d~%d - %s",
				m_cConfig.sys_name, m_cConfig.sys_group, m_cConfig.sys_type,
				pAddr, m_cConfig.sys_port_tcp, m_cConfig.sys_port_udp,
				m_cConfig.sys_port_udp + m_cConfig.sys_udp_cnt - 1, pDomain);
		}
		else
		{
			sprintf(szTitle, "%s:%s - %s - %s:%d:%d - %s",
				m_cConfig.sys_name, m_cConfig.sys_group, m_cConfig.sys_type,
				pAddr, m_cConfig.sys_port_tcp, m_cConfig.sys_port_udp, pDomain);
		}
	}

	_console_title(szTitle);

	int i=m_cConfig.sys_maxuser;
	while(i--)	m_cpUser[i].Open();
}

#ifdef _MODE_CHEAT

int CLobbyServer::Cheat(int nSockIndex, char *pCheat)
{
	CUser *pUser = m_cpUser + nSockIndex;
	if(!pUser)
	{
		_printf("**********************************exception************************************\n");
		_log("PC%d IndexError[user == NULL] CLobbyServer::Cheat()", nSockIndex);
		return 0;
	}

	if(pCheat[0] == '/')
	{
		if(!strcmp(pCheat+1, "拱傍"))
		{
//			pZone->cheat_bDummyNpc = true;
			strcat(pCheat, "..酒轿~ NPC 救公辑况~");
		}
		else
			strcat(pCheat, "..绝绰 摹飘虐");

		return (short)strlen(pCheat);
	}

	return 0;
}

#endif

⌨️ 快捷键说明

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