This commit is contained in:
Cussrro 2024-12-19 17:33:06 +08:00
parent c8f1e4346f
commit fb39a1c5d5
11 changed files with 158 additions and 51 deletions

View file

@ -64,7 +64,7 @@ bool CDNMasterConnection::GetActive()
void CDNMasterConnection::Reconnect()
{
//이쪽은 동기가 틀려서 DNMasterConnection및 게임 리소스 억세스 하면 안데요~
//이쪽은 동기가 틀려서 DNMasterConnection및 게임 리소스 억세스 하면 안데요~
if (!CConnection::GetActive() && !GetConnecting())
{
SetConnecting(true);
@ -92,7 +92,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
{
if (g_pDataManager->AllLoad() == false)
{
_DANGER_POINT_MSG(L"ext reload에 실패하였습니다. 서버를 재기동해주세요");
_DANGER_POINT_MSG(L"ext reload에 실패하였습니다. 서버를 재기동해주세요");
}
break;
}
@ -116,10 +116,10 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
*/
MARegist *pRegist = (MARegist*)pData;
if (pRegist->cWorldSetID <= 0)
return ERROR_NONE; // 0이면 걍 무시. 0이상 값으로 어차피 한번 더 온다.
return ERROR_NONE; // 0이면 걍 무시. 0이상 값으로 어차피 한번 더 온다.
m_cWorldSetID = pRegist->cWorldSetID;
m_cGameID = pRegist->cGameID; //이 마스터에서의 나(게임서버의 식별자)
m_cGameID = pRegist->cGameID; //이 마스터에서의 나(게임서버의 식별자)
g_pMasterConnectionManager->AddWorldIDConnection(m_nSessionID, m_cWorldSetID);
//GameServerInfo Notice to MasterServer
@ -145,7 +145,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
CDNDBConnection *pDBCon = g_pDBConnectionManager->GetDBConnection(cThreadID);
if (pDBCon)
{
//시작하면서 얻어야 하는 것 모음
//시작하면서 얻어야 하는 것 모음
if (g_pEvent->IsInitWorld(m_cWorldSetID) == false)
pDBCon->QueryEventList(cThreadID, m_cWorldSetID);
@ -204,7 +204,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
case MAGA_REQROOMID:
{
//여기가 게임이 진행이 되는 엔트리다.
//여기가 게임이 진행이 되는 엔트리다.
CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServer();
if (pServer)
@ -222,7 +222,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
case MAGA_REQTUTORIALROOMID:
{
//여기가 게임이 진행이 되는 엔트리다.
//여기가 게임이 진행이 되는 엔트리다.
CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServer();
if (pServer)
pServer->StoreExternalBuffer(0, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID);
@ -320,7 +320,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
}
}
else
return false; //월드메세지가 아니라면 세션처리로 넘긴다.
return false; //월드메세지가 아니라면 세션처리로 넘긴다.
break;
}
@ -495,7 +495,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
DN_CONTINUE;
}
CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(pResetAuthNode->uiAccountDBID); //account id 여야합니다.
CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(pResetAuthNode->uiAccountDBID); //account id 여야합니다.
if (pServer) {
aA.nSessionID = pResetAuthNode->nSessionID;
aA.nAccountDBID = pResetAuthNode->uiAccountDBID;
@ -507,38 +507,38 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
break;
// Guild
case MAGA_DISMISSGUILD: // 길드 해체 알림
case MAGA_DISMISSGUILD: // 길드 해체 알림
{
g_pGuildManager->OnRecvMaDismissGuild(reinterpret_cast<MADismissGuild*>(pData));
}
break;
case MAGA_ADDGUILDMEMBER: // 길드원 추가 알림
case MAGA_ADDGUILDMEMBER: // 길드원 추가 알림
{
g_pGuildManager->OnRecvMaAddGuildMember(reinterpret_cast<MAAddGuildMember*>(pData));
}
break;
case MAGA_DELGUILDMEMBER: // 길드원 제거 (탈퇴/추방) 알림
case MAGA_DELGUILDMEMBER: // 길드원 제거 (탈퇴/추방) 알림
{
g_pGuildManager->OnRecvMaDelGuildMember(reinterpret_cast<MADelGuildMember*>(pData));
}
break;
case MAGA_CHANGEGUILDINFO: // 길드 정보 변경 알림
case MAGA_CHANGEGUILDINFO: // 길드 정보 변경 알림
{
g_pGuildManager->OnRecvMaChangeGuildInfo(reinterpret_cast<MAChangeGuildInfo*>(pData));
}
break;
case MAGA_CHANGEGUILDMEMBERINFO: // 길드원 정보 변경 알림
case MAGA_CHANGEGUILDMEMBERINFO: // 길드원 정보 변경 알림
{
g_pGuildManager->OnRecvMaChangeGuildMemberInfo(reinterpret_cast<MAChangeGuildMemberInfo*>(pData));
}
break;
case MAGA_GUILDCHAT: // 길드 채팅 알림
case MAGA_GUILDCHAT: // 길드 채팅 알림
{
g_pGuildManager->OnRecvMaGuildChat(reinterpret_cast<MAGuildChat*>(pData));
}
@ -587,7 +587,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
SetGuildWarStepIndex(GUILDWAR_STEP_NONE);
bool bChangeEvent = false;
// 스케쥴ID가 같으면 업데이트
// 스케쥴ID가 같으면 업데이트
if (GetGuildWarScheduleID() == pPacket->wScheduleID)
{
if (pPacket->cEventType == GUILDWAR_EVENT_START && GetGuildWarStepIndex() < pPacket->cEventStep)
@ -595,7 +595,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
else if (pPacket->cEventType == GUILDWAR_EVENT_END && GetGuildWarStepIndex() == pPacket->cEventStep)
bChangeEvent = true;
}
else // 스케쥴ID가 다르면 새로운 등록
else // 스케쥴ID가 다르면 새로운 등록
bChangeEvent = true;
if (bChangeEvent)
@ -610,7 +610,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
if (pServer)
pServer->StoreExternalBuffer(0, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID);
}
// 마지막이면 초기화
// 마지막이면 초기화
if( pPacket->cEventStep == GUILDWAR_STEP_REWARD && pPacket->cEventType == GUILDWAR_EVENT_END )
GuildWarReset();
}
@ -644,7 +644,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
else
SetGuildWarFinalPart(pPacket->cGuildFinalPart+1);
// 우승길드 셋팅되어 있으면 초기화
// 우승길드 셋팅되어 있으면 초기화
if( pPacket->cGuildFinalPart != GUILDWAR_FINALPART_NONE && m_PreWinGuildUID.IsSet() )
{
MAGuildWarPreWinGuild aA;
@ -761,7 +761,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD
pServer->StoreExternalBuffer(0, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID);
}
// 실시간 보고
// 실시간 보고
if (g_pServiceConnection)
{
if( g_pServiceConnection->GetSocketContextPtr() == NULL )
@ -1088,13 +1088,13 @@ int CDNMasterConnection::MessageProcess(int nMainCmd, int nSubCmd, char * pData,
UINT nAccountDBID;
memcpy(&nAccountDBID, pData, sizeof(UINT));
CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(nAccountDBID); //account id 여야합니다.
if (pServer) //외부메세지 파싱
CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(nAccountDBID); //account id 여야합니다.
if (pServer) //외부메세지 파싱
{
pServer->StoreExternalBuffer(nAccountDBID, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID);
return ERROR_NONE;
}
// 여기서 만약 유저 자르라는 거면..
// 여기서 만약 유저 자르라는 거면..
if( nMainCmd == MAGA_DETACHUSER )
{
MADetachUser* pDetach = (MADetachUser*)pData;
@ -1686,7 +1686,7 @@ void CDNMasterConnection::SendChangeGuildMemberInfo(const TGuildUID pGuildUID, U
MAChangeGuildMemberInfo Packet;
memset(&Packet, 0, sizeof(MAChangeGuildMemberInfo));
if(bReturn) //자신이 패킷을 다시 받아야하는 경우
if(bReturn) //자신이 패킷을 다시 받아야하는 경우
Packet.nManagedID = 0;
else
Packet.nManagedID = g_Config.nManagedID;
@ -1905,7 +1905,7 @@ void CDNMasterConnection::SendMasterSystemSyncGraduate( INT64 biCharacterDBID, W
void CDNMasterConnection::SendMasterSystemSyncConnect( bool bIsConnect, WCHAR* pwszCharName, const TMasterSystemData* pMasterSystemData )
{
// 사제 정보가 없으면 동기 맞출 필요가 없다.
// 사제 정보가 없으면 동기 맞출 필요가 없다.
if( pMasterSystemData->SimpleInfo.cCharacterDBIDCount == 0 )
return;
@ -2043,7 +2043,7 @@ void CDNMasterConnection::SetGuildSecretMission(MASetGuildWarSecretMission* pSec
{
m_cSecretTeam = pSecret->cTeamCode;
m_nSecretRandomSeed = pSecret->nRandomSeed;
if( m_nSecretRandomSeed == -1 ) // 해제
if( m_nSecretRandomSeed == -1 ) // 해제
{
memset (m_vSecretMissionID, 0x00, sizeof(m_vSecretMissionID));
return;
@ -2088,9 +2088,9 @@ void CDNMasterConnection::CalcTeamSecret()
fSecretRate = 1.0f - fSecretRate;
// 마스터 서버가 시크릿 여부를 판단 못할 경우를 대비하여 시크릿 중지여부 판단한다.
// 마스터 서버가 시크릿 여부를 판단 못할 경우를 대비하여 시크릿 중지여부 판단한다.
if (fSecretRate < 0.02f)
m_cSecretTeam = 0; // 해제
m_cSecretTeam = 0; // 해제
}
void CDNMasterConnection::SetGuildWarSechdule(MASetGuildWarEventTime* SetGuildWarEventTime)