📄 framemgr.cpp
字号:
// FrameMgr.cpp: implementation of the CFrameMgr class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "FrameMgr.h"
#include "Hong_Sub.h"
#include "dragon.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
char szCheckFileName[MAX_PATH] = "./CrackCheckTrap/Trap.txt";
CFrameMgr g_FrameMgr;
DWORD* CFrameMgr::m_pdwFrameCheckTime = NULL;
DWORD* CFrameMgr::m_pdwPrevFrameCheckTime = NULL;
DWORD* CFrameMgr::m_pdwTargetTime = NULL;
__int32* CFrameMgr::m_pnFrameDelay = NULL;
int* CFrameMgr::m_piSkipCount = NULL;
int* CFrameMgr::m_pnIsSkiped = NULL;
DWORD* CFrameMgr::m_pdwSkipDelay = NULL;
CFrameMgr::CFrameMgr()
{
InitTime();
}
CFrameMgr::~CFrameMgr()
{
InitTime();
FreeMemories();
}
void CFrameMgr::InitTime()//矫埃 檬扁拳
{
SAFE_DELETE(m_pnFrameDelay);
SAFE_DELETE(m_pdwFrameCheckTime);
SAFE_DELETE(m_pdwPrevFrameCheckTime);
SAFE_DELETE(m_pdwTargetTime);
SAFE_DELETE(m_piSkipCount);
SAFE_DELETE(m_pnIsSkiped);
SAFE_DELETE(m_pdwSkipDelay);
m_pnFrameDelay = this->MakeINT32Memory();*m_pnFrameDelay = 0;
m_pdwFrameCheckTime = this->MakeDwordMemory();
m_pdwPrevFrameCheckTime = this->MakeDwordMemory();
m_pdwTargetTime = this->MakeDwordMemory();
m_piSkipCount = new int; *m_piSkipCount = 0;
m_pnIsSkiped = new int; *m_pnIsSkiped = 0;
m_pdwSkipDelay = this->MakeDwordMemory();*m_pdwSkipDelay = 0;
*m_pdwFrameCheckTime = *m_pdwPrevFrameCheckTime = *m_pdwTargetTime = ::timeGetTime();
m_iNowFrame = 0;
m_iFrameCounter = 0;
}
bool CFrameMgr::CanNextFrame()
{ //< CSD-030804
SAFE_DELETE(m_pdwFrameCheckTime);
m_pdwFrameCheckTime = this->MakeDwordMemory();
*m_pdwFrameCheckTime = ::timeGetTime();
const DWORD dwTimeGab = *m_pdwFrameCheckTime - *m_pdwPrevFrameCheckTime;//捞 磊府啊 龋免 登绰单 鳖瘤 吧赴 矫埃.
SAFE_DELETE(m_pdwPrevFrameCheckTime);
m_pdwPrevFrameCheckTime = this->MakeDwordMemory();
*m_pdwPrevFrameCheckTime = *m_pdwFrameCheckTime; //瘤陛 矫埃阑 悸泼
// 版快狼 荐. 橇饭烙阑 嘛阑锭 扁霖焊促 1. 辨菌促, 2.陋疽促.
// 胶诺阑 器窃秦辑 橇肺矫历绰 1雀 龋免 鸥烙捞 乞闭 扁霖俊 嘎苗 拎具 茄促.
// 1. 辨促搁
// 茄 橇饭烙阑 弊赴饶 吧赴 掉饭捞甫 历厘秦 滴绊.
// 胶诺阑 矫虐搁辑 1 橇饭烙捞 埃巴苞 鞍捞 掉饭捞甫 临咯凛聪促.
// 弊犯霸 掉饭捞甫 力芭 窍搁辑 - 蔼栏肺 倒酒 脊阑锭
// 促矫 茄橇饭烙阑 弊妨凛聪促.
if(*m_pnIsSkiped)
{
SAFE_DELETE(m_pdwSkipDelay);m_pdwSkipDelay = this->MakeDwordMemory();
*m_pdwSkipDelay = dwTimeGab;
}
// 2. 陋促搁.
// 橇饭烙捞 场唱扁 傈俊 DoFrameDelay甫 吧绢 橇饭烙 鸥烙阑 瘤楷 矫挪促.
//COMMENT char szMsg[ FILENAME_MAX]={0,};
FILE *fp = NULL;
//COMMENT sprintf( szMsg, "dwTimeGab = %d \n", dwTimeGab);
//COMMENT OutputDebugString( szMsg );
// static int nbabo;
int* pnFRAME_DELAY = this->GetFrameDelayBuffer();
int* pnHACK_CHECK = this->GetFrameDelayBuffer();
// int pnFRAME_DELAY = FRAME_DELAY;
// int s_iHackDelay = FRAME_DELAY;
IncFrameCount();
if(0 < *m_piSkipCount)
{
//COMMENT sprintf( szMsg, "Skip s_iSkipCount = %d \n", s_iSkipCount);
//COMMENT OutputDebugString( szMsg );
--(*m_piSkipCount);
goto __SKIP_FRAME;
}
if( *pnFRAME_DELAY != *pnHACK_CHECK)
{
ExitApplication(EA_CRACK_THREAD_FIND_CRACK);
}
if(*m_pnFrameDelay >= *pnFRAME_DELAY)
{
//COMMENT sprintf( szMsg, "Skip m_nFrameDelay = %d \n", m_nFrameDelay);
//COMMENT OutputDebugString( szMsg );
*m_pnFrameDelay -= *pnFRAME_DELAY;
goto __SKIP_FRAME;
}
if( *pnFRAME_DELAY != FRAME_DELAY)
{
ExitApplication(EA_CRACK_THREAD_FIND_CRACK);
}
if(*pnFRAME_DELAY < dwTimeGab)//橇饭烙捞 扁霖焊促 辨菌嚼聪促.
{
SAFE_DELETE(m_piSkipCount);m_piSkipCount = new int;
*m_piSkipCount = (dwTimeGab / *pnFRAME_DELAY)-1;//110->1 130->2
*m_pnFrameDelay += dwTimeGab % *pnFRAME_DELAY;
}
//COMMENT sprintf( szMsg, "Frame Go %d\n", dwTimeGab);
//COMMENT OutputDebugString( szMsg );
goto __DO_FRAME;
__DO_FRAME://肺弊甫 困秦辑 goto 甫 荤侩钦聪促.
{
fp = Fopen(szCheckFileName,"at+");
if(fp)
{
fprintf(fp,"Do Frame %d %d %d\n", dwTimeGab,*m_piSkipCount,*m_pnFrameDelay);
::fclose(fp);
}
*m_pnIsSkiped = 0;
if(*m_pdwSkipDelay)
{
*m_pnFrameDelay += *m_pdwSkipDelay;
SAFE_DELETE(m_pdwSkipDelay);m_pdwSkipDelay = this->MakeDwordMemory();
*m_pdwSkipDelay = 0;
}
SAFE_DELETE(pnFRAME_DELAY);//soto
SAFE_DELETE(pnHACK_CHECK);//soto
return true;
}
__SKIP_FRAME://肺弊甫 困秦辑 goto 甫 荤侩钦聪促.
{
fp = Fopen(szCheckFileName,"at+");
if(fp)
{
fprintf(fp,"SKIP Frame %d %d %d\n", dwTimeGab,*m_piSkipCount,*m_pnFrameDelay);
::fclose(fp);
}
*m_pnIsSkiped = 1;
if(*m_pdwSkipDelay)
{
*m_pnFrameDelay += *m_pdwSkipDelay;
SAFE_DELETE(m_pdwSkipDelay);m_pdwSkipDelay = this->MakeDwordMemory();
*m_pdwSkipDelay = 0;
}
SAFE_DELETE(pnFRAME_DELAY);//soto
SAFE_DELETE(pnHACK_CHECK);//soto
return false;
}
} //> CSD-030804
void CFrameMgr::DoFrameDelay(char** pTemp)
{//柳青捞 呈公 狐福霸 场车促搁 掉饭捞甫 淋
char *pCheck = NULL;
const DWORD dwGab = ::timeGetTime() - *m_pdwFrameCheckTime;
int* pFrame_Delay = this->GetFrameDelayBuffer();
if( *pFrame_Delay > dwGab )
{
int iForceDelay = (*pFrame_Delay - dwGab);
if(iForceDelay < 0) iForceDelay = 0;
*pTemp = new char[10];
pCheck = new char[10];
DWORD dwSleepTimeCheck = timeGetTime();
::Sleep(iForceDelay);
if(iForceDelay > 0)
{
if(timeGetTime() - dwSleepTimeCheck < iForceDelay)
{
//Sleep阑 荐青窍瘤 臼疽促.顿绢 逞菌促.
ExitApplication(EA_CHECK_ACCEL);
}
}
}
else
{
int iForceDelay = (*pFrame_Delay - dwGab);
if(iForceDelay < 0) iForceDelay = 0;
*pTemp = new char[10];
pCheck = new char[10];
DWORD dwSleepTimeCheck = timeGetTime();
::Sleep(iForceDelay);
if(iForceDelay > 0)
{
if(timeGetTime() - dwSleepTimeCheck < iForceDelay)
{
//Sleep阑 荐青窍瘤 臼疽促.顿绢 逞菌促.
ExitApplication(EA_CHECK_ACCEL);
}
}
}
delete pFrame_Delay;
strcpy(pCheck,"c8");
delete pCheck;
}
void CFrameMgr::IncFrameCount()//风俏捞 龋免 登绰 赣府俊 嘿咯凛聪促
{
const DWORD dwNowTime = ::timeGetTime();
if(dwNowTime > *m_pdwTargetTime)
{
m_iNowFrame = m_iFrameCounter;
m_iFrameCounter = 1;//橇饭烙 墨款飘 辆丰
*m_pdwTargetTime = dwNowTime+1000;//1檬 第肺 悸泼
//COMMENT OutputDebugString( "1 Sec Over\n");
FILE* fp = Fopen(szCheckFileName,"at+");
if(fp)
{
fprintf(fp,"1 Sec Over\n");
::fclose(fp);
}
}
else
{
//COMMENT char szMsg[ FILENAME_MAX]={0,};
//COMMENT sprintf( szMsg, "Counter %d\n", m_iFrameCounter);
//COMMENT OutputDebugString( szMsg );
++m_iFrameCounter;
}
return;
}
__int32 CFrameMgr::GetFrameCount()
{
return m_iNowFrame;
}
//soto-hack ??
int* CFrameMgr::GetFrameDelayBuffer()
{ //< CSD-030804
int* pNumber = new int;
*pNumber = 30*2;
return pNumber;
} //> CSD-030804
DWORD* CFrameMgr::MakeDwordMemory()
{
return new DWORD;
}
void CFrameMgr::FreeMemories()
{
SAFE_DELETE(m_pnFrameDelay);
SAFE_DELETE(m_pdwFrameCheckTime);
SAFE_DELETE(m_pdwPrevFrameCheckTime);
SAFE_DELETE(m_pdwTargetTime);
SAFE_DELETE(m_piSkipCount);
SAFE_DELETE(m_pnIsSkiped);
SAFE_DELETE(m_pdwSkipDelay);
}
__int32* CFrameMgr::MakeINT32Memory()
{
return new __int32;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -