Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Хитшанс

  • Автор темы Автор темы bot9ra
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Эксперт
Эксперт
Статус
Оффлайн
Регистрация
8 Авг 2018
Сообщения
2,231
Реакции
631
В софте плохо работает хитшанс, то есть ставишь хитшанс 100, а стреляет скаут почти ноускопами, даже использование сприд лимита не помогает, хотя он всегда во всех с софтах с похожей проблемой помогал
 
В софте плохо работает хитшанс, то есть ставишь хитшанс 100, а стреляет скаут почти ноускопами, даже использование сприд лимита не помогает, хотя он всегда во всех с софтах с похожей проблемой помогал
то есть никакого кода ты нам давать не собираешься?
и как тебе тогда помочь?
 
то есть никакого кода ты нам давать не собираешься?
и как тебе тогда помочь?
C++:
Expand Collapse Copy
bool HitChance(C_BasePlayer* pEnt, C_BaseCombatWeapon* pWeapon, QAngle Angle, int chance)
{
    int traces_hit = 0;
    auto local = g_LocalPlayer;
    if (!local)
        return false;

    Vector forward, right, up;
    const Vector eye_position = local->GetEyePos();
    Math::AngleVectors(Angle + local->m_aimPunchAngle() * 2.f, forward, right, up); // maybe add an option to not account for punch.
    int cNeededHits = static_cast<int>(256.f * (chance / 100.f));

    auto weapon = local->m_hActiveWeapon();
    if (!weapon)
        return false;

    weapon->UpdateAccuracyPenalty();
    float weapon_spread = weapon->GetSpread();
    float weapon_cone = weapon->GetInaccuracy();

    const auto get_bullet_location = [&](int seed) {
        float a = Math::RandomFloat(0.f, 1.f);
        float b = Math::RandomFloat(0.f, 2.f * M_PI);
        float c = Math::RandomFloat(0.f, 1.f);
        float d = Math::RandomFloat(0.f, 2.f * M_PI);
        if (pWeapon->m_Item().m_iItemDefinitionIndex() == WEAPON_REVOLVER)
        {
            a = 1.f - a * a;
            c = 1.f - c * c;
        }
        const float generated_spread = a * weapon_spread;
        const float generated_cone = c * weapon_cone;

        const Vector spread = Vector(
            std::cos(b) * generated_spread + std::cos(d) * generated_cone,
            std::sin(b) * generated_spread + std::sin(d) * generated_cone,
            0.f
        );

        return Vector(forward + right * -spread.x + up * -spread.y).Normalized();
    };
    if (g_Options.rage_hitchance_type) {
        for (int i = 1; i <= 256; i++) {
            QAngle spread_angle;
            Vector bullet_end;

            Math::VectorAngles(get_bullet_location(i), spread_angle);
            Math::AngleVectors(Angle - (spread_angle - Angle), bullet_end);

            trace_t trace;
            Ray_t ray;
            ray.Init(eye_position, eye_position + bullet_end * weapon->GetCSWeaponData()->flRange);

            g_EngineTrace->ClipRayToEntity(ray, MASK_SHOT, pEnt, &trace);

            if (trace.hit_entity == pEnt)
                ++traces_hit;

            if (traces_hit >= static_cast<int>(chance * 2.56f))
                return true;
        }
    }
    else {
        float hitchance = 101; //lol idk why, its pasted anyway so w/e
        float inaccuracy = weapon->GetInaccuracy();

        if (inaccuracy == 0)
            inaccuracy = 0.0000001;

        inaccuracy = 1 / inaccuracy;
        hitchance = inaccuracy;

        return hitchance >= g_Options.rage_hitchance;
    }
    return false;

}
 
local->m_aimPunchAngle() * 2.f
нет

float hitchance = 101; //lol idk why, its pasted anyway so w/e float inaccuracy = weapon->GetInaccuracy(); if (inaccuracy == 0) inaccuracy = 0.0000001; inaccuracy = 1 / inaccuracy; hitchance = inaccuracy; return hitchance >= g_Options.rage_hitchance;
и зачем это?

чекай этот тред, я там все расписал
 
Эт ты про сурс "Сосать7" ?
 
и зачем это?

чекай этот тред, я там все расписал
Это сприд лимит, выше читай зачем я его добавил
Апдейтакураси и так в предикшене, а насчёт рандомфлоат
1567189711395.png
 
Апдейтакураси и так в предикшене,
weapon->UpdateAccuracyPenalty();
сразу после получения оружия

Это сприд лимит, выше читай зачем я его добавил
Апдейтакураси и так в предикшене, а насчёт рандомфлоат
у тебя основная проблема в том, что ты делаешь то чего не надо ( PunchAngle компенсируешь )
 
у тебя основная проблема в том, что ты делаешь то чего не надо ( PunchAngle компенсируешь )
И это вся проблема?
UPD: заменил апдейтакураси на предикт, исправил трабл с punchangle, но хитшанс по прежнему работает так, как описано вверху
 
Последнее редактирование:
А чо, надо было?
конечно лол, я об этом писал в теме которую я тебе кидал
без вызова рандом сида, ты всегда будешь использовать одни и те же рандом значения
 
конечно лол, я об этом писал в теме которую я тебе кидал
без вызова рандом сида, ты всегда будешь использовать одни и те же рандом значения
И вправду, ща всё чётко, спасибо
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу