Вопрос Динамический BoxESP

Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Всем привет.

У меня возникла проблема с BoxESP, они у меня динамические, что именно я имею ввиду под этим словом:
При дыхании модельки игрока(не важно, бот это или живой игрок) - боксы двигаются из за этого ломаются углы.
При движении экрана(в игре) по вертикали, BoxESP расширяется, чего быть не должно, так как BoxESP должен быть статичным.

Как можно решить данную проблему?
Вот VIDEO, на котором показана вся проблема:(
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
 
..................................................
Участник
Статус
Оффлайн
Регистрация
13 Авг 2020
Сообщения
990
Реакции[?]
249
Поинты[?]
25K
Ну судя по твоему коду, мы можем только пойти нахуй. Потому что его нету
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Ты бы код приложил хотяб
Я прошу прощения, не мог.

Вот функция World_to_screen

WTD:
bool Renderer::world_to_screen(const vec3& screen_size, const vec3& pos, vec3& out, view_matrix_t matrix) {

    float Matrix[16]; // [4][4]: 4*4 = 16

    LI_FN(ReadProcessMemory).cached()(GlobalVars::get().csgo, (PFLOAT)(GlobalVars::get().client + offsets::dwViewMatrix), &Matrix, sizeof(Matrix), 0);

    //Matrix-vector Product, multiplying world(eye) coordinates by projection matrix = clipCoords
    vec4_t clipCoords;
    clipCoords.x = pos.x * Matrix[0] + pos.y * Matrix[1] + pos.z * Matrix[2] + Matrix[3];
    clipCoords.y = pos.x * Matrix[4] + pos.y * Matrix[5] + pos.z * Matrix[6] + Matrix[7];
    clipCoords.z = pos.x * Matrix[8] + pos.y * Matrix[9] + pos.z * Matrix[10] + Matrix[11];
    clipCoords.w = pos.x * Matrix[12] + pos.y * Matrix[13] + pos.z * Matrix[14] + Matrix[15];

    if (clipCoords.w < 0.001f) // if the camera is behind our player don't draw, i think?
        return false;

    vec3 NDC;
    // Normalize our coords
    NDC.x = clipCoords.x / clipCoords.w;
    NDC.y = clipCoords.y / clipCoords.w;
    NDC.z = clipCoords.z / clipCoords.w;

    float x = screen_size.x * .5f;
    float y = screen_size.y * .5f;

    x += 0.5f * out.x * screen_size.x + 0.5f;
    y -= 0.5f * out.y * screen_size.y + 0.5f;

    // Convert to window coords (x,y)
    out.x = (GlobalVars::get().RezX / 2 * NDC.x) + (NDC.x + GlobalVars::get().RezX / 2);
    out.y = -(GlobalVars::get().RezY / 2 * NDC.y) + (NDC.y + GlobalVars::get().RezY / 2);

    return true;
}
Вот как рисуются Боксы:

DrawBox(vec2(player->head2D.x - player->width2D / 2.f, player->head2D.y), vec2(player->width2D, player->height2D), D3DCOLOR_RGBA(65, 135, 245, 255), 1);

В функции tansformcord, даннный код:
Transformcord:
    //player->origin.z += 6.f;
    player->headPos3D = vec3(player->getBonePos(8, player->getBase()));
    player->headPos3D.z += 15.f;
    player->origin.z -= 6.f;

    if (world_to_screen(vec3(GlobalVars::get().RezX, GlobalVars::get().RezY, 1.f), player->headPos3D, player->head2D, matrix))
    {
        if (world_to_screen(vec3(GlobalVars::get().RezX, GlobalVars::get().RezY, 1.f), vec3(player->origin), player->origin2D, matrix))
        {
            player->height2D = fabs(player->head2D.y - player->origin2D.y);
            player->width2D = player->height2D / 1.65f;
            player->distance = vec3::get().distance(GlobalVars::get().localPlayer->origin, player->origin);
            player->bbox.left = static_cast<long>(player->origin.x - player->width2D * 0.5f);
            player->bbox.right = static_cast<long>(player->bbox.left + player->width2D);
            player->bbox.bottom = static_cast<long>(player->origin.y);
            player->bbox.top = static_cast<long>(player->head2D.y);
            return true;
        }
    }
в Функции DrawBox(кстомной) идет отрисовка есп через DrawRect, где координаты у меня статические.
Думаю что функция world_to_screen наебнулась
мне об этом говорили, но дело в том что я не вижу проблемы в wts
так же, у меня нет привязки ног к боксам, как можно привязать ноги как нижнюю точку боксов, в случаи с моим кодом?
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Уточню в рендере у меня отрисовка происходит следующим образом:
Render()
{
for(i; i<32;i++)
И тут сама проверка на чекбокс, если он включен, то рисует функцию боксов выше
}

а в функции боксов, чисто идет отрисовка, нету проверок на localplayer,на ноги
 
5 ночей на aim_ag_texture2
Эксперт
Статус
Оффлайн
Регистрация
6 Апр 2017
Сообщения
826
Реакции[?]
401
Поинты[?]
11K
это просто такое вот отличие динамичных боксов, можешь забить хуй как это делает 99% людей
upd: не знаю как это чинить но я уверен что надо менять метод получения координат есп боксов либо менять ченить в worldtoscreen, а это хуево особенно когда у тебя экстернал. поэтому людям (и мне) похуй
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
это просто такое вот отличие динамичных боксов, можешь забить хуй как это делает 99% людей
upd: не знаю как это чинить но я уверен что надо менять метод получения координат есп боксов либо менять ченить в worldtoscreen, а это хуево особенно когда у тебя экстернал. поэтому людям (и мне) похуй
Благодарю, я не хочу забивать болт на это, оно меня бесит и я хочу попробовать получить идеальные ну или почти идеальные боксы, даже если это экстернал.
 
Начинающий
Статус
Оффлайн
Регистрация
28 Дек 2020
Сообщения
239
Реакции[?]
20
Поинты[?]
3K
изи
C++:
bool world_to_screen( vec3_t pos, vec2_t& screen ) // converts 3D coords to 2D coords
{
    float screen_width = (float)globals::res_x;
    float screen_height = (float)globals::res_y;

    float Matrix[16]; // [4][4]: 4*4 = 16

    LI_FN( ReadProcessMemory ).safe_cached()(globals::_handle, (PFLOAT)(globals::client + offsets::dwViewMatrix), &Matrix, sizeof( Matrix ), 0);

   
    vec4_t clipCoords;
    clipCoords.x = pos.x * Matrix[0] + pos.y * Matrix[1] + pos.z * Matrix[2] + Matrix[3];
    clipCoords.y = pos.x * Matrix[4] + pos.y * Matrix[5] + pos.z * Matrix[6] + Matrix[7];
    clipCoords.z = pos.x * Matrix[8] + pos.y * Matrix[9] + pos.z * Matrix[10] + Matrix[11];
    clipCoords.w = pos.x * Matrix[12] + pos.y * Matrix[13] + pos.z * Matrix[14] + Matrix[15];

    if ( clipCoords.w < 0.1f ) 
        return false;


    vec3_t NDC;
    // Normalize our coords
    NDC.x = clipCoords.x / clipCoords.w;
    NDC.y = clipCoords.y / clipCoords.w;
    NDC.z = clipCoords.z / clipCoords.w;

   
    screen.x = (screen_width / 2 * NDC.x) + (NDC.x + screen_width / 2);
    screen.y = -(screen_height / 2 * NDC.y) + (NDC.y + screen_height / 2);
    return true;
}
C++:
void draw_filled_rect( int x, int y, int w, int h )
{
    RECT rect = { x, y, x + w, y + h };
    FillRect( hdc, &rect, EnemyBrush );
}

void draw_box( int x, int y, int w, int h, int thickness )
{
    draw_filled_rect( x, y, w, thickness ); //Top horiz line
    draw_filled_rect( x, y, thickness, h ); //Left vertical line
    draw_filled_rect( (x + w), y, thickness, h ); //right vertical line
    draw_filled_rect( x, y + h, w + thickness, thickness ); //bottom horiz line
}
будут статичные прямоугольники а не твои залупные уголки
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
изи
C++:
bool world_to_screen( vec3_t pos, vec2_t& screen ) // converts 3D coords to 2D coords
{
    float screen_width = (float)globals::res_x;
    float screen_height = (float)globals::res_y;

    float Matrix[16]; // [4][4]: 4*4 = 16

    LI_FN( ReadProcessMemory ).safe_cached()(globals::_handle, (PFLOAT)(globals::client + offsets::dwViewMatrix), &Matrix, sizeof( Matrix ), 0);


    vec4_t clipCoords;
    clipCoords.x = pos.x * Matrix[0] + pos.y * Matrix[1] + pos.z * Matrix[2] + Matrix[3];
    clipCoords.y = pos.x * Matrix[4] + pos.y * Matrix[5] + pos.z * Matrix[6] + Matrix[7];
    clipCoords.z = pos.x * Matrix[8] + pos.y * Matrix[9] + pos.z * Matrix[10] + Matrix[11];
    clipCoords.w = pos.x * Matrix[12] + pos.y * Matrix[13] + pos.z * Matrix[14] + Matrix[15];

    if ( clipCoords.w < 0.1f )
        return false;


    vec3_t NDC;
    // Normalize our coords
    NDC.x = clipCoords.x / clipCoords.w;
    NDC.y = clipCoords.y / clipCoords.w;
    NDC.z = clipCoords.z / clipCoords.w;


    screen.x = (screen_width / 2 * NDC.x) + (NDC.x + screen_width / 2);
    screen.y = -(screen_height / 2 * NDC.y) + (NDC.y + screen_height / 2);
    return true;
}
C++:
void draw_filled_rect( int x, int y, int w, int h )
{
    RECT rect = { x, y, x + w, y + h };
    FillRect( hdc, &rect, EnemyBrush );
}

void draw_box( int x, int y, int w, int h, int thickness )
{
    draw_filled_rect( x, y, w, thickness ); //Top horiz line
    draw_filled_rect( x, y, thickness, h ); //Left vertical line
    draw_filled_rect( (x + w), y, thickness, h ); //right vertical line
    draw_filled_rect( x, y + h, w + thickness, thickness ); //bottom horiz line
}
будут статичные прямоугольники а не твои залупные уголки
Проблема с углами ушла, большое спасибо.

Осталась проблема с дыханием игрока, из за чего BoxESP дергается + HealthESP уехало в боксы, почему-то..
Как сделать их статично слева от боксов и что бы они никогда не уезжали внутрь и убрать движение BoxESP из за дыхания? (прошу помочь, пожалуйста)

Вот VIDEO как они работают:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Код HealthESP(left):
1668082222899.png

так же у меня BosESP только к голове прикручены:
Пожалуйста, авторизуйтесь для просмотра ссылки.
, так и нужно вообще? вроде бы еще к ногам приключивают.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Проблема с углами ушла, большое спасибо.

Осталась проблема с дыханием игрока, из за чего BoxESP дергается + HealthESP уехало в боксы, почему-то..
Как сделать их статично слева от боксов и что бы они никогда не уезжали внутрь и убрать движение BoxESP из за дыхания? (прошу помочь, пожалуйста)

Вот VIDEO как они работают:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Код HealthESP(left):
Посмотреть вложение 227407

так же у меня BosESP только к голове прикручены:
Пожалуйста, авторизуйтесь для просмотра ссылки.
, так и нужно вообще? вроде бы еще к ногам приключивают.
Мне сказали, что для решения проблем с дыханием, нужно использовать данный метод

Пожалуйста, авторизуйтесь для просмотра ссылки.
(не реклама)

Если кто-то может помочь мне подогнать под мой код данную штуку, буду очень благодарен, только скажите что нужно дать, какие функции
 
Начинающий
Статус
Оффлайн
Регистрация
28 Дек 2020
Сообщения
239
Реакции[?]
20
Поинты[?]
3K
Мне сказали, что для решения проблем с дыханием, нужно использовать данный метод

Пожалуйста, авторизуйтесь для просмотра ссылки.
(не реклама)

Если кто-то может помочь мне подогнать под мой код данную штуку, буду очень благодарен, только скажите что нужно дать, какие функции
это устарело во первых во вторых это не поможет , наверно единственное как можно это пофиксить это рисовать боксы через другое окно или например стим оверлей , если ты в этом разберешься и сможешь подогнать то молодец , я не разобрался xD noAD(
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
Проблема с углами ушла, большое спасибо.

Осталась проблема с дыханием игрока, из за чего BoxESP дергается + HealthESP уехало в боксы, почему-то..
Как сделать их статично слева от боксов и что бы они никогда не уезжали внутрь и убрать движение BoxESP из за дыхания? (прошу помочь, пожалуйста)

Вот VIDEO как они работают:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Код HealthESP(left):
Посмотреть вложение 227407

так же у меня BosESP только к голове прикручены:
Пожалуйста, авторизуйтесь для просмотра ссылки.
, так и нужно вообще? вроде бы еще к ногам приключивают.
можешь приколотить к ногам но только к ногам не приколачивая к голове ибо будет бакаться и боксы будут летать по x y влево вправо
я пришляпил к голове и норм
C++:
void option_esp(c_player enemy)
    {
        
        if (!settings->visuals.enabled)
            return;

        //head pos
        vec3_t enemy_head_pos = enemy.get_bone_pos(8);
        enemy_head_pos.z += 10;
        vec2_t enemy_head_screen{};
        world_to_screen(enemy_head_pos, enemy_head_screen);

        //base origin
        vec3_t enemy_origin_pos = enemy.origin();
        vec2_t enemy_origin_screen{};
        world_to_screen(enemy_origin_pos, enemy_origin_screen);

        float h = enemy_origin_screen.y - enemy_head_screen.y;
        float w = (h / 2);

        draw_box(enemy_head_screen.x - (w / 2), enemy_head_screen.y, w, h, 1);
    }
можешь потестить и к другим костям приколотить хоть ко всем , просто потести вдруг сработает
да даже не сработает , а будет точно работать я понял в чем у тебя проблема , просто вставь код который я кинул и всё будет ок
такой причуды как на скрине не будет точно , не за что.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
28 Дек 2020
Сообщения
239
Реакции[?]
20
Поинты[?]
3K
" и убрать движение BoxESP из за дыхания? "
C++:
if (!settings->visuals.multi_threads)
                Sleep(0);если жестко будет жрать процессор то меня значения 1-3 и тд
но если у тебя плохое окно для отрисовки боксов то это полностью не решит проблему а лишь улучшит то что есть
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
это устарело во первых во вторых это не поможет , наверно единственное как можно это пофиксить это рисовать боксы через другое окно или например стим оверлей , если ты в этом разберешься и сможешь подогнать то молодец , я не разобрался xD noAD(
Пожалуйста, авторизуйтесь для просмотра ссылки.
)

можешь приколотить к ногам но только к ногам не приколачивая к голове ибо будет бакаться и боксы будут летать по x y влево вправо
я пришляпил к голове и норм
C++:
void option_esp(c_player enemy)
    {
      
        if (!settings->visuals.enabled)
            return;

        //head pos
        vec3_t enemy_head_pos = enemy.get_bone_pos(8);
        enemy_head_pos.z += 10;
        vec2_t enemy_head_screen{};
        world_to_screen(enemy_head_pos, enemy_head_screen);

        //base origin
        vec3_t enemy_origin_pos = enemy.origin();
        vec2_t enemy_origin_screen{};
        world_to_screen(enemy_origin_pos, enemy_origin_screen);

        float h = enemy_origin_screen.y - enemy_head_screen.y;
        float w = (h / 2);

        draw_box(enemy_head_screen.x - (w / 2), enemy_head_screen.y, w, h, 1);
    }
можешь потестить и к другим костям приколотить хоть ко всем , просто потести вдруг сработает
да даже не сработает , а будет точно работать я понял в чем у тебя проблема , просто вставь код который я кинул и всё будет ок
такой причуды как на скрине не будет точно , не за что.
У меня приколочено к голове
" и убрать движение BoxESP из за дыхания? "
C++:
if (!settings->visuals.multi_threads)
                Sleep(0);если жестко будет жрать процессор то меня значения 1-3 и тд
но если у тебя плохое окно для отрисовки боксов то это полностью не решит проблему а лишь улучшит то что есть
Не совсем пойму, что за переменная?
Я пробовал инфу найти как убрать движение бок ов, но наше только способ выше, с УС
И кстати, как мне убрать перемещение хпшки в боксы?
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Как в общем сделать что бы BoxESP не двигался при дыхании модельки игрока?
 
Сверху Снизу