From e6284bd8659dc30ff1b5dee965e310b748d83dc3 Mon Sep 17 00:00:00 2001 From: LightCat Date: Mon, 25 Jun 2018 16:44:30 +0200 Subject: [PATCH 1/3] Update TODO --- TODO | 5 ----- 1 file changed, 5 deletions(-) diff --git a/TODO b/TODO index ea8386eb..56928a71 100755 --- a/TODO +++ b/TODO @@ -1,8 +1,3 @@ -// TODO - MUST do before merging into master (unless removed). - -1. Re-add radar and emoji esp -2. Locate most of the crashes - //==================================================================================================// //Big TODO list for cathook // //Organized by Julianacat // From ca84c5e26c85ae1fceb4f30499ad02fe280f368e Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Thu, 28 Jun 2018 22:28:19 +0200 Subject: [PATCH 2/3] Followbot experimental activate around corner --- include/helpers.hpp | 1 + src/hacks/FollowBot.cpp | 19 +++++++++++++++--- src/helpers.cpp | 38 ++++++++++++++++++++++++++++++++++++ src/visual/menu/ncc/Menu.cpp | 2 ++ 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/include/helpers.hpp b/include/helpers.hpp index ffa5c5a2..3a1aba5a 100755 --- a/include/helpers.hpp +++ b/include/helpers.hpp @@ -77,6 +77,7 @@ bool IsEntityVectorVisible(CachedEntity *entity, Vector endpos); bool VisCheckEntFromEnt(CachedEntity *startEnt, CachedEntity *endEnt); bool VisCheckEntFromEntVector(Vector startVector, CachedEntity *startEnt, CachedEntity *endEnt); +Vector VischeckWall(CachedEntity *player, CachedEntity *target, float maxdist); bool LineIntersectsBox(Vector &bmin, Vector &bmax, Vector &lmin, Vector &lmax); diff --git a/src/hacks/FollowBot.cpp b/src/hacks/FollowBot.cpp index fa130ac3..5d107224 100644 --- a/src/hacks/FollowBot.cpp +++ b/src/hacks/FollowBot.cpp @@ -54,6 +54,8 @@ static CatVar afk(CV_SWITCH, "fb_afk", "1", "Switch target if AFK", static CatVar afktime( CV_INT, "fb_afk_time", "15000", "Max AFK Time", "Max time in ms spent standing still before player gets declared afk"); +static CatVar corneractivate(CV_SWITCH, "fb_activation_corners", "1", "Activate arround corners", + "Try to find an activation path to an entity behind a corner."); // Something to store breadcrumbs created by followed players static std::vector breadcrumbs; @@ -173,8 +175,6 @@ void WorldTick() if (follow_activation && entity->m_flDistance() > (float) follow_activation) continue; - if (!VisCheckEntFromEnt(LOCAL_E, entity)) - continue; const model_t *model = ENTITY(follow_target)->InternalEntity()->GetModel(); if (followcart && model && @@ -189,6 +189,19 @@ void WorldTick() follow_target = entity->m_IDX; if (entity->m_Type() != ENTITY_PLAYER) continue; + if (corneractivate) + { + Vector indirectOrigin = VischeckWall(LOCAL_E, entity, 600); + if (!indirectOrigin.x || !indirectOrigin.y) + continue; + breadcrumbs.clear(); + breadcrumbs.push_back(indirectOrigin); + } + else + { + if (!VisCheckEntFromEnt(LOCAL_E, entity)) + continue; + } if (follow_target && ENTITY(follow_target)->m_flDistance() > entity->m_flDistance()) // favor closer entitys @@ -266,7 +279,7 @@ void WorldTick() if (dist_to_target > (float) follow_distance) { // Check for idle - if (autojump && idle_time.check(3000)) + if (autojump && idle_time.check(2000)) g_pUserCmd->buttons |= IN_JUMP; if (idle_time.test_and_set(5000)) { diff --git a/src/helpers.cpp b/src/helpers.cpp index 731a75ba..0dbf84cd 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -106,6 +106,44 @@ void WalkTo(const Vector &vector) g_pUserCmd->sidemove = result.second; } +// Function to get the corner location that a vischeck to an entity is possible +// from +Vector VischeckWall(CachedEntity *player, CachedEntity *target, float maxdist) +{ + int maxiterations = maxdist / 40; + Vector origin = player->m_vecOrigin(); + + if (VisCheckEntFromEnt(player, target)) + return origin; + for (int i = 0; i < 4; i++) + { + for (int j = 0; j < maxiterations; j++) + { + Vector virtualOrigin = origin; + switch (i) + { + case 0: + virtualOrigin.x = virtualOrigin.x + 40 * (j + 1); + break; + case 1: + virtualOrigin.x = virtualOrigin.x - 40 * (j + 1); + break; + case 2: + virtualOrigin.y = virtualOrigin.y + 40 * (j + 1); + break; + case 3: + virtualOrigin.y = virtualOrigin.y - 40 * (j + 1); + break; + } + if (!IsVectorVisible(origin, virtualOrigin)) + continue; + if (VisCheckEntFromEntVector(virtualOrigin, player, target)) + return virtualOrigin; + } + } + return { 0, 0, 0 }; +} + std::string GetLevelName() { diff --git a/src/visual/menu/ncc/Menu.cpp b/src/visual/menu/ncc/Menu.cpp index 2a323d68..b614341b 100644 --- a/src/visual/menu/ncc/Menu.cpp +++ b/src/visual/menu/ncc/Menu.cpp @@ -697,6 +697,8 @@ static const std::string list_tf2 = R"( "fb_always_medigun" "fb_roaming" "fb_draw" + "fb_afk" + "fb_afk_time" ] "Catbot Utilities"[ "Catbot Utilities Menu" From a669bb520670a16a27f99adf78b96b067c904ee4 Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Fri, 29 Jun 2018 18:58:16 +0200 Subject: [PATCH 3/3] better corneractivate --- src/core/cvwrapper.cpp | 4 ++++ src/hacks/FollowBot.cpp | 23 +++++++++++++++++------ src/helpers.cpp | 23 +++++++++++++++-------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/core/cvwrapper.cpp b/src/core/cvwrapper.cpp index d6276852..3d08beb2 100644 --- a/src/core/cvwrapper.cpp +++ b/src/core/cvwrapper.cpp @@ -108,13 +108,17 @@ void runcfg() logging::Info("Couldn't open the file!"); return; } + file << "exec cat_defaults\n"; for (const auto &i : CatVarList()) { if (!i) continue; if (!i->GetString()) continue; + if (i->GetBase() != std::string(i->GetString())) + { file << CON_PREFIX << i->name << " \"" << i->GetString() << "\"\n"; + } } file.close(); } diff --git a/src/hacks/FollowBot.cpp b/src/hacks/FollowBot.cpp index 5d107224..8862b9ef 100644 --- a/src/hacks/FollowBot.cpp +++ b/src/hacks/FollowBot.cpp @@ -142,8 +142,19 @@ void WorldTick() if (!entity->m_bAlivePlayer()) // Dont follow dead players continue; - if (!VisCheckEntFromEnt(LOCAL_E, entity)) - continue; + if (corneractivate) + { + Vector indirectOrigin = VischeckWall(LOCAL_E, entity, 250); //get the corner location that the future target is visible from + if (!indirectOrigin.z) //if we couldn't find it, exit + continue; + breadcrumbs.clear(); //we need to ensure that the breadcrumbs std::vector is empty + breadcrumbs.push_back(indirectOrigin); //add the corner location to the breadcrumb list + } + else + { + if (!VisCheckEntFromEnt(LOCAL_E, entity)) + continue; + } follow_target = entity->m_IDX; break; } @@ -191,11 +202,11 @@ void WorldTick() continue; if (corneractivate) { - Vector indirectOrigin = VischeckWall(LOCAL_E, entity, 600); - if (!indirectOrigin.x || !indirectOrigin.y) + Vector indirectOrigin = VischeckWall(LOCAL_E, entity, 250); //get the corner location that the future target is visible from + if (!indirectOrigin.z) //if we couldn't find it, exit continue; - breadcrumbs.clear(); - breadcrumbs.push_back(indirectOrigin); + breadcrumbs.clear(); //we need to ensure that the breadcrumbs std::vector is empty + breadcrumbs.push_back(indirectOrigin); //add the corner location to the breadcrumb list } else { diff --git a/src/helpers.cpp b/src/helpers.cpp index 0dbf84cd..9cdb1243 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -111,16 +111,18 @@ void WalkTo(const Vector &vector) Vector VischeckWall(CachedEntity *player, CachedEntity *target, float maxdist) { int maxiterations = maxdist / 40; - Vector origin = player->m_vecOrigin(); + Vector origin = player->m_vecOrigin(); - if (VisCheckEntFromEnt(player, target)) + if (VisCheckEntFromEnt(player, target)) // if we can see an entity, we don't + // need to run calculations return origin; - for (int i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) // for loop for all 4 directions { - for (int j = 0; j < maxiterations; j++) + for (int j = 0; j < maxiterations; + j++) // 40 * maxiterations = range in HU { Vector virtualOrigin = origin; - switch (i) + switch (i) // what direction to go in { case 0: virtualOrigin.x = virtualOrigin.x + 40 * (j + 1); @@ -135,10 +137,15 @@ Vector VischeckWall(CachedEntity *player, CachedEntity *target, float maxdist) virtualOrigin.y = virtualOrigin.y - 40 * (j + 1); break; } - if (!IsVectorVisible(origin, virtualOrigin)) + if (!IsVectorVisible(origin, + virtualOrigin)) // check if player can see the + // players virtualOrigin continue; - if (VisCheckEntFromEntVector(virtualOrigin, player, target)) - return virtualOrigin; + if (VisCheckEntFromEntVector( + virtualOrigin, player, + target)) // check if the virtualOrigin can see the target + return virtualOrigin; // return the corner position that we know + // can see the target } } return { 0, 0, 0 };