📄 dragon.cpp
字号:
#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 + -