Исходник Actually Decent Resolving Methods

Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2018
Сообщения
32
Реакции[?]
38
Поинты[?]
4K
hello my Russian friends. ive seen a ton of "resolvers" on here and they're useless and shit. ill go over some ACTUALLY decent resolving methods here so, get your google translate out and stay tuned.

opposites: not the best choice, but it has its place and you'll find out why later

C++:
// less advanced
float EyeDelta = player->EyeAngles().y - animstate->goalfeetyaw;
int Side = (EyeDelta > 0.f) ? -1 : 1;

animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * Side;

// more advanced
float EyeDelta = player->EyeAngles().y - animstate->goalfeetyaw;
bool LowDelta = EyeDelta <= 30.f;
int Side = (EyeDelta > 0.f) ? -1 : 1;
float desync_delta = LowDelta ? player->MaxDesync() / 2 : player->MaxDesync();

switch (missedshots)
{
    case 0: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * Side; break;
    case 1: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * -Side; break;
    case 2: animstate->goalfeetyaw = 180.f;
}
anti-freestand: a safer choice than opposites. theres different ways to do this but i suggest using stickrpg's anti freestand. also you can use it in combination with opposites to cross reference the different angles

C++:
    for (int i = 1; i < interfaces.engine->GetMaxClients(); ++i)
    {
        auto player = interfaces.ent_list->GetClientEntity(i);

        if (!player || !player->isAlive() || player->IsDormant() || player->GetTeam() == csgo->local->GetTeam())
            continue;

        bool Autowalled = false, HitSide1 = false, HitSide2 = false;
        auto idx = player->GetIndex();
        float angToLocal = Math::CalculateAngle(csgo->local->GetOrigin(), player->GetOrigin()).y;
        Vector ViewPoint = csgo->local->GetOrigin() + Vector(0, 0, 90);
        Vector2D Side1 = { (30 * sin(DEG2RAD(angToLocal))),(30 * cos(DEG2RAD(angToLocal))) };
        Vector2D Side2 = { (30 * sin(DEG2RAD(angToLocal + 180))) ,(30 * cos(DEG2RAD(angToLocal + 180))) };
        Vector2D Side3 = { (60 * sin(DEG2RAD(angToLocal))),(60 * cos(DEG2RAD(angToLocal))) };
        Vector2D Side4 = { (60 * sin(DEG2RAD(angToLocal + 180))) ,(60 * cos(DEG2RAD(angToLocal + 180))) };

        Vector Origin = player->GetOrigin();

        Vector2D OriginLeftRight[] = { Vector2D(Side1.x, Side1.y), Vector2D(Side2.x, Side2.y) };
        Vector2D OriginHighLeftRight[] = { 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 + OriginHighLeftRight[side].x,  ViewPoint.y - OriginHighLeftRight[side].y , ViewPoint.z };

            if (g_AutoWall.CanHitFloatingPoint(OriginAutowall, ViewPoint))
            {
                if (side == 0)
                {
                    HitSide1 = true;
                    FreestandSide[idx] = -1;
                }
                else if (side == 1)
                {
                    HitSide2 = true;
                    FreestandSide[idx] = 1;
                }

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

                    if (g_AutoWall.CanHitFloatingPoint(OriginAutowallHigh, OriginAutowall2))
                    {
                        if (side222 == 0)
                        {
                            HitSide1 = true;
                            FreestandSide[idx] = -1;
                        }
                        else if (side222 == 1)
                        {
                            HitSide2 = true;
                            FreestandSide[idx] = 1;
                        }

                        Autowalled = true;
                    }
                }
            }

            if (!Autowalled)
                FreestandSide[idx] = 0;
        }
    }
animlayers: now we're getting into big brain territory where i see tons of people messing up and not doing it right. for each layer you make you need to have THAT layer relate to a matrix or you're not really doing anything at all. example:
C++:
    player->UpdateClientSideAnimation();

    float EyeDelta = player->GetEyeAngles().y - animstate->m_flGoalFeetYaw;

    std::memcpy(csgo->MoveLayers[0][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays()));
    player->SetupBones(csgo->zero, 128, 0x7FF00, interfaces.global_vars->curtime);

    if (EyeDelta < 0.f)
    {
        std::memcpy(csgo->MoveLayers[1][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays()));
        player->SetupBones(csgo->positive, 128, 0x7FF00, interfaces.global_vars->curtime);
    }
    else
    {
        std::memcpy(csgo->MoveLayers[2][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays()));
        player->SetupBones(csgo->negative, 128, 0x7FF00, interfaces.global_vars->curtime);
    }
make sure you set your fucking matrices and your layers im sick of seeing people just make 3 pseudo layers that dont do shit and using them to resolve its dumb.
also im not putting the calculations you need to find side off of animlayers cause its been posted a million times.

tracing: personally i hate tracing i think its basically useless, BUT if you actually set your vectors and matrices properly it might not be the worst idea

C++:
    Vector current;
    float back_two, right_two, left_two;
    trace_t tr;
    Ray_t ray, ray2, ray3;
    CTraceFilter filter;

    Vector right(player->GetEyeAngles().x, player->GetEyeAngles().y + player->MaxDesyncDelta(), player->GetEyeAngles().z);
    Vector left(player->GetEyeAngles().x, player->GetEyeAngles().y - player->MaxDesyncDelta(), player->GetEyeAngles().z);
    Vector back(player->GetEyeAngles().x, 180.f, player->GetEyeAngles().z);
    current = player->GetEyeAngles();

    filter.pSkip = player;
    float distance = /*whatever*/;
    ray.init(current, right);
    ray2.init(current, left);
    ray3.init(current, back);

    float back_one, right_one, left_one;

    right_one = current.y - right.y;
    left_one = current.y - left.y;
    back_one = current.y - back.y;

    interfaces.trace->TraceRay(ray, MASK_SHOT, &filter, &tr);
    right_two = tr.endpos.Length2D() - tr.startpos.Length2D();

    interfaces.trace->TraceRay(ray2, MASK_SHOT, &filter, &tr);
    left_two = tr.endpos.Length2D() - tr.startpos.Length2D();

    interfaces.trace->TraceRay(ray3, MASK_SHOT, &filter, &tr);
    back_two = tr.endpos.Length2D() - tr.startpos.Length2D();

    *side = 0;

    // if extending we have an easier time finding their real
    if (player->GetAnimOverlay(3)->m_flCycle == 0.f && player->GetAnimOverlay(3)->m_flWeight == 0.f)
    {
        if (fabs(right_one) >= player->MaxDesyncDelta())
            *side = 1;
        else if (fabs(left_one) >= player->MaxDesyncDelta())
            *side = -1;
        else if (fabs(back_one) >= player->MaxDesyncDelta())
            *side = 0;
    }
    // else we use tracing
    else
    {
        if (fabs(right_two) >= distance)
            *side = 1;
        else if (fabs(left_two) >= distance)
            *side = -1;
        else if (fabs(back_two) >= distance)
            *side = 0;
    }
there are a few reasons to use tracing. tracing can sometimes give us safer and "stricter" resolves because tracing uses actual in game distance. experiment, the tracing code i put works better than others but its still FAR from perfect.

lby: usually doesnt work anymore, majority of cheats use micromovements now but in the off chance you come across an aimware user this is a pretty easy resolve. the idea is you check their lby angle when they set off sequence 979, their lby angle will almost always flick towards their fake which should (in theory) allow us to get a good resolve

C++:
int LbySide = 0;

if (player->GetAnimOverlay(3)->m_nSequence == 979 && player->GetVecVelocity().Length2D() == 0.f)
{
    float LbyAngle = player->GetLowerBodyYaw();
    
    LbySide = (LbyAngle > 0.f) ? -1 : 1;
}

animstate->goalfeetyaw = player->GetEyeAngles().y + desync_delta * LbySide;
alright thats about it. dont paste any of this by the way its all just for examples. you need to build these different methods IN YOUR ACTUAL SOURCE or else majority of them will return tons of errors or you'll fuck something up and they just wont work at all. good luck!
 
wok > all
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2017
Сообщения
392
Реакции[?]
67
Поинты[?]
0
боже, почему ньюфаги постят реально что то полезное в то время как остальные щитпостят псевдоресольверы из паст веава
 
Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2018
Сообщения
32
Реакции[?]
38
Поинты[?]
4K
боже, почему ньюфаги постят реально что то полезное в то время как остальные щитпостят псевдоресольверы из паст веава
yeah ive never made any posts on this site before but i just kinda got sick of seeing repost after repost of the same shitty weave resolver and noone ACTUALLY tries to help anyone understand the different methods, or they post "animlayer resolvers" that people paste without even doing their research lmao
 
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
боже, почему ньюфаги постят реально что то полезное в то время как остальные щитпостят псевдоресольверы из паст веава
это абсолютно такая же хуйня...
говорю мужу
some ACTUALLY decent resolving methods here
ответ убил
Код:
switch (missedshots)
{
    case 0: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * Side; break;
    case 1: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * -Side; break;
    case 2: animstate->goalfeetyaw = 180.f;
}
да и оно "брутить" будет онли первые три миса и все
Код:
    if (EyeDelta < 0.f)
    {
        std::memcpy(csgo->MoveLayers[1][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays()));
        player->SetupBones(csgo->positive, 128, 0x7FF00, interfaces.global_vars->curtime);
    }
    else
    {
        std::memcpy(csgo->MoveLayers[2][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays()));
        player->SetupBones(csgo->negative, 128, 0x7FF00, interfaces.global_vars->curtime);
    }
а ничего что лееры всегда нужно собирать?
Код:
  if (player->GetAnimOverlay(3)->m_flCycle == 0.f && player->GetAnimOverlay(3)->m_flWeight == 0.f)
    {
        if (fabs(right_one) >= player->MaxDesyncDelta())
            *side = 1;
        else if (fabs(left_one) >= player->MaxDesyncDelta())
            *side = -1;
        else if (fabs(back_one) >= player->MaxDesyncDelta())
            *side = 0;
    }
вам в палату нужно с таким говном, пендос
lby: usually doesnt work anymore, majority of cheats use micromovements now but in the off chance you come across an aimware user this is a pretty easy resolve. the idea is you check their lby angle when they set off sequence 979, their lby angle will almost always flick towards their fake which should (in theory) allow us to get a good resolve

C++:
    float LbyAngle = player->GetLowerBodyYaw();

    LbySide = (LbyAngle > 0.f) ? -1 : 1;
пиздец..
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
3 Дек 2018
Сообщения
151
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
very nice post
 
null
Участник
Статус
Оффлайн
Регистрация
3 Окт 2014
Сообщения
700
Реакции[?]
498
Поинты[?]
0
Код:
switch (missedshots)
{
    case 0: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * Side; break;
    case 1: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * -Side; break;
    case 2: animstate->goalfeetyaw = 180.f;
}
(вообще тут из-за отсутствия break просто кейс пойдет от 2 к 0, да и оно "брутить" будет онли первые три миса и все )
Щас бы в основах не разбиратся и при этом пытаться быковать на это...

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

 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
Щас бы в основах не разбиратся и при этом пытаться быковать на это...

Держи, будет полезным материалом для тебя
Пожалуйста, авторизуйтесь для просмотра ссылки.
да и оно "брутить" будет онли первые три миса и все
только вот это еще..
 
Забаненный
Статус
Оффлайн
Регистрация
21 Фев 2019
Сообщения
238
Реакции[?]
211
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
только вот это еще..
Оператор break, встречающийся в операторе, выходит из оператора switch.
Значит пока значение не будет = 0 или 1 или 2, будет происходить возвращение к началу и выполнение цикла
 
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
Оператор break, встречающийся в операторе, выходит из оператора switch.
Значит пока значение не будет = 0 или 1 или 2, будет происходить возвращение к началу и выполнение цикла
только брута не будет никакого после 3 мисов..
 
Забаненный
Статус
Оффлайн
Регистрация
28 Янв 2021
Сообщения
137
Реакции[?]
17
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пользователь
Статус
Оффлайн
Регистрация
18 Май 2020
Сообщения
188
Реакции[?]
71
Поинты[?]
0
player->GetAnimOverlay(3)->m_flCycle == 0.f
AnimLayer 3 always return 0 (basically u can't check if enemy has highdelta with that xD)

bool LowDelta = EyeDelta <= 30.f; int Side = (EyeDelta > 0.f) ? -1 : 1;
ok? ur basicalling checking if delta < 0 return 1 BUT at the same time ur checking low delta if eyedelta < 30??????


switch (missedshots) { case 0: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * Side; break; case 1: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * -Side; break; case 2: animstate->goalfeetyaw = 180.f; }
"descent"

std::memcpy(csgo->MoveLayers[0][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays())); player->SetupBones(csgo->zero, 128, 0x7FF00, interfaces.global_vars->curtime);
layers 0, 1, 2 AND 6 is very useless, the firsts layers is just for reloading and firing animation, 6 is for moving and is literally useless to detect side

if (player->GetAnimOverlay(3)->m_nSequence == 979 && player->GetVecVelocity().Length2D() == 0.f) { float LbyAngle = player->GetLowerBodyYaw(); LbySide = (LbyAngle > 0.f) ? -1 : 1; }
wtf is that????
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2018
Сообщения
32
Реакции[?]
38
Поинты[?]
4K
это абсолютно такая же хуйня...
говорю мужу

ответ убил
Код:
switch (missedshots)
{
    case 0: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * Side; break;
    case 1: animstate->goalfeetyaw = player->EyeAngles().y + desync_delta * -Side; break;
    case 2: animstate->goalfeetyaw = 180.f;
}
да и оно "брутить" будет онли первые три миса и все
Код:
    if (EyeDelta < 0.f)
    {
        std::memcpy(csgo->MoveLayers[1][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays()));
        player->SetupBones(csgo->positive, 128, 0x7FF00, interfaces.global_vars->curtime);
    }
    else
    {
        std::memcpy(csgo->MoveLayers[2][6], player->GetAnimOverlay(6), 0x38 * int(player->GetAnimOverlays()));
        player->SetupBones(csgo->negative, 128, 0x7FF00, interfaces.global_vars->curtime);
    }
а ничего что лееры всегда нужно собирать?
Код:
  if (player->GetAnimOverlay(3)->m_flCycle == 0.f && player->GetAnimOverlay(3)->m_flWeight == 0.f)
    {
        if (fabs(right_one) >= player->MaxDesyncDelta())
            *side = 1;
        else if (fabs(left_one) >= player->MaxDesyncDelta())
            *side = -1;
        else if (fabs(back_one) >= player->MaxDesyncDelta())
            *side = 0;
    }
вам в палату нужно с таким говном, пендос

пиздец..
lmao you gave zero actual criticisms and didnt even attempt to build off of what i posted. like i said none of this is for pasting its for examples. and its absolutely not the same shit as alot of this shit is my actual code from my personal project
AnimLayer 3 always return 0 (basically u can't check if enemy has highdelta with that xD)


ok? ur basicalling checking if delta < 0 return 1 BUT at the same time ur checking low delta if eyedelta < 30??????



"descent"


layers 0, 1, 2 AND 6 is very useless, the firsts layers is just for reloading and firing animation, 6 is for moving and is literally useless to detect side


wtf is that????
honestly cant tell if youre joking or not. layer 3 does not "always return zero" i think youre mistaken. layers 1 and 2 are useless but 6 is not at all. if you store your matrix and get their proper playback rate whenever they move it yields decent resolves even after they stopped moving. best thing to do in the regard is to rebuild your layer 6, save their info while they move, make sure they didnt update their side when they decided to stop moving and boom. decent resolve. also "decent" when thats literally just a basic brute force? how are you gonna criticize that lmao. and "wtf is that???" its a basic lby detection based resolver which ive used for years. you talking out of your ass here is going against the entire reason i made this post
Right now, I would not understand the basics and at the same time try to bullshit on it ...

Hold, it will be useful material for you
Пожалуйста, авторизуйтесь для просмотра ссылки.
my bad i actually missed that
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
20 Ноя 2020
Сообщения
21
Реакции[?]
2
Поинты[?]
0
Ok so something i would like to add here: dont paste this code to your resolver, and also ive found that just checking layer 6 playback rate is enough to resolve certain antiaims (60 degrees if enemy is using pandora for example is very easy to resolve)
 
Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2018
Сообщения
32
Реакции[?]
38
Поинты[?]
4K
Ok so something i would like to add here: dont paste this code to your resolver, and also ive found that just checking layer 6 playback rate is enough to resolve certain antiaims (60 degrees if enemy is using pandora for example is very easy to resolve)
yeah definitely nobody should paste this its purely for examples sake lol
 
Сверху Снизу