int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { killProcessByName("flashplayer"); return 0; }
void ElDorito::Initialize() { ::CreateDirectoryA(GetDirectory().c_str(), NULL); // init our command modules Modules::ElModules::Instance(); // load variables/commands from cfg file Modules::CommandMap::Instance().ExecuteCommand("Execute dewrito_prefs.cfg"); Modules::CommandMap::Instance().ExecuteCommand("Execute autoexec.cfg"); // also execute autoexec, which is a user-made cfg guaranteed not to be overwritten by ElDew //This should be removed when we can save binds Modules::CommandMap::Instance().ExecuteCommand("Bind CAPITAL +VoIP.Talk"); // Parse command-line commands int numArgs = 0; LPWSTR* szArgList = CommandLineToArgvW(GetCommandLineW(), &numArgs); bool usingLauncher = Modules::ModuleGame::Instance().VarSkipLauncher->ValueInt == 1; bool skipKill = false; bool dedicated = false; if( szArgList && numArgs > 1 ) { std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; for( int i = 1; i < numArgs; i++ ) { std::wstring arg = std::wstring(szArgList[i]); if( arg.compare(0, 1, L"-") != 0 ) // if it doesn't start with - continue; #ifndef _DEBUG if (arg.compare(L"-launcher") == 0) usingLauncher = true; #endif #ifdef _DEBUG if (arg.compare(L"-dedicated") == 0) { dedicated = true; } #endif if (arg.compare(L"-multiInstance") == 0) { skipKill = true; } size_t pos = arg.find(L"="); if( pos == std::wstring::npos || arg.length() <= pos + 1 ) // if it doesn't contain an =, or there's nothing after the = continue; std::string argname = converter.to_bytes(arg.substr(1, pos - 1)); std::string argvalue = converter.to_bytes(arg.substr(pos + 1)); Modules::CommandMap::Instance().ExecuteCommand(argname + " \"" + argvalue + "\"", true); } } if (dedicated) { // Commenting this out for now because it makes testing difficult /*DetourRestoreAfterWith(); DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach((PVOID*)&Video_InitD3D, &hooked_Video_InitD3D); if (DetourTransactionCommit() != NO_ERROR) { return; }*/ Patches::Network::ForceDedicated(); } // Language patch Patch(0x2333FD, { (uint8_t)Modules::ModuleGame::Instance().VarLanguageID->ValueInt }).Apply(); setWatermarkText("ElDewrito | Version: " + Utils::Version::GetVersionString() + " | Build Date: " __DATE__); #ifndef _DEBUG if (!usingLauncher) // force release builds to use launcher, simple check so its easy to get around if needed { MessageBox(GetConsoleWindow(), "Please run Halo Online using the ElDewrito launcher.\nIt should be named DewritoUpdater.exe.", "ElDewrito", MB_OK | MB_ICONINFORMATION); TerminateProcess(GetCurrentProcess(), 0); } #endif if (!skipKill) { int ourPid = GetCurrentProcessId(); killProcessByName("eldorado.exe", ourPid); killProcessByName("custom_menu.exe", ourPid); killProcessByName("DewritoUpdater.exe", ourPid); } // Initialize server modules Server::Chat::Initialize(); CreateThread(0, 0, StartRconWebSocketServer, 0, 0, 0); }