diff --git a/data/menu/nullifiedcat/aimbot.xml b/data/menu/nullifiedcat/aimbot.xml index d4f482cc..f64844e3 100755 --- a/data/menu/nullifiedcat/aimbot.xml +++ b/data/menu/nullifiedcat/aimbot.xml @@ -83,6 +83,7 @@ + @@ -124,7 +125,7 @@ - + diff --git a/data/menu/nullifiedcat/visuals/esp.xml b/data/menu/nullifiedcat/visuals/esp.xml index fed6fd4e..17e9ef68 100755 --- a/data/menu/nullifiedcat/visuals/esp.xml +++ b/data/menu/nullifiedcat/visuals/esp.xml @@ -65,6 +65,7 @@ + diff --git a/data/menu/nullifiedcat/visuals/radar.xml b/data/menu/nullifiedcat/visuals/radar.xml index 9d8eb9fd..636e1682 100755 --- a/data/menu/nullifiedcat/visuals/radar.xml +++ b/data/menu/nullifiedcat/visuals/radar.xml @@ -25,6 +25,7 @@ + diff --git a/src/hacks/Aimbot.cpp b/src/hacks/Aimbot.cpp index aea03000..88f2daf7 100644 --- a/src/hacks/Aimbot.cpp +++ b/src/hacks/Aimbot.cpp @@ -40,6 +40,7 @@ static settings::Boolean wait_for_charge{ "aimbot.wait-for-charge", "0" }; static settings::Boolean silent{ "aimbot.silent", "1" }; static settings::Boolean target_lock{ "aimbot.lock-target", "0" }; +static settings::Boolean assistance_only{ "aimbot.assistance.only", "0" }; static settings::Int hitbox{ "aimbot.hitbox", "0" }; static settings::Boolean zoomed_only{ "aimbot.zoomed-only", "1" }; static settings::Boolean only_can_shoot{ "aimbot.can-shoot-only", "1" }; @@ -81,6 +82,12 @@ static settings::Boolean fov_draw{ "aimbot.fov-circle.enable", "0" }; static settings::Float fovcircle_opacity{ "aimbot.fov-circle.opacity", "0.7" }; #endif +int PreviousX, PreviousY; +int CurrentX, CurrentY; + +float last_mouse_check = 0; +float stop_moving_time = 0; + int GetSentry() { for (int i = 1; i <= HIGHEST_ENTITY; i++) @@ -325,6 +332,33 @@ static void CreateMove() } } +bool MouseMoving() +{ + if ((g_GlobalVars->curtime - last_mouse_check) < 0.02) + { + auto previous = SDL_GetMouseState(&PreviousX, &PreviousY); + } + else + { + auto current = SDL_GetMouseState(&CurrentX, &CurrentY); + last_mouse_check = g_GlobalVars->curtime; + } + + if (PreviousX != CurrentX || PreviousY != CurrentY) + { + stop_moving_time = g_GlobalVars->curtime + 0.5; + return true; + } + else if (g_GlobalVars->curtime <= stop_moving_time) + { + return true; + } + else + { + return false; + } +} + // The first check to see if the player should aim in the first place bool ShouldAim() { @@ -356,6 +390,9 @@ bool ShouldAim() return false; } + if (assistance_only && !MouseMoving()) + return false; + IF_GAME(IsTF2()) { switch (GetWeaponMode()) diff --git a/src/hacks/ESP.cpp b/src/hacks/ESP.cpp index 2a207028..fcae75b2 100644 --- a/src/hacks/ESP.cpp +++ b/src/hacks/ESP.cpp @@ -30,6 +30,7 @@ static settings::Int emoji_min_size{ "esp.emoji.min-size", "20" }; static settings::Int healthbar{ "esp.health-bar", "3" }; static settings::Boolean draw_bones{ "esp.bones", "false" }; +static settings::Boolean bones_color{ "esp.bones.color", "false" }; static settings::Int sightlines{ "esp.sightlines", "0" }; static settings::Int esp_text_position{ "esp.text-position", "0" }; static settings::Int esp_expand{ "esp.expand", "0" }; @@ -150,7 +151,7 @@ struct bonelist_s setup = true; } - void DrawBoneList(const matrix3x4_t *bones, int *in, int size, const rgba_t &color, const Vector &displacement) + void _FASTCALL DrawBoneList(const matrix3x4_t *bones, int *in, int size, const rgba_t &color) { Vector last_screen; Vector current_screen; @@ -158,7 +159,6 @@ struct bonelist_s { const auto &bone = bones[in[i]]; Vector position(bone[0][3], bone[1][3], bone[2][3]); - position += displacement; if (!draw::WorldToScreen(position, current_screen)) { return; @@ -171,7 +171,7 @@ struct bonelist_s } } - void Draw(CachedEntity *ent, const rgba_t &color) + void _FASTCALL Draw(CachedEntity *ent, const rgba_t &color) { const model_t *model = RAW_ENT(ent)->GetModel(); if (not model) @@ -189,15 +189,14 @@ struct bonelist_s return; // ent->m_bBonesSetup = false; - Vector displacement = {}; const auto &bones = ent->hitboxes.GetBones(); - DrawBoneList(bones, leg_r, 3, color, displacement); - DrawBoneList(bones, leg_l, 3, color, displacement); - DrawBoneList(bones, bottom, 3, color, displacement); - DrawBoneList(bones, spine, 7, color, displacement); - DrawBoneList(bones, arm_r, 3, color, displacement); - DrawBoneList(bones, arm_l, 3, color, displacement); - DrawBoneList(bones, up, 3, color, displacement); + DrawBoneList(bones, leg_r, 3, color); + DrawBoneList(bones, leg_l, 3, color); + DrawBoneList(bones, bottom, 3, color); + DrawBoneList(bones, spine, 7, color); + DrawBoneList(bones, arm_r, 3, color); + DrawBoneList(bones, arm_l, 3, color); + DrawBoneList(bones, up, 3, color); /*for (int i = 0; i < hdr->numbones; i++) { const auto& bone = ent->GetBones()[i]; Vector pos(bone[0][3], bone[1][3], bone[2][3]); @@ -626,6 +625,24 @@ void _FASTCALL ProcessEntityPT(CachedEntity *ent) } } + if (draw_bones) + { + if (vischeck && !ent->IsVisible()) + transparent = true; + rgba_t bone_color = colors::EntityF(ent); + if (transparent) + bone_color = colors::Transparent(bone_color); + + bonelist_s bl; + if (!CE_INVALID(ent) && ent->m_bAlivePlayer() && !RAW_ENT(ent)->IsDormant() && LOCAL_E->m_bAlivePlayer()) + { + if (bones_color) + bl.Draw(ent, bone_color); + else + bl.Draw(ent, colors::white); + } + } + // Top horizontal health bar if (*healthbar == 1) { diff --git a/src/hacks/Radar.cpp b/src/hacks/Radar.cpp index 949b7dd1..a842a47e 100644 --- a/src/hacks/Radar.cpp +++ b/src/hacks/Radar.cpp @@ -25,6 +25,7 @@ static settings::Int radar_x{ "radar.x", "100" }; static settings::Int radar_y{ "radar.y", "100" }; static settings::Boolean use_icons{ "radar.use-icons", "true" }; static settings::Boolean show_teammates{ "radar.show.teammates", "true" }; +static settings::Boolean show_teambuildings{ "radar.show.team.buildings", "true" }; static settings::Boolean show_healthpacks{ "radar.show.health", "true" }; static settings::Boolean show_ammopacks{ "radar.show.ammo", "true" }; @@ -248,6 +249,8 @@ void Draw() continue; if (!show_teammates && ent->m_Type() == ENTITY_PLAYER && !ent->m_bEnemy()) continue; + if (!show_teambuildings && ent->m_Type() == ENTITY_BUILDING && !ent->m_bEnemy()) + continue; if (ent->m_iClassID() == CL_CLASS(CObjectSentrygun)) sentries.push_back(ent); else if (!enemies_over_teammates || !show_teammates || ent->m_Type() != ENTITY_PLAYER)