Загрузка...

Self-written cheat for AssaultCube c++

Thread in C/C++ created by wwwhttpru Sep 9, 2019. 519 views

  1. wwwhttpru
    wwwhttpru Topic starter Sep 9, 2019 0 Mar 9, 2019
    так сказать нахожусь в процессе изучения всего процесса. Написал простенький и не много корявый aim. Каким образом его сделать "умнее"?что бы по стенам не водил, а при виде противников.
    Code

    #include <Windows.h>
    #include <TlHelp32.h>
    #include <iostream>
    #include <vector>

    using namespace std;

    #define M_PI 3.14159265358979323846

    #define BaseAddress 0x50F4F4
    #define EntityAddress 0x50F4F8
    #define NumberPlayersAddress 0x50F500
    #define NoRecoilAddress 0x463786
    #define CountPlayer 0x50F500
    // Offsets

    #define OffSetLife 0xF8
    #define OffSetArmor 0xFC
    #define OffSetJump 0x18
    #define OffSetPos 0x4
    #define OffSetViewX 0x40
    #define OffSetViewY 0x44
    #define OffSetAmmo 0x150
    #define OffSetTeam 0x32C
    #define OffSetName 0x225

    class LocalPlayer
    {
    public:
    int LocalAddress;
    int Life;
    int Armor;
    float View[2];
    float Position[3];
    int Team;
    char Name[16];
    int NumberOfPlayer;

    void Read(HANDLE hProc)
    {
    ReadProcessMemory(hProc, (LPCVOID)BaseAddress, &LocalAddress, sizeof(LocalAddress), NULL);//Получение локального адресса игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetLife), &Life, sizeof(Life), NULL);//Получение Life локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetArmor), &Armor, sizeof(Armor), NULL);//Получение Armor локального игрока
    //Позиция
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetPos), &Position[0], sizeof(Position[0]), NULL);//Получение Position_X локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetPos + 0x4), &Position[1], sizeof(Position[1]), NULL);//Получение Position_Y локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetPos + 0x4 + 0x4), &Position[2], sizeof(Position[2]), NULL);//Получение Position_Y локального игрока
    //Обзо ось_x ось_Y
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetViewX), &View[0], sizeof(View[0]), NULL);//Получение View_x локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetViewY), &View[1], sizeof(View[1]), NULL);//Получение View_Y локального игрока
    //Команда->Кол-во_Игроков_Всего->Имя
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetTeam), &Team, sizeof(Team), NULL);//Получение команды игрока
    ReadProcessMemory(hProc, (LPCVOID)(CountPlayer), &NumberOfPlayer, sizeof(NumberOfPlayer), NULL);//Получение Кол-во игроков
    ReadProcessMemory(hProc, (LPCVOID)(LocalAddress + OffSetName), &Name, sizeof(Name), NULL);//Получение имя игрока

    }
    };

    class EntityPlayer
    {
    public:
    int BotAddress;
    int BotAdressGet;
    int Life;
    int Armor;
    float Position[3];
    int Team;
    char Name[16];

    void Read(HANDLE hProc, int i)
    {
    ReadProcessMemory(hProc, (LPCVOID)(EntityAddress), &BotAddress, sizeof(BotAddress), NULL);
    ReadProcessMemory(hProc, (LPCVOID)(BotAddress + (0x4 * i)), &BotAdressGet, sizeof(BotAdressGet), NULL);
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetLife), &Life, sizeof(Life), NULL);//Получение Life локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetArmor), &Armor, sizeof(Armor), NULL);//Получение Armor локального игрока
    //Позиция
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetPos), &Position[0], sizeof(Position[0]), NULL);//Получение Position_X локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetPos + 0x4), &Position[1], sizeof(Position[1]), NULL);//Получение Position_Y локального игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetPos + 0x4 + 0x4), &Position[2], sizeof(Position[2]), NULL);//Получение Position_Y локального игрока

    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetTeam), &Team, sizeof(Team), NULL);//Получение команды игрока
    ReadProcessMemory(hProc, (LPCVOID)(BotAdressGet + OffSetName), &Name, sizeof(Name), NULL);//Получение имя игрока

    }
    };

    float Get3dDistance(LocalPlayer Myplayer, EntityPlayer Target)
    {
    return sqrt(pow(Target.Position[0] - Myplayer.Position[0], 2) +
    pow(Target.Position[1] - Myplayer.Position[1], 2) +
    pow(Target.Position[2] - Myplayer.Position[2], 2)
    );
    }

    void getDelta(float* delta, LocalPlayer MyPlayer, EntityPlayer TargetPlayer)
    {
    delta[0] = TargetPlayer.Position[0] - MyPlayer.Position[0];
    delta[1] = TargetPlayer.Position[1] - MyPlayer.Position[1];
    delta[2] = TargetPlayer.Position[2] - MyPlayer.Position[2];
    }

    void getAngles(float* angles, float* delta)
    {
    // angle X (pitch)
    if (delta[1] < 0)
    angles[0] = (float)((180 / M_PI) * (-atan(delta[0] / delta[1])));

    else if (delta[1] > 0)
    angles[0] = (float)(180 - (180 / M_PI) * (atan(delta[0] / delta[1])));

    else
    delta[0] >= 0 ? angles[0] = -90 : angles[0] = 90;

    // angle Y (yaw)
    float dist2D = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);

    if (dist2D != 0)
    angles[1] = (float)((180 / M_PI) * (atan(delta[2] / dist2D)));
    else
    angles[1] = 0;
    }


    int main()
    {
    HANDLE hProc;
    DWORD pid;
    HWND hWND;
    float angles[2];
    float delta[3];
    float Distance = 0;
    float TempDistance = 0;
    int aim = 0;
    hWND = FindWindow(0, (LPCSTR)"AssaultCube");
    GetWindowThreadProcessId(hWND, &pid);
    hProc = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, pid);

    LocalPlayer MyPlayer;
    MyPlayer.Read(hProc);
    EntityPlayer TargetPlayer[16];
    for (int i = 1; i < MyPlayer.NumberOfPlayer; i++)
    {
    TargetPlayer[i].Read(hProc, i);
    }
    while (true)
    {
    MyPlayer.Read(hProc);
    for (int i = 1; i < MyPlayer.NumberOfPlayer; i++)
    {
    Distance = 99999;

    TargetPlayer[i].Read(hProc, i);
    TempDistance = Get3dDistance(MyPlayer, TargetPlayer[i]);
    if (TempDistance < Distance && MyPlayer.Team != TargetPlayer[i].Team && TargetPlayer[i].Life > 0)
    {
    aim = i;
    Distance = TempDistance;
    }
    }
    getDelta(delta, MyPlayer, TargetPlayer[aim]);
    getAngles(angles, delta);

    WriteProcessMemory(hProc, (LPVOID)(MyPlayer.LocalAddress + OffSetViewX), &angles[0], sizeof(float), NULL);
    WriteProcessMemory(hProc, (LPVOID)(MyPlayer.LocalAddress + OffSetViewY), &angles[1], sizeof(float), NULL);

    system("CLS");

    }
    }
     
  2. Legioner53
    Legioner53 Sep 9, 2019 142 Aug 1, 2018
    Ты не на тот форум написал, тут школьники :2011_like:
     
  3. GaMoraBy
    GaMoraBy Sep 9, 2019 Banned 350 Apr 14, 2019
    Бляяя, мне еще ведь уроки делать..
     
  4. wwwhttpru
    wwwhttpru Topic starter Sep 9, 2019 0 Mar 9, 2019
    Legioner53, подскажи какой ру форум есть?
     
  5. JokeTile_inactive2451763
    Не не не тебе не сюда)
     
  6. LitleDuck
    LitleDuck Sep 30, 2019 Banned 325 Mar 1, 2018
    wwwhttpru, тебе нужно проверять за стеной ли противник, делается это при помощи traceray функции, почитай на форумах.
     
  7. wwwhttpru
    wwwhttpru Topic starter Sep 30, 2019 0 Mar 9, 2019
    LitleDuck, возьму во внимание. Спасибо
     
Loading...
Top