From 984385d92e643090ec4ecd7b53ee8eb45e27c80c Mon Sep 17 00:00:00 2001 From: julianacat Date: Thu, 13 Jul 2017 22:28:56 -0500 Subject: [PATCH] stuff --- TODO | 198 +++++++++++++++++++++++++++------------ simple-ipc | 2 +- src/hacks/AutoSticky.cpp | 3 + src/hacks/FollowBot.cpp | 54 ++++++++--- src/hacks/Spam.cpp | 56 +++++++++-- 5 files changed, 227 insertions(+), 86 deletions(-) diff --git a/TODO b/TODO index 620a5ae1..4c0cd318 100644 --- a/TODO +++ b/TODO @@ -1,67 +1,141 @@ -MULTIPLATFORM: - -Signature Scanner -Whole IPC thing | actually, no. cathook for windows WON'T have followbots/ipc. -Signatures and offsets -File handling (playerlist, spam, etc...) -CMake? - -------------====----------- +//==================================================================================================// +//Big TODO list for cathook // +//Organized by Julianacat // +//==================================================================================================// -TF2C teams -TF2C merc -HL2DM teams -fullbright toggle -Hunter Rifle -TTS -namesteal -autovote -voice command spam (not like 1 voice command every 1 ms but like just spamming it on the menu) +//----------------------------------------------------------------------------------------------------------------------// +//Aimbot/Triggerbot // +//------------------------------------------------------------------------------------------------------------------// // + // // +Hook + Aimbot FIX // // + // // +no aim sapper // // + // // +Make hacks respect Mannpower powerups and other conditions when calcuating damage, hitbox and prioritizing targets // // +Proper AutoHitbox, Isnt this already a thing?? // // + // // +Flare aim on fire // // +Improve Projectile Aimbot. A lot. // // +ProjPredOrigin // // +MAX -> MIN priority // // + // // +Hunter Rifle? // // + // // +AutoDetonator // // + // // +No AutoShoot when disguised // // +Ambassador bodyshotting // // +No Trigger Mediguns // // +More projectile weapons aimbot (wrap assassin, wrangler, stickybomb, airstrike) // // +Auto trigger DR before rockets // // + // // +Make make sentrys slightly lower priority (for getting those pesky turtle engies) // // + // // +Make building aimbot compensate for gravity on projectile weapons // // + // // +add Spectator Silent for projectile weapons // // + // // +Improve aimbot accuracy // // + // // +Add Multipoint (Take hitbox, shrink it, then use corners as points to check) // // + // // +Make ambasador check rely on wait for charge user setting // // + // // +//------------------------------------------------------------------------------------------------------------------// // +// // +//----------------------------------------------------------------------------------------------------------------------// + + -dominatesay assistsay worldsay -AutoDetonator +//----------------------------------------------------------------------------------------------------------------------// +//Visuals/GUI // +//------------------------------------------------------------------------------------------------------------------// // + // // +Display on the left // // + // // +make gui color change // // + // // +Cheat status menu (A gui to display enabled/disabled states of user settings for when the menu is off) // // + // // +add teleporter count down // // +add spy cloak esp // // + // // +Make ubercharge esp color RGB when fully charged // // + // // +fullbright toggle // // + // // +FLAG ESP? // // + // // +ESP Icons // // +ESP Distance sort // // +Show sapped buildings in ESP // // +halloween medkits // // +carrying esp // // +Tracers/Spy Cam // // + // // +//------------------------------------------------------------------------------------------------------------------// // +// // +//----------------------------------------------------------------------------------------------------------------------// -ProjPredOrigin -MAX -> MIN priority -Deflected by enemy player - Aim Stickies -FLAG ESP -no aim sapper -Improve Projectile Aimbot. A lot. -Proper AutoHitbox -Display on the left -Flare aim on fire -Aim Sticky -Proj Pred visuals -Hook + Aimbot FIX -ESP Icons -ESP Distance sort -Show sapped buildings in ESP -Make hacks respect Mannpower powerups and other conditions when calcuating damage, hitbox and prioritizing targets -Fake Lag -Engine Prediction -AutoSticky improve -No AutoShoot when disguised -Ambassador bodyshotting -No Trigger Mediguns -More projectile weapons aimbot (wrap assassin, wrangler, stickybomb, airstrike) -Auto trigger DR before rockets -Sticky vischeck -InsultSpam -Critical rifles bodyshotting -FLAG ESP -Spy alert uses angles -halloween medkits -carrying esp -Tracers/Spy Cam -Bodyshot if not zoomed -Proper medic followbot AI -Bot option for aiming at owner's prey (just for fun) -Bot pathfinding & navigation files system -Proper entity classes (actually I might just use a lot of helper functions taking IClientEntity* as first arg) -Priority system optimization and testing -General optimization and refactoring -Bone ESP -XorString or something to make it harder to detect. \ No newline at end of file + + +//----------------------------------------------------------------------------------------------------------------------// +//Chat and Related // +//------------------------------------------------------------------------------------------------------------------// // + // // +TTS // // +namesteal // // +autovote // // + // // +dominatesay assistsay worldsay // // +InsultSpam // // + // // +//------------------------------------------------------------------------------------------------------------------// // +// // +//----------------------------------------------------------------------------------------------------------------------// + + + +//----------------------------------------------------------------------------------------------------------------------// +//Followbots // +//------------------------------------------------------------------------------------------------------------------// // + // // +Proper medic followbot AI, breadcrumb followbot is good but a nav system would be better // // + // // +Bot option for aiming at owner's prey (just for fun) // // +Bot pathfinding & navigation files system // // +Proper entity classes (actually I might just use a lot of helper functions taking IClientEntity* as first arg) // // + // // +//------------------------------------------------------------------------------------------------------------------// // +// // +//----------------------------------------------------------------------------------------------------------------------// + + + +//----------------------------------------------------------------------------------------------------------------------// +//Misc // +//------------------------------------------------------------------------------------------------------------------// // + // // +Proper Fake Lag // // +Add auto-strafe // // + // // +Fix achievement hack getting blocked with sv_cheats // // + // // +Spy alert uses angles // // + // // +Add ignore gunslinger to melee crit hack // // + // // +Priority system optimization and testing // // +General optimization and refactoring // // + // // +XorString or something to make it harder to detect. // // + // // +TF2C teams // // +TF2C merc // // +HL2DM teams // // + // // +//------------------------------------------------------------------------------------------------------------------// // +// // +//----------------------------------------------------------------------------------------------------------------------// diff --git a/simple-ipc b/simple-ipc index 94a287d6..e532876f 160000 --- a/simple-ipc +++ b/simple-ipc @@ -1 +1 @@ -Subproject commit 94a287d6faa00d44e1084b04e602842849858443 +Subproject commit e532876ffd707a48389d54ff904dcc40a84f2839 diff --git a/src/hacks/AutoSticky.cpp b/src/hacks/AutoSticky.cpp index ecd178b2..c5937a77 100644 --- a/src/hacks/AutoSticky.cpp +++ b/src/hacks/AutoSticky.cpp @@ -77,6 +77,9 @@ void CreateMove() { // Check user settings if auto-sticky is enabled if (!enabled) return; + // Check if game is a tf game + IF_GAME (!IsTF()) return; + // Check if player is demoman if (g_pLocalPlayer->clazz != tf_demoman) return; diff --git a/src/hacks/FollowBot.cpp b/src/hacks/FollowBot.cpp index 155ab134..f8538900 100644 --- a/src/hacks/FollowBot.cpp +++ b/src/hacks/FollowBot.cpp @@ -13,6 +13,19 @@ namespace hacks { namespace shared { namespace followbot { + + + + +/* Big Followbot TODO list +1. Fix crash when setting followbot_idx var and remove the fix var in its place +2. Test with followbots to ensure that vector followbot and crumb followbot work as intended +3. Clean the finished code and push to main from fork +*/ + + + + // User settings CatVar bot(CV_SWITCH, "fb_bot", "0", "Master Followbot Switch", "Set to 1 in followbots' configs"); CatVar follow_distance(CV_FLOAT, "fb_follow_distance", "175", "Followbot Follow Distance", "How close the bots should stay to the target"); @@ -50,7 +63,7 @@ bool destination_reached { false }; // Vars for breadcrumb followbot // An array for storing the breadcrumbs -Vector breadcrumbs [55]; +static Vector breadcrumbs [55]; // Array Bookkeeping vars int crumbBottom = 0; int crumbTop = 0; @@ -112,8 +125,8 @@ void DoWalking() { // Get our best target, preferably from a steamid //following_idx = 0; - CachedEntity* best_target = 0; - CachedEntity* target_priority = 0; + CachedEntity* best_target = nullptr; + CachedEntity* target_priority = nullptr; // Get ent from steamid for (int i = 1; i < HIGHEST_ENTITY; i++) { @@ -165,7 +178,7 @@ void DoWalking() { float target_highest_score = -256; CachedEntity* ent; - target_last = 0; + target_last = nullptr; crumbStopped = true; for (int i = 0; i < HIGHEST_ENTITY; i++) { @@ -193,6 +206,9 @@ void DoWalking() { } CachedEntity* found_entity = best_target; + // TODO, setting following_idx causes a crash for an unknown reason, probs to do with autoheal. + // I created a different var to take its place and prevent the crash but i need to fix the crash with the externed var. + // For now this works and it will stay like this untill i fix it int following_idx2 = 0; if (CE_GOOD(found_entity)) { following_idx2 = found_entity->m_IDX; @@ -206,8 +222,10 @@ void DoWalking() { + + // Slot Changer/Mimicer - logging::Info("Slot changer"); + // Set a static var for last slot check static float last_slot_check = 0.0f; @@ -252,9 +270,12 @@ void DoWalking() { } - logging::Info("Start follow"); + + + // Main followbot code if (allow_moving) { + // Switch to different types of following mechanisms depending on the type we need to go to switch (current_follow_type) { case EFollowType::VECTOR: // If were using a vector to follow, we just go directly to it @@ -274,7 +295,7 @@ void DoWalking() { case EFollowType::ENTITY: // If were using a player to follow, we use the breadcrumb followbot if (CE_GOOD(found_entity)) { - //If the bot is lost but it finds the player again, start the followbot again. + // If the bot is lost but it finds the player again, start the followbot again. if (crumbStopped) { crumbForceMove = true; CrumbReset(); @@ -311,7 +332,7 @@ void DoWalking() { // Check 15 times for close crumbs to prune, this allows simple miss steps to be smoothed out as well as make room for new crumbs for (int i = 0; i < 15; i++) { - //When one is close or too high, just bump the array and reset the stuck timer + // When one is close or too high, just bump the array and reset the stuck timer if (g_pLocalPlayer->v_Origin.DistTo(breadcrumbs[crumbBottom]) < 60.0F && crumbArrayLength > 1) { CrumbBottomAdd(); @@ -563,7 +584,7 @@ void WalkTo(const Vector& vector) { // Set idle time if we havent already if (!idle_time) idle_time = g_GlobalVars->curtime; // If the vector is too high for the local player to reach, - if (vector.z - LOCAL_E->m_vecOrigin.z > 30.0f) { + if (vector.z - LOCAL_E->m_vecOrigin.z > 15.0f) { // If the time idle is over 2 seconds if (g_GlobalVars->curtime - idle_time > 2.0f) { // If the player isnt zoomed, then jump @@ -603,7 +624,7 @@ std::pair ComputeMove(const Vector& a, const Vector& b) { // Crumb Followbot Helper functions -//A function to reset the crumb followbot +// A function to reset the crumb followbot void CrumbReset() { //A check to make sure using the fb tool repeatedly doesnt clear the cache of crumbs @@ -679,7 +700,14 @@ void Draw() { // A Function for when we want to draw out the crumbs in the array onto the screen void DrawFollowbot() { - + + // Usefull debug info to know + AddSideString(format("Array Length: ", crumbArrayLength)); + AddSideString(format("Top Crumb: ", crumbTop)); + AddSideString(format("Bottom Crumb: ", crumbBottom)); + + // Disabled as the enum was misbeghaving for an unknown reason + /*switch (current_follow_type) { case EFollowType::VECTOR: // If our follow type is a vector, then we just draw a rect on the vector @@ -738,9 +766,7 @@ void DrawFollowbot() { } break; }*/ - AddSideString(format("Array Length: ", crumbArrayLength)); - AddSideString(format("Top Crumb: ", crumbTop)); - AddSideString(format("Bottom Crumb: ", crumbBottom)); + // Not using switch due to switch not working if (crumbArrayLength < 2) { diff --git a/src/hacks/Spam.cpp b/src/hacks/Spam.cpp index bc53e301..4e15e220 100644 --- a/src/hacks/Spam.cpp +++ b/src/hacks/Spam.cpp @@ -14,8 +14,13 @@ static CatEnum spam_enum({"DISABLED", "CUSTOM", "DEFAULT", "LENNYFACES", "BLANKS CatVar spam_source(spam_enum, "spam", "0", "Chat Spam", "Defines source of spam lines. CUSTOM spam file must be set in cat_spam_file and loaded with cat_spam_reload (Use console!)"); CatVar random_order(CV_SWITCH, "spam_random", "0", "Random Order"); CatVar filename(CV_STRING, "spam_file", "spam.txt", "Spam file", "Spam file name. Each line should be no longer than 100 characters, file must be located in cathook data folder"); -CatVar teamname_spam(CV_SWITCH, "spam_teamname", "0", "Teamname Spam", "Spam changes the tournament name"); CatCommand reload("spam_reload", "Reload spam file", Reload); + +static CatEnum voicecommand_enum({"DISABLED", "RANDOM", "MEDIC", "THANKS", "NICE SHOT", "CHEERS", "JEERS"}); +CatVar voicecommand_spam(voicecommand_enum, "spam_voicecommand", "0", "Voice Command Spam", "Spams tf voice commands"); + +CatVar teamname_spam(CV_SWITCH, "spam_teamname", "0", "Teamname Spam", "Spam changes the tournament name"); + bool teamname_swap = false; int current_index { 0 }; @@ -24,6 +29,8 @@ TextFile file {}; const std::string teams[] = { "RED", "BLU" }; + + // FUCK enum class. // It doesn't have bitwise operators by default!! WTF!! static_cast(REEE)! @@ -166,15 +173,46 @@ bool FormatSpamMessage(std::string& message) { } void CreateMove() { - if (teamname_spam) { - if (teamname_swap) { - teamname_swap = false; - g_IEngine->ServerCmd("tournament_teamname Cat"); - } else { - teamname_swap = true; - g_IEngine->ServerCmd("tournament_teamname Hook"); - } + + IF_GAME (IsTF2()) { + // Spam changes the tournament name in casual and compeditive gamemodes + if (teamname_spam) { + if (teamname_swap) { + teamname_swap = false; + g_IEngine->ServerCmd("tournament_teamname Cat"); + } else { + teamname_swap = true; + g_IEngine->ServerCmd("tournament_teamname Hook"); + } + } + + if (voicecommand_spam) { + static float last_voice_spam = 0.0f; + if (g_GlobalVars->curtime - 4.0F > last_voice_spam) { + switch ((int)voicecommand_spam) { + case 1: // RANDOM + g_IEngine->ServerCmd(format("voicemenu ", floor(RandFloatRange(0, 2.9)), " ", floor(RandFloatRange(0, 8.9))).c_str()); + break; + case 2: // MEDIC + g_IEngine->ServerCmd("voicemenu 0 0"); + break; + case 3: // THANKS + g_IEngine->ServerCmd("voicemenu 0 1"); + break; + case 4: // NICE SHOT + g_IEngine->ServerCmd("voicemenu 2 6"); + break; + case 5: // CHEERS + g_IEngine->ServerCmd("voicemenu 2 2"); + break; + case 6: // JEERS + g_IEngine->ServerCmd("voicemenu 2 3"); + } + last_voice_spam = g_GlobalVars->curtime; + } + } } + if (!spam_source) return; static int safety_ticks = 0; static int last_spam = 0;