private bool fStart() { bool bStarted = false; if ((_hWnd = WAPI.FindWindowByCaption(_hWnd, gameTitle)) == -1) { bStarted = false; } // HandleRef hWnd = FindWindow("AssaultCube", null); AddToLog("Looking for AC process."); Process[] process = Process.GetProcessesByName(processName); AddToLog("FOUND AC process."); AddToLog("Attaching to AC process."); if (process.Length > 0) { pmcrw.ReadProcess = process[0]; pmcrw.OpenProcess(); AddToLog("Succesfully attached AC process."); for (int i = 0; i < process[0].Modules.Count; i++) { if (process[0].Modules[i].ModuleName == moduleName) { moduleBaseAddress = (int)process[0].Modules[i].BaseAddress; hwnd = process[0].MainWindowHandle; } } GetWindowRect(hwnd, out rect); iAmountOfPlayers = pmcrw.ReadInt(0x50F500); iWidthOfGameWindow = rect.Right - rect.Left; iHeightOfGameWindow = rect.Bottom - rect.Top; localPlayerBaseAddress = pmcrw.ReadInt(moduleBaseAddress + OS.m_os_LocalPlayer); fUpdateEntityList(); bStarted = true; } else { AddToLog("Couldn't connect to AC process! Is it running?"); bStarted = false; } return(bStarted); }
private void fGameUpdateThread() { try { while (WAPI.GetAsyncKeyState(WAPI.VirtualKeyShort.END) == 0) { while (bTrainerRunning) { iAmountOfPlayers = pmcrw.ReadInt(0x50F500); fGetAndStoreViewMatrix(); fUpdateEntityList(); localPlayer.iLPHealth = (int)pmcrw.ReadInt(localPlayerBaseAddress + OS.m_os_LocalPlayerHealth); localPlayer.iLPCurrentAmmo = pmcrw.ReadInt(localPlayerBaseAddress + OS.m_os_LocalPlayerExtraAmmo); localPlayer.iLPCurrentTeam = pmcrw.ReadInt(localPlayerBaseAddress + OS.m_os_LocalPlayerTeam_ID); int iCurrentWeaponIDAddress = pmcrw.ReadMultiLevelPointer(localPlayerBaseAddress + OS.m_os_LocalPlayerCurrentWeapon, 4, OS.m_os_LocalPlayerCurrentWeaponID); localPlayer.iLPCurrentWeaponID = pmcrw.ReadInt(iCurrentWeaponIDAddress); int iCurrentWeaponTypeAddress = pmcrw.ReadMultiLevelPointer(localPlayerBaseAddress + OS.m_os_LocalPlayerCurrentWeapon, 8, OS.m_os_LocalPlayerCurrentWeaponType); localPlayer.iLPCurrentWeaponType = pmcrw.readString(iCurrentWeaponTypeAddress, 8); // This function is to get the 2d Coords for world to screen for the ESP fGet2dCoords(); // The function above populates the arrays. So we can call the function here to get the closest enemy. localPlayer.iAddressOfClosestEnemy = fGetClosestEnemy(enemyDistances, iEntityList); localPlayer.iClosestEnemyName = pmcrw.readString(localPlayer.iAddressOfCrosshairTarget + OS.m_os_LocalPlayerName, 16); localPlayer.iClosestEnemyHealth = pmcrw.ReadInt(localPlayer.iAddressOfCrosshairTarget + OS.m_os_EnemyPlayerHealth); localPlayer.iClosestEnemyTeam = pmcrw.ReadInt(localPlayer.iAddressOfClosestEnemy + OS.m_os_LocalPlayerTeam_ID); localPlayer.iCrosshairTargetName = pmcrw.readString(moduleBaseAddress + OS.m_os_CrosshairTargetName, 16); localPlayer.iAddressOfCrosshairTarget = fGetCrosshairTargetAddress(localPlayer.iCrosshairTargetName); localPlayer.iCrosshairTargetHealth = pmcrw.ReadInt(localPlayer.iAddressOfCrosshairTarget + OS.m_os_EnemyPlayerHealth); localPlayer.iCrosshairTargetTeam = pmcrw.ReadInt(localPlayer.iAddressOfCrosshairTarget + OS.m_os_LocalPlayerTeam_ID); /* * if (bEnableTriggerBot) * { * * if (localPlayer.iCrosshairTargetTeam != localPlayer.iLPCurrentTeam) { * // We will do a compare here to compare crosshairs then fire the guy while matching crosshairs coords; * fEnableFireGun(); * bEnableTriggerBot = false; * } else * { * fDisableFireGun(); * } * } * else * { * fDisableFireGun(); * } */ // //Thread.Sleep(100); } } } catch (Exception ex) { //AddToLog("Error inside thread: " + ex.ToString()); } }