Нужна помощь с Linecast-ом

ЗАЧЕМ ДУМАТЬ ЕСЛИ МОЖНО НЕ ДУМАТЬ
Пользователь
Статус
Оффлайн
Регистрация
25 Июл 2021
Сообщения
157
Реакции[?]
38
Поинты[?]
0
Здравствуйте , делаю чит для игры BLOCKPOSTизображение_2021-08-26_212344.png и у меня возникли трудности с Visible Check-ом я нашёл функцию которая проводит луч между двумя точками и ищет колайдер и написал вот такой код
C++:
#include "RayCastSack.h"
#include "framework/il2cpp-appdata.h"
#include <iostream>
#include "Vector.h"
#include "PlayerDataArray.h"


#define EntListBase 0xB35C3C
#define EntListBase2 0xB35CA8


app::PlayerData* GetPlayerDataS(UINT32 i)
{

    offsetsM offsets;
    PlayerDataArray* PA = (PlayerDataArray*)(*app::PLH__TypeInfo)->static_fields->player;
    DWORD CHECK = (DWORD)PA->Player[i];
    if (CHECK < 0xfffff)
        return NULL;
    return PA->Player[i];

}

bool RayCasstSack::Render(int i)
{



    app::PlayerData* enemy = GetPlayerDataS(i);
    if (enemy == NULL)
    {
        return false;
    }
    ImVec2 posInScreenTrue;
    app::PlayerData* my = (*app::Controll__TypeInfo)->static_fields->pl;



    if (enemy->fields.health <= 1)
        return false;

    if (enemy->fields.bstate == 5)
        return false;


    app::RaycastHit hit;
    if ((DWORD)&enemy < 0xffff)
        return false;

    if (enemy == NULL)
        return false;
    if (&enemy == NULL)
        return false;
    if ((DWORD)enemy < 0xffff)
        return false;
    if ((DWORD)enemy == 0x00000800)
        return false;
    if ((DWORD)&enemy == 0x00000800)
        return false;






    if (app::Physics_Linecast_1(my->fields.currPos, enemy->fields.currPos, &hit, nullptr))
    {
    

        float cmpPosx = hit.m_Point.x - enemy->fields.currPos.x;
        float cmpPosy = hit.m_Point.y - enemy->fields.currPos.y;
        float cmpPoz = hit.m_Point.z - enemy->fields.currPos.z;


        if (cmpPosx > -1 && cmpPosx < 1 && cmpPosy > -1 && cmpPosy < 1 && cmpPoz > -1 && cmpPoz < 1)
        {
            enemy->fields.leg_limit = 46;
            return true;
        }

    }
    enemy->fields.leg_limit = 45;
    return false;
}
она роботает какое-то время и крашит в чём может быть проблема или может вы мне посоветуете сделать как-то по другому (игра Unity)

UPD:: Вот вызов
C++:
DWORD WINAPI RayCastThread(HMODULE hMod)
{
    while (true)
    {
        for (int i = 0; i < 40; i++)
        {
            sackDaR.Render(i);     
            Sleep(40);
        }
    }
    FreeLibraryAndExitThread(hMod, 0);
}


upd ошибка
 

Вложения

Последнее редактирование:
ЧВК EB_LAN
Эксперт
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
1,567
Реакции[?]
522
Поинты[?]
185K
Здравствуйте , делаю чит для игры BLOCKPOSTПосмотреть вложение 168557 и у меня возникли трудности с Visible Check-ом я нашёл функцию которая проводит луч между двумя точками и ищет колайдер и написал вот такой код
C++:
#include "RayCastSack.h"
#include "framework/il2cpp-appdata.h"
#include <iostream>
#include "Vector.h"
#include "PlayerDataArray.h"


#define EntListBase 0xB35C3C
#define EntListBase2 0xB35CA8


app::PlayerData* GetPlayerDataS(UINT32 i)
{

    offsetsM offsets;
    PlayerDataArray* PA = (PlayerDataArray*)(*app::PLH__TypeInfo)->static_fields->player;
    DWORD CHECK = (DWORD)PA->Player[i];
    if (CHECK < 0xfffff)
        return NULL;
    return PA->Player[i];

}

bool RayCasstSack::Render(int i)
{



    app::PlayerData* enemy = GetPlayerDataS(i);
    if (enemy == NULL)
    {
        return false;
    }
    ImVec2 posInScreenTrue;
    app::PlayerData* my = (*app::Controll__TypeInfo)->static_fields->pl;



    if (enemy->fields.health <= 1)
        return false;

    if (enemy->fields.bstate == 5)
        return false;


    app::RaycastHit hit;
    if ((DWORD)&enemy < 0xffff)
        return false;

    if (enemy == NULL)
        return false;
    if (&enemy == NULL)
        return false;
    if ((DWORD)enemy < 0xffff)
        return false;
    if ((DWORD)enemy == 0x00000800)
        return false;
    if ((DWORD)&enemy == 0x00000800)
        return false;






    if (app::Physics_Linecast_1(my->fields.currPos, enemy->fields.currPos, &hit, nullptr))
    {
   

        float cmpPosx = hit.m_Point.x - enemy->fields.currPos.x;
        float cmpPosy = hit.m_Point.y - enemy->fields.currPos.y;
        float cmpPoz = hit.m_Point.z - enemy->fields.currPos.z;


        if (cmpPosx > -1 && cmpPosx < 1 && cmpPosy > -1 && cmpPosy < 1 && cmpPoz > -1 && cmpPoz < 1)
        {
            enemy->fields.leg_limit = 46;
            return true;
        }

    }
    enemy->fields.leg_limit = 45;
    return false;
}
она роботает какое-то время и крашит в чём может быть проблема или может вы мне посоветуете сделать как-то по другому (игра Unity)

UPD:: Вот вызов
C++:
DWORD WINAPI RayCastThread(HMODULE hMod)
{
    while (true)
    {
        for (int i = 0; i < 40; i++)
        {
            sackDaR.Render(i);    
            Sleep(40);
        }
    }
    FreeLibraryAndExitThread(hMod, 0);
}


upd ошибка
Думаю тебе нужно настроить дебаг чтоб он в коде показывал ошибку, как и в наших читах на ксго...
 
ЗАЧЕМ ДУМАТЬ ЕСЛИ МОЖНО НЕ ДУМАТЬ
Пользователь
Статус
Оффлайн
Регистрация
25 Июл 2021
Сообщения
157
Реакции[?]
38
Поинты[?]
0
Сверху Снизу