This commit is contained in:
julianacat 2017-07-13 22:28:56 -05:00
parent 4c2ad9e60e
commit 984385d92e
5 changed files with 227 additions and 86 deletions

198
TODO
View File

@ -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.
//----------------------------------------------------------------------------------------------------------------------//
//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 // //
// //
//------------------------------------------------------------------------------------------------------------------// //
// //
//----------------------------------------------------------------------------------------------------------------------//

@ -1 +1 @@
Subproject commit 94a287d6faa00d44e1084b04e602842849858443
Subproject commit e532876ffd707a48389d54ff904dcc40a84f2839

View File

@ -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;

View File

@ -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<float, float> 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) {

View File

@ -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<int>(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;