From c589b982b552e1258d1475a32fcf544b5a162d7b Mon Sep 17 00:00:00 2001 From: julianacat Date: Tue, 15 Aug 2017 13:13:56 -0500 Subject: [PATCH] Paste ;) --- src/entityhitboxcache.cpp | 1 + src/hacks/ESP.cpp | 65 ++++++++++++++++++++++++++++++++++----- src/hacks/Misc.cpp | 55 ++++++++++++++++++++++++++++----- 3 files changed, 106 insertions(+), 15 deletions(-) diff --git a/src/entityhitboxcache.cpp b/src/entityhitboxcache.cpp index a265a900..ebeef646 100644 --- a/src/entityhitboxcache.cpp +++ b/src/entityhitboxcache.cpp @@ -147,3 +147,4 @@ void Invalidate() { } } + diff --git a/src/hacks/ESP.cpp b/src/hacks/ESP.cpp index 706872fc..7e5d812f 100644 --- a/src/hacks/ESP.cpp +++ b/src/hacks/ESP.cpp @@ -693,14 +693,18 @@ std::unordered_map bonelist_map {}; * According to profiler, this function is the most time-consuming (and gets called up to 200K times a second) */ -CatEnum emoji_esp({ "None", "Joy", "Thinking" }); -CatVar joy_esp(CV_SWITCH, "esp_emoji", "0", "Emoji ESP"); -CatVar joy_esp_size(CV_FLOAT, "esp_emoji_size", "32", "Emoji ESP Size"); +CatEnum emoji_esp_enum({ "None", "Joy", "Thinking" }); +CatVar emoji_esp(emoji_esp_enum, "esp_emoji", "0", "Emoji ESP", "Draw emoji on peopels head"); +CatVar emoji_esp_size(CV_FLOAT, "esp_emoji_size", "32", "Emoji ESP Size"); CatVar emoji_esp_scaling(CV_SWITCH, "esp_emoji_scaling", "1", "Emoji ESP Scaling"); CatVar emoji_min_size(CV_INT, "esp_emoji_min_size", "20", "Emoji ESP min size", "Minimum size for an emoji when you use auto scaling"); textures::AtlasTexture joy_texture(64 * 4, textures::atlas_height - 64 * 4, 64, 64); textures::AtlasTexture thinking_texture(64 * 5, textures::atlas_height - 64 * 4, 64, 64); + + +//CatVar draw_hitbox(CV_SWITCH, "esp_hitbox", "1", "Draw Hitbox"); + // Used when processing entitys with cached data from createmove void _FASTCALL ProcessEntityPT(CachedEntity* ent) { PROF_SECTION(PT_esp_process_entity); @@ -758,25 +762,70 @@ void _FASTCALL ProcessEntityPT(CachedEntity* ent) { // Emoji esp if (ent->m_Type == ENTITY_PLAYER) { - if (joy_esp) { + if (emoji_esp) { auto hb = ent->hitboxes.GetHitbox(0); Vector hbm, hbx; if (draw::WorldToScreen(hb->min, hbm) && draw::WorldToScreen(hb->max, hbx)) { Vector head_scr; if (draw::WorldToScreen(hb->center, head_scr)) { - float size = emoji_esp_scaling ? fabs(hbm.y - hbx.y) : float(joy_esp_size); + float size = emoji_esp_scaling ? fabs(hbm.y - hbx.y) : float(emoji_esp_size); if (emoji_esp_scaling && (size < float(emoji_min_size))) { size = float(emoji_min_size); } textures::AtlasTexture* tx = nullptr; - if (int(joy_esp) == 1) tx = &joy_texture; - if (int(joy_esp) == 2) tx = &thinking_texture; + if (int(emoji_esp) == 1) tx = &joy_texture; + if (int(emoji_esp) == 2) tx = &thinking_texture; if (tx) tx->Draw(head_scr.x - size / 2, head_scr.y - size / 2, size, size); } } } } + + // TODO Add Rotation matix + // TODO Currently crashes, needs null check somewhere + // Draw Hitboxes + /*if (draw_hitbox && ent->m_Type == ENTITY_PLAYER) { + + // Loop through hitboxes + for (int i = 0; i <= 17; i++) { // I should probs get how many hitboxes instead of using a fixed number... + + // Get a hitbox from the entity + hitbox_cache::CachedHitbox* hb = ent->hitboxes.GetHitbox(i); + + // Create more points from min + max + Vector box_points[8]; + Vector vec_tmp; + for (int ii = 0; ii <= 8; ii++) { // 8 points to the box + + // logic le paste from sdk + vec_tmp[0] = ( ii & 0x1 ) ? hb->max[0] : hb->min[0]; + vec_tmp[1] = ( ii & 0x2 ) ? hb->max[1] : hb->min[1]; + vec_tmp[2] = ( ii & 0x4 ) ? hb->max[2] : hb->min[2]; + + // save to points array + box_points[ii] = vec_tmp; + } + + // Draw box from points + // Draws a point to every other point. Ineffient, use now fix later... + Vector scn1, scn2; // to screen + for (int ii = 0; ii < 8; ii++) { + + // Get first point + if (!draw::WorldToScreen(box_points[ii], scn1)) continue; + + for (int iii = 0; iii < 8; iii++) { + + // Get second point + if (!draw::WorldToScreen(box_points[iii], scn2)) continue; + + // Draw between points + drawgl::Line(scn1.x, scn1.y, scn2.x - scn1.x, scn2.y - scn1.y, fg); + } + } + } + }*/ // Box esp if (box_esp) { @@ -796,7 +845,9 @@ void _FASTCALL ProcessEntityPT(CachedEntity* ent) { break; } } + // Draw strings ??? + // TODO reverse this bool origin_is_zero = !box_esp || ent_data.esp_origin.IsZero(1.0f); if (origin_is_zero) ent_data.esp_origin = screen; if (ent_data.string_count) { diff --git a/src/hacks/Misc.cpp b/src/hacks/Misc.cpp index 83c48d73..4555dd47 100644 --- a/src/hacks/Misc.cpp +++ b/src/hacks/Misc.cpp @@ -143,7 +143,22 @@ static CatCommand test_chat_print("debug_print_chat", "machine broke", [](const }); -static CatVar tauntslide_tf2(CV_SWITCH, "tauntslide_tf2", "0", "Tauntslide", "Allows free movement while taunting with movable taunts\nOnly works in tf2\nWIP"); +CatVar tauntslide_tf2(CV_SWITCH, "tauntslide_tf2", "0", "Tauntslide", "Allows free movement while taunting with movable taunts\nOnly works in tf2"); +CatVar auto_balance_spam(CV_SWITCH, "equest_balance_spam", "0", "Inf Auto Balance Spam", "Use to send a autobalance request to the server that doesnt prevent you from using it again\nCredits to Blackfire"); + +// Use to send a autobalance request to the server that doesnt prevent you from using it again +// Allowing infinite use of it. +// Credits to blackfire +void SendAutoBalanceRequest() { + if (!g_IEngine->IsInGame()) return; + KeyValues* kv = new KeyValues("AutoBalanceVolunteerReply"); + kv->SetInt("response", 1); + g_IEngine->ServerCmdKeyValues(kv); +} +// Catcommand for above +CatCommand SendAutoBlRqCatCom("request_balance", "Request Infinite Auto-Balance", [](const CCommand& args) { + SendAutoBalanceRequest(); +}); void CreateMove() { static bool flswitch = false; @@ -320,31 +335,55 @@ void CreateMove() { flswitch = !flswitch; } - static float afkTimeIdle = 0; - // Check if user settings allow anti-afk + + // AntiAfk That after a certian time without movement keys depressed, causes random keys to be spammed for 1 second if (anti_afk) { + // Time last idle + static float afk_time_idle = 0; + // If the timer exceeds 1 minute, jump and reset the timer - if (g_GlobalVars->curtime - 60 > afkTimeIdle) { + if (g_GlobalVars->curtime - 60 > afk_time_idle) { // Send random commands g_pUserCmd->sidemove = RandFloatRange(-450.0, 450.0); g_pUserCmd->forwardmove = RandFloatRange(-450.0, 450.0); g_pUserCmd->buttons = rand(); + // Prevent attack command + g_pUserCmd->buttons &= ~IN_ATTACK; // After 1 second we reset the idletime - if (g_GlobalVars->curtime - 61 > afkTimeIdle) { + if (g_GlobalVars->curtime - 61 > afk_time_idle) { logging::Info("Finish anti-idle"); - afkTimeIdle = g_GlobalVars->curtime; + afk_time_idle = g_GlobalVars->curtime; } } else { // If the player uses a button, reset the timer if (g_pUserCmd->buttons & IN_FORWARD || g_pUserCmd->buttons & IN_BACK || g_pUserCmd->buttons & IN_MOVELEFT || g_pUserCmd->buttons & IN_MOVERIGHT || g_pUserCmd->buttons & IN_JUMP || !LOCAL_E->m_bAlivePlayer) - afkTimeIdle = g_GlobalVars->curtime; + afk_time_idle = g_GlobalVars->curtime; } } - IF_GAME (IsTF2()) { + IF_GAME (IsTF2()) { + + // Spams infinite autobalance spam function + if (auto_balance_spam) { + + // Time Last used + static float auto_balance_time = 0; + + // If the timer exceeds 1 minute, jump and reset the timer + if (g_GlobalVars->curtime - 0.15 > auto_balance_time) { + + // Use the Inf Request func + SendAutoBalanceRequest(); + + // Reset timer + auto_balance_time = g_GlobalVars->curtime; + } + } + + // Simple No-Push through cvars if (nopush_enabled == pNoPush-> GetBool()) pNoPush->SetValue (!nopush_enabled); } }