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

📄 dragon.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "stdafx.h"
#include <Stdio.h>
#include <Process.h>
#include <Direct.h>
#include "resource.h"
#include "dragon.h"
#include "math.h"

#include "gameproc.h"
#include "network.h"
#include "map.h"
#include "char.h"
//#include "FPS.h"
#include "object.h"

#include "Hong_Sprite.h"
#include "Hong_Light.h"
#include "Hong_Sub.h"

#include "Hangul.h"
//#include "Menudef.h"
#include "Menu.h"
#include "MenuStartSet.h"
#include "DirectSound.h"
#include "Effect.h"
#include "LineCommand.h"
#include "Tool.h"
#include "ItemTable.h"
#include "Midi.h"
#include "MouseCursor.h"
#include "SkillTool.h"
#include "Skill.h"
#include "House.h"
#include "CharDataTable.h"
#include "Item.h"
#include "SmallMenu.h"
#include "Counseler.h"
#include "NPC_Pattern.h"
#include "Music.h"
//1206 zhh
#include "CReadArgument.h"
#include "FrameMgr.h"
#include "LottoMgr.h"//soto-030501
//< CSD-CN-031215
#include "SecuritySystem.h"
//> CSD-CN-031215
extern SMENU    SMenu[ MAX_MENU];		// startmenu.cpp
extern NPC_INFO g_infNpc[MAX_CHARACTER_SPRITE_]; // CSD-030419
extern int ListenCommand;		// network.cpp
extern void DoQuickmemoryByKeyInput(const int iInputKey,bool bIsDikCheck);

///////////////////////////////////////////////////////////////////////////////
// Global Variables:
HWND				g_hwndMain;
HINSTANCE			g_hInstance;
	
GAMEINFO			g_GameInfo;
	
TCHAR				g_szTitle[ MAX_LOADSTRING ];
TCHAR				g_szWindowClass[ MAX_LOADSTRING ];
TCHAR				g_szCWD[ _MAX_PATH ];
TCHAR				g_szInfoFile[ _MAX_PATH ];
	
BOOL				g_bIsActive = FALSE;
//////////// 0309 lkh 眠啊 //////////////
BOOL				g_bCommandMode = CM_COMMAND;
	
DIRECTDRAWINFO		g_DirectDrawInfo = {0,};
CHARACTERLIST		g_CharacterList;

	
POINT				g_pointMouse, g_pointFuzz;
long				g_pointMouseX, g_pointMouseY;
int					g_nLButtonState, g_nRButtonState;
int					g_nLDButtonState, g_nRDButtonState;
int					g_nOldLButtonState, g_nOldRButtonState;
int					g_nSensitivity = 0;		// 付快胶皑档甫 Setting茄促. 
int					LButtonDownIng, RButtonDownIng;

DWORD				g_CurrentTime;			// 辑滚俊辑 舅妨霖 泅犁 矫埃.
DWORD				g_ClientTime;			// GameProc()俊辑 拌加利栏肺 Check 茄促. 
DWORD				g_ServerClientTimeGap;

DWORD				g_curr_time;			//  辑滚俊辑焊郴林绰 泅犁狼 矫埃. 檬窜困..
DWORD				g_packet_recv_send_checktime;

///////////////// 0311 lkh 眠啊 /////////////////
int					g_Operator_Function;	//款康磊侩 瓤苞 备泅阑 困茄 胶困莫 函荐



char IIDD[MAX_PATH]= {0,};
char PPWW[MAX_PATH]= {0,};


int CheckSumError;	
	
// ------------------- khs 0804
char			   *g_DestBackBuf, *g_OldDestBackBuf;
int					Mox, Moy;		// 付快胶狼 Map狼 例措谅钎.
int					Mapx, Mapy;		// 泅犁焊咯瘤绰 甘狼 矫累例措谅钎.
int					MapTx, MapTy;	// 泅犁焊咯瘤绰 甘狼 矫累例措谅钎.
LPCHARACTER         Hero = NULL;			// 林牢傍狼 Point..
//------------------------------
int					QuitFlag = false;

DWORD  g_RecvBytes, g_SendBytes;

bool				MouseCursorOnOff = true;
DWORD				g_Inside;

int					NowLoading;


	
///////////////////////////////////////////////////////////////////////////////
// Function prototypes.
ATOM				MyRegisterClass( HINSTANCE );
BOOL				InitInstance( HINSTANCE, int );
BOOL				InitApplication( HINSTANCE, LPSTR );
void				ExitApplication( void );
void				ParseCommandLine( LPSTR );
	
void				SetCurrentWorkingDirectory( void );
char*				GetCurrentWorkingDirectory( void );
void				SetInfoFile( void );
char*				GetInfoFile( void );
char*				EatFrontWhiteChar( char* );
char*				EatRearWhiteChar( char* );
BOOL				ShowErrorMessage( char* lpszMessage );
	
BOOL				LoadGameInfo( void );
	
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime); // CSD-CN-031215
	
/////////////// 0128 捞痹绕 /////////////////	
bool  g_Volume_Off=0;
	
/////////////// 0126 捞痹绕 /////////////////	
short int	g_Current_Volume=100;	//泅犁狼 荤款靛 杭俘(0~100荤捞蔼)
short int	g_To_Volume		=100;	//函券登绢具 窍绰 (弥辆利栏肺) 格钎 荤款靛 杭俘
short int	g_Change_Volume	=0;		//杭俘 荐摹 函券摹(-+ 函拳蔼->Fade Out/In)
	
extern void InitMoveVariablesSetting( void );
extern void		ItemRead();	
extern void PutStartLodingImg( );		// 0127 YGI
			
#include "Path.h"
			
char nOldVal[MAX_PATH];
			
			
int recvAttackResultCount;
FILE *keyplayfp;
FILE *keykeyplayfp;
			
			
bool g_bIsChristmas = false;
			
///////////////////////////////////////////////////////////////////////////////
// Functions.
			
//lsw		
extern char explain_tactics[13][20];
extern char FightTeam[5][13];
extern char NationName[8][20];			// 010227 YGI
// thai2 YGI
extern char	subFarmType[20][25];
extern char	subMineType[20][25];
extern char	subHubType[20][25];

//________________________ // 010904 LTS
extern bool InitNation();
extern void CloseNation();
extern void InitHorseAniTable();		// LTS HORSERIDER
//________________________ // 010904 LTS
			
			
static int FirstCheck = 0;
static char s_szCheckCode[] = "87021595-E214-4061-8E40-98BD9AAED844"; // CSD-CN-031215

HWND g_hMultiDlg = NULL;
CSecuritySystem g_sysSecurity; // CSD-CN-031215
UINT g_idSafeTimer = 0; // CSD-CN-031215
			
//---------------------------------------------------------------------------------------------
//  霸烙阑	角青窍扁傈 拳老捞抚狼 函悼捞扼电啊 磊悼菩摹肺 给窍绊 橇肺弊伐利栏肺
//  贸府秦具 窍绰 巴阑 咯扁辑 贸府茄促. 
//---------------------------------------------------------------------------------------------
void BeforeExe( LPSTR lpCmdLine ) // thai2 YGI
{	//< CSD-030324			

	int i,j;	
	int c = 0;	

	if( !FirstCheck)
	{		
		for(int ii=0;ii<13; ii++)
		{
			char *temp = lan->OutputMessage(9,ii+451);
			if( strlen( temp ) >= 20 ) JustMsg( "1 : %d", strlen( temp ) );
			sprintf(explain_tactics[ii],"%s",lan->OutputMessage(9,ii+451));
		}
		
		for(ii=0;ii<5; ii++)
		{
			char *temp = lan->OutputMessage(9,ii+441);
			if( strlen( temp ) >= 13 ) JustMsg( "2: %d", strlen( temp ) );
			
			sprintf(FightTeam[ii],"%s",lan->OutputMessage(9,ii+441));
		}
		
		for(ii=0;ii<8; ii++)
		{
			char *temp = lan->OutputMessage(9,ii+421);
			if( strlen( temp ) >= 20 ) JustMsg( "3: %d", strlen( temp ) );
			sprintf(NationName[ii],"%s",lan->OutputMessage(9,ii+421));
		}
		// 010314 KHS
		for (ii = 0; ii < MAX_CHARACTER_SPRITE_; ++ii)
		{	//< CSD-030419
			char* temp = lan->OutputMessage(4, ii + 201);
			if (strlen(temp) >= 40) 
			{
				JustMsg("4: %d", strlen(temp));
			}
			
			sprintf(g_infNpc[ii].szName, "%s", lan->OutputMessage(4, ii + 201));
		}	//> CSD-030419
		
		for(ii=0;ii<20; ii++)
		{
			char *temp = lan->OutputMessage(4,ii+401);
			if( strlen( temp ) >= 25 ) JustMsg( "5: %d", strlen( temp ) );
			sprintf(subFarmType[ii],"%s",lan->OutputMessage(4,ii+401));
		}
		
		
		for(ii=0;ii<8; ii++)
		{
			char *temp = lan->OutputMessage(4,ii+421);
			if( strlen( temp ) >= 25 ) JustMsg( "6: %d", strlen( temp ) );
			sprintf(subMineType[ii],"%s",lan->OutputMessage(4,ii+421));
		}
		
		
		for(ii=0;ii<11; ii++)
		{
			char *temp = lan->OutputMessage(4,ii+121);
			if( strlen( temp ) >= 25 ) JustMsg( "7: %d", strlen( temp ) );
			sprintf(subHubType[ii],"%s",lan->OutputMessage(4,ii+121));
		}
		
		for(int j=0;j<MAX_LINE_COMMAND_; j++)//010216 lsw 扼牢 目膏靛 / 第俊 疙飞绢甸  501 锅何磐 矫累
		{
			char *temp = lan->OutputMessage(9,j+501);
			if( strlen( temp ) >= 35 ) JustMsg( "8: %d, %d", strlen( temp ), j );
			sprintf(LC[j].reserved,"%s" ,lan->OutputMessage(9,j+501));
		}
		FirstCheck = 1;
	}

	g_pBill = new CClientBill(lpCmdLine);
	
#ifdef _DEBUG//捞何盒篮 叼滚彪 侩栏肺 绢恫 牢磊蔼捞 逞绢 吭绰瘤 焊咯凛聪促. 拱沸 硅器且锭绰 哗具 钦聪促
	g_pBill->DisplayAllCommand();
#endif

#ifdef _MAPOBJECT_DIRECTORY_CHANGE_

	_mkdir("./object/0" );
	_mkdir("./object/2" );
	_mkdir("./object/3" );
	_mkdir("./object/4" );
	_mkdir("./object/5" );
	_mkdir("./object/6" );
	_mkdir("./object/7" );

	c = ReturnFileNumber("./object/Sung_Tile_00/" );
	c += ReturnFileNumber("./object/K_Sung2/" );
	c += ReturnFileNumber("./object/Ma-In/" );
	c += ReturnFileNumber("./object/Source/" );
	c += ReturnFileNumber("./object/Ice-w01/" );
	c += ReturnFileNumber("./object/Firedun1/" );
	c += ReturnFileNumber("./object/ManDun1/" );

	if( c )
	{
		JustMsg(lan->OutputMessage(6,1)   );//010215 lsw
		JustMsg( lan->OutputMessage(6,2)  );//010215 lsw
	}

	Dir2DirCopy("./object/Sung_Tile_00/",	"./object/2/" );
	Dir2DirCopy("./object/K_Sung2/",		"./object/7/" );
	Dir2DirCopy("./object/Ma-In/",			"./object/0/" );
	Dir2DirCopy("./object/Source/",			"./object/6/" );
	Dir2DirCopy("./object/Ice-w01/",		"./object/3/" );
	Dir2DirCopy("./object/Firedun1/",		"./object/4/" );
	Dir2DirCopy("./object/ManDun1/",		"./object/5/" );

	if( c )
	{
		JustMsg( lan->OutputMessage(6,3) );//010215 lsw
	}
				
	FILE *fp = Fopen( "./object/7/0277.csp", "rb" );
	if( fp )	
	{			
		fclose(fp);			
		JustMsg( lan->OutputMessage(6,4)  );//010215 lsw
		for( i = 277 ; i <= 798 ; i ++)
		{						
			char temp[ FILENAME_MAX];
			char temp1[ FILENAME_MAX];
													
			for( j = 0 ; j < 10 ; j ++)
			{										
				if( j == 0 )
				{								
					sprintf( temp, "./object/7/%04d.csp", i );
					sprintf( temp1, "./object/7/%04d.csp", i+7000 );
				}								
				else								
				{										
					sprintf( temp, "./object/7/%04d%02d.csp", i,j );
					sprintf( temp1, "./object/7/%04d%02d.csp", i+7000,j );
				}									
				rename( temp, temp1 );
			}									
		}											
	}			
#endif
}			

extern int LoadHackingToolName();
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	::Sleep(1000);//坷配菩摹狼 菩摹 锭巩俊 1檬 沥档狼 掉饭捞甫 凛聪促.

#ifndef _DEBUG
	if (g_sysSecurity.GetDragonHwnd() != NULL)
	{   //< PowerZ-030116
		MessageBox(NULL, "Can Not Run Program", "Run Error", NULL);
        return FALSE;
	}	//> PowerZ-030116
#endif

	MSG		msg = {0,};
#ifndef _DEBUG	// 031110 YGI
	EXCEPTION_POINTERS* pException = NULL;//020508 lsw	
	__try	//020514 lsw
	{
#endif

	g_CrashLog.Init(OUTPUT_JUST_FILE,"ClientCrash");//葛靛 悸泼 扁废 瞪 颇老狼 绊蜡 捞抚涝聪促.
	g_DBGLog.Init(OUTPUT_JUST_FILE,"CustomerService");//葛靛 悸泼 扁废 瞪 颇老狼 绊蜡 捞抚涝聪促.
	
	CrackMgr.SetInitClock();//030319 lsw
	CrackMgr.InitCrackMgr();
	
	if(!CrackMgr.StartCrackThread())
	{
		MessageBox(NULL,"Can Not Run Program. Call to A/S Center","Init Error",NULL);
		return false;
	}
	
	if(!LoadLanguageText())
	{
		MessageBox(NULL,"Loading Language Pack Error","LanguagePack",NULL);
		return false;
	}

	if(!LoadHackingToolName()) 
	{
		g_DBGLog.Log(LOG_LV1,"Can't Load Hacking Tool Check File");
		return false;
	}
	//< CSD-CN031215
	FILE *fpAP = Fopen("DragonRaja.b", "rb" );
	
	if (fpAP != NULL)
	{	
		fclose(fpAP);
		Sleep(300);
		remove("DragonRaja.exe");
		Sleep(300);
		rename("DragonRaja.b", "DragonRaja.exe");
		MessageBox( NULL, lan->OutputMessage(6,6), "DragonRaja", MB_OK );//010215 lsw
		ExitApplication(EA_BEFORE_EXE2);
		return false;
	}
	//> CSD-CN031215
	if ( !InitApplication( hInstance, lpCmdLine ) )
	{
		g_DBGLog.Log(LOG_LV1,"Application Init Failed");
	 	return	FALSE;
	}
	if ( !InitInstance( hInstance, nCmdShow ) )
	{	
		g_DBGLog.Log(LOG_LV1,"Instance Init Failed");
	 	return	FALSE;
	}
	//< CSD-040224
#ifndef _DEBUG
	#if defined (KOREA_LOCALIZING_)
		if (!g_sysSecurity.CheckFileName("dragonraja.bin"))
		{
			ExitWindows(EWX_SHUTDOWN, 0);
			return FALSE;
		}
	#endif
/*	
	#ifndef KOREA_LOCALIZING_
		const int nError = g_sysSecurity.Connect(g_hwndMain);
	
		if (nError != 1)
		{
			MessageBox(NULL, VA("Connect Error!\nERR.CODE.00%d!", nError), "Run Error", NULL);
			return FALSE;
		}
	
		g_idSafeTimer = SetTimer(g_hwndMain, 24, 1000, TimerProc);
		
		if (g_idSafeTimer == 0)
		{
			return FALSE;
		}
	#endif
*/
#endif
	//> CSD-040224
	//< CSD-TEST : SafeMeme 抛胶飘
	/*
	const int nError = g_sysSecurity.Connect(g_hwndMain);

	if (nError != 1)
	{
		MessageBox(NULL, VA("Connect Error!\nERR.CODE.00%d!", nError), "Run Error", NULL);
		return FALSE;
	}

	g_idSafeTimer = SetTimer(g_hwndMain, 24, 1000, TimerProc);
	
	if (g_idSafeTimer == 0)
	{
		return FALSE;
	}
	*/
	//> CSD-TEST
	BeforeExe(lpCmdLine);
	
	if ( !InitDirectDraw( g_hwndMain, &g_DirectDrawInfo ) )
	{	
		g_DBGLog.Log(LOG_LV1,"DDraw Init Failed");
	 	return	FALSE;
	}	
	if ( InitDirectInput( g_hwndMain, g_hInstance, g_bIsActive ) != DI_OK )
	{		
		g_DBGLog.Log(LOG_LV1,"DInput Init Failed");
	 	return	FALSE;
	}
	if ( !EWndMgr.InitEditWnd())//021001 lsw
	{
		g_DBGLog.Log(LOG_LV1,"EditWnd Init Failed");
		return	FALSE;
	}

	InitSpriteTransTable( g_DirectDrawInfo.lpDirectDrawSurfacePrimary );

	g_DestBackBuf = GetSurfacePointer( g_DirectDrawInfo.lpDirectDrawSurfaceBack );
	EraseScreen( &g_DirectDrawInfo, (WORD)RGB( 0xff, 0xff, 0xff ) );
	PutStartLodingImg( );
	FlipScreen( &g_DirectDrawInfo );
	
	LoadSoundList();
	RenameSoundFile();
	
	if( SysInfo.effect )
	if ( !InitSfx( g_hwndMain ) )
	{		
	 	//return	FALSE;
	}	

	LoadConditionTable();
	
	if (!LoadEffect())
	{
		MessageBox(NULL,"Loading Effect Error","Effect Data", NULL);
		return false; 
	}

	if (!LoadMagicTable2())
	{
		MessageBox(NULL,"Loading Magic Error","Magic Data", NULL);
		return false; 
	}
	////////////////////// SoundUp LKH 眠啊 ////////////////////////
	LoadBGESoundTable();		//硅版 瓤苞 捞棋飘澜 抛捞喉 佬绢 坷扁

	LoadSmallMapBack();

	ViewTipsLoad( 0 );
	 	
	HangulOutputArea( 0, SCREEN_WIDTH-1, 0, SCREEN_HEIGHT-1 );
	LoadHangulEnglishFont( "./data/han.fnt", "./data/eng.fnt" );
	MakergbTable();		
	LoadLevelExpTable();
	LoadCursorAni();	
	LoadMouseCursor( "Cursor.Spr" );

	//010928 lsw
	LoadChatImage();

	if(!LoadItemTableData())//021111 lsw
	{
		g_DBGLog.Log(LOG_LV1,"ItemTableData Init Failed");
		return false;
	}

	if (checkbeta=='1')

⌨️ 快捷键说明

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