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

📄 wmain.cpp

📁 战场登陆器vc++源代码很好用的哦精彩精彩
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// -------------------------------------------------------------- 
//                      Helbreath Client 						  
//
//                      1998.10 by Soph
//
// --------------------------------------------------------------


#include <windows.h>
#include <windowsx.h>
#include <stdio.h>
#include <stdlib.h> 
#include <winbase.h>
#include <mmsystem.h>
#include <process.h>
#include "resource.h"
#include "XSocket.h"
#include "winmain.h"
#include "Game.h"
#include "GlobalDef.h"

#ifdef DEF_HTMLCOMMOM
	HWND	m_hwndWebCtrl;
#endif

#if DEF_LANGUAGE == 3
// v2.03 苞陛 茄固福 
#import "ClientLogon.dll" no_namespace
#endif
extern "C" __declspec( dllimport) int __FindHackingDll__(char *);

// --------------------------------------------------------------

#define WM_USER_TIMERSIGNAL		WM_USER + 500
#define WM_USER_CALCSOCKETEVENT WM_USER + 600

int				G_iAddTable31[64][510], G_iAddTable63[64][510]; // 胶橇扼捞飘俊辑 曼炼窍绰 抛捞喉. 加档甫 困秦 傈开 
int				G_iAddTransTable31[510][64], G_iAddTransTable63[510][64]; 

long    G_lTransG100[64][64], G_lTransRB100[64][64];
long    G_lTransG70[64][64], G_lTransRB70[64][64];
long    G_lTransG50[64][64], G_lTransRB50[64][64];
long    G_lTransG25[64][64], G_lTransRB25[64][64];
long    G_lTransG2[64][64], G_lTransRB2[64][64];

char			szAppClass[32];
HWND			G_hWnd = NULL;
HWND			G_hEditWnd = NULL;
HINSTANCE       G_hInstance = NULL;
MMRESULT		G_mmTimer;

#ifdef DEF_HTMLCOMMOM	//	Html 促捞倔肺弊 何盒..
	HWND G_hInternetWnd = NULL;
	BOOL G_bDlg1 = FALSE;
#endif


char             G_cSpriteAlphaDegree;	// 扁夯利栏肺 林埃葛靛 

class CGame * G_pGame;

class XSocket * G_pCalcSocket = NULL;
BOOL  G_bIsCalcSocketConnected = TRUE;
DWORD G_dwCalcSocketTime = NULL, G_dwCalcSocketSendTime = NULL;

char G_cCmdLine[256], G_cCmdLineTokenA[120], G_cCmdLineTokenA_Lowercase[120], G_cCmdLineTokenB[120], G_cCmdLineTokenC[120], G_cCmdLineTokenD[120], G_cCmdLineTokenE[120];

//BOOL WINAPI DecryptFunc(LPTSTR cipher_text, LPTSTR plain_text );

// --------------------------------------------------------------

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam, LPARAM lParam)
{ 
	if(G_pGame->GetText( hWnd, message, wParam, lParam)) return 0;

	switch (message) {
	case WM_USER_CALCSOCKETEVENT:
		// 苞陛 家南捞 谗板促. 霸烙吝俊 谗板促搁 沥惑 荤侩磊啊 酒聪促.
		G_pGame->_CalcSocketClosed();
		break;
	
	case WM_CLOSE:
		if ( (G_pGame->m_cGameMode == DEF_GAMEMODE_ONMAINGAME) && ( G_pGame->m_bForceDisconn == FALSE ) )
		{
#ifdef _DEBUG
			if (G_pGame->m_cLogOutCount == -1 || G_pGame->m_cLogOutCount > 2) G_pGame->m_cLogOutCount = 1; 
#else
			if (G_pGame->m_cLogOutCount == -1 || G_pGame->m_cLogOutCount > 11) G_pGame->m_cLogOutCount = 11; 
#endif
		}
		else if (G_pGame->m_cGameMode == DEF_GAMEMODE_ONLOADING) return (DefWindowProc(hWnd, message, wParam, lParam));
		else if (G_pGame->m_cGameMode == DEF_GAMEMODE_ONMAINMENU) G_pGame->ChangeGameMode(DEF_GAMEMODE_ONQUIT);
		break;
	
	case WM_SYSCOMMAND:
		// 胶农赴 技捞滚狼 悼累阑 阜绰促.
		if((wParam&0xFFF0)==SC_SCREENSAVE || (wParam&0xFFF0)==SC_MONITORPOWER) 
			return 0; 
		return DefWindowProc(hWnd, message, wParam, lParam);
			
	case WM_USER_TIMERSIGNAL:
		G_pGame->OnTimer();
		break;

	case WM_KEYDOWN:
		G_pGame->OnKeyDown(wParam);
		return (DefWindowProc(hWnd, message, wParam, lParam));
		
	case WM_KEYUP:
		G_pGame->OnKeyUp(wParam);
		return (DefWindowProc(hWnd, message, wParam, lParam));

	case WM_SYSKEYDOWN:
		G_pGame->OnSysKeyDown(wParam);
		return (DefWindowProc(hWnd, message, wParam, lParam));
		break;

	case WM_SYSKEYUP:
		G_pGame->OnSysKeyUp(wParam);
		return (DefWindowProc(hWnd, message, wParam, lParam));
		break;

	case WM_ACTIVATEAPP:

#ifdef DEF_HTMLCOMMOM	//	mando	020910	厚劝己 灯促啊 劝己 灯阑锭..舅飘+徘..
		::SetFocus(G_hWnd);
#endif

		if( wParam == 0 ) {

#ifdef DEF_HTMLCOMMOM	//	Html 促捞倔肺弊 何盒..
				G_bDlg1 = FALSE;
				EndDialog( G_hInternetWnd, 0 );			
				::SetFocus(G_hWnd);
#endif

			G_pGame->m_bIsProgramActive = FALSE;
			G_pGame->m_DInput.SetAcquire(FALSE);
		}
		else {
			G_pGame->m_bIsProgramActive = TRUE;
			G_pGame->m_DInput.SetAcquire(TRUE);
			G_pGame->m_bCtrlPressed = FALSE;// 虐焊靛 风凭 
			
			//Alt +Tab 饶 颇老 函版 八荤   //20030619 侩林聪
			if (G_pGame->bCheckImportantFile() == FALSE) {
				MessageBox(G_pGame->m_hWnd, "File checksum error! Get Update again please!", "ERROR1", MB_ICONEXCLAMATION | MB_OK);
				PostQuitMessage(0);
				return 0;
			}
			
			// v2.04 怕胶农 傈券且嫐 八荤茄促.
			if (__FindHackingDll__("CRCCHECK") != 1) {
				G_pGame->ChangeGameMode(DEF_GAMEMODE_ONQUIT);
				return NULL;
			}
		}
		return DefWindowProc(hWnd, message, wParam, lParam);

		
#ifdef DEF_HTMLCOMMOM	//	mando	促捞倔肺弊冠胶啊 栋乐阑 版快 器目胶捞悼矫 冠胶 摧扁^^; 饶风~~快掺!!
	case WM_SETFOCUS:
//		if(G_bDlg1)
//			::SetFocus(G_hInternetWnd);

		if(G_bDlg1)
		{
			short msX, msY, msZ;
			char cLB, cRB;
			DXC_dinput m_DInput2;

			if (m_DInput2.bInit(G_hWnd,G_hInstance) == FALSE) {
				MessageBox(G_hWnd, "This program requires DirectX7.0a!","ERROR",MB_ICONEXCLAMATION | MB_OK);
				return FALSE;
			}

			//	付快胶涝仿 滚瓢诀老版快俊父....
			m_DInput2.UpdateMouseState(&msX, &msY, &msZ, &cLB, &cRB);
//			m_DInput2.UpdateMouseState(0, 0, 0, &cLB, &cRB);

			//	喘赴 滚瓢 捞 绝阑 版快..
			if(!cLB && !cRB)
			{
//			::GetCursorPos(&pPoint);
				G_bDlg1 = FALSE;
				EndDialog( G_hInternetWnd, 0 );			
				::SetFocus(G_hWnd);
//			::SetCursorPos(pPoint.x, pPoint.y);
//			::SetCursorPos(10, 10);
			}
			else	//	促捞倔肺弊观栏肺 唱啊辑 努腐沁阑锭..
			{
				SetFocus(G_hInternetWnd);

				if( G_pGame->m_DDraw.m_bFullMode == TRUE )
				{
					::SetCursorPos(510, 400);
				}
				else
				{
					int cx = GetSystemMetrics(SM_CXFULLSCREEN)/2;
					int cy = GetSystemMetrics(SM_CYFULLSCREEN)/2;
					if(cy>280) cy -= 40;
					::SetCursorPos(510 + (cx-320), 400 + (cy-240));
				}

			}
//			m_DInput2.Quit();
		}
		break;
#endif

	case WM_SETCURSOR:
		SetCursor(NULL);
		return TRUE;

	case WM_DESTROY:
		OnDestroy();
		return DefWindowProc(hWnd, message, wParam, lParam);
		
	case WM_USER_GAMESOCKETEVENT:
		G_pGame->OnGameSocketEvent(wParam, lParam);
		break;

	case WM_USER_LOGSOCKETEVENT:
		G_pGame->OnLogSocketEvent(wParam, lParam);
		break;
	
	default: 
		return (DefWindowProc(hWnd, message, wParam, lParam));
	}
	
	return NULL;
}

int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
               LPSTR lpCmdLine, int nCmdShow )
{
	// v1.432
	HINSTANCE hDll;
	char cSearchDll[] = "rd`qbg-ckk";
	char cRealName[12];

	// v2.171
	srand((unsigned)time(NULL));
	char *pJammer = new char[(rand() % 100) +1];
	G_pGame = new class CGame; // v2.171

	ZeroMemory(cRealName, sizeof(cRealName));
	strcpy(cRealName, cSearchDll);
	for (WORD i = 0; i < strlen(cRealName); i++)
	if (cRealName[i] != NULL) cRealName[i]++;

	hDll = LoadLibrary(cRealName);
	if( hDll == NULL ) {
		MessageBox(NULL, "don't find search.dll", "ERROR!", MB_OK);
		return 0;
	}

#ifdef DEF_USING_WIN_IME
	HINSTANCE hRichDll = LoadLibrary( "Riched20.dll" );
#endif
	typedef int (MYPROC)(char *) ;
	MYPROC *pFindHook; 
	pFindHook = (MYPROC *) GetProcAddress(hDll, "__FindHackingDll__") ;

	if (pFindHook== NULL) {
		MessageBox(NULL, "can't find search.dll", "ERROR!", MB_OK);
		return 0 ;
	}else if ((*pFindHook)("CRCCHECK") != 1) {
		return 0 ;
	}
	FreeLibrary(hDll);

	sprintf( szAppClass, "Client-I%d", hInstance);
	if (!InitApplication( hInstance))		return (FALSE);
    if (!InitInstance(hInstance, nCmdShow)) return (FALSE);

	Initialize((char *)lpCmdLine);

#ifndef _DEBUG
	if (OpenMutex(MUTEX_ALL_ACCESS, FALSE, "0543kjg3j31%") != NULL) {
		MessageBox(NULL, "Only one Helbreath client program allowed!", "ERROR!", MB_OK);
		return 0;
	}
	HANDLE hMutex = CreateMutex(NULL, FALSE, "0543kjg3j31%");
#endif
	
	EventLoop();

#ifndef _DEBUG
	ReleaseMutex(hMutex);
	CloseHandle(hMutex);
#endif

	delete[] pJammer; // v2.171
	delete G_pGame; // v2.171

#ifdef DEF_USING_WIN_IME
	FreeLibrary(hRichDll);
#endif

	return 0;
}

BOOL InitApplication( HINSTANCE hInstance)
{     
 WNDCLASS  wc;

	wc.style = (CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS);
	wc.lpfnWndProc   = (WNDPROC)WndProc;             
	wc.cbClsExtra    = 0;                            
	wc.cbWndExtra    = sizeof (int);
	wc.hInstance     = hInstance;
	wc.hIcon         = LoadCursor(NULL, IDI_APPLICATION);
	wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName  = NULL;
	wc.lpszClassName = szAppClass;
        
	return (RegisterClass(&wc));
}

BOOL InitInstance( HINSTANCE hInstance, int nCmdShow )
{
	int cx = GetSystemMetrics(SM_CXFULLSCREEN)/2;
	int cy = GetSystemMetrics(SM_CYFULLSCREEN)/2;
	if(cy>280) cy -= 40;
//#ifdef DEF_FULL_SCREEN
	G_hWnd = CreateWindowEx(NULL, szAppClass, "Helbreath Crusade", WS_POPUP, cx-320, cy-240, 
							640, 480, NULL, NULL, hInstance, NULL);     
//#else
//	G_hWnd = CreateWindowEx( 0, szAppClass, "HClient", WS_POPUP | WS_BORDER, cx-320, cy-240,
//							640, 480, NULL, NULL, hInstance, NULL );
//#endif
    if (!G_hWnd) return FALSE;
    G_hInstance	= hInstance;

#ifdef DEF_HTMLCOMMOM	//	mando..
	#ifdef WEBCTRL_AUTOINIT
	   m_hwndWebCtrl = CreateWebControl(
		  m_szHTML,
		  WS_CHILD | WS_VISIBLE,
		  0, 0, 0, 0,
		  m_hwnd,
		  IDC_WEBCTRL );
	#else
	   InitWebCtrl();

	   m_hwndWebCtrl = CreateWindow(
		  WC_WEBCTRL,
		  "",
		  WS_CHILD | WS_VISIBLE,
		  0, 0, 0, 0,
		  G_hWnd,
		  (HMENU) IDC_WEBCTRL,
		  G_hInstance,//hInst,
		   NULL );
	#endif
#endif


	ShowWindow(G_hWnd, SW_SHOWDEFAULT);
	UpdateWindow(G_hWnd);

#ifdef DEF_HTMLCOMMOM	//	mando..
	::SetFocus(G_hWnd);
#endif

	return TRUE;
}

void EventLoop()
{
 register MSG msg;
	while( 1 ) {
		if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) {
			if( !GetMessage( &msg, NULL, 0, 0 ) ) return;// msg.wParam;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
		}
		else if (G_pGame->m_bIsProgramActive) G_pGame->UpdateScreen();
		else if (G_pGame->m_cGameMode == DEF_GAMEMODE_ONLOADING) G_pGame->UpdateScreen_OnLoading( FALSE );
		else WaitMessage();
	}
}

void OnDestroy()
{
	G_pGame->m_bIsProgramActive = FALSE;
		
	_StopTimer(G_mmTimer);

	G_pGame->Quit();
	WSACleanup();
#if DEF_LANGUAGE < 3 //措父苞 吝惫父 辆丰矫 权其捞瘤肺 啊厘..
	GoHomepage();
#endif
	PostQuitMessage(0);
}

void CALLBACK _TimerFunc(UINT wID, UINT wUser, DWORD dwUSer, DWORD dw1, DWORD dw2)
{
	PostMessage(G_hWnd, WM_USER_TIMERSIGNAL, wID, NULL);
}

MMRESULT _StartTimer(DWORD dwTime)
{
 TIMECAPS caps;

	timeGetDevCaps(&caps, sizeof(caps));
	timeBeginPeriod(caps.wPeriodMin);
	return timeSetEvent(dwTime,0,_TimerFunc,0, (UINT)TIME_PERIODIC);
}

void _StopTimer(MMRESULT timerid)
{
 TIMECAPS caps;

	if (timerid != 0) {
		timeKillEvent(timerid);
		timerid = 0;
		timeGetDevCaps(&caps, sizeof(caps));
		timeEndPeriod(caps.wPeriodMin);
	}
}

#if DEF_LANGUAGE == 3
unsigned __stdcall ThreadProc(void *ch)
{
 char * cp, * token, cPacket[1024], cIPaddr[20], cPort[20], cTemp[256], cCmdLine[256];
 char seps[] = "& ";
 int iSended;
 BOOL bRet;
 
	G_bIsCalcSocketConnected = FALSE;
	// 立加 矫档 矫埃 涝仿
	G_dwCalcSocketTime = timeGetTime();
	G_dwCalcSocketSendTime = G_dwCalcSocketTime;

	ZeroMemory(cPacket, sizeof(cPacket));
	cp = (char *)cPacket;
	
	if (memcmp(G_cCmdLineTokenA, "/KWG", 4) == 0) {
		// 内齿 岿靛
		memcpy(cp, "KwGwMGS", 7);
		cp += 8;
		memcpy(cp, "CONNECT", 7);
		cp += 8;
		memcpy(cp, G_cCmdLineTokenB, strlen(G_cCmdLineTokenB));
		cp += 16;
		memcpy(cp, G_cCmdLineTokenC, strlen(G_cCmdLineTokenC));
		cp += 16;
		memcpy(cp, G_cCmdLineTokenD, strlen(G_cCmdLineTokenD));
		cp += 16;
		memcpy(cp, G_cCmdLineTokenE, strlen(G_cCmdLineTokenE));
		cp += strlen(G_cCmdLineTokenE);

		G_pCalcSocket = NULL;
		G_pCalcSocket = new class XSocket(G_hWnd, 100); 
		bRet = G_pCalcSocket->bBlockConnect("game.kornetworld.com", 9000, NULL); 

		if (bRet == TRUE) {
			G_pCalcSocket->bInitBufferSize(30000);
			iSended = G_pCalcSocket->iSendMsgBlockingMode(cPacket, 256);
			// 家南捞 楷搬登菌澜阑 钎矫.
			G_bIsCalcSocketConnected = TRUE;
			// 家南阑 稠喉废欧 葛靛肺 
			u_long arg = 1;
			ioctlsocket(G_pCalcSocket->m_Sock, FIONBIO, &arg);
			// 捞亥飘 皋矫瘤 积己
			WSAAsyncSelect(G_pCalcSocket->m_Sock, G_hWnd, WM_USER_CALCSOCKETEVENT, FD_CLOSE);
		}

⌨️ 快捷键说明

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