2024-12-21 10:04:04 +08:00
|
|
|
|
#include "StdAfx.h"
|
|
|
|
|
|
#include "DNGuildWar.h"
|
|
|
|
|
|
#include "DNDivisionManager.h"
|
|
|
|
|
|
#include "DNVillageConnection.h"
|
|
|
|
|
|
#include "DNGuildWarManager.h"
|
|
|
|
|
|
|
|
|
|
|
|
extern TMasterConfig g_Config;
|
|
|
|
|
|
|
|
|
|
|
|
CDNGuildWar::CDNGuildWar()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_cEventStep = GUILDWAR_STEP_NONE;
|
|
|
|
|
|
m_wScheduleID = GUILDWARSCHEDULE_DEF;
|
|
|
|
|
|
m_nDBJobSeq = 0;
|
|
|
|
|
|
m_nDBJobSendTick = 0;
|
|
|
|
|
|
m_bDBJobSend = false;
|
|
|
|
|
|
m_bDBJobSuccess = false;
|
|
|
|
|
|
memset(m_bEventComplete, 0x00, sizeof(m_bEventComplete));
|
|
|
|
|
|
m_tCurrent = 0;
|
|
|
|
|
|
memset(m_tEventMoment, 0x00, sizeof(m_tEventMoment));
|
|
|
|
|
|
m_wWinersWeightRate = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CDNGuildWar::~CDNGuildWar()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWar::Reset()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_wScheduleID = GUILDWARSCHEDULE_DEF;
|
|
|
|
|
|
memset (m_tEventMoment, 0, sizeof(m_tEventMoment));
|
|
|
|
|
|
memset (m_bEventComplete, 0, sizeof(m_bEventComplete));
|
|
|
|
|
|
m_nDBJobSeq = 0;
|
|
|
|
|
|
m_nDBJobSendTick = 0;
|
|
|
|
|
|
m_bDBJobSend = false;
|
|
|
|
|
|
m_bDBJobSuccess = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWar::Process()
|
|
|
|
|
|
{
|
|
|
|
|
|
time(&m_tCurrent);
|
|
|
|
|
|
|
|
|
|
|
|
if (m_tEventMoment[GUILDWAR_EVENT_START] < m_tCurrent && !m_bEventComplete[GUILDWAR_EVENT_START])
|
|
|
|
|
|
{
|
|
|
|
|
|
OnStartEvent();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (m_tEventMoment[GUILDWAR_EVENT_END] < m_tCurrent && !m_bEventComplete[GUILDWAR_EVENT_END])
|
|
|
|
|
|
{
|
|
|
|
|
|
OnEndEvent();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD>尡 <20><><EFBFBD>õǾ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ƴ<DEB5><C6B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..<2E>뷫 1<><31> <20><><EFBFBD><EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD>..
|
|
|
|
|
|
// <20><><EFBFBD>⼭ <20>ʱ<EFBFBD>ȭ
|
|
|
|
|
|
DWORD dwTick = timeGetTime();
|
|
|
|
|
|
static DWORD SendTick = 60*1000;
|
|
|
|
|
|
if( g_pGuildWarManager->GetPreWinGuild().IsSet() && !g_pGuildWarManager->GetFinalWinGuildReward() && SendTick+(60*1000) < dwTick)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDNVillageConnection *pVillageConnection = g_pDivisionManager->GetFirstEnableVillageServer();
|
|
|
|
|
|
CDNVillageConnection* pVillageConnection = g_pDivisionManager->GetVillageConnectionByVillageID( g_pDivisionManager->GetPvPLobbyVillageID() );
|
|
|
|
|
|
if( pVillageConnection )
|
|
|
|
|
|
{
|
|
|
|
|
|
pVillageConnection->SendGetGuildWarPreWindGuildReward(g_pGuildWarManager->GetPreWinScheduleID(), g_pGuildWarManager->GetPreWinGuild().nDBID);
|
|
|
|
|
|
}
|
|
|
|
|
|
SendTick = dwTick;
|
|
|
|
|
|
}
|
|
|
|
|
|
*/
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWar::OnStartEvent()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bEventComplete[GUILDWAR_EVENT_START] = true;
|
|
|
|
|
|
MAChangeGuildWarStep ChangeGuildWarStep;
|
|
|
|
|
|
memset(&ChangeGuildWarStep, 0, sizeof(ChangeGuildWarStep));
|
|
|
|
|
|
ChangeGuildWarStep.wScheduleID = m_wScheduleID;
|
|
|
|
|
|
ChangeGuildWarStep.cEventStep = m_cEventStep;
|
|
|
|
|
|
ChangeGuildWarStep.cEventType = GUILDWAR_EVENT_START;
|
|
|
|
|
|
ChangeGuildWarStep.wWinersWeightRate = m_wWinersWeightRate;
|
|
|
|
|
|
|
|
|
|
|
|
if (g_pGuildWarManager->GetCheatFlag())
|
|
|
|
|
|
{
|
|
|
|
|
|
ChangeGuildWarStep.bCheatFlag = true;
|
|
|
|
|
|
g_pGuildWarManager->SetCheatFlag(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
g_pDivisionManager->SendChangeGuildWarStep(&ChangeGuildWarStep);
|
|
|
|
|
|
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] GuildWar OnStartEvent [ScheduleID:%d][Step:%d] \r\n", m_wScheduleID, m_cEventStep);
|
|
|
|
|
|
m_nDBJobSendTick = timeGetTime();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWar::OnEndEvent()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bEventComplete[GUILDWAR_EVENT_END] = true;
|
|
|
|
|
|
MAChangeGuildWarStep ChangeGuildWarStep;
|
|
|
|
|
|
memset(&ChangeGuildWarStep, 0, sizeof(ChangeGuildWarStep));
|
|
|
|
|
|
ChangeGuildWarStep.wScheduleID = m_wScheduleID;
|
|
|
|
|
|
ChangeGuildWarStep.cEventStep = m_cEventStep;
|
|
|
|
|
|
ChangeGuildWarStep.cEventType = GUILDWAR_EVENT_END;
|
|
|
|
|
|
ChangeGuildWarStep.wWinersWeightRate = m_wWinersWeightRate;
|
|
|
|
|
|
|
|
|
|
|
|
g_pDivisionManager->SendChangeGuildWarStep(&ChangeGuildWarStep);
|
|
|
|
|
|
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] GuildWar OnEndEvent [ScheduleID:%d][Step:%d] \r\n", m_wScheduleID, m_cEventStep);
|
|
|
|
|
|
m_nDBJobSendTick = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CDNGuildWar::UpdateTime(short wScheduleID, time_t tStart, time_t tEnd, short wWinersWeightRate)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_wScheduleID = wScheduleID;
|
|
|
|
|
|
m_tEventMoment[GUILDWAR_EVENT_START] = tStart;
|
|
|
|
|
|
m_tEventMoment[GUILDWAR_EVENT_END] = tEnd;
|
|
|
|
|
|
m_wWinersWeightRate = wWinersWeightRate;
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CDNGuildWar::IsValidPeriod()
|
|
|
|
|
|
{
|
|
|
|
|
|
time(&m_tCurrent);
|
|
|
|
|
|
|
|
|
|
|
|
if (m_tEventMoment[GUILDWAR_EVENT_START] < m_tCurrent &&
|
|
|
|
|
|
m_tCurrent < m_tEventMoment[GUILDWAR_EVENT_END])
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CDNGuildWar::IsFinishPeriod()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_bEventComplete[GUILDWAR_EVENT_START] && m_bEventComplete[GUILDWAR_EVENT_END])
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_t CDNGuildWar::GetEventTime(char cType)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (CheckEventType(cType))
|
|
|
|
|
|
return m_tEventMoment[cType];
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWar::SetEventComplete(char cType, bool bComplete)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (CheckEventType(cType))
|
|
|
|
|
|
m_bEventComplete[cType] = bComplete;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CDNGuildWar::IsEventComplete(char cType)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (CheckEventType(cType))
|
|
|
|
|
|
return m_bEventComplete[cType];
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CDNGuildWar::CheckEventType(char cType)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GUILDWAR_EVENT_START <= cType && cType < GUILDWAR_EVENT_MAX)
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// <20><> û <20><> <20><>
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
CDNGuildWarPreparation::CDNGuildWarPreparation()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_cEventStep = GUILDWAR_STEP_PREPARATION;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CDNGuildWarPreparation::~CDNGuildWarPreparation()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWarPreparation::Process()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDNGuildWar::Process();
|
|
|
|
|
|
// <20><><EFBFBD>⼭ <20>ʱ<EFBFBD>ȭ
|
|
|
|
|
|
DWORD dwTick = timeGetTime();
|
|
|
|
|
|
// Job<6F><62> <20><><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD> Ȯ<><C8AE>..
|
|
|
|
|
|
// ó<><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
if( m_bEventComplete[GUILDWAR_EVENT_START] && !m_bDBJobSend && !m_nDBJobSeq && m_nDBJobSendTick>0 && m_nDBJobSendTick+GUILDWAR_DB_JOB_SYSTEM_RESULT_REQ_MAX < dwTick)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDNVillageConnection *pVillageConnection = g_pDivisionManager->GetFirstEnableVillageServer();
|
|
|
|
|
|
CDNVillageConnection* pVillageConnection = g_pDivisionManager->GetVillageConnectionByVillageID( g_pDivisionManager->GetPvPLobbyVillageID() );
|
|
|
|
|
|
if( pVillageConnection )
|
|
|
|
|
|
{
|
|
|
|
|
|
pVillageConnection->SendAddDBJobSystemReserve(DBJOB_GUILDWAR_INIT);
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendAddDBJobSystemReserve Init\r\n");
|
|
|
|
|
|
SetDBJobSend(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetDBJobSystemReserve Not Village !!!\r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// Job<6F><62> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<>и<EFBFBD><D0B8><EFBFBD> Job <20><>û Ȯ<><C8AE> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
if( m_bDBJobSend && m_nDBJobSeq && m_nDBJobSendTick+GUILDWAR_DB_JOB_SYSTEM_RESULT_REQ_MAX < dwTick)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDNVillageConnection *pVillageConnection = g_pDivisionManager->GetFirstEnableVillageServer();
|
|
|
|
|
|
CDNVillageConnection* pVillageConnection = g_pDivisionManager->GetVillageConnectionByVillageID( g_pDivisionManager->GetPvPLobbyVillageID() );
|
|
|
|
|
|
if( pVillageConnection )
|
|
|
|
|
|
{
|
|
|
|
|
|
pVillageConnection->SendGetDBJobSystemReserve(m_nDBJobSeq);
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetDBJobSystemReserve Init \r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR,g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetDBJobSystemReserve Init Not Village !!!\r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
m_nDBJobSendTick = dwTick;
|
|
|
|
|
|
}
|
|
|
|
|
|
// Job <20><>û<EFBFBD><C3BB> <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD> Ȯ<><C8AE>
|
|
|
|
|
|
if( m_bDBJobSend && m_nDBJobSeq && m_bDBJobSuccess )
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bDBJobSend = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// <20><> <20><> <20><> <20><>
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
CDNGuildWarTrial::CDNGuildWarTrial()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_cEventStep = GUILDWAR_STEP_TRIAL;
|
|
|
|
|
|
m_nTrialPointSendTick = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CDNGuildWarTrial::~CDNGuildWarTrial()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWarTrial::Process()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDNGuildWar::Process();
|
|
|
|
|
|
// 10<31>и<EFBFBD><D0B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD> <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
DWORD dwTick = timeGetTime();
|
|
|
|
|
|
if( m_bEventComplete[GUILDWAR_EVENT_START] && m_nTrialPointSendTick+GUILDWAR_TRIAL_POINT_REFRESH_TICK_MAX < dwTick)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDNVillageConnection *pVillageConnection = g_pDivisionManager->GetFirstEnableVillageServer();
|
|
|
|
|
|
CDNVillageConnection* pVillageConnection = g_pDivisionManager->GetVillageConnectionByVillageID( g_pDivisionManager->GetPvPLobbyVillageID() );
|
|
|
|
|
|
if( pVillageConnection )
|
|
|
|
|
|
{
|
|
|
|
|
|
pVillageConnection->SendGetGuildWarPointRunning();
|
|
|
|
|
|
//g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetGuildWarPointRunning\r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetGuildWarPointRunning Not Village !!!\r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
m_nTrialPointSendTick = dwTick;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// <20><> <20><> <20><> <20><> <20><> <20><> <20><>
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
CDNGuildWarReward::CDNGuildWarReward()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_cEventStep = GUILDWAR_STEP_REWARD;
|
|
|
|
|
|
Reset();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CDNGuildWarReward::~CDNGuildWarReward()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWarReward::Reset()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDNGuildWar::Reset();
|
|
|
|
|
|
|
|
|
|
|
|
m_cCurrentFinals = GUILDWAR_FINALPART_16;
|
|
|
|
|
|
//m_cCurrentFinals = GUILDWAR_FINALPART_NONE;
|
|
|
|
|
|
m_bTrialStatsRequest = false;
|
|
|
|
|
|
m_bFinalSchedule = false;
|
|
|
|
|
|
memset(m_bFinalsComplete, 0, sizeof(m_bFinalsComplete));
|
|
|
|
|
|
memset(m_tFinalsStartMoment, 0, sizeof(m_tFinalsStartMoment));
|
|
|
|
|
|
memset(m_tFinalsEndMoment, 0, sizeof(m_tFinalsEndMoment));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWarReward::Process()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDNGuildWar::Process();
|
|
|
|
|
|
DWORD dwTick = timeGetTime();
|
|
|
|
|
|
|
|
|
|
|
|
// Job<6F><62> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<>и<EFBFBD><D0B8><EFBFBD> Job <20><>û Ȯ<><C8AE> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
if( !m_bTrialStatsRequest && m_bDBJobSend && m_nDBJobSeq && m_nDBJobSendTick+GUILDWAR_DB_JOB_SYSTEM_RESULT_REQ_MAX < dwTick)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDNVillageConnection *pVillageConnection = g_pDivisionManager->GetFirstEnableVillageServer();
|
|
|
|
|
|
CDNVillageConnection* pVillageConnection = g_pDivisionManager->GetVillageConnectionByVillageID( g_pDivisionManager->GetPvPLobbyVillageID() );
|
|
|
|
|
|
if( pVillageConnection )
|
|
|
|
|
|
{
|
|
|
|
|
|
pVillageConnection->SendGetDBJobSystemReserve(m_nDBJobSeq);
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetDBJobSystemReserve Stats \r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetDBJobSystemReserve Stats Not Village !!!\r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
m_nDBJobSendTick = timeGetTime();
|
|
|
|
|
|
}
|
|
|
|
|
|
// Job <20><>û<EFBFBD><C3BB> <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD> Ȯ<><C8AE>
|
|
|
|
|
|
if( m_bDBJobSend && m_nDBJobSeq && m_bDBJobSuccess )
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDNVillageConnection *pVillageConnection = g_pDivisionManager->GetFirstEnableVillageServer();
|
|
|
|
|
|
CDNVillageConnection* pVillageConnection = g_pDivisionManager->GetVillageConnectionByVillageID( g_pDivisionManager->GetPvPLobbyVillageID() );
|
|
|
|
|
|
if( pVillageConnection )
|
|
|
|
|
|
{
|
|
|
|
|
|
pVillageConnection->SendGetGuildWarFinalTeam();
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetGuildWarFinalTeam \r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] Reward Process Not Village !!!\r\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
g_pDivisionManager->SendGetGuildWarTrialStats();
|
|
|
|
|
|
m_bTrialStatsRequest = true;
|
|
|
|
|
|
m_bDBJobSend = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
if( m_bFinalSchedule && g_pGuildWarManager->IsFinalTeamSetting() && g_pGuildWarManager->GetFinalProgress() )
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
for (int i=GUILDWAR_FINALPART_MAX-1; i>GUILDWAR_FINALPART_NONE; --i)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_tCurrent >= m_tFinalsStartMoment[i] && m_tCurrent < m_tFinalsEndMoment[i] && !m_bFinalsComplete[i] )
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>~~
|
|
|
|
|
|
m_bFinalsComplete[i] = true;
|
|
|
|
|
|
m_cCurrentFinals = i;
|
|
|
|
|
|
g_pDivisionManager->SendSetGuildwarFinalProcess(i, 0); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ӿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˸<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
if( m_tCurrent - m_tFinalsStartMoment[i] > 60*2 ) // <20><><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD><C3B0><EFBFBD> 2<><32><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>游<EFBFBD><E6B8B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD>⵿<EFBFBD>ƴٰ<C6B4> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>游<EFBFBD><E6B8B8><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_pGuildWarManager->GuildWarCreateRoom();
|
|
|
|
|
|
g_pGuildWarManager->SetFinalStart(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if( m_tCurrent > m_tFinalsEndMoment[i] && m_bFinalsComplete[i] && m_cCurrentFinals == i )
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><>..<2E><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_pDivisionManager->SendSetGuildwarFinalProcess(i-1, m_tFinalsStartMoment[i-1]);
|
|
|
|
|
|
|
|
|
|
|
|
// <20>̶<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ȳ<EFBFBD><C8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ºθ<C2BA> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
g_pGuildWarManager->CalcGuildWarTournamentResult();
|
|
|
|
|
|
g_pDivisionManager->SendGuildWarAllStop();
|
|
|
|
|
|
m_cCurrentFinals = i-1;
|
|
|
|
|
|
// <20><><EFBFBD>ʸ<EFBFBD>Ʈ <20><EFBFBD> <20>缺<EFBFBD><E7BCBA>..
|
|
|
|
|
|
if( m_cCurrentFinals != GUILDWAR_FINALPART_NONE)
|
|
|
|
|
|
g_pGuildWarManager->SetGuildWarTournamentGroup();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWarReward::OnStartEvent()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDNGuildWar::OnStartEvent();
|
|
|
|
|
|
//m_nDBJobSendTick = timeGetTime();
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><>ȸ
|
|
|
|
|
|
// <20>ݷμ<DDB7><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û
|
|
|
|
|
|
CDNVillageConnection* pVillageConnection = g_pDivisionManager->GetVillageConnectionByVillageID( g_pDivisionManager->GetPvPLobbyVillageID() );
|
|
|
|
|
|
if( pVillageConnection == NULL || pVillageConnection->GetActive() == false )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Log.Log(LogType::_GUILDWAR, g_Config.nWorldSetID, 0, 0, 0, L"[GUILDWAR] SendGetGuildWarTournamentInfo Not Village !!!\r\n");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
pVillageConnection->SendGetGuildWarTournamentInfo(m_wScheduleID);
|
|
|
|
|
|
|
|
|
|
|
|
if( g_pGuildWarManager->GetFinalProgress() )
|
|
|
|
|
|
{
|
|
|
|
|
|
// Ȥ<><C8A4> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> ã<><C3A3>.
|
|
|
|
|
|
for (int i=GUILDWAR_FINALPART_MAX-1; i>GUILDWAR_FINALPART_NONE; --i)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_tCurrent >= m_tFinalsStartMoment[i] && m_tCurrent >= m_tFinalsEndMoment[i] )
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bFinalsComplete[i] = true;
|
|
|
|
|
|
m_cCurrentFinals = i-1;
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
if( m_tCurrent > m_tFinalsStartMoment[i] && m_tCurrent <= m_tFinalsEndMoment[i] )
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
m_cCurrentFinals = i;
|
|
|
|
|
|
g_pGuildWarManager->SetFinalStart(true);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>°Ÿ<C2B0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>غ<EFBFBD><D8BA><EFBFBD><EFBFBD>ΰ<EFBFBD><CEB0><EFBFBD>..
|
|
|
|
|
|
g_pDivisionManager->SendSetGuildwarFinalProcess(m_cCurrentFinals, m_tFinalsStartMoment[m_cCurrentFinals]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CDNGuildWarReward::SetFinalScheduleInfo(MASetGuildWarFinalSchedule* pData)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
for( int i=m_cCurrentFinals; i>GUILDWAR_FINALPART_NONE; --i)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_tFinalsStartMoment[i] = pData->GuildWarFinalSchedule[i].tBeginTime;
|
|
|
|
|
|
m_tFinalsEndMoment[i] = pData->GuildWarFinalSchedule[i].tEndTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
m_bFinalSchedule = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
char CDNGuildWarReward::GetCurFinalPart()
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_cCurrentFinals;
|
|
|
|
|
|
}
|
|
|
|
|
|
time_t CDNGuildWarReward::GetCurFinalPartBeginTime()
|
|
|
|
|
|
{
|
|
|
|
|
|
if( m_bFinalsComplete[m_cCurrentFinals] ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD>..
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
return m_tFinalsStartMoment[m_cCurrentFinals];
|
|
|
|
|
|
}
|