So im trying to make a simple cs go aimbot, Ive watched several tutorials on youtube but most of them are in c++ so i tried to make my own using c#.
Code:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Offsets
{
public static int dwLocalPlayer = 0xAA9F4C;
public static int m_iTeamNum = 0xF0;
public static int m_iHealth = 0xFC;
public static int m_vecOrigin = 0x134;
public static int viewAngles = 0x4D0C;
public static int dwEntityList = 0x4A86424;
public static int EntityLoopDistance = 0x10;
public static int EnginePointer = 0x59F21C;
}
class Program
{
public static string process = "csgo";
static VAMemory vam = new VAMemory(process);
public static int myAddress;
public static int myHealth;
public static int myTeam;
public static float[] myPos = new float[3];
public static int Client;
public static int Engine;
public static float[] myViewAngle = new float[2];
public static int _EnginePointer;
static List<int> PlayerListBaseAddress = new List<int>();
public static int i = 0;
public static int j = 1;
public static int k;
public static int m;
//static List<int> EnemyAddresses = new List<int>();
static List<float> EnemyDistances = new List<float>();
public static float minima = 0;
public static int mindex = 0;
public static float hisPosX;
public static float hisPosY;
public static float hisPosZ;
public static int myNewViewAngleAddress;
public static void ReadMyInformation()
{
int address = Client + Offsets.dwLocalPlayer;
myAddress = vam.ReadInt32((IntPtr)address);
address = myAddress + Offsets.m_iHealth;
myHealth = vam.ReadInt32((IntPtr)address);
address = myAddress + Offsets.m_iTeamNum;
myTeam = vam.ReadInt32((IntPtr)address);
address = myAddress + Offsets.m_vecOrigin;
myPos[0] = vam.ReadFloat((IntPtr)address + 0x0);
myPos[1] = vam.ReadFloat((IntPtr)address + 0x4);
myPos[2] = vam.ReadFloat((IntPtr)address + 0x8);
address = Engine + Offsets.EnginePointer;
_EnginePointer = vam.ReadInt32((IntPtr)address);
address = _EnginePointer + Offsets.viewAngles;
myViewAngle[0] = vam.ReadFloat((IntPtr)address + 0x0);
myViewAngle[1] = vam.ReadFloat((IntPtr)address + 0x4);
}
public static void PlayerList()
{
int address;
int address1;
int enemyPlayerBase;
int enemyHealth;
int enemyTeam;
while (i < 64)
{
address = Client + Offsets.dwEntityList + (j - 1) * 0x10;
enemyPlayerBase = vam.ReadInt32((IntPtr)address);
PlayerListBaseAddress.Add(enemyPlayerBase);
i++;
j++;
}
for (k = 0; k < PlayerListBaseAddress.Count; k++)
{
address = PlayerListBaseAddress[k] + Offsets.m_iHealth;
enemyHealth = vam.ReadInt32((IntPtr)address);
address1 = PlayerListBaseAddress[k] + Offsets.m_iTeamNum;
enemyTeam = vam.ReadInt32((IntPtr)address1);
if ((enemyTeam == myTeam) && (enemyHealth < 1))
{
PlayerListBaseAddress.Remove(PlayerListBaseAddress[k]);
}
}
}
public static float Get3dDistance(float myCoordsX, float myCoordsY, float myCoordsZ, float enX, float enY, float enZ)
{
return (float)Math.Sqrt(
Math.Pow(enX - myCoordsX, 2.0) +
Math.Pow(enY - myCoordsY, 2.0) +
Math.Pow(enZ - myCoordsZ, 2.0)
);
}
public static void GetDistance()
{
for (m = 0; m < PlayerListBaseAddress.Count; m++)
{
EnemyDistances.Add(Get3dDistance(myPos[0], myPos[1], myPos[2], (vam.ReadFloat((IntPtr)(PlayerListBaseAddress[m] + Offsets.m_vecOrigin) + 0x0)), (vam.ReadFloat((IntPtr)(PlayerListBaseAddress[m] + Offsets.m_vecOrigin) + 0x4)), (vam.ReadFloat((IntPtr)(PlayerListBaseAddress[m] + Offsets.m_vecOrigin) + 0x8))));
}
}
public static void GetLowestDistance()
{
for (int x = 0; x < EnemyDistances.Count; x++)
{
if (EnemyDistances[x] < minima)
{
minima = EnemyDistances[x]; mindex = x;
}
}
hisPosX = vam.ReadFloat((IntPtr)(PlayerListBaseAddress[mindex] + Offsets.m_vecOrigin + 0x0));
hisPosY = vam.ReadFloat((IntPtr)(PlayerListBaseAddress[mindex] + Offsets.m_vecOrigin + 0x4));
hisPosZ = vam.ReadFloat((IntPtr)(PlayerListBaseAddress[mindex] + Offsets.m_vecOrigin + 0x8));
}
public static void CalcAngle(float myPosX, float myPosY, float myPosZ, float ePosX, float ePosY, float ePosZ, float[] myAngle)
{
double[] delta = { (myPosX - ePosX), (myPosY - ePosY), (myPosZ - ePosZ) };
double hyp = Math.Sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
myAngle[0] = (float)(Math.Asin(delta[2] / hyp) * 57.295779513082f);
myAngle[1] = (float)(Math.Atan(delta[1] / delta[0]) * 57.295779513082f);
if (delta[0] >= 0.0)
{
myAngle[1] += 180.0f;
}
}
public static void AimAtHim()
{
CalcAngle(myPos[0], myPos[1], myPos[2], hisPosX, hisPosY, hisPosZ, myViewAngle);
myNewViewAngleAddress = _EnginePointer + Offsets.viewAngles;
vam.WriteFloat((IntPtr)myNewViewAngleAddress + 0x0, myViewAngle[0]);
vam.WriteFloat((IntPtr)myNewViewAngleAddress + 0x4, myViewAngle[1]);
}
static void Main(string[] args)
{
if((GetModuleClient() == true) && (GetModuleEngine() == true))
{
while (true)
{
ReadMyInformation();
PlayerList();
GetDistance();
GetLowestDistance();
AimAtHim();
Console.Clear();
Console.WriteLine(myViewAngle[0]);
Console.WriteLine(myViewAngle[1]);
}
}
}
static bool GetModuleClient()
{
try
{
Process[] p = Process.GetProcessesByName(process);
if (p.Length > 0)
{
foreach (ProcessModule m in p[0].Modules)
{
if (m.ModuleName == "client.dll")
{
Client = (int)m.BaseAddress;
return true;
}
}
return true;
}
else
{
Console.WriteLine("Client.dll not found");
Console.ReadKey();
return false;
}
}
catch (Exception ex)
{
return false;
}
}
static bool GetModuleEngine()
{
try
{
Process[] p = Process.GetProcessesByName(process);
if (p.Length > 0)
{
foreach (ProcessModule m in p[0].Modules)
{
if (m.ModuleName == "engine.dll")
{
Engine = (int)m.BaseAddress;
return true;
}
}
return true;
}
else
{
Console.WriteLine("Engine.DLL not found");
Console.ReadKey();
return false;
}
}
catch (Exception ex)
{
return false;
}
}
}
}
But it doesn't work, my crosshair just locks in the middle of my screen. I do not know what is the problem in my code, pls help