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

Ресольвер сломал мне софт

  • Автор темы Автор темы ratinov
  • Дата начала Дата начала
я уже это фиксанул, но там теперь когда выходишь на противника оно скопиться но не стреляет, но там скорее всего проблема с shot хуй пойми почему, но вот так

Сегодня индексы обновили. У меня из-за этого тоже не стреляло

Индексы связанные с C_BaseCombatWeapon обновились на +2
 
Сегодня индексы обновили. У меня из-за этого тоже не стреляло

Индексы связанные с C_BaseCombatWeapon обновились на +2
Без ресольвера который я вставил, у меня все работает, причем тут это, ясен хуй я обновил софт сразу в день выхода обновы
 
Первая мысль это проверить sendpacket, а так же смотреть что делает резольвер с viewangle, порядок вызовов проверить и прочее


//p.s резольвер не смотрел
что делает ресольвер с viewangle? Чего блять?
 
Тока не смейтесь плез он фиксит статики и немножка балансы, и мне норм.
C++:
Expand Collapse Copy
void c_resolver_recode::AnimationFix(C_CSPlayer* pEnt)
{
  
    static float oldSimtime[65];
    static float storedSimtime[65];
    static float ShotTime[65];
    static float SideTime[65][3];
    static int LastDesyncSide[65];
    static bool Delaying[65];
    static AnimationLayer StoredLayers[64][15];
    static C_AnimState* StoredAnimState[65];
    static float StoredPosParams[65][24];
    static Vector oldEyeAngles[65];
    static float oldGoalfeetYaw[65];
    float* PosParams = (float*)((uintptr_t)pEnt + 0x2774);
    bool update = false;
    bool shot = false;

    static bool jittering[65];

    auto* AnimState = pEnt->get_anim_state2();
    if (!AnimState || !pEnt->get_animation_laye() || !PosParams)
        return;

    auto RemapVal = [](float val, float A, float B, float C, float D) -> float
    {
        if (A == B)
            return val >= B ? D : C;
        return C + (D - C) * (val - A) / (B - A);
    };

    if (storedSimtime[pEnt->EntIndex()] != pEnt->get_simtime())
    {
        jittering[pEnt->EntIndex()] = false;
        pEnt->get_clientside_animation() = true;
        pEnt->update_clientside_anim();

        memcpy(StoredPosParams[pEnt->EntIndex()], PosParams, sizeof(float) * 24);
        memcpy(StoredLayers[pEnt->EntIndex()], pEnt->get_animation_laye(), (sizeof(AnimationLayer) * pEnt->NumOverlays()));

        oldGoalfeetYaw[pEnt->EntIndex()] = AnimState->m_flGoalFeetYaw;
        auto weapon = get_weapon(g_pLocalPlayer->get_active_weapon());
        if (pEnt->get_active_weapon() && !pEnt->IsKnifeorNade())
        {
            if (ShotTime[pEnt->EntIndex()] != weapon->get_last_shot_time())
            {
                shot = true;
                ShotTime[pEnt->EntIndex()] = weapon->get_last_shot_time();
            }
            else
                shot = false;
        }
        else
        {
            shot = false;
            ShotTime[pEnt->EntIndex()] = 0.f;
        }

        float angToLocal = NormalizeYaw2(CalcAngle(g_pLocalPlayer->get_origin(), pEnt->get_origin()).y);

        float Back = NormalizeYaw2(angToLocal);
        float DesyncFix = 0;
        float Resim = NormalizeYaw2((0.24f / (pEnt->get_simtime() - oldSimtime[pEnt->EntIndex()])) * (oldEyeAngles[pEnt->EntIndex()].y - pEnt->get_eye_angles().y));

        if (Resim > 58.f)
            Resim = 58.f;
        if (Resim < -58.f)
            Resim = -58.f;

        if (pEnt->get_velocity().Length2D() > 0.5f && !shot)
        {
            float Delta = NormalizeYaw2(NormalizeYaw2(CalcAngle(Vector(0, 0, 0), pEnt->get_velocity()).y) - NormalizeYaw2(NormalizeYaw2(AnimState->m_flGoalFeetYaw + RemapVal(PosParams[11], 0, 1, -60, 60)) + Resim));

            int CurrentSide = 0;

            if (Delta < 0)
            {
                CurrentSide = 1;
                SideTime[pEnt->EntIndex()][1] = g_pGlobals->curtime;
            }
            else if (Delta > 0)
            {
                CurrentSide = 2;
                SideTime[pEnt->EntIndex()][2] = g_pGlobals->curtime;
            }

            if (LastDesyncSide[pEnt->EntIndex()] == 1)
            {
                Resim += (58.f - Resim);
                DesyncFix += (58.f - Resim);
            }
            if (LastDesyncSide[pEnt->EntIndex()] == 2)
            {
                Resim += (-58.f - Resim);
                DesyncFix += (-58.f - Resim);
            }

            if (LastDesyncSide[pEnt->EntIndex()] != CurrentSide)
            {
                Delaying[pEnt->EntIndex()] = true;

                if (.5f < (g_pGlobals->curtime - SideTime[pEnt->EntIndex()][LastDesyncSide[pEnt->EntIndex()]]))
                {
                    LastDesyncSide[pEnt->EntIndex()] = CurrentSide;
                    Delaying[pEnt->EntIndex()] = false;
                }
            }

            if (!Delaying[pEnt->EntIndex()])
                LastDesyncSide[pEnt->EntIndex()] = CurrentSide;
        }
        else if (!shot)
        {
            float Brute = UseFreestandAngle[pEnt->EntIndex()] ? NormalizeYaw2(Back + FreestandAngle[pEnt->EntIndex()]) : pEnt->get_lby();

            float Delta = NormalizeYaw2(NormalizeYaw2(Brute - NormalizeYaw2(NormalizeYaw2(AnimState->m_flGoalFeetYaw + RemapVal(PosParams[11], 0, 1, -60, 60))) + Resim));

            if (Delta > 58.f)
                Delta = 58.f;
            if (Delta < -58.f)
                Delta = -58.f;

            Resim += Delta;
            DesyncFix += Delta;

            if (Resim > 58.f)
                Resim = 58.f;
            if (Resim < -58.f)
                Resim = -58.f;
        }

        float Equalized = NormalizeYaw2(NormalizeYaw2(AnimState->m_flGoalFeetYaw + RemapVal(PosParams[11], 0, 1, -60, 60)) + Resim);

        float JitterDelta = fabs(NormalizeYaw2(oldEyeAngles[pEnt->EntIndex()].y - pEnt->get_eye_angles().y));

        if (JitterDelta >= 70.f && !shot)
            jittering[pEnt->EntIndex()] = true;

        if (pEnt != g_pLocalPlayer && pEnt->get_team() != g_pLocalPlayer->get_team() && (pEnt->get_flags() & FL_ONGROUND) && vars::aa.resolver_stick.get<bool>())
        {
            if (jittering[pEnt->EntIndex()])
                AnimState->m_flGoalFeetYaw = NormalizeYaw2(pEnt->get_eye_angles().y + DesyncFix);
            else
                AnimState->m_flGoalFeetYaw = Equalized;

            pEnt->get_lby() = AnimState->m_flGoalFeetYaw;
        }

        StoredAnimState[pEnt->EntIndex()] = AnimState;

        oldEyeAngles[pEnt->EntIndex()] = pEnt->get_eye_angles1();

        oldSimtime[pEnt->EntIndex()] = storedSimtime[pEnt->EntIndex()];

        storedSimtime[pEnt->EntIndex()] = pEnt->get_simtime();

        update = true;
    }

    pEnt->get_clientside_animation() = false;

    if (pEnt != g_pLocalPlayer && pEnt->get_team() != g_pLocalPlayer->get_team() && (pEnt->get_flags() & FL_ONGROUND) && vars::aa.resolver_stick.get<bool>())
        pEnt->get_lby() = AnimState->m_flGoalFeetYaw;

    AnimState = StoredAnimState[pEnt->EntIndex()];

    memcpy((void*)PosParams, &StoredPosParams[pEnt->EntIndex()], (sizeof(float) * 24));
    memcpy(pEnt->get_animation_laye(), StoredLayers[pEnt->EntIndex()], (sizeof(AnimationLayer) * pEnt->NumOverlays()));

    if (pEnt != g_pLocalPlayer && pEnt->get_team() != g_pLocalPlayer->get_team() && (pEnt->get_flags() & FL_ONGROUND) && vars::aa.resolver_stick.get<bool>() && jittering[pEnt->EntIndex()])
        pEnt->set_abs_angles(Vector(0, pEnt->get_eye_angles().y, 0));
    else
        pEnt->set_abs_angles(Vector(0, oldGoalfeetYaw[pEnt->EntIndex()], 0));

    *reinterpret_cast<int*>(uintptr_t(pEnt) + 0xA30) = g_pGlobals->framecount;
    *reinterpret_cast<int*>(uintptr_t(pEnt) + 0xA28) = 0;
}

CNetChannel* net_channel;

void HandleHits(C_CSPlayer* pEnt)
{
    auto NetChannel = g_pEngine->GetNetChannelInfo();

    if (!NetChannel)
        return;

    static float predTime[65];
    static bool init[65];

    if (g_Shot[pEnt->EntIndex()])
    {
        if (init[pEnt->EntIndex()])
        {
            c_resolver_recode::get().pitchHit[pEnt->EntIndex()] = pEnt->get_eye_angles().x;
            predTime[pEnt->EntIndex()] = g_pGlobals->curtime + NetChannel->GetAvgLatency(FLOW_INCOMING) + NetChannel->GetAvgLatency(FLOW_OUTGOING) + ticks_to_time(1) + ticks_to_time(net_channel->m_nChokedPackets);
            init[pEnt->EntIndex()] = false;
        }

        if (g_pGlobals->curtime > predTime[pEnt->EntIndex()] && !g_Hit[pEnt->EntIndex()])
        {
            g_MissedShots[pEnt->EntIndex()] += 1;
            g_Shot[pEnt->EntIndex()] = false;
        }
        else if (g_pGlobals->curtime <= predTime[pEnt->EntIndex()] && g_Hit[pEnt->EntIndex()])
            g_Shot[pEnt->EntIndex()] = false;

    }
    else
        init[pEnt->EntIndex()] = true;

    g_Hit[pEnt->EntIndex()] = false;
}

void c_resolver_recode::OnCreateMove()
{
    if (!vars::aa.resolver_stick.get<bool>())
        return;

    if (!g_pLocalPlayer->get_alive())
        return;

    if (!g_pLocalPlayer->get_active_weapon() || g_pLocalPlayer->IsKnifeorNade())
        return;


    for (auto i = 1; i < g_pGlobals->maxClients; i++)
    {

        auto player = get_entity(i);

        if (!player || player == g_pLocalPlayer)
        {
            continue;
        }

        if (!player->get_alive())
        {
            continue;
        }

        if (player->IsDormant())
        {
            continue;
        }

        {
            UseFreestandAngle[i] = false;
            continue;
        }

        if (abs(player->get_velocity().Length2D()) > 29.f)
            UseFreestandAngle[player->EntIndex()] = false;

        if (abs(player->get_velocity().Length2D()) <= 29.f && !UseFreestandAngle[player->EntIndex()])
        {
            bool Autowalled = false, HitSide1 = false, HitSide2 = false;

            float angToLocal = CalcAngle(g_pLocalPlayer->get_origin(), player->get_origin()).y;
            Vector ViewPoint = g_pLocalPlayer->get_origin() + Vector(0, 0, 90);

            Vector2D Side1 = { (45 * sin(GRD_TO_BOG(angToLocal))),(45 * cos(GRD_TO_BOG(angToLocal))) };
            Vector2D Side2 = { (45 * sin(GRD_TO_BOG(angToLocal + 180))) ,(45 * cos(GRD_TO_BOG(angToLocal + 180))) };

            Vector2D Side3 = { (50 * sin(GRD_TO_BOG(angToLocal))),(50 * cos(GRD_TO_BOG(angToLocal))) };
            Vector2D Side4 = { (50 * sin(GRD_TO_BOG(angToLocal + 180))) ,(50 * cos(GRD_TO_BOG(angToLocal + 180))) };

            Vector Origin = player->get_origin();

            Vector2D OriginLeftRight[] = { Vector2D(Side1.x, Side1.y), Vector2D(Side2.x, Side2.y) };

            Vector2D OriginLeftRightLocal[] = { Vector2D(Side3.x, Side3.y), Vector2D(Side4.x, Side4.y) };

            for (int side = 0; side < 2; side++)
            {
                Vector OriginAutowall = { Origin.x + OriginLeftRight[side].x,  Origin.y - OriginLeftRight[side].y , Origin.z + 90 };
                Vector OriginAutowall2 = { ViewPoint.x + OriginLeftRightLocal[side].x,  ViewPoint.y - OriginLeftRightLocal[side].y , ViewPoint.z };
                float point_damage;
                if (penetration::get().can_hit(player,OriginAutowall, point_damage, ViewPoint))
                {
                    if (side == 0)
                    {
                        HitSide1 = true;
                        FreestandAngle[player->EntIndex()] = 90;
                    }
                    else if (side == 1)
                    {
                        HitSide2 = true;
                        FreestandAngle[player->EntIndex()] = -90;
                    }

                    Autowalled = true;
                }
                else
                {
                    for (int side222 = 0; side222 < 2; side222++)
                    {
                        Vector OriginAutowall222 = { Origin.x + OriginLeftRight[side222].x,  Origin.y - OriginLeftRight[side222].y , Origin.z + 90 };

                        if (penetration::get().can_hit(player, OriginAutowall222, point_damage, OriginAutowall2))
                        {
                            if (side222 == 0)
                            {
                                HitSide1 = true;
                                FreestandAngle[player->EntIndex()] = 90;
                            }
                            else if (side222 == 1)
                            {
                                HitSide2 = true;
                                FreestandAngle[player->EntIndex()] = -90;
                            }

                            Autowalled = true;
                        }
                    }
                }
            }

            if (Autowalled)
            {
                if (HitSide1 && HitSide2)
                    UseFreestandAngle[player->EntIndex()] = false;
                else
                    UseFreestandAngle[player->EntIndex()] = true;
            }
        }
    }
}

void c_resolver_recode::FrameStage(ClientFrameStage_t stage)
{
    if (!g_pLocalPlayer || !g_pEngine->IsInGame())
        return;

    static bool  wasDormant[65];

    for (auto i = 1; i < g_pGlobals->maxClients; i++)
    {

        auto player = get_entity(i);

        if (!player
            || !player->get_alive())
            continue;
        if (player->IsDormant())
        {
            wasDormant[i] = true;
            continue;
        }

        if (stage == FRAME_RENDER_START)
        {
            HandleHits(player);
            AnimationFix(player);
        }

        if (stage == FRAME_NET_UPDATE_END && player != g_pLocalPlayer)
        {
            auto VarMap = reinterpret_cast<uintptr_t>(player) + 36;
            auto VarMapSize = *reinterpret_cast<int*>(VarMap + 20);

            for (auto index = 0; index < VarMapSize; index++)
                *reinterpret_cast<uintptr_t*>(*reinterpret_cast<uintptr_t*>(VarMap) + index * 12) = 0;
        }

        wasDormant[i] = false;
    }
}
if(player == g_pLocalPlayer) continue;
 
Хуйней ты занимаешься, ты хоть смотрел что ты спастить пытаешься?

Это был элементерный подьеб с моей стороны )
я спастил то с чем я нормально убивал, и фиксил многие статики, лул
 
я спастил то с чем я нормально убивал, и фиксил многие статики, лул
Самому пора уже сделать свой ресольвер и понимание иметь, чтоб не возникало таких нелепо глупых ситуаций.

Мне просто смешно и все)

Solpadoin мне особо понравился, за чегокал, заблякал, эксперт боже мой, лучше б пацану-пастеру-юному помог, чем блякать, прям ждал этой реакций и дождался. :laughing:
 
Самому пора уже сделать свой ресольвер и понимание иметь, чтоб не возникало таких нелепо глупых ситуаций.

Мне просто смешно и все)

Solpadoin мне особо понравился, за чегокал, заблякал, эксперт боже мой, лучше б пацану-пастеру-юному помог, чем блякать, прям ждал этой реакций и дождался. :laughing:
так а смысл ему помогать, если он херню спастил? Там мем на меме это не ресольвер вовсе, тупо бесполезный код который рандомно фиксит одну из сторон ( на деле такой же результат можно в две строчки кода получить )
Ну это его дело, не суть

Просто по определению, в ресольвере ничего и никогда не может использовать cmd. Это относится к CreateMove где есть cmd - буфер, в котором содержится информация о всех действиях ЛОКАЛЬНОГО игрока, то есть, тебя самого.
А viewangles относится исключительно к cmd. То бишь ресольвер никак и никогда не должен задействовать этот viewangles. Вот и удивился. Но тебя никто не обязывает знать такие тонкости и нюансы, всё на свете знать не возможно, просто это не то, что ему нужно. Извини за то, что я так резко ответил, не все из вас кодеры и не все из вас делают хвх софты.

А ТС'у надо больше опыта в кодинге, ибо я знаю его +- и его знания довольно ограничены, поэтому он ненароком мог где-то накосячить, и скорее всего, накосячил.

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

Актуальная фигня и её тоже надо фиксить, иначе будешь миссать по сприду
 
Последнее редактирование:
так а смысл ему помогать, если он херню спастил? Там мем на меме это не ресольвер вовсе, тупо бесполезный код который рандомно фиксит одну из сторон ( на деле такой же результат можно в две строчки кода получить )
Ну это его дело, не суть
ну по сути ресик икарофа делает почти тож самое)
 
так а смысл ему помогать, если он херню спастил? Там мем на меме это не ресольвер вовсе, тупо бесполезный код который рандомно фиксит одну из сторон ( на деле такой же результат можно в две строчки кода получить )
Ну это его дело, не суть

Просто по определению, в ресольвере ничего и никогда не может использовать cmd. Это относится к CreateMove где есть cmd - буфер, в котором содержится информация о всех действиях ЛОКАЛЬНОГО игрока, то есть, тебя самого.
А viewangles относится исключительно к cmd. То бишь ресольвер никак и никогда не должен задействовать этот viewangles. Вот и удивился. Но тебя никто не обязывает знать такие тонкости и нюансы, всё на свете знать не возможно, просто это не то, что ему нужно. Извини за то, что я так резко ответил, не все из вас кодеры и не все из вас делают хвх софты.

А ТС'у надо больше опыта в кодинге, ибо я знаю его +- и его знания довольно ограничены, поэтому он ненароком мог где-то накосячить, и скорее всего, накосячил.

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

Актуальная фигня и её тоже надо фиксить, иначе будешь миссать по сприду
Я прекрасно понимаю, можешь мне не объяснять. Я ведь объяснил был рофл и не более, потому что подзаебали честно подобные темы, если ты пастишь, ты хоть должен иметь понимание, что ты пастишь и как это работает...тут же на форуме любят трэштолк и подьебы, решил себя проявить )))
 
ну по сути ресик икарофа делает почти тож самое)
возьми и оставь
Код:
Expand Collapse Copy
if (!missed_shot)
animState->flGoalFeetYaw += 60;
else if (missed_shot)
animState->flGoalFeetYaw -= 60;

animState->flGoalFeetYaw = remainderf(animState->flGoalFeetYaw, 360.f);
Это базовый ресольвер, будет лучше почти всех ресольверов из паблика.
Ты либо попадаешь сразу, либо миссаешь одну пулю по ресику .
Всё, больше тебе ниче не надо

Остается только пофиксить овердохуя остальной хрени в чите. Начиная сжатие нетваров в епсилон, заканчивая бектреками, хитшансами и прочим говном.

Читы миссают сегодня не только по ресольверу, а ещё по овердохуя причинам.
 
ну по сути ресик икарофа делает почти тож самое)
тем более ты сам уже убедился, что даже я, который знает овердохуя, не способен сделать идеальный ресольвер. Вначале у нас фиксило обе стороны, потом одну, потом вообще обе не фиксило. И это всего-лишь антиаимы кряка вантапа - одни из самых слабых антиаимов на сегодняшний день.
Оставь это дело и сделай то, что и так хорошо работает. Тем более это вообще не сложно сделать, если у тебя уже реально есть система миссов
 
Назад
Сверху Снизу