int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: colocar código aquí. MSG msg; HACCEL hAccelTable; // Inicializar cadenas globales LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_CONNECTSERVER, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Realizar la inicialización de la aplicación: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_CONNECTSERVER)); gLogOutType = GetPrivateProfileInt("General", "SCFGenerateLogs",0,CONFIGFILE ) ; LogInit(TRUE); LogAddC(4,"Initializing..."); serverManager.Init(); LogDateChange(); SendMessage(ghWnd, WM_TIMER, WM_LOG_PAINT, NULL); OBJInit(); UDPInit(); iocpInit(); // UpdateInstanceWindowTitle(); // Bucle principal de mensajes: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; }
void DSMain() { #if (WL_PROTECT==1) VM_START #endif /* Server initialization */ _mkdir("Logs"); LogInit(TRUE); DWORD dwStartTickCount = GetTickCount(); LogAdd("Initialized log instance"); LogDateChange(); //SendMessage(hWnd, WM_TIMER, WM_LOG_PAINT, NULL); LogAddC(3,"Initializing Servers..."); AllowManager.ReadAllowList(ALISTFILE); ConfigReadIniFile("./Config.ini"); DataServer1.Initialize("DataServer1"); DataServer2.Initialize("DataServer2"); JoinServer.Initialize("JoinServer"); ExtraServer.Initialize("ExtraServer"); WzExDBServer.Initialize("WzExDB"); PostServer.Initialize("PostServer"); LogAddC(3,"Servers initialization in %d msec", GetTickCount() - dwStartTickCount); UpdateInstanceWindowTitle(); #if (WL_PROTECT==1) VM_END int MyCheckVar; CODEREPLACE_START CHECK_PROTECTION(MyCheckVar, 0x12345678) if (MyCheckVar != 0x12345678) g_Config.IsS6E2 = 0; CODEREPLACE_END #endif }
// // FUNCIÓN: WndProc(HWND, UINT, WPARAM, LPARAM) // // PROPÓSITO: procesar mensajes de la ventana principal. // // WM_COMMAND : procesar el menú de aplicación // WM_PAINT : pintar la ventana principal // WM_DESTROY : enviar un mensaje de finalización y volver // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; switch (message) { // case WM_LBUTTONUP: // goto ShowPostWin; // case WM_CHAR: // { // if(wParam == VK_RETURN) // { //ShowPostWin: // if(hWnd == hWnd_Post) // DialogBox(hInst, MAKEINTRESOURCE(IDD_POSTBOX), hWnd, PostWindow); // } // }break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Analizar las selecciones de menú: switch (wmId) { case ID_OPTIONS_DISCONNECTUSER: DialogBox(hInst,MAKEINTRESOURCE(IDD_UserList),hWnd,Users); break; case IDM_POST: DialogBox(hInst, MAKEINTRESOURCE(IDD_POSTBOX), hWnd, PostWindow); break; case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; case ID_STATICS: JoinServer.Statics(); break; //case ID_POSTSERVER_ADMINMESSAGE: // ShowWindow(hWnd_Post, 1); // UpdateWindow(hWnd_Post); // break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_TIMER: { switch ( wParam ) { case WM_LOG_PAINT: { RECT rect; HDC hdc = GetDC(hWnd); GetClientRect(hWnd, &rect); FillRect(hdc, &rect, (HBRUSH)GetStockObject(0)); ReleaseDC(hWnd, hdc); if ( LogTextPaint != NULL ) { LogTextPaint(hWnd); } } break; //case WM_POSTLOG_PAINT: //{ // if(PostServer.m_ServerPort != -1) // { // RECT rect; // hdc = GetDC(hWnd_Post); // GetClientRect(hWnd_Post, &rect); // FillRect(hdc, &rect, (HBRUSH)GetStockObject(0)); // ReleaseDC(hWnd_Post, hdc); // LogTextPaint(hWnd_Post); // } //}break; case WM_FOURHOURS: { if(DSCheckNumber() == 1) DataServer1.SendGensRankingUpdate(); else if(DSCheckNumber() == 2) DataServer2.SendGensRankingUpdate(); } break; case WM_LOG_DATE_CHANGE: { if(DSCheckNumber() == 1) DataServer1.SendClearCoins(); else if(DSCheckNumber() == 2) DataServer2.SendClearCoins(); LogDateChange(); } break; } } break; case WM_DESTROY: PostQuitMessage(0); break; case WM_CLOSE: if(hWnd == hWnd_Post) { ShowWindow(hWnd,0); break; } default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
VOID WINAPI TimerProcQueue(LPVOID lpParametar, BOOL TimerOrWaitFired) { if( g_MuTimer.GetTimerEnd() == TRUE ) return; g_MuTimer.m_QueueTimer1.SyncLock(); int nEventID = *(int*)(lpParametar); switch(nEventID) { case WM_GUILD_LIST_REQUEST: DGGuildListRequest(); break; case WM_MONSTER_AND_MSG_PROC: MonsterAndMsgProc(); //gDuelSystem.Run(); #if (ENABLETEST_NEWPVP == 1) g_NewPVP.Run(); #endif break; case WM_DUEL_RUN_PROC: //g_DuelManager.Run(); break; case WM_MOVE_MONSTER_PROC: MoveMonsterProc(); g_Kanturu.UserMonsterCountCheck(); break; case WM_EVENT_RUN_PROC: #if (ENABLE_CUSTOM_MONSTERSPAWNER == 1) MonsterSpawnerMng::getInstance()->procRun(); #endif g_BloodCastle.Run(); g_RingAttackEvent.Run(); g_ChaosCastle.Run(); g_IllusionTemple.Run(); #if (GS_CASTLE==1) g_CastleSiege.Run(); g_CastleDeepEvent.Run(); g_CsNPC_Weapon.WeaponAttackProc(); g_Crywolf.Run(); #endif #if (GS_CASTLE == 0 || GS_SPEC == 1) g_Kanturu.Run(); g_CsNPC_Weapon.WeaponAttackProc(); #endif g_Raklion.Run(); g_XMasAttackEvent.Run(); g_BlueEvent.Run(); g_ImperialGuardian.Run(); gDoubleGoer.Run(); #if (ENABLETEST_ACHERON == 1) g_AcheronGuardianEvent.Run(); #endif #ifdef VMPROTECT if( VMProtectIsDebuggerPresent(true) ) { ExitProcess(0); } #endif break; case WM_AI_MONSTER_MOVE_PROC: TMonsterAI::MonsterMoveProc(); break; case WM_AI_MONSTER_PROC: TMonsterAI::MonsterAIProc(); break; case WM_SECOND_MSG_PROCESS: { for(int n = 0; n < MAX_NUMBER_MAP; n++ ) { MapC[n].WeatherVariationProcess(); } wsGServer.m_SendSec = wsGServer.m_SendSecTmp; wsGServer.m_RecvSec = wsGServer.m_RecvSecTmp; wsGServer.m_SendSecTmp = 0; wsGServer.m_RecvSecTmp = 0; DragonEvent->Run(); AttackEvent->Run(); gEledoradoEvent.Run(); g_EventManager.Run(); #if (CUSTOM_OLYMP==1) g_CustomOlymp.Run(); #endif } break; case WM_CONNECTMEMBER_RELOAD: { ConMember.Load(gDirPath.GetNewPath(FILE_WHITELIST)); } break; case WM_GS_CLOSE: if ( gCloseMsg != 0 ) { gCloseMsgTime--; if ( gCloseMsgTime <= 1 ) { if ( gCloseMsgTime == 1 ) { AllSendServerMsg(lMsg.Get(MSGGET(1, 193))); LogAddC(2, lMsg.Get(MSGGET(1, 193))); } } else { if ( (gCloseMsgTime % 10) == 0 ) { char szTemp[256]; wsprintf( szTemp, lMsg.Get(MSGGET(1, 194)), gCloseMsgTime); AllSendServerMsg(szTemp); LogAddC(2, szTemp); } } if ( gCloseMsgTime < 0 ) { KillTimer(ghWnd, WM_GS_CLOSE); gObjAllLogOut(); gCloseMsgTime = 0; gCloseMsg = 0; } } gObjSecondProc(); #if (GS_CASTLE == 1) if(cDBSMng.GetActiveDS() > -1) { if(g_CastleSiege.GetDataLoadState() == 2) { g_CastleSiege.DataRequest(); } #if (CUSTOM_OLYMP==1) if(g_CustomOlymp.GetDataLoadState() == 2 ) { g_CustomOlymp.DataRequest(); } #endif } g_CastleSiege.SendCastleStateSync(); g_CastleSiegeSync.AdjustTributeMoney(); g_Crywolf.CrywolfSecondAct(); #endif #if (GS_CASTLE == 0 || GS_SPEC == 1) //g_CastleSiegeSync.AdjustTributeMoney(); #if(__GENS_SYSTEM__ == 1) gGensSystem.UpdateRun(); #endif #endif //g_PeriodItemEx.CheckPeriodData(); -- need to decompile //g_CashShopInGame.CheckMileageUpdate(); -- need to decompile //g_CashShopInGame.CheckShopServerReconnect(); -- need to decompile //g_HacktoolBlockEx.CheckHacktoolUse(); -- need to decompile /*if ( DBSockMng::GetActiveDS(&cDBSMng) > -1 && !CArcaBattle::IsDataLoadWinGuild(&g_ArcaBattle) ) CArcaBattle::GDReqWinGuildInfo(&g_ArcaBattle); if ( DBSockMng::GetActiveDS(&cDBSMng) > -1 && !CArcaBattle::IsDataLoadProcState(&g_ArcaBattle) ) CArcaBattle::GDReqProcState(&g_ArcaBattle); if ( DBSockMng::GetActiveDS(&cDBSMng) > -1 && !CArcaBattle::IsInitABProcMultiCast(&g_ArcaBattle) && CArcaBattle::IsArcaBattleServer(&g_ArcaBattle) == 1 ) CArcaBattle::SetArcaBattleProcMultiCast(&g_ArcaBattle, 1); if ( DBSockMng::GetActiveDS(&cDBSMng) > -1 && !CAcheronGuardianEvent::IsInitAEProcMultiCast(&g_AcheronGuardianEvent) && CArcaBattle::IsArcaBattleServer(&g_ArcaBattle) == 1 ) CAcheronGuardianEvent::SetAcheronEventProcMultiCast(&g_AcheronGuardianEvent, 1);*/ break; case WM_SET_DATE: gSetDate(); WhisperCash.TimeCheckCashDelete(); break; case WM_LOG_DATE_CHANGE: cpTimerTempUserManager->ClearOverTimeUserData(g_MaintainUserConnectionSecond); /* if( g_GensAbusingResetTime > 0 ) { for(int n = OBJ_STARTUSERINDEX; n < OBJMAX; n++) { if( gObjIsConnected(n) ) g_GensSystem.AbusingInfoReset(&gObj[n]); } } */ #if (GS_CASTLE == 1) if(LogDateChange() == TRUE) g_iCastleItemMixLimit = 1; #else LogDateChange() #endif break; default: break; } g_MuTimer.m_QueueTimer1.SyncUnlock(); }
// // FUNCIÓN: WndProc(HWND, UINT, WPARAM, LPARAM) // // PROPÓSITO: procesar mensajes de la ventana principal. // // WM_COMMAND : procesar el menú de aplicación // WM_PAINT : pintar la ventana principal // WM_DESTROY : enviar un mensaje de finalización y volver // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Analizar las selecciones de menú: switch (wmId) { case IDM_BLIST: serverManager.ReadBlackList(BLISTFILE); break; case IDM_SLIST: serverManager.ReadList(SLISTFILE); break; case IDM_ULIST: serverManager.ReadUpdateConfig(); break; case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_TIMER: switch ( wParam ) { case WM_LOG_PAINT: { RECT rect; HDC hdc = GetDC(hWnd); GetClientRect(hWnd, &rect); FillRect(hdc, &rect, (HBRUSH)GetStockObject(0)); ReleaseDC(hWnd, hdc); if ( LogTextPaint != NULL ) LogTextPaint(hWnd); //g_ServerInfoDisplayer.Run(hWnd); } break; case WM_LOG_DATE_CHANGE: LogDateChange(); break; case WM_SECONDPROC: { OBJSecondProc(); }break; } break; //case WM_PAINT: // hdc = BeginPaint(hWnd, &ps); // // TODO: agregar código de dibujo aquí... // EndPaint(hWnd, &ps); // break; case WM_DESTROY: DestroyIocp(); PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }