Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос Imgui render shaking

  • Автор темы Автор темы trapwest
  • Дата начала Дата начала
🚬
Участник
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции
243
world_to_screen с вейва, mutex ситуацию не исправил, с чем может быть связано? шейкает все, что связано с игроком.
 
world_to_screen с вейва, mutex ситуацию не исправил, с чем может быть связано? шейкает все, что связано с игроком.
utils.cpp
C++:
Expand Collapse Copy
    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
    }
 
utils.cpp
C++:
Expand Collapse Copy
    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
    }
пиздатый фикс дружище ?
 
utils.cpp
C++:
Expand Collapse Copy
    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 почисти срач пастеров
 
или ты кидаешь видео и я тебе помогаю, либо ты остаёшься сидеть и ждать ответа
сейчас я ничего кинуть не могу, но видимо тебе понятно, лично для тебя объясню:
гетаешь кость(хитбокс, ориджин) юзаешь ворлд ту скрин и охуеваешь от тряски(слово тряска блять) текста, фигуры, хотя по факту, такого не должно быть(фигура должна не двигаться).
 
Последнее редактирование:
сейчас я ничего кинуть не могу, но видимо тебе понятно, лично для тебя объясню:
гетаешь кость(хитбокс, ориджин) юзаешь ворлд ту скрин и охуеваешь от тряски(слово тряска блять) текста, фигуры, хотя по факту, такого не должно быть(фигура должна не двигаться).
Есть 2 варианта почему это может быть, но без демонстрации я не могу быть уверен, что проблема в той или иной функции
 
ты рендеришь через dx9 используя имгуи, твоя w2s матрица обнуляется/обновляется в момент когда начинается отрисовка нового кадра, поэтому у тебя телепортации/дрожь и прочее, с rgflCoordinateFrame аналогично, тебе нужно синхронизировать эти функции с игрой, и все будет перфект, либо используй игровые функции для есп
 
ты рендеришь через dx9 используя имгуи, твоя w2s матрица обнуляется/обновляется в момент когда начинается отрисовка нового кадра, поэтому у тебя телепортации/дрожь и прочее, с rgflCoordinateFrame аналогично, тебе нужно синхронизировать эти функции с игрой, и все будет перфект, либо используй игровые функции для есп
как можно синхронизировать? смотрел ксгосимпл, там вроде мутекс, но результатов он мне не даёт.
 
как можно синхронизировать? смотрел ксгосимпл, там вроде мутекс, но результатов он мне не даёт.
сохранять данные в игровом треде например в paint/painttraverse, а использовать уже в оверлее, тогда все будет чики пуки, либо ебстись с мутексами и всей этой говной (которая лично у меня никогда нормально не работала)
 
const auto invw = 1.0f / w;
out.x *= invw;
out.y *= invw;

Попробуй. Если не поможет (это единственное отличие было по коду w2s) - то проблема в getbox, если же не в нём, тогда что-то ломает матрицу или позиции игрока
 
const auto invw = 1.0f / w;
out.x *= invw;
out.y *= invw;

Попробуй. Если не поможет (это единственное отличие было по коду w2s) - то проблема в getbox, если же не в нём, тогда что-то ломает матрицу или позиции игрока
адекватный человек уже сказал решение выше
 
адекватный человек уже сказал решение выше
Лично у меня не разу не трясло есп, хотя чему я удивляюсь. Он же в пасте лв меняет рендер, когда иммортал нихуя не знает и чит к хуям убил.
 
Назад
Сверху Снизу