Вопрос Рендер АА

Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
День прекрасный, всем тру мегапастерам. Я не исключение и хотел бы попросить помощи. В общей мере я разобрался как работают антиаимы, но есть другой немаловажный момент, как их рендерить. Понял, что делается это через DME, но совершенно не могу разобраться как именно ( накладывать материал и т.п. это понятно ). В общем прошу помощи у пользователей форума, хоть бы кто помог.

P.s. отсеку большинство сообщений. Я гуглил, я пытался, но не получилось. Всё что я находил в основном не очень свежее.
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
День прекрасный, всем тру мегапастерам. Я не исключение и хотел бы попросить помощи. В общей мере я разобрался как работают антиаимы, но есть другой немаловажный момент, как их рендерить. Понял, что делается это через DME, но совершенно не могу разобраться как именно ( накладывать материал и т.п. это понятно ). В общем прошу помощи у пользователей форума, хоть бы кто помог.

P.s. отсеку большинство сообщений. Я гуглил, я пытался, но не получилось. Всё что я находил в основном не очень свежее.
тебе нужен локал анимфикс
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
тебе нужен локал анимфикс
Да это я понял, пока смотрел всю инфу, но просто не до конца понимаю, как он будет связанно работать с отрисовкой ? Т.к. углы мы ставим при условии с bSendPacket, а рендер в DME работает так как работает. Мне вот этот момент и непонятен. Всё же лучше знать как и что у тебя работает, чтобы в будущем делать какой-то импрув
 
get good get legendware
Участник
Статус
Оффлайн
Регистрация
22 Сен 2020
Сообщения
435
Реакции[?]
200
Поинты[?]
47K
Да это я понял, пока смотрел всю инфу, но просто не до конца понимаю, как он будет связанно работать с отрисовкой ? Т.к. углы мы ставим при условии с bSendPacket, а рендер в DME работает так как работает. Мне вот этот момент и непонятен. Всё же лучше знать как и что у тебя работает, чтобы в будущем делать какой-то импрув
look at open source cheats like legendware or csgosimple with ragebot
тебе нужен локал анимфикс
no u don’t, at least not for desync chams
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
look at open source cheats like legendware or csgosimple with ragebot

no u don’t, at least not for desync chams
When i opened legendware my eyes start bleeding. Im already checked this, but it haven't really good or simple code. But csgosimple with aa... I saw this source with autowall and aim, but no more
 
Забаненный
Статус
Оффлайн
Регистрация
19 Янв 2022
Сообщения
50
Реакции[?]
18
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а рендер в DME работает так как работает
В этом и разница, клиент прокручивает анимации по кадрам, а сервер прокручивает их по тикам, отсюда даже при условии одинаковой инфы будут расхождения.
Когда ты ставишь bSendPacket = false, то команда чокается и откладывается до тех пор пока bSendPacket не станет true.
Когда это произойдет и сервер получит несколько команд, сервер выполнит все из них за один тик, но клиентам раздаст инфу через сетевые переменные только о последней.
На локальном серве ты можешь напрямую читать состояние сервера из, т.к. клиент и сервер в таком случае выполняются в одном потоке, но в реальной ситуации, чтобы тебе знать состояние как это видит сервер, нужно вести отдельное состояние анимации и скармливать ему тоже самое что и серверу, но обновлять состояние каждый тик.
 
get good get legendware
Участник
Статус
Оффлайн
Регистрация
22 Сен 2020
Сообщения
435
Реакции[?]
200
Поинты[?]
47K
C++:
void local_animations::update_fake_animations()
{
    auto alloc = !local_data.animstate;
    auto change = !alloc && handle != &g_ctx.local()->GetRefEHandle(); //-V807
    auto reset = !alloc && !change && g_ctx.local()->m_flSpawnTime() != spawntime; //-V550

    if (change)
        m_memalloc()->Free(local_data.animstate);

    if (reset)
    {
        util::reset_state(local_data.animstate);
        spawntime = g_ctx.local()->m_flSpawnTime();
    }

    if (alloc || change)
    {
        local_data.animstate = (c_baseplayeranimationstate*)m_memalloc()->Alloc(sizeof(c_baseplayeranimationstate));

        if(local_data.animstate)
            util::create_state(local_data.animstate, g_ctx.local());

        handle = (CBaseHandle*)&g_ctx.local()->GetRefEHandle();
        spawntime = g_ctx.local()->m_flSpawnTime();
    }

    if (!alloc && !change && !reset && fake_server_update)
    {
        float pose_parameter[24]; //-V688
        memcpy(pose_parameter, &g_ctx.local()->m_flPoseParameter(), 24 * sizeof(float));

        AnimationLayer layers[13]; //-V688
        memcpy(layers, g_ctx.local()->get_animlayers(), g_ctx.local()->animlayer_count() * sizeof(AnimationLayer));

        auto backup_frametime = m_globals()->m_frametime; //-V807
        auto backup_curtime = m_globals()->m_curtime;

        m_globals()->m_frametime = m_globals()->m_intervalpertick;
        m_globals()->m_curtime = g_ctx.local()->m_flSimulationTime();

        local_data.animstate->m_pBaseEntity = g_ctx.local();
        util::update_state(local_data.animstate, local_animations::get().local_data.fake_angles);

        local_data.animstate->m_bInHitGroundAnimation = false;
        local_data.animstate->m_fLandingDuckAdditiveSomething = 0.0f;
        local_data.animstate->m_flHeadHeightOrOffsetFromHittingGroundAnimation = 1.0f;

        g_ctx.local()->invalidate_bone_cache();

        g_ctx.local()->setup_bones_rebuilt(g_ctx.globals.fake_matrix, BONE_USED_BY_ANYTHING);
        local_data.visualize_lag = g_cfg.player.visualize_lag;

        if (!local_data.visualize_lag)
        {
            for (auto& i : g_ctx.globals.fake_matrix)
            {
                i[0][3] -= g_ctx.local()->GetRenderOrigin().x; //-V807
                i[1][3] -= g_ctx.local()->GetRenderOrigin().y;
                i[2][3] -= g_ctx.local()->GetRenderOrigin().z;
            }
        }

        m_globals()->m_frametime = backup_frametime;
        m_globals()->m_curtime = backup_curtime;

        memcpy(&g_ctx.local()->m_flPoseParameter(), pose_parameter, 24 * sizeof(float));
        memcpy(g_ctx.local()->get_animlayers(), layers, g_ctx.local()->animlayer_count() * sizeof(AnimationLayer));
    }
}
local_animation.cpp
as u can see
g_ctx.globals.fake_matrix
is the fake matrix data x,y,z u get that and slap it into chams and render it , simply
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
C++:
void local_animations::update_fake_animations()
{
    auto alloc = !local_data.animstate;
    auto change = !alloc && handle != &g_ctx.local()->GetRefEHandle(); //-V807
    auto reset = !alloc && !change && g_ctx.local()->m_flSpawnTime() != spawntime; //-V550

    if (change)
        m_memalloc()->Free(local_data.animstate);

    if (reset)
    {
        util::reset_state(local_data.animstate);
        spawntime = g_ctx.local()->m_flSpawnTime();
    }

    if (alloc || change)
    {
        local_data.animstate = (c_baseplayeranimationstate*)m_memalloc()->Alloc(sizeof(c_baseplayeranimationstate));

        if(local_data.animstate)
            util::create_state(local_data.animstate, g_ctx.local());

        handle = (CBaseHandle*)&g_ctx.local()->GetRefEHandle();
        spawntime = g_ctx.local()->m_flSpawnTime();
    }

    if (!alloc && !change && !reset && fake_server_update)
    {
        float pose_parameter[24]; //-V688
        memcpy(pose_parameter, &g_ctx.local()->m_flPoseParameter(), 24 * sizeof(float));

        AnimationLayer layers[13]; //-V688
        memcpy(layers, g_ctx.local()->get_animlayers(), g_ctx.local()->animlayer_count() * sizeof(AnimationLayer));

        auto backup_frametime = m_globals()->m_frametime; //-V807
        auto backup_curtime = m_globals()->m_curtime;

        m_globals()->m_frametime = m_globals()->m_intervalpertick;
        m_globals()->m_curtime = g_ctx.local()->m_flSimulationTime();

        local_data.animstate->m_pBaseEntity = g_ctx.local();
        util::update_state(local_data.animstate, local_animations::get().local_data.fake_angles);

        local_data.animstate->m_bInHitGroundAnimation = false;
        local_data.animstate->m_fLandingDuckAdditiveSomething = 0.0f;
        local_data.animstate->m_flHeadHeightOrOffsetFromHittingGroundAnimation = 1.0f;

        g_ctx.local()->invalidate_bone_cache();

        g_ctx.local()->setup_bones_rebuilt(g_ctx.globals.fake_matrix, BONE_USED_BY_ANYTHING);
        local_data.visualize_lag = g_cfg.player.visualize_lag;

        if (!local_data.visualize_lag)
        {
            for (auto& i : g_ctx.globals.fake_matrix)
            {
                i[0][3] -= g_ctx.local()->GetRenderOrigin().x; //-V807
                i[1][3] -= g_ctx.local()->GetRenderOrigin().y;
                i[2][3] -= g_ctx.local()->GetRenderOrigin().z;
            }
        }

        m_globals()->m_frametime = backup_frametime;
        m_globals()->m_curtime = backup_curtime;

        memcpy(&g_ctx.local()->m_flPoseParameter(), pose_parameter, 24 * sizeof(float));
        memcpy(g_ctx.local()->get_animlayers(), layers, g_ctx.local()->animlayer_count() * sizeof(AnimationLayer));
    }
}
local_animation.cpp
as u can see
g_ctx.globals.fake_matrix
is the fake matrix data x,y,z u get that and slap it into chams and render it , simply
Thank you so much, I finally figured out how it works. That's really so easy...
 
Сверху Снизу