Вопрос Imgui render shaking

priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
world_to_screen с вейва, mutex ситуацию не исправил, с чем может быть связано? шейкает все, что связано с игроком.
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
world_to_screen с вейва, mutex ситуацию не исправил, с чем может быть связано? шейкает все, что связано с игроком.
utils.cpp
C++:
    bool get_bbox(entity_t* e, Box& box, bool player_esp)
    {
        auto collideable = e->GetCollideable();
        auto m_rgflCoordinateFrame = e->m_rgflCoordinateFrame();

        auto min = collideable->OBBMins();
        auto max = collideable->OBBMaxs();

        Vector points[8] =
        {
            Vector(min.x, min.y, min.z),
            Vector(min.x, max.y, min.z),
            Vector(max.x, max.y, min.z),
            Vector(max.x, min.y, min.z),
            Vector(max.x, max.y, max.z),
            Vector(min.x, max.y, max.z),
            Vector(min.x, min.y, max.z),
            Vector(max.x, min.y, max.z)
        };

        Vector pointsTransformed[8];

        for (auto i = 0; i < 8; i++)
            math::vector_transform(points[i], m_rgflCoordinateFrame, pointsTransformed[i]);

        Vector pos = e->GetAbsOrigin();
        Vector flb;
        Vector brt;
        Vector blb;
        Vector frt;
        Vector frb;
        Vector brb;
        Vector blt;
        Vector flt;

        auto bFlb = math::WorldToScreen(pointsTransformed[3], flb);
        auto bBrt = math::WorldToScreen(pointsTransformed[5], brt);
        auto bBlb = math::WorldToScreen(pointsTransformed[0], blb);
        auto bFrt = math::WorldToScreen(pointsTransformed[4], frt);
        auto bFrb = math::WorldToScreen(pointsTransformed[2], frb);
        auto bBrb = math::WorldToScreen(pointsTransformed[1], brb);
        auto bBlt = math::WorldToScreen(pointsTransformed[6], blt);
        auto bFlt = math::WorldToScreen(pointsTransformed[7], flt);

        if (!bFlb && !bBrt && !bBlb && !bFrt && !bFrb && !bBrb && !bBlt && !bFlt)
            return false;

        Vector arr[8] =
        {
            flb,
            brt,
            blb,
            frt,
            frb,
            brb,
            blt,
            flt
        };

        auto left = flb.x;
        auto top = flb.y;
        auto right = flb.x;
        auto bottom = flb.y;

        for (auto i = 1; i < 8; i++)
        {
            if (left > arr[i].x)
                left = arr[i].x;
            if (top < arr[i].y)
                top = arr[i].y;
            if (right < arr[i].x)
                right = arr[i].x;
            if (bottom > arr[i].y)
                bottom = arr[i].y;
        }

        box.x = left;
        box.y = bottom;
        box.w = right - left;
        box.h = top - bottom;
        box.t = top;
        box.j = right;
        return true; // fix by delorean
    }
 
priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
utils.cpp
C++:
    bool get_bbox(entity_t* e, Box& box, bool player_esp)
    {
        auto collideable = e->GetCollideable();
        auto m_rgflCoordinateFrame = e->m_rgflCoordinateFrame();

        auto min = collideable->OBBMins();
        auto max = collideable->OBBMaxs();

        Vector points[8] =
        {
            Vector(min.x, min.y, min.z),
            Vector(min.x, max.y, min.z),
            Vector(max.x, max.y, min.z),
            Vector(max.x, min.y, min.z),
            Vector(max.x, max.y, max.z),
            Vector(min.x, max.y, max.z),
            Vector(min.x, min.y, max.z),
            Vector(max.x, min.y, max.z)
        };

        Vector pointsTransformed[8];

        for (auto i = 0; i < 8; i++)
            math::vector_transform(points[i], m_rgflCoordinateFrame, pointsTransformed[i]);

        Vector pos = e->GetAbsOrigin();
        Vector flb;
        Vector brt;
        Vector blb;
        Vector frt;
        Vector frb;
        Vector brb;
        Vector blt;
        Vector flt;

        auto bFlb = math::WorldToScreen(pointsTransformed[3], flb);
        auto bBrt = math::WorldToScreen(pointsTransformed[5], brt);
        auto bBlb = math::WorldToScreen(pointsTransformed[0], blb);
        auto bFrt = math::WorldToScreen(pointsTransformed[4], frt);
        auto bFrb = math::WorldToScreen(pointsTransformed[2], frb);
        auto bBrb = math::WorldToScreen(pointsTransformed[1], brb);
        auto bBlt = math::WorldToScreen(pointsTransformed[6], blt);
        auto bFlt = math::WorldToScreen(pointsTransformed[7], flt);

        if (!bFlb && !bBrt && !bBlb && !bFrt && !bFrb && !bBrb && !bBlt && !bFlt)
            return false;

        Vector arr[8] =
        {
            flb,
            brt,
            blb,
            frt,
            frb,
            brb,
            blt,
            flt
        };

        auto left = flb.x;
        auto top = flb.y;
        auto right = flb.x;
        auto bottom = flb.y;

        for (auto i = 1; i < 8; i++)
        {
            if (left > arr[i].x)
                left = arr[i].x;
            if (top < arr[i].y)
                top = arr[i].y;
            if (right < arr[i].x)
                right = arr[i].x;
            if (bottom > arr[i].y)
                bottom = arr[i].y;
        }

        box.x = left;
        box.y = bottom;
        box.w = right - left;
        box.h = top - bottom;
        box.t = top;
        box.j = right;
        return true; // fix by delorean
    }
пиздатый фикс дружище ?
 
VirtualAllocEx
Пользователь
Статус
Оффлайн
Регистрация
30 Дек 2021
Сообщения
358
Реакции[?]
83
Поинты[?]
5K
utils.cpp
C++:
    bool get_bbox(entity_t* e, Box& box, bool player_esp)
    {
        auto collideable = e->GetCollideable();
        auto m_rgflCoordinateFrame = e->m_rgflCoordinateFrame();

        auto min = collideable->OBBMins();
        auto max = collideable->OBBMaxs();

        Vector points[8] =
        {
            Vector(min.x, min.y, min.z),
            Vector(min.x, max.y, min.z),
            Vector(max.x, max.y, min.z),
            Vector(max.x, min.y, min.z),
            Vector(max.x, max.y, max.z),
            Vector(min.x, max.y, max.z),
            Vector(min.x, min.y, max.z),
            Vector(max.x, min.y, max.z)
        };

        Vector pointsTransformed[8];

        for (auto i = 0; i < 8; i++)
            math::vector_transform(points[i], m_rgflCoordinateFrame, pointsTransformed[i]);

        Vector pos = e->GetAbsOrigin();
        Vector flb;
        Vector brt;
        Vector blb;
        Vector frt;
        Vector frb;
        Vector brb;
        Vector blt;
        Vector flt;

        auto bFlb = math::WorldToScreen(pointsTransformed[3], flb);
        auto bBrt = math::WorldToScreen(pointsTransformed[5], brt);
        auto bBlb = math::WorldToScreen(pointsTransformed[0], blb);
        auto bFrt = math::WorldToScreen(pointsTransformed[4], frt);
        auto bFrb = math::WorldToScreen(pointsTransformed[2], frb);
        auto bBrb = math::WorldToScreen(pointsTransformed[1], brb);
        auto bBlt = math::WorldToScreen(pointsTransformed[6], blt);
        auto bFlt = math::WorldToScreen(pointsTransformed[7], flt);

        if (!bFlb && !bBrt && !bBlb && !bFrt && !bFrb && !bBrb && !bBlt && !bFlt)
            return false;

        Vector arr[8] =
        {
            flb,
            brt,
            blb,
            frt,
            frb,
            brb,
            blt,
            flt
        };

        auto left = flb.x;
        auto top = flb.y;
        auto right = flb.x;
        auto bottom = flb.y;

        for (auto i = 1; i < 8; i++)
        {
            if (left > arr[i].x)
                left = arr[i].x;
            if (top < arr[i].y)
                top = arr[i].y;
            if (right < arr[i].x)
                right = arr[i].x;
            if (bottom > arr[i].y)
                bottom = arr[i].y;
        }

        box.x = left;
        box.y = bottom;
        box.w = right - left;
        box.h = top - bottom;
        box.t = top;
        box.j = right;
        return true; // fix by delorean
    }
что ты нахуй высрал? проблема не в этом блять


world_to_screen с вейва, mutex ситуацию не исправил, с чем может быть связано? шейкает все, что связано с игроком.
шейкает в каком плане? видео не хочешь скинуть или мы гадать должны?
Kamazik почисти срач пастеров
 
VirtualAllocEx
Пользователь
Статус
Оффлайн
Регистрация
30 Дек 2021
Сообщения
358
Реакции[?]
83
Поинты[?]
5K
priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
или ты кидаешь видео и я тебе помогаю, либо ты остаёшься сидеть и ждать ответа
сейчас я ничего кинуть не могу, но видимо тебе понятно, лично для тебя объясню:
гетаешь кость(хитбокс, ориджин) юзаешь ворлд ту скрин и охуеваешь от тряски(слово тряска блять) текста, фигуры, хотя по факту, такого не должно быть(фигура должна не двигаться).
 
Последнее редактирование:
VirtualAllocEx
Пользователь
Статус
Оффлайн
Регистрация
30 Дек 2021
Сообщения
358
Реакции[?]
83
Поинты[?]
5K
сейчас я ничего кинуть не могу, но видимо тебе понятно, лично для тебя объясню:
гетаешь кость(хитбокс, ориджин) юзаешь ворлд ту скрин и охуеваешь от тряски(слово тряска блять) текста, фигуры, хотя по факту, такого не должно быть(фигура должна не двигаться).
Есть 2 варианта почему это может быть, но без демонстрации я не могу быть уверен, что проблема в той или иной функции
 
priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
ты рендеришь через dx9 используя имгуи, твоя w2s матрица обнуляется/обновляется в момент когда начинается отрисовка нового кадра, поэтому у тебя телепортации/дрожь и прочее, с rgflCoordinateFrame аналогично, тебе нужно синхронизировать эти функции с игрой, и все будет перфект, либо используй игровые функции для есп
 
priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
ты рендеришь через dx9 используя имгуи, твоя w2s матрица обнуляется/обновляется в момент когда начинается отрисовка нового кадра, поэтому у тебя телепортации/дрожь и прочее, с rgflCoordinateFrame аналогично, тебе нужно синхронизировать эти функции с игрой, и все будет перфект, либо используй игровые функции для есп
как можно синхронизировать? смотрел ксгосимпл, там вроде мутекс, но результатов он мне не даёт.
 
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
как можно синхронизировать? смотрел ксгосимпл, там вроде мутекс, но результатов он мне не даёт.
сохранять данные в игровом треде например в paint/painttraverse, а использовать уже в оверлее, тогда все будет чики пуки, либо ебстись с мутексами и всей этой говной (которая лично у меня никогда нормально не работала)
 
VirtualAllocEx
Пользователь
Статус
Оффлайн
Регистрация
30 Дек 2021
Сообщения
358
Реакции[?]
83
Поинты[?]
5K
const auto invw = 1.0f / w;
out.x *= invw;
out.y *= invw;

Попробуй. Если не поможет (это единственное отличие было по коду w2s) - то проблема в getbox, если же не в нём, тогда что-то ломает матрицу или позиции игрока
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,444
Реакции[?]
1,092
Поинты[?]
10K
const auto invw = 1.0f / w;
out.x *= invw;
out.y *= invw;

Попробуй. Если не поможет (это единственное отличие было по коду w2s) - то проблема в getbox, если же не в нём, тогда что-то ломает матрицу или позиции игрока
адекватный человек уже сказал решение выше
 
VirtualAllocEx
Пользователь
Статус
Оффлайн
Регистрация
30 Дек 2021
Сообщения
358
Реакции[?]
83
Поинты[?]
5K
адекватный человек уже сказал решение выше
Лично у меня не разу не трясло есп, хотя чему я удивляюсь. Он же в пасте лв меняет рендер, когда иммортал нихуя не знает и чит к хуям убил.
 
Похожие темы
Сверху Снизу