修复
This commit is contained in:
parent
c8f1e4346f
commit
fb39a1c5d5
11 changed files with 158 additions and 51 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue