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

📄 crackmgr.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
字号:
// CrackMgr.cpp: implementation of the CCrackMgr class.
//
//////////////////////////////////////////////////////////////////////

#include "../stdafx.h"
#include "CrackMgr.h"

#include "LogManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const	int DEFAULT_CHECK_ACCEL_TIME	= 35000;//馆靛矫 CHECK_ACCEL_RECOMMAND_TIME焊促 5檬 捞惑 目具 茄促 窜困绰 ms
const	int CHECK_ACCEL_RECOMMAND_TIME	= 30000;//30 檬
const	int CHECK_ACCEL_PING_TIME		= 1800;

CCrackMgr CrackMgr;
CCrackMgr::CCrackMgr()
{

}

CCrackMgr::~CCrackMgr()
{

}

void CCrackMgr::AutoCheckAccelator(CHARLIST *ch)
{
	const int cn = ch->GetServerID();
	const DWORD dwRealTime = timeGetTime();
	const int iMyState = connections[cn].state;

	if(iMyState==CONNECT_JOIN  || iMyState==CONNECT_JOIN_START)//霸烙 吝老 版快父 眉农 茄促
	{
		if( dwRealTime >=  ch->dwCheckAccelTime)//矫埃 眉农
		{
			if( ch->dwSendedAccelTime )//酒鳖 焊陈绰单 货肺 焊尘锭 鳖瘤 览翠捞 绝栏搁
			{
				return;
			}
			t_packet	packet;
			ch->dwCheckAccelTime = dwRealTime + DEFAULT_CHECK_ACCEL_TIME;
			ch->dwSendedAccelTime = dwRealTime;
			packet.h.header.type = CMD_CHECK_ACCEL;
			packet.h.header.size = sizeof(t_server_check_accel);
			packet.u.server_check_accel.dwCheckAccelNowtime	= ch->dwSendedAccelTime;//焊郴绰 矫埃.
			::QueuePacket(connections, cn, &packet, 1);
		}
	}
	else//霸烙吝捞 酒聪搁
	{
		ch->dwSendedAccelTime = 0;//焊辰扒 公瓤拳 矫挪促
	}	
	return;
}

void CCrackMgr::ComformAccelator( const int cn, const t_packet *packet )
{
	CHARLIST *ch = ::CheckServerId(cn);
	if(!ch) {return;}

	char msg[300] = {0,};
	const DWORD dwRealtime = timeGetTime();	
	const DWORD dwRecvSendedServerTime	=	packet->u.server_check_accel.dwCheckAccelNowtime;
	const DWORD dwSendedAccelTime		=	ch->dwSendedAccelTime;
	const int iMyState = connections[cn].state;
	//宝满篮 康开篮 (瘤陛 90檬傈- 俏鸥烙)何磐 (瘤陛鳖瘤) 捞促
	
	if(iMyState==CONNECT_JOIN  || iMyState==CONNECT_JOIN_START)//霸烙 吝老 版快父 眉农 茄促
	{
		if	((	dwRealtime-dwRecvSendedServerTime < CHECK_ACCEL_RECOMMAND_TIME)//-CHECK_ACCEL_PING_TIME )//CHECK_ACCEL_RECOMMAND_TIME 捞傈 焊促 累促//CHECK_ACCEL_PING_TIME 俏乐促绊 模促
			||(	dwSendedAccelTime != dwRecvSendedServerTime))//酒鳖 焊辰 蔼苞 促弗 蔼捞 甸绢柯促
		{
			sprintf( msg,"Accel Time Error 90 Never.. \nSended = %d , Recved = %d , Value = %d",dwSendedAccelTime, dwRecvSendedServerTime, dwRealtime-dwRecvSendedServerTime);

			if(g_accelator_user_closeconnection )	
			{	
				SendHackingUser( cn, HACKING_ACCELATOR_, msg );
				closeconnection( connections, cn, -208 );
			}
		}
		ch->dwSendedAccelTime = 0;//罐疽栏聪鳖 焊陈带 矫埃阑 努府绢 秦霖促// 困摹 函版 炼缴. 瘤快瘤档 富绊. 林籍 贸府 窍瘤 富巴
	}
	else
	{
		ch->dwSendedAccelTime = 0;
	}
}

void CCrackMgr::SendHackingUser( const int cn, const int type, const char *cause )
{
	t_packet p;
	CHARLIST * ch =	::CheckServerId(cn);
	if(!ch){return;}
	if(ch->SprType == SPRITETYPE_NPC ) {return;}

	p.h.header.type = CMD_HACKING_USER;
	p.h.header.size = sizeof( t_hacking_user );
	t_hacking_user *tp = &p.u.hacking_user;
	tp->type = type;//	short	type;
	::memcpy( tp->id, connections[cn].id ,20);//	char	id[ 20];
	::memcpy( tp->name, connections[cn].name ,20);//	char	name[20];
	::memcpy( tp->ip, connections[cn].ip_address,20 );//	char	ip[20];
	::memcpy( tp->cause, cause ,100);//	char	cause[100];

	QueuePacket( connections, DB_DEMON, &p, 1 );
}

void CCrackMgr::RecvAccelType(int cn, t_packet *p)
{	//< CSD-030808
	CHARLIST* pTarget = ::CheckServerId(cn);

	if (pTarget == NULL)
	{
		return;
	}

	t_packet t;
	t.h.header.type = CMD_SEND_ACCEL_TYPE;
	t.h.header.size = 0;
	QueuePacket(connections,cn,&t,1);
	
	g_pLogManager->SaveAccelType(pTarget, p->u.Accel_Type.strMsg);
}	//> CSD-030808

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -