⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 framemgr.cpp

📁 国内著名网络游戏dragon的客户端登陆用完整源码 配套一起上传的服务端部分可开服 无说明文档
💻 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 + -