From 9bb30739ab955b77d821a748cc5664db4b2924c2 Mon Sep 17 00:00:00 2001 From: nullifiedcat Date: Sun, 30 Apr 2017 15:01:04 +0300 Subject: [PATCH] minor changes to crit system, cat_crit_info now shows accurate bucket values --- src/crits.cpp | 24 +++++++++++++++--------- src/hacks/Misc.cpp | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/crits.cpp b/src/crits.cpp index ec4a95a9..ce0cc8a6 100644 --- a/src/crits.cpp +++ b/src/crits.cpp @@ -18,6 +18,7 @@ int* g_PredictionRandomSeed = nullptr; bool AllowAttacking() { if (!(hacks::shared::misc::crit_hack || ((GetWeaponMode(LOCAL_E) == weapon_melee) && hacks::shared::misc::crit_melee)) && !hacks::shared::misc::crit_suppress) return true; bool crit = IsAttackACrit(g_pUserCmd); + LoadSavedState(); if (hacks::shared::misc::crit_suppress && !(hacks::shared::misc::crit_hack || ((GetWeaponMode(LOCAL_E) == weapon_melee) && hacks::shared::misc::crit_melee))) { if (crit && !IsPlayerCritBoosted(LOCAL_E)) { return false; @@ -49,15 +50,15 @@ void crithack_saved_state::Load(IClientEntity* entity) { } void crithack_saved_state::Save(IClientEntity* entity) { - bucket = *(float*)((uintptr_t)entity + 2612); - unknown2831 = *(float*)((uintptr_t)entity + 2831); - seed = *(int*)((uintptr_t)entity + 2868); - time = *(float*)((uintptr_t)entity + 2872); - unknown2616 = *(int*)((uintptr_t)entity + 2616); - unknown2620 = *(int*)((uintptr_t)entity + 2620); - unknown2856 = *(float*)((uintptr_t)entity + 2856); - unknown2860 = *(float*)((uintptr_t)entity + 2860); - } + bucket = *(float*)((uintptr_t)entity + 2612); + unknown2831 = *(float*)((uintptr_t)entity + 2831); + seed = *(int*)((uintptr_t)entity + 2868); + time = *(float*)((uintptr_t)entity + 2872); + unknown2616 = *(int*)((uintptr_t)entity + 2616); + unknown2620 = *(int*)((uintptr_t)entity + 2620); + unknown2856 = *(float*)((uintptr_t)entity + 2856); + unknown2860 = *(float*)((uintptr_t)entity + 2860); +} static crithack_saved_state state; static bool state_saved { false }; @@ -109,12 +110,17 @@ bool IsAttackACrit(CUserCmd* cmd) { int md5seed = MD5_PseudoRandom(cmd->command_number) & 0x7fffffff; int rseed = md5seed; //float bucket = *(float*)((uintptr_t)RAW_ENT(LOCAL_W) + 2612u); + *g_PredictionRandomSeed = md5seed; int c = LOCAL_W->m_IDX << 8; int b = LOCAL_E->m_IDX; rseed = rseed ^ (b | c); RandomSeed(rseed); + if (GetWeaponMode(LOCAL_E) == weapon_melee) { + *(float*)((uintptr_t)RAW_ENT(LOCAL_W) + 2612u) = 1000.0f; + } state.Save(weapon); + state_saved = true; //float saved_time = *(float*)(weapon + 2872ul); //*(float*)(weapon + 2872ul) = 0.0f; diff --git a/src/hacks/Misc.cpp b/src/hacks/Misc.cpp index df7ead5f..0caaa235 100644 --- a/src/hacks/Misc.cpp +++ b/src/hacks/Misc.cpp @@ -182,6 +182,27 @@ void CreateMove() { if (!AllowAttacking()) g_pUserCmd->buttons &= ~IN_ATTACK; } + if (CE_GOOD(LOCAL_W)) { + IClientEntity* weapon = RAW_ENT(LOCAL_W); + float& bucket = *(float*)((uintptr_t)(weapon) + 2612); + static float last_bucket = 0.0f; + static IClientEntity* last_weapon = weapon; + static bool changed = false; + if (g_pUserCmd->command_number) { + changed = false; + } + if (bucket != last_bucket) { + if (changed && weapon == last_weapon) { + bucket = last_bucket; + } else { + //logging::Info("db: %.2f", g_pUserCmd->command_number, bucket - last_bucket); + } + changed = true; + } + last_weapon = weapon; + last_bucket = bucket; + } + if (flashlight_spam) { if (flswitch && !g_pUserCmd->impulse) g_pUserCmd->impulse = 100; flswitch = !flswitch;