private int FindClosestEnemyIndex(PlayerDataVec[] enemiesDataVec, PlayerDataVec myPosition) { float[] distances = new float[enemiesDataVec.Length]; for (int i = 0; i < enemiesDataVec.Length; i++) { if (enemiesDataVec[i].health > 0) distances[i] = Get3dDistance(enemiesDataVec[i], myPosition); else distances[i] = float.MaxValue; } float[] newDistances = new float[distances.Length]; Array.Copy(distances, newDistances, distances.Length); Array.Sort(newDistances); for (int i = 0; i < distances.Length; i++) { if (distances[i] == newDistances[0]) { return i; } } return -1; }
private float Get3dDistance(PlayerDataVec to, PlayerDataVec from) { return (float) (Math.Sqrt( ((to.xPos - from.xPos) * (to.xPos - from.xPos)) + ((to.yPos - from.yPos) * (to.yPos - from.yPos)) + ((to.zPos - from.zPos) * (to.zPos - from.zPos)) )); }
private void AimAtTarget(PlayerDataVec enemyDataVector, PlayerDataVec playerDataVector) { float yaw = -(float)Math.Atan2(enemyDataVector.xPos - playerDataVector.xPos, enemyDataVector.yPos - playerDataVector.yPos) / PI * 180 + 180; float pitch = (float)Math.Asin((enemyDataVector.zPos - playerDataVector.zPos) / Get3dDistance(enemyDataVector, playerDataVector)) * 180 / PI; Mem.WriteFloat(MainPlayer.baseAddress + MainPlayer.offsets.yaw, yaw); Mem.WriteFloat(MainPlayer.baseAddress + MainPlayer.offsets.pitch, pitch); }
private PlayerDataVec GetPlayerVecData(PlayerData updatePlayer) { PlayerDataVec playerRet = new PlayerDataVec(); playerRet.yaw = Mem.ReadFloat(updatePlayer.baseAddress + updatePlayer.offsets.yaw); playerRet.pitch = Mem.ReadFloat(updatePlayer.baseAddress + updatePlayer.offsets.pitch); playerRet.xPos = Mem.ReadFloat(updatePlayer.baseAddress + updatePlayer.offsets.xPos); playerRet.yPos = Mem.ReadFloat(updatePlayer.baseAddress + updatePlayer.offsets.yPos); playerRet.zPos = Mem.ReadFloat(updatePlayer.baseAddress + updatePlayer.offsets.zPos); playerRet.health = Mem.ReadInt(updatePlayer.baseAddress + updatePlayer.offsets.health); return playerRet; }
private void AimBot() { //Grab our player's information PlayerDataVec playerDataVec = GetPlayerVecData(MainPlayer); List<PlayerDataVec> enemiesDataVec = new List<PlayerDataVec>(); for (int i = 0; i < EnemyAddresses.Count; i++) { PlayerDataVec enemyDataVector = GetPlayerVecData(EnemyAddresses[i]); enemiesDataVec.Add(enemyDataVector); } if (playerDataVec.health > 0) { int target = 0; if (FocusingOnEnemy && FocusTarget != -1) { if (enemiesDataVec[FocusTarget].health > 0) target = FocusTarget; else target = FindClosestEnemyIndex(enemiesDataVec.ToArray(), playerDataVec); } else target = FindClosestEnemyIndex(enemiesDataVec.ToArray(), playerDataVec); if (target != -1) //-1 means something went wrong { FocusTarget = target; if (enemiesDataVec[target].health > 0) AimAtTarget(enemiesDataVec[target], playerDataVec); } } }