void CInstance::Run() { int64 nowtime = CTimer::GetTime(); CreateMonsterRun(nowtime); CScene::Run(); if (IsOverTime(nowtime)) { SetWaitRemove(); } }
BOOL CGvGMedal::CheckActivate() { if ( IsOverTime() ) { return FALSE; } //已激活 if ( 1 == m_stMedalData.byIsActivate) { return TRUE; } if ( gvgmedal::IsInGvGActivity() || CGvGBuild::Instance()->GetCurStage() == GVG_0_NOT_START) { SetActivateState(FALSE); return FALSE; } if ( 0 == GetLevel()) { return FALSE; } const SMedalProp* poMedalProp = NULL; if ( !GetProp(poMedalProp)) { SYS_CRITICAL(_SDT("[%s: %d]: CGvGMedal::CheckActivate GetProp of %u failed , PlayerID=%u"), MSG_MARK, m_stMedalData.wMedalID, m_poOwner->GetID()); SetActivateState(FALSE); return FALSE; } const DT_GVG_BUILD_DATA& stGvGData = CGvGBuild::Instance()->GetDT_GVG_BUILD_DATA(); UINT16 wRankNum = stGvGData.stLastResult.wRankNum; if ( 0 == wRankNum) { SetActivateState(FALSE); return FALSE; } CFaction* poFaction = m_poOwner->GetFaction(); if ( NULL == poFaction) { SetActivateState(FALSE); return FALSE; } DT_FACTION_PLAYER_DATA* poPlayerData = poFaction->GetDT_Faction_Player_Data(m_poOwner->GetID()); if ( NULL == poPlayerData) { SetActivateState(FALSE); return FALSE; } // 如果该玩家财力比拼阶段开始之后才加入门派,则无法获得勋章 UINT64 qwStartTime = CGvGBuild::Instance()->GetStageTime(GVG_2_MONEY); CSDDateTime oStartTime(qwStartTime); CSDDateTime oJoinTime(poPlayerData->qwJoinTime); if( qwStartTime <= poPlayerData->qwJoinTime) { SYS_CRITICAL(_SDT("[%s: %d]: CGvGMedal::CheckActivate CGvGBuild::Instance()->GetStartTime() : %s <= poPlayerData->qwJoinTime : %s, PlayerID=%u"), MSG_MARK, oStartTime.ToString("YYYY-mm-dd hh:mm:ss").c_str(), oJoinTime.ToString("YYYY-mm-dd hh:mm:ss").c_str(), m_poOwner->GetID()); SetActivateState(FALSE); return FALSE; } for ( UINT16 wIdx = 0; wIdx < wRankNum; wIdx++) { if( stGvGData.stLastResult.astFactionRank[wIdx].stFactionBaseInfo.dwFactionID == poFaction->GetDT_FACTION_BASE_DATA().dwFactionID) { if ( (poMedalProp->qwFirstCondition <= stGvGData.stLastResult.astFactionRank[wIdx].wRank) && (stGvGData.stLastResult.astFactionRank[wIdx].wRank <= poMedalProp->qwSecondCondition)) { em_Faction_Job eJob = poFaction->GetJob( m_poOwner->GetID()); if ( eJob == poMedalProp->qwThirdCondition) { SetActivateState(TRUE, CGvGBuild::Instance()->GetEndTime()); SYS_CRITICAL(_SDT("[%s: %d]: CGvGMedal::CheckActivate activate Medeal, eJob=%u, PlayerID=%u"), MSG_MARK, eJob, m_poOwner->GetID()); return TRUE; } } } } return FALSE; }