Вопрос Сломался хитшанс в симпле

coder of the year
Участник
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
886
Реакции[?]
266
Поинты[?]
4K
короче какая то хуйня с трейсами, но не пойму какая, hit_entity почему то по кд на нуле
1638201374634.png1638201414535.png
хитшанс:
C++:
    if (g_CVar->FindVar("weapon_accuracy_nospread")->GetInt() == 1)
        return true;

    auto pWeapon = pEnt->m_hActiveWeapon();
    const auto round_acc = [](const float accuracy) { return roundf(accuracy * 1000.f) / 1000.f; };
    const auto sniper = g_LocalPlayer->m_hActiveWeapon()->IsSniper();
    const auto crouched = g_LocalPlayer->m_fFlags() & FL_DUCKING;
    const auto weapon_inaccuracy = pWeapon->GetInaccuracy();

    if (!crouched)
    {
        if (round_acc(weapon_inaccuracy) == round_acc(sniper ? pWeapon->GetCSWeaponData()->flSpreadAlt : pWeapon->GetCSWeaponData()->flSpread))
            return true;
    }

    Vector forward, right, up;
    Vector src = g_LocalPlayer->GetEyePos();
    Math::AngleVectors(position, forward, right, up);

    int cHits = 0;
    int cNeededHits = static_cast<int> (255.f * (chance / 100.f));

    pWeapon->UpdateAccuracyPenalty();
    float weap_spread = pWeapon->GetSpread();
    float weap_inaccuracy = pWeapon->GetInaccuracy();

    for (int i = 0; i < 255; i++)
    {
        float a = Math::RandomFloat(0.f, 1.f);
        float b = Math::RandomFloat(0.f, 2.f * PI_F);
        float c = Math::RandomFloat(0.f, 1.f);
        float d = Math::RandomFloat(0.f, 2.f * PI_F);

        float inaccuracy = a * weap_inaccuracy;
        float spread = c * weap_spread;

        Vector spreadView((cos(b) * inaccuracy) + (cos(d) * spread), (sin(b) * inaccuracy) + (sin(d) * spread), 0), direction;

        direction.x = forward.x + (spreadView.x * right.x) + (spreadView.y * up.x);
        direction.y = forward.y + (spreadView.x * right.y) + (spreadView.y * up.y);
        direction.z = forward.z + (spreadView.x * right.z) + (spreadView.y * up.z);
        direction.Normalized();

        QAngle viewAnglesSpread;
        Math::VectorAngles(direction, up, viewAnglesSpread);
        viewAnglesSpread.Normalize();

        Vector viewForward;
        Math::AngleVectors(viewAnglesSpread, viewForward);
        viewForward.NormalizeInPlace();

        viewForward = src + (viewForward * pWeapon->GetCSWeaponData()->flRange);

        trace_t tr;
        Ray_t ray;

        ray.Init(g_LocalPlayer->GetEyePos(), viewForward);
        g_EngineTrace->ClipRayToEntity(ray, MASK_SHOT | CONTENTS_GRATE, pEnt, &tr);

        if (tr.hit_entity == pEnt)
            ++cHits;

        if (static_cast<int> ((static_cast<float> (cHits) / 255.f) * 100.f) > chance)
            return true;
    }

    return false;
мб с классом что-то-то? но не припоминаю что он обновлялся
1638201500910.png

(без клоунов пожалуйста, хочу подробное разъяснение что это за хуйня, и как в будущем не допускать таких ошибок)
 
ima sippin lean
Забаненный
Статус
Оффлайн
Регистрация
6 Май 2020
Сообщения
495
Реакции[?]
380
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
наверное потому что ты пастер
ну а по теме
может быть покажешь свой крутой GetEyePos
и что там вообще за viewForward такой
у тебя не только ентити 0
у тебя весь трейс 0 вернул....
ваще осудительно такое юзать в хитшансе o____o
 
coder of the year
Участник
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
886
Реакции[?]
266
Поинты[?]
4K
наверное потому что ты пастер
ну а по теме
может быть покажешь свой крутой GetEyePos
и что там вообще за viewForward такой
у тебя не только ентити 0
у тебя весь трейс 0 вернул....
ваще осудительно такое юзать в хитшансе o____o
1638209660928.png
у тебя весь трейс 0 вернул....
да я понял, я вот и не пойму почему
и что там вообще за viewForward такой
прикрепил код в теме
 
ima sippin lean
Забаненный
Статус
Оффлайн
Регистрация
6 Май 2020
Сообщения
495
Реакции[?]
380
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 182239

да я понял, я вот и не пойму почему

прикрепил код в теме
ладно парень хитшанс какой то максимально кринжовый
думаю его стоит переделать....
а то какие то
C++:
 QAngle viewAnglesSpread;
        Math::VectorAngles(direction, up, viewAnglesSpread);
        viewAnglesSpread.Normalize();
а потом еще какие то
C++:
 Vector viewForward;
        Math::AngleVectors(viewAnglesSpread, viewForward);
        viewForward.NormalizeInPlace();
и потом в добавок
C++:
  ray.Init(g_LocalPlayer->GetEyePos(), viewForward);
        g_EngineTrace->ClipRayToEntity(ray, MASK_SHOT | CONTENTS_GRATE, pEnt, &tr);

        if (tr.hit_entity == pEnt)
            ++cHits;
CONTENTS_GRATE это вообще как
 
coder of the year
Участник
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
886
Реакции[?]
266
Поинты[?]
4K
ладно парень хитшанс какой то максимально кринжовый
думаю его стоит переделать....
а то какие то
C++:
 QAngle viewAnglesSpread;
        Math::VectorAngles(direction, up, viewAnglesSpread);
        viewAnglesSpread.Normalize();
а потом еще какие то
C++:
 Vector viewForward;
        Math::AngleVectors(viewAnglesSpread, viewForward);
        viewForward.NormalizeInPlace();
и потом в добавок
C++:
  ray.Init(g_LocalPlayer->GetEyePos(), viewForward);
        g_EngineTrace->ClipRayToEntity(ray, MASK_SHOT | CONTENTS_GRATE, pEnt, &tr);

        if (tr.hit_entity == pEnt)
            ++cHits;
возможно, но какой бы я только не пробовал хитшанс, все равно трейс всегда ретурнит 0
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2019
Сообщения
105
Реакции[?]
8
Поинты[?]
3K
короче какая то хуйня с трейсами, но не пойму какая, hit_entity почему то по кд на нуле
Посмотреть вложение 182205Посмотреть вложение 182207
хитшанс:
C++:
    if (g_CVar->FindVar("weapon_accuracy_nospread")->GetInt() == 1)
        return true;

    auto pWeapon = pEnt->m_hActiveWeapon();
    const auto round_acc = [](const float accuracy) { return roundf(accuracy * 1000.f) / 1000.f; };
    const auto sniper = g_LocalPlayer->m_hActiveWeapon()->IsSniper();
    const auto crouched = g_LocalPlayer->m_fFlags() & FL_DUCKING;
    const auto weapon_inaccuracy = pWeapon->GetInaccuracy();

    if (!crouched)
    {
        if (round_acc(weapon_inaccuracy) == round_acc(sniper ? pWeapon->GetCSWeaponData()->flSpreadAlt : pWeapon->GetCSWeaponData()->flSpread))
            return true;
    }

    Vector forward, right, up;
    Vector src = g_LocalPlayer->GetEyePos();
    Math::AngleVectors(position, forward, right, up);

    int cHits = 0;
    int cNeededHits = static_cast<int> (255.f * (chance / 100.f));

    pWeapon->UpdateAccuracyPenalty();
    float weap_spread = pWeapon->GetSpread();
    float weap_inaccuracy = pWeapon->GetInaccuracy();

    for (int i = 0; i < 255; i++)
    {
        float a = Math::RandomFloat(0.f, 1.f);
        float b = Math::RandomFloat(0.f, 2.f * PI_F);
        float c = Math::RandomFloat(0.f, 1.f);
        float d = Math::RandomFloat(0.f, 2.f * PI_F);

        float inaccuracy = a * weap_inaccuracy;
        float spread = c * weap_spread;

        Vector spreadView((cos(b) * inaccuracy) + (cos(d) * spread), (sin(b) * inaccuracy) + (sin(d) * spread), 0), direction;

        direction.x = forward.x + (spreadView.x * right.x) + (spreadView.y * up.x);
        direction.y = forward.y + (spreadView.x * right.y) + (spreadView.y * up.y);
        direction.z = forward.z + (spreadView.x * right.z) + (spreadView.y * up.z);
        direction.Normalized();

        QAngle viewAnglesSpread;
        Math::VectorAngles(direction, up, viewAnglesSpread);
        viewAnglesSpread.Normalize();

        Vector viewForward;
        Math::AngleVectors(viewAnglesSpread, viewForward);
        viewForward.NormalizeInPlace();

        viewForward = src + (viewForward * pWeapon->GetCSWeaponData()->flRange);

        trace_t tr;
        Ray_t ray;

        ray.Init(g_LocalPlayer->GetEyePos(), viewForward);
        g_EngineTrace->ClipRayToEntity(ray, MASK_SHOT | CONTENTS_GRATE, pEnt, &tr);

        if (tr.hit_entity == pEnt)
            ++cHits;

        if (static_cast<int> ((static_cast<float> (cHits) / 255.f) * 100.f) > chance)
            return true;
    }

    return false;
мб с классом что-то-то? но не припоминаю что он обновлялся
Посмотреть вложение 182210

(без клоунов пожалуйста, хочу подробное разъяснение что это за хуйня, и как в будущем не допускать таких ошибок)
Очень странный хитшанс, он не то что-бы не должен работать, он вообще не правильный, вообще судя по твоим словам, я думаю всё таки кринжовый не только хитшанс, но и аимбот в целом, ибо хит шанс не может выдавать 0
 
Сверху Снизу