📄 lobbyserver.cpp
字号:
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 + -