SHARE
TWEET

Untitled

a guest Jan 22nd, 2020 65 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "Menu.h"
  2. #include "Config.h"
  3. #include "Hotkeys.h"
  4. #include "..\SDK\Vector.h"
  5. #include "..\SDK\ISurface.h"
  6. #include "..\Utils\Color.h"
  7. #include "..\Utils\GlobalVars.h"
  8. #include "..\Utils\XorStr.h"
  9. #include "..\Features\Misc\Misc.h"
  10. #include "..\Utils\Color.h"
  11. #include "..\Features\Features.h"
  12. #include "KeyVisualizer.h"
  13. #include "SpecList.h"
  14. #include "models.h"
  15. #include "x88/x88Menu.h"
  16.  
  17. Menu g_Menu;
  18. Hotkeys g_Hotkeys;
  19. KeyVisualizer g_KeyVisualizer;
  20.  
  21. // NEW MENU
  22. Color menu_background(33, 33, 33);  //33, 33, 33
  23. Color menu_background2(66, 66, 66);  //66, 66, 66
  24. Color menu_text(255, 255, 255);  //255, 255, 255
  25. Color menu_accent(132, 0, 195); //132, 0, 195
  26.  
  27. Color button_light(239, 239, 239); //239, 239, 239
  28. Color button_idle_gray(191, 184, 191); //191, 184, 191
  29. Color button_dark(23, 23, 23); //23, 23, 23
  30.  
  31. Color EnemyColor(255, 255, 255); //255, 255, 255
  32. Color TeamColor(255, 255, 255); //255, 255, 255
  33. Color LocalColor(255, 255, 255); //255, 255, 255
  34. Color World2Color(50, 50, 50); //50, 50, 50
  35. Color Prop2Color(50, 50, 50); //50, 50, 50
  36. Color AmbientLight2Color(255, 255, 255); //255, 255, 255
  37. Color ArmsChams2Color(255, 255, 255); //255, 255, 255
  38. Color WeaponChams2Color(255, 255, 255); //255, 255, 255
  39.  
  40. int OldTickCount = 0;
  41. int GlobalOpacity = 0;
  42.  
  43. bool showMenu = true;
  44. bool shouldopenmenu = false;
  45. bool Debug = false;
  46.  
  47. int MenuWidth;
  48.  
  49. void save() { g_Config->Save(); }
  50. void reset() { g::shots == 0; g::hits == 0; }
  51. void load() { g_Config->Load(); }
  52. void unload() { g_Menu.Config.Unload = true; }
  53. void forceupdate() { g::knifeapply = true; }
  54. void InvisName()
  55. {
  56.     g_Misc.SetName("\n\xAD\xAD\xAD");
  57.     g_Misc.SetName("\n\xAD\xAD\xAD");
  58.     g_Misc.SetName("\n\xAD\xAD\xAD");
  59. }
  60.  
  61. int AntiAimFlag = 0;
  62. int EspType = 0;
  63. int Chamstype = 0;
  64.  
  65. void Menu::Render()
  66. {
  67.     static int iWidth, iHeight;
  68.     g_pEngine->GetScreenSize(iWidth, iHeight);
  69.  
  70.     menu_accent = Color(Config.MenuColor.red, Config.MenuColor.green, Config.MenuColor.blue);
  71.     EnemyColor = Color(Config.EnemyGlowColor.red, Config.EnemyGlowColor.green, Config.EnemyGlowColor.blue);
  72.     TeamColor = Color(Config.TeamGlowColor.red, Config.TeamGlowColor.green, Config.TeamGlowColor.blue);
  73.     LocalColor = Color(Config.LocalGlowColor.red, Config.LocalGlowColor.green, Config.LocalGlowColor.blue);
  74.     World2Color = Color(Config.WorldColor.red, Config.WorldColor.green, Config.WorldColor.blue);
  75.     Prop2Color = Color(Config.PropColor.red, Config.PropColor.green, Config.PropColor.blue);
  76.     AmbientLight2Color = Color(Config.AmbientLightColor.red, Config.AmbientLightColor.green, Config.AmbientLightColor.blue);
  77.     ArmsChams2Color = Color(Config.ArmsChamsColor.red, Config.ArmsChamsColor.green, Config.ArmsChamsColor.blue);
  78.     WeaponChams2Color = Color(Config.WeaponChamsColor.red, Config.WeaponChamsColor.green, Config.WeaponChamsColor.blue);
  79.  
  80.     static bool Pressed = false;
  81.  
  82.     if (!Pressed && GetAsyncKeyState(VK_INSERT))
  83.         Pressed = true;
  84.     else if (Pressed && !GetAsyncKeyState(VK_INSERT))
  85.     {
  86.         Pressed = false;
  87.         shouldopenmenu = !shouldopenmenu;
  88.     }
  89.  
  90.     if (shouldopenmenu)
  91.     {
  92.         // opening
  93.         if (GlobalOpacity < 255)
  94.         {
  95.             GlobalOpacity += 15;
  96.             menuOpened = true;
  97.         }
  98.     }
  99.     else
  100.     {
  101.         // closing
  102.         if (GlobalOpacity > 0)
  103.             GlobalOpacity -= 15;
  104.         else
  105.             menuOpened = false;
  106.     }
  107.  
  108.     static Vector2D oldPos;
  109.     static Vector2D mousePos;
  110.  
  111.     static int dragX = 0;
  112.     static int dragY = 0;
  113.     static int Width = MenuWidth = 600;
  114.     static int Height = 500;
  115.  
  116.     static int iScreenWidth, iScreenHeight;
  117.  
  118.     static bool Dragging = false;
  119.     bool click = false;
  120.  
  121.     static bool changed_Debug = false;
  122.     if (!changed_Debug && GetAsyncKeyState(VK_DELETE))
  123.         changed_Debug = true;
  124.     else if (changed_Debug && !GetAsyncKeyState(VK_DELETE))
  125.     {
  126.         changed_Debug = false;
  127.         Debug = !Debug;
  128.     }
  129.  
  130.     if (Config.OnKeyAim)
  131.     {
  132.         if (GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.AimHotkey)))
  133.             Config.Aimbot = true;
  134.         else
  135.             Config.Aimbot = false;
  136.     }
  137.    
  138.     g_KeyVisualizer.Draw();
  139.  
  140.     //Draw info shit for testing
  141.     if (g::pLocalEntity && g_pEngine->IsConnected() && g_pEngine->IsInGame() && Config.TopInfoBar)
  142.     {
  143.         g_pSurface->FilledRect(0, 0, iWidth, 12, Color(33, 33, 33, 125));
  144.         PlayerInfo_t pInfo;
  145.         g_pEngine->GetPlayerInfo(g_pEngine->GetLocalPlayer(), &pInfo);
  146.         std::string debug;
  147.         debug += "Name: " + (std::string)pInfo.szName;
  148.         debug += " | Health: " + std::to_string(g::pLocalEntity->GetHealth());
  149.         debug += " | Armor: " + std::to_string(g::pLocalEntity->ArmorValue());
  150.         if (g::pLocalEntity->GetActiveWeapon())
  151.             debug += " | Weapon: " + g::pLocalEntity->GetActiveWeapon()->GetName();
  152.         debug += " | Minimum Damage: " + std::to_string(Config.Mindmg);
  153.         debug += " | Hitchance: " + std::to_string(Config.HitchanceValue);
  154.         g_pSurface->DrawT(iWidth / 2, 0, Color(255, 255, 255), g::Tahoma, true, debug.c_str());
  155.     }
  156.  
  157.     if (Config.Watermark)
  158.     {
  159.         int width, height;
  160.         g_pEngine->GetScreenSize(width, height);
  161.    
  162.         static int fps, old_tick_count;
  163.  
  164.         if ((g_pGlobalVars->tickcount - old_tick_count) > 50) {
  165.             fps = static_cast<int>(1.f / g_pGlobalVars->frametime);
  166.             old_tick_count = g_pGlobalVars->tickcount;
  167.         }
  168.         char FPS;
  169.         int radix = 10;
  170.         static char buffer[256];
  171.         std::stringstream ss;
  172.         static unsigned int last_time;
  173.  
  174.         /////rainbow sync//////
  175.         last_time = GetTickCount();
  176.         Color rainbow;
  177.         rainbow.FromHSV(fmod(last_time * 0.0002f, 1.f), 1.f, 0.5f);
  178.         //////////////////////
  179.  
  180.         auto net_channel = g_pEngine->GetNetChannelInfo();
  181.         auto local_player = reinterpret_cast<C_BaseEntity*>(g_pEntityList->GetClientEntity(g_pEngine->GetLocalPlayer()));
  182.         std::string incoming = local_player ? std::to_string((int)(net_channel->GetLatency(FLOW_INCOMING) * 1000)) : "0";
  183.         std::string outgoing = local_player ? std::to_string((int)(net_channel->GetLatency(FLOW_OUTGOING) * 1000)) : "0";
  184.  
  185.         ss << "Exp0sure.xyz" << " | incoming: " << incoming.c_str() << "ms" << " | outgoing: " << outgoing.c_str() << "ms" <<" | fps: " << fps;
  186.  
  187.         RECT TextSize = g_pSurface->GetTextSizeRect(g::Tahoma, ss.str().c_str());
  188.  
  189.         g_pSurface->FilledRect(width - (TextSize.right + 20), 25, TextSize.right + 10, 2, rainbow);
  190.         g_pSurface->FilledRect(width - (TextSize.right + 20), 5, TextSize.right + 10, 20, Color(33, 33, 33));
  191.         g_pSurface->DrawT(width - (TextSize.right + 15), 8, Color(200, 200, 200), g::Tahoma, false, ss.str().c_str());
  192.     }
  193.  
  194.     g_x88Menu.Draw();
  195.  
  196.     if (g::pLocalEntity && g_pEngine->IsInGame())
  197.     {
  198.         if (Config.Aimbot && g::pLocalEntity->IsAlive())
  199.         {
  200.             C_BaseCombatWeapon *pWeapon = (C_BaseCombatWeapon*)g::pLocalEntity->GetActiveWeapon();
  201.             if (pWeapon)
  202.             {
  203.                 std::string WeaponName = pWeapon->GetName();
  204.                 if (WeaponName == "weapon_glock")
  205.                     g_Config->SetPistolConf();
  206.                 else if (WeaponName == "weapon_hkp2000")
  207.                     g_Config->SetPistolConf();
  208.                 else if (WeaponName == "weapon_p250")
  209.                     g_Config->SetPistolConf();
  210.                 else if (WeaponName == "weapon_tec9")
  211.                     g_Config->SetPistolConf();
  212.                 else if (WeaponName == "weapon_elite")
  213.                     g_Config->SetPistolConf();
  214.                 else if (WeaponName == "weapon_fiveseven")
  215.                     g_Config->SetPistolConf();
  216.                 else if (WeaponName == "weapon_deagle")
  217.                     g_Config->SetDeagleConf();
  218.                 else if (WeaponName == "weapon_nova")
  219.                     g_Config->SetScoutConf();
  220.                 else if (WeaponName == "weapon_sawedoff")
  221.                     g_Config->SetScoutConf();
  222.                 else if (WeaponName == "weapon_mag7")
  223.                     g_Config->SetScoutConf();
  224.                 else if (WeaponName == "weapon_xm1014")
  225.                     g_Config->SetScoutConf();
  226.                 else if (WeaponName == "weapon_mac10")
  227.                     g_Config->SetSmgConf();
  228.                 else if (WeaponName == "weapon_ump45")
  229.                     g_Config->SetSmgConf();
  230.                 else if (WeaponName == "weapon_mp9")
  231.                     g_Config->SetSmgConf();
  232.                 else if (WeaponName == "weapon_bizon")
  233.                     g_Config->SetSmgConf();
  234.                 else if (WeaponName == "weapon_mp7")
  235.                     g_Config->SetSmgConf();
  236.                 else if (WeaponName == "weapon_p90")
  237.                     g_Config->SetRifleConf();
  238.                 else if (WeaponName == "weapon_mp5sd")
  239.                     g_Config->SetSmgConf();
  240.                 else if (WeaponName == "weapon_galilar")
  241.                     g_Config->SetRifleConf();
  242.                 else if (WeaponName == "weapon_ak47")
  243.                     g_Config->SetRifleConf();
  244.                 else if (WeaponName == "weapon_sg556")
  245.                     g_Config->SetRifleConf();
  246.                 else if (WeaponName == "weapon_m4a1")
  247.                     g_Config->SetRifleConf();
  248.                 else if (WeaponName == "weapon_aug")
  249.                     g_Config->SetRifleConf();
  250.                 else if (WeaponName == "weapon_m249")
  251.                     g_Config->SetRifleConf();
  252.                 else if (WeaponName == "weapon_negev")
  253.                     g_Config->SetRifleConf();
  254.                 else if (WeaponName == "weapon_ssg08")
  255.                     g_Config->SetScoutConf();
  256.                 else if (WeaponName == "weapon_awp")
  257.                     g_Config->SetAwpConf();
  258.                 else if (WeaponName == "weapon_g3sg1")
  259.                     g_Config->SetAutoConf();
  260.                 else if (WeaponName == "weapon_scar20")
  261.                     g_Config->SetAutoConf();
  262.                 else
  263.                     g_Config->SetAutoConf();
  264.             }
  265.         }
  266.  
  267.         if (Config.Crosshair)
  268.         {
  269.             Vector punchAngle = g::pLocalEntity->GetAimPunchAngle();
  270.  
  271.             int x = iWidth / 2;
  272.             int y = iHeight / 2;
  273.             int dy = iHeight / 90;
  274.             int dx = iWidth / 90;
  275.             x -= (dx * (punchAngle.y));
  276.             y += (dy * (punchAngle.x));
  277.  
  278.             g_pSurface->DrawT(x + 1, y - 6, Color(255, 255, 255), g::Tahoma, true, "+");
  279.         }
  280.            
  281.  
  282.         if (Config.Antiaim && Config.DesyncAngle)
  283.         {
  284.             static bool changed_FakeSide = false;
  285.             if (!changed_FakeSide && GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.FakeSideHotkey)))
  286.                 changed_FakeSide = true;
  287.             else if (changed_FakeSide && !GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.FakeSideHotkey)))
  288.             {
  289.                 changed_FakeSide = false;
  290.                 if (Config.FakeSide == 0)
  291.                     Config.FakeSide = 2;
  292.                 else
  293.                     Config.FakeSide = 0;
  294.             }
  295.         }
  296.  
  297.         if (Config.Antiaim && (Config.YawMode == 6 || Config.YawMode == 10) && g::pLocalEntity->IsAlive())
  298.         {
  299.             static bool changed_AASide = false;
  300.             if (!changed_AASide && GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.AntiAimHotkey)))
  301.                 changed_AASide = true;
  302.             else if (changed_AASide && !GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.AntiAimHotkey)))
  303.             {
  304.                 changed_AASide = false;
  305.                 if (Config.AntiAimSide == 0)
  306.                     Config.AntiAimSide = 2;
  307.                 else
  308.                     Config.AntiAimSide = 0;
  309.             }
  310.  
  311.             if (GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.AntiAimBackHotkey)))
  312.             {
  313.                 Config.AntiAimSide = 1;
  314.             }
  315.  
  316.  
  317.             if (GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.BackHotkey)))
  318.             {
  319.                 Config.Back = true;
  320.                 Config.Right = false;
  321.                 Config.Left = false;
  322.             }
  323.             if (GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.LeftHotkey)))
  324.             {
  325.                 Config.Back = false;
  326.                 Config.Right = false;
  327.                 Config.Left = true;
  328.             }
  329.             if (GetAsyncKeyState(g_Hotkeys.GetHotkey(g_Menu.Config.RightHotkey)))
  330.             {
  331.                 Config.Back = false;
  332.                 Config.Right = true;
  333.                 Config.Left = false;
  334.             }
  335.  
  336.             if (g_Menu.Config.Back == true)
  337.             {
  338.                 g_pSurface->DrawT((iWidth / 2) - 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, "<");
  339.                 g_pSurface->DrawT((iWidth / 2) + 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, ">");
  340.                 g_pSurface->DrawT(iWidth / 2, (iHeight / 2) + 20, menu_accent, g::Tahoma, true, "v");
  341.             }
  342.             if (g_Menu.Config.Right == true)
  343.             {
  344.                 g_pSurface->DrawT((iWidth / 2) - 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, "<");
  345.                 g_pSurface->DrawT((iWidth / 2) + 20, (iHeight / 2) - 6, menu_accent, g::Tahoma, true, ">");
  346.                 g_pSurface->DrawT(iWidth / 2, (iHeight / 2) + 20, Color(255, 255, 255), g::Tahoma, true, "v");
  347.             }
  348.    
  349.             if (g_Menu.Config.Left == true)
  350.             {
  351.                 g_pSurface->DrawT((iWidth / 2) - 20, (iHeight / 2) - 6, menu_accent, g::Tahoma, true, "<");
  352.                 g_pSurface->DrawT((iWidth / 2) + 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, ">");
  353.                 g_pSurface->DrawT(iWidth / 2, (iHeight / 2) + 20, Color(255, 255, 255), g::Tahoma, true, "v");
  354.             }
  355.  
  356.  
  357.             if (Config.AntiAimSide == 0)
  358.             {
  359.                 g_pSurface->DrawT((iWidth / 2) - 20, (iHeight / 2) - 6, menu_accent, g::Tahoma, true, "<");
  360.                 g_pSurface->DrawT((iWidth / 2) + 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, ">");
  361.                 g_pSurface->DrawT(iWidth / 2, (iHeight / 2) + 20, Color(255, 255, 255), g::Tahoma, true, "v");
  362.             }
  363.             else if (Config.AntiAimSide == 2)
  364.             {
  365.                 g_pSurface->DrawT((iWidth / 2) - 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, "<");
  366.                 g_pSurface->DrawT((iWidth / 2) + 20, (iHeight / 2) - 6, menu_accent, g::Tahoma, true, ">");
  367.                 g_pSurface->DrawT(iWidth / 2, (iHeight / 2) + 20, Color(255, 255, 255), g::Tahoma, true, "v");
  368.             }
  369.             else
  370.             {
  371.                 g_pSurface->DrawT((iWidth / 2) - 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, "<");
  372.                 g_pSurface->DrawT((iWidth / 2) + 20, (iHeight / 2) - 6, Color(255, 255, 255), g::Tahoma, true, ">");
  373.                 g_pSurface->DrawT(iWidth / 2, (iHeight / 2) + 20, menu_accent, g::Tahoma, true, "v");
  374.             }
  375.         }
  376.  
  377.         if (Config.indicators)
  378.         {
  379.             if (g::pLocalEntity->IsAlive())
  380.             {
  381.                 float desyncAmt = g_AntiAim.MaxDelta(g::pLocalEntity);
  382.                 float diffrence = (g::RealAngle.y - g::pLocalEntity->GetLowerBodyYaw());
  383.                 float Velocity = g::pLocalEntity->GetVelocity().Length2D();
  384.                 int offset = 40;
  385.                 Color fake = desyncAmt <= 29 ? Color(255, 0, 0) : (desyncAmt >= 55 ? Color(132, 195, 16) : Color(255 - (desyncAmt * 2.55), desyncAmt * 2.55, 0));
  386.                 std::string choke;
  387.                 auto NetChannel = g_pEngine->GetNetChannel();
  388.  
  389.                 if (!NetChannel)
  390.                     return;
  391.  
  392.                 choke += "choke: " + std::to_string(NetChannel->m_nChokedPackets);
  393.                 g_pSurface->DrawT(20, (iHeight - offset - 90), Color(255, 255, 255), g::Indicators, false, choke.c_str());
  394.                
  395.                
  396.                 if (diffrence > 35 && Velocity < 0.1f) // we could make multi combo box for this // no -t4zzuu
  397.                     g_pSurface->DrawT(20, (iHeight - offset - 60), Color(132, 195, 16), g::Indicators, false, "LBY");
  398.                 else
  399.                     g_pSurface->DrawT(20, (iHeight - offset - 60), Color(255, 0, 0), g::Indicators, false, "LBY");
  400.  
  401.                 if (!(desyncAmt < 29) && g_Menu.Config.DesyncAngle)
  402.                     g_pSurface->DrawT(20, (iHeight - offset - 30), fake, g::Indicators, false, "FAKE");
  403.             }
  404.         }
  405.  
  406.         if (Config.shotcounter)
  407.         {
  408.             if (g::pLocalEntity->IsAlive())
  409.             {
  410.                 std::string shotscounter;
  411.                 std::string shotscounter2;
  412.                 std::string shotscounter3;
  413.                 shotscounter += "   shot: " + std::to_string(g::shots);
  414.                 shotscounter2 += "  hit: " + std::to_string(g::hits);
  415.                 shotscounter3 += "  miss: " + std::to_string(g::shots - g::hits);
  416.                 g_pSurface->DrawT(55, 400, Color(255, 255, 255), g::Indicators, true, shotscounter.c_str());
  417.                 g_pSurface->DrawT(55, 430, Color(255, 255, 255), g::Indicators, true, shotscounter2.c_str());
  418.                 g_pSurface->DrawT(55, 460, Color(255, 255, 255), g::Indicators, true, shotscounter3.c_str());
  419.            
  420.             }
  421.         }
  422.  
  423.         if (Config.DrawAimFov) //draw fov
  424.         {
  425.             if (Config.Aimbot && Config.AimbotFov > 0)
  426.             {
  427.                 Color FovColor(Config.AimFovColor.red, Config.AimFovColor.green, Config.AimFovColor.blue, 100);
  428.                 g_pSurface->OutlineCircle(iWidth / 2, iHeight / 2, Config.AimbotFov * 11, 100, FovColor);
  429.             }
  430.             else if (Config.LegitAimbot && Config.LegitAimFov > 0)
  431.             {
  432.                 Color FovColor(Config.AimFovColor.red, Config.AimFovColor.green, Config.AimFovColor.blue, 100);
  433.                 g_pSurface->OutlineCircle(iWidth / 2, iHeight / 2, Config.LegitAimFov * 11, 100, FovColor);
  434.             }
  435.         }
  436.     }
  437.  
  438.     if (menuOpened)
  439.     {
  440.         menu_background.alpha = GlobalOpacity;
  441.         menu_background2.alpha = GlobalOpacity;
  442.         menu_text.alpha = GlobalOpacity;
  443.         menu_accent.alpha = GlobalOpacity;
  444.  
  445.         if (GetAsyncKeyState(VK_LBUTTON))
  446.             click = true;
  447.  
  448.         g_pEngine->GetScreenSize(iScreenWidth, iScreenHeight);
  449.         Vector2D MousePos = g_pSurface->GetMousePosition();
  450.  
  451.         if (Dragging && !click)
  452.             Dragging = false;
  453.  
  454.         if (Dragging && click)
  455.         {
  456.             Pos.x = MousePos.x - dragX;
  457.             Pos.y = MousePos.y - dragY;
  458.         }
  459.  
  460.         if (g_pSurface->MouseInRegion(Pos.x, Pos.y, Width, 24))
  461.         {
  462.             Dragging = true;
  463.             dragX = MousePos.x - Pos.x;
  464.             dragY = MousePos.y - Pos.y;
  465.         }
  466.  
  467.         if (Pos.x < 0)
  468.             Pos.x = 0;
  469.         if (Pos.y < 0)
  470.             Pos.y = 0;
  471.         if ((Pos.x + Width) > iScreenWidth)
  472.             Pos.x = iScreenWidth - Width;
  473.         if ((Pos.y + Height) > iScreenHeight)
  474.             Pos.y = iScreenHeight - Height;
  475.  
  476.         // START MENU
  477. #pragma region Menu
  478.  
  479.         // Main Background
  480.         g_pSurface->FilledRect(Pos.x, Pos.y, Width, Height, menu_background);
  481.         g_pSurface->OutlinedRect(Pos.x, Pos.y, Width, Height, menu_accent);
  482.  
  483.         // Header
  484.         g_pSurface->DrawT(Pos.x + (Width / 2), Pos.y + 6, menu_accent, g::SansSerif, true, "Exp0sure.xyz");  // if you got some brain you know what is this
  485.  
  486. #pragma endregion
  487.  
  488.  
  489.  
  490.         GroupTabPos[0] = Pos.x + 16;
  491.         GroupTabPos[1] = Pos.y + 55;
  492.         GroupTabPos[2] = Width - 32;
  493.         GroupTabPos[3] = Height - 98;
  494.  
  495.         OffsetY = GroupTabPos[1] + 8;
  496.         ControlsX = GroupTabPos[0];
  497.         ControlsX2 = ControlsX + ((Width / 2) - 30);
  498.         GroupTabBottom = GroupTabPos[1] + GroupTabPos[3];
  499.  
  500.         TabOffset = 0;
  501.         SubTabOffset = 0;
  502.         PreviousControl = -1;
  503.         OldOffsetY = 0;
  504.  
  505.         Tab("Legit");
  506.         {
  507.             CheckBox("Legit Aimbot", &Config.LegitAimbot);
  508.             Slider(100, "Legit Aim Speed", &Config.AimSpeed);
  509.             Slider(15, "Legit Aim Fov", &Config.LegitAimFov);
  510.             KeyBind("Legit Aim Key", &Config.LegitAimKey);
  511.             ComboBox("Legit Aim Hitbox", { "Head", "Chest", "Pelvis" }, &Config.LegitAimHitbox);
  512.             CheckBox("Recoil Control System", &Config.RecoilControlSystem, "Not standalone");
  513.             if (Config.RecoilControlSystem)
  514.             {
  515.                 Slider(100, "RCS X", &Config.RCS_X);
  516.                 Slider(100, "RCS Y", &Config.RCS_Y);
  517.             }
  518.             CheckBox("Legit Backtracking", &Config.LegitBacktrack, "Uses closest recording tickcount to crosshair as tickcount to backtrack");
  519.         }
  520.  
  521.         Tab("Aimbot");
  522.         {
  523.             SubTab("Main");
  524.             {
  525.                 CheckBox("Enable", &Config.Aimbot);
  526.                 CheckBox("Silent Aim", &Config.SilentAim, "Turns on and off visual aimbot snapping");
  527.                 if (!Config.SilentAim)
  528.                     CheckBox("Show Recoil", &Config.AimShowRecoil);
  529.                 CheckBox("Auto Stop", &Config.Autostop);
  530.                 if (Config.Autostop)
  531.                 {
  532.                     ComboBox("Autostop Mode", { "Fullstop", "Minspeed" , "Custom" }, &Config.AutoStopMode);
  533.                     if (Config.AutoStopMode == 2)
  534.                         Slider(100, "Custom Autostop Speed", &Config.customstop);
  535.                     CheckBox("Stop In Between Shots", &Config.StopInBetweenShots);
  536.                 }
  537.                 CheckBox("Auto Scope", &Config.AutoScope);
  538.                 Slider(180, "Aim Field Of View", &Config.AimbotFov);
  539.                 CheckBox("Resolver", &Config.Resolver, "Tries to adjust enemys angles to fix desynced animations");
  540.                 CheckBox("Friendly Fire", &Config.FriendlyFire , "Makes aimbot target teammates");
  541.                 CheckBox("Position Adjustment", &Config.PosBacktrack);
  542.                 CheckBox("Backtrack Lower Body", &Config.LbyBacktrack, "Tries to backtrack the enemys lby, useful when enemy not resolvable");
  543.                 CheckBox("Fake Lag Prediction", &Config.FakeLagPrediction , "Tried to predict enemys fakelag");
  544.                 CheckBox("On Key Aim (mouse5)", &Config.OnKeyAim);
  545.                 ComboBox("Aim Key", { "Mouse 1", "Mouse 2", "Middle Mouse", "Mouse 5", "Mouse 4", "Left Shift", "Left Control", "Left Arrow", "Up Arrow", "Right Arrow", "Down Arrow", "C Key", "H Key", "X Key", "V Key" }, &Config.AimHotkey);
  546.                 CheckBox("Automatic Revolver", &Config.AutoRevolver , "Automaticly Cogs Resolver");
  547.                 CheckBox("Automatic Weapons", &Config.AutomaticWeapons);
  548.  
  549.                 OffsetY = GroupTabPos[1] + 28;
  550.                 ControlsX = GroupTabPos[0] + (Width / 2);
  551.                 ControlsX2 = ControlsX + ((Width / 2) - 30);
  552.  
  553.                 ComboBox("Weapon", { "Auto", "Rifle" , "Scout" ,"Pistol", "Awp" , "Heavy" }, &Config.weaponmode);
  554.                 if (Config.weaponmode == 0)
  555.                 {
  556.                     Slider(100, "Auto Minimum Damage", &Config.AutoMD);
  557.                     Slider(100, "Auto Hitchance Damage", &Config.AutoHC);
  558.                     Slider(100, "Auto Head Scale", &Config.AutoHS);
  559.                     Slider(100, "Auto Body Scale", &Config.AutoBS);
  560.                 }
  561.                 if (Config.weaponmode == 1)
  562.                 {
  563.                     Slider(100, "Rifle Minimum Damage", &Config.RifleMD);
  564.                     Slider(100, "Rifle Hitchance Damage", &Config.RifleHC);
  565.                     Slider(100, "Rifle Head Scale", &Config.RifleHS);
  566.                     Slider(100, "Rifle Body Scale", &Config.RifleBS);
  567.                 }
  568.                 if (Config.weaponmode == 2)
  569.                 {
  570.                     Slider(100, "Scout Minimum Damage", &Config.ScoutMD);
  571.                     Slider(100, "Scout Hitchance Damage", &Config.ScoutHC);
  572.                     Slider(100, "Scout Head Scale", &Config.ScoutHS);
  573.                     Slider(100, "Scout Body Scale", &Config.ScoutBS);
  574.                 }
  575.                 if (Config.weaponmode == 3)
  576.                 {
  577.                     Slider(100, "Pistol Minimum Damage", &Config.PistolMD);
  578.                     Slider(100, "Pistol Hitchance Damage", &Config.PistolHC);
  579.                     Slider(100, "Pistol Head Scale", &Config.PistolHS);
  580.                     Slider(100, "Pistol Body Scale", &Config.PistolBS);
  581.                 }
  582.                 if (Config.weaponmode == 4)
  583.                 {
  584.                     Slider(150, "Awp Minimum Damage", &Config.AwpMD);
  585.                     Slider(100, "Awp Hitchance Damage", &Config.AwpHC);
  586.                     Slider(100, "Awp Head Scale", &Config.AwpHS);
  587.                     Slider(100, "Awp Body Scale", &Config.AwpBS);
  588.                 }
  589.                 if (Config.weaponmode == 5)
  590.                 {
  591.                     Slider(150, "Heavy Minimum Damage", &Config.DeagleMD);
  592.                     Slider(100, "Heavy Hitchance Damage", &Config.DeagleHC);
  593.                     Slider(100, "Heavy Head Scale", &Config.DeagleHS);
  594.                     Slider(100, "Heavy Body Scale", &Config.DeagleBS);
  595.                 }
  596.  
  597.                 CheckBox("Head Hitbox", &Config.HB_Head);
  598.                 CheckBox("Arms Hitbox", &Config.HB_Arms);
  599.                 CheckBox("Chest Hitbox", &Config.HB_Chest);
  600.                 CheckBox("Pelvis Hitbox", &Config.HB_Pelvis);
  601.                 CheckBox("Thighs Hitbox", &Config.HB_Thighs);
  602.                 CheckBox("Feet Hitbox", &Config.HB_Feet);
  603.             }
  604.  
  605.             OffsetY = GroupTabPos[1] + 8;
  606.             ControlsX = GroupTabPos[0];
  607.             ControlsX2 = ControlsX + ((Width / 2) - 30);
  608.  
  609.             SubTab("advanced");
  610.             {
  611.                 CheckBox("Baim Lethal", &Config.BaimLethal , "Makes aimbot target body parts when its lethal");
  612.                 CheckBox("Baim In Air", &Config.BaimInAir , "Makes aimbot target body parts when enemy is in air");
  613.                 Slider(20, "Baim After X Shots", &Config.BaimAfterXShots);
  614.                 Slider(20, "Baim After X Missed Shots", &Config.BaimAfterXMissedShots);
  615.             }
  616.         }
  617.  
  618.         Tab("AntiAim");
  619.         {
  620.             CheckBox("Enable", &Config.Antiaim);
  621.             ComboBox("Anti Aim Flags", { "On Ground", "In Air" }, &AntiAimFlag);
  622.             if (AntiAimFlag == 0)
  623.             {
  624.                 ComboBox("Yaw", { "Backwards", "Spin", "Freestanding", "Manual" , "Forwards" , "Legit AA", "Freestanding Desync"}, & Config.YawMode);
  625.                 if (Config.YawMode == 4)
  626.                     Slider(1000, "Spin Speed", &Config.SpeedSpin);
  627.                 if (Config.YawMode == 10)
  628.                 {
  629.  
  630.                     KeyBind("Anti Aim Switch Key", &Config.AntiAimHotkey);
  631.                     KeyBind("Anti Aim Back Key", &Config.AntiAimBackHotkey);
  632.                 }
  633.                 if (Config.YawMode == 6)
  634.                 {
  635.                     ComboBox("Manual Mode", { "Mode1", "Mode2" }, &Config.ManualMode);
  636.                     if (Config.ManualMode == 1)
  637.                     {
  638.                         KeyBind("Anti Aim Right Key", &Config.RightHotkey);
  639.                         KeyBind("Anti Aim Left Key", &Config.LeftHotkey);
  640.                         KeyBind("Anti Aim Back Key", &Config.BackHotkey);
  641.                     }
  642.                     else
  643.                     {
  644.                         KeyBind("Anti Aim Switch Key", &Config.AntiAimHotkey);
  645.                         KeyBind("Anti Aim Back Key", &Config.AntiAimBackHotkey);
  646.                     }
  647.                 }
  648.  
  649.                 if (Config.YawMode == 7)
  650.                     Slider(360, "Fixed Yaw Value", &Config.FixedCustomYaw);
  651.                 Slider(360, "Jitter Range", &Config.JitterRange);
  652.                 ComboBox("Jitter Mode", { "Offset", "Random", "Jitter Desync", "Slide" }, &Config.JitterMode);
  653.                 if (Config.JitterMode == 3)
  654.                     Slider(100, "Slide Speed", &Config.SlideSpeed);
  655.                 ComboBox("Pitch", { "Down", "Nazi Down", "Half Down", "Zero", "Up", "Jitter Up/Down", "Custom", "Nospread", "Nospread 2", "View" }, & Config.PitchMode);
  656.                 if (Config.PitchMode == 6)
  657.                     Slider(180, "Custom Pitch", &Config.CustomPitchValue);
  658.                 if (Config.YawMode == 0)
  659.                 {
  660.                     Slider(360, "Body Lean", &Config.BodyLean);
  661.                     Slider(360, "Body Lean Inverted", &Config.BodyLeanInverted);
  662.                 }
  663.                 CheckBox("Desync Angle", &Config.DesyncAngle);
  664.                 if (Config.DesyncAngle)
  665.                 {
  666.                     if (Config.YawMode != 9)
  667.                         ComboBox("Desync Mode", { "Normal", "Experimental", "Maximum", "Experimental" }, &Config.DesyncMode);
  668.                     ComboBox("Desync Fake Side Key", { "Mouse 1", "Mouse 2", "Middle Mouse", "Mouse 5", "Mouse 4", "Left Shift", "Left Control", "Left Arrow", "Up Arrow", "Right Arrow", "Down Arrow", "C Key", "H Key", "X Key", "V Key" }, &Config.FakeSideHotkey);
  669.                 }
  670.             }
  671.  
  672.             OffsetY = GroupTabPos[1] + 8;
  673.             ControlsX = GroupTabPos[0] + (Width / 2);
  674.             ControlsX2 = ControlsX + ((Width / 2) - 30);
  675.  
  676.             CheckBox("Lby Breaker", &Config.LbyBreaker, "Breaks Lower Body Yaw");
  677.             if (Config.LbyBreaker)
  678.             {
  679.                 Slider(360, "Lby Offset Add", &Config.LbyAdd);
  680.                 CheckBox("Lby Static", &Config.StaticLby);
  681.                 CheckBox("SendPacket On Break", &Config.SendPacketOnBreak , "Allows to send packets on lby flicks");
  682.             }
  683.             CheckBox("Zero Pitch On Land", &Config.ZeroPitchOnLand);
  684.             CheckBox(Config.Antiaim ? "Slide Fix" : "Slide Walk", &Config.SlideWalk);
  685.             CheckBox("Anti Aim Indicators", &Config.AntiAimIndicator, "Shows angle lines while in thirdperson");
  686.             if (Config.AntiAimIndicator)
  687.                 CheckBox("Advanced AA Indicators", &Config.AdvancedAAIndicator);
  688.             ComboBox("On Shot AA", { "Normal", "Fast" }, & Config.OnShotAA);
  689.             CheckBox("Show Server Hitboxes", &Config.ShowServerHitboxes, "Shows your 'real' hitboxes networked by the server");
  690.         }
  691.  
  692.         OffsetY = GroupTabPos[1] + 8;
  693.         ControlsX = GroupTabPos[0];
  694.         ControlsX2 = ControlsX + ((Width / 2) - 30);
  695.  
  696.         Tab("Visuals");
  697.         {
  698.             SubTab("Esp");
  699.             {
  700.                 ComboBox("Entitys", { "Player", "Bomb" }, &EspType); // For switching settings!
  701.                 switch (EspType)
  702.                 {
  703.                 case 0: // Player
  704.                     ComboBox("Enable", { "Off","On","Dead" }, &Config.Esp);
  705.                     CheckBox("2D Box", &Config.Box);
  706.                     ColorPicker("Esp Box Color", Config.BoxColor);
  707.                     CheckBox("Health Based Esp", &Config.HbEsp);
  708.                     CheckBox("Team Esp", &Config.TeamEsp);
  709.                     ComboBox("Show Name", { "Off", "Left Align", "Center" }, & Config.Name);
  710.                     ColorPicker("Name Color", Config.NameColor);
  711.                     CheckBox("Show Health", &Config.Health);
  712.                     ColorPicker("Health Color", Config.HealthColor);
  713.                     ComboBox("Show Health Bar", { "Off", "Static Color", "Health Based" }, & Config.HealthBar);
  714.                     ColorPicker("Health Bar Color", Config.HealthBarColor);
  715.                     CheckBox("Show Money", &Config.Money);
  716.                     CheckBox("Ammo Bar", &Config.ammo);
  717.                     ColorPicker("Money Color", Config.MoneyColor);
  718.                     ComboBox("Show Weapon", { "Off", "Right", "Bottom" }, & Config.Weapon);
  719.                     ColorPicker("Weapon Color", Config.WeaponColor);
  720.                     CheckBox("Show Yaw/Pitch", &Config.YawPitch);
  721.                     ColorPicker("Yaw/Pitch Color", Config.YawPitchColor);
  722.  
  723.                     OffsetY = GroupTabPos[1] + 28;
  724.                     ControlsX = GroupTabPos[0] + (Width / 2);
  725.                     ControlsX2 = ControlsX + ((Width / 2) - 30);
  726.  
  727.                     CheckBox("Spectator List", &Config.SpecList);
  728.                     CheckBox("No Smoke", &Config.NoSmoke);
  729.                     CheckBox("No Flash", &Config.NoFlash);
  730.                     if (Config.NoFlash)
  731.                         Slider(255, "Flash Duration", &Config.FlashDuration);
  732.                     CheckBox("Preserve Kill Feed", &Config.PreserveKillFeed);
  733.                     CheckBox("Offscreen Esp", &Config.FovEnable);
  734.                     ColorPicker("Offscreen Color", Config.FovColor);
  735.                     if (Config.FovEnable)
  736.                     {
  737.                         Slider(255, "OffScreen Distance", &Config.FovSize);
  738.                         Slider(30, "OffScreen Size", &Config.FovDistance);
  739.                     }
  740.                     CheckBox("Visualize Player Hits", &Config.VizualizeHits);
  741.                     ColorPicker("Vizualize Hits Color", Config.CapsuleColor);
  742.                     CheckBox("Aspect Ratio Changer", &Config.aspectratio);
  743.                     if(Config.aspectratio)
  744.                         SliderFloat(10.f, "Aspect Ratio Value", &Config.aspectvalue);
  745.                     break;
  746.                 case 1: // Bomb
  747.                     CheckBox("Bomb Esp", &Config.BombEsp);
  748.                     break;
  749.                 default:
  750.                     break;
  751.                 }
  752.             }
  753.  
  754.             OffsetY = GroupTabPos[1] + 8;
  755.             ControlsX = GroupTabPos[0];
  756.             ControlsX2 = ControlsX + ((Width / 2) - 30);
  757.  
  758.             SubTab("Glow");
  759.             {
  760.                 CheckBox("Enemy Glow", &Config.EnemyGlow);
  761.                 if (Config.EnemyGlow)
  762.                 {
  763.                     Slider(255, "Enemy Glow Red", &EnemyColor.red);
  764.                     Slider(255, "Enemy Glow Green", &EnemyColor.green);
  765.                     Slider(255, "Enemy Glow Blue", &EnemyColor.blue);
  766.                     Config.EnemyGlowColor = { (float)EnemyColor.red, (float)EnemyColor.green, (float)EnemyColor.blue };
  767.                     Slider(255, "Enemy Glow Opacity", &Config.EnemyGlowOpacity);
  768.                 }
  769.                 CheckBox("Team Glow", &Config.TeamGlow);
  770.                 if (Config.TeamGlow)
  771.                 {
  772.                     Slider(255, "Team Glow Red", &TeamColor.red);
  773.                     Slider(255, "Team Glow Green", &TeamColor.green);
  774.                     Slider(255, "Team Glow Blue", &TeamColor.blue);
  775.                     Config.TeamGlowColor = { (float)TeamColor.red, (float)TeamColor.green, (float)TeamColor.blue };
  776.                     Slider(255, "Team Glow Opacity", &Config.TeamGlowOpacity);
  777.                 }
  778.  
  779.                 OffsetY = GroupTabPos[1] + 28;
  780.                 ControlsX = GroupTabPos[0] + (Width / 2);
  781.                 ControlsX2 = ControlsX + ((Width / 2) - 30);
  782.  
  783.                 CheckBox("Local Glow", &Config.LocalGlow);
  784.                 if (Config.LocalGlow)
  785.                 {
  786.                     ComboBox("Local Glow Mode", { "Basic", "Pulse", "Outline" }, &Config.LocalGlowMode);
  787.                     Slider(255, "Local Glow Red", &LocalColor.red);
  788.                     Slider(255, "Local Glow Green", &LocalColor.green);
  789.                     Slider(255, "Local Glow Blue", &LocalColor.blue);
  790.                     Config.LocalGlowColor = { (float)LocalColor.red, (float)LocalColor.green, (float)LocalColor.blue };
  791.                     Slider(255, "Local Glow Opacity", &Config.LocalGlowOpacity);
  792.                 }
  793.             }
  794.  
  795.             OffsetY = GroupTabPos[1] + 8;
  796.             ControlsX = GroupTabPos[0];
  797.             ControlsX2 = ControlsX + ((Width / 2) - 30);
  798.  
  799.             SubTab("Rendering");
  800.             {
  801.                 CheckBox("No Zoom", &Config.NoZoom);
  802.                 CheckBox("No Scope", &Config.NoScope);
  803.                 CheckBox("No Recoil", &Config.NoRecoil);
  804.                 Slider(150, "Fov", &Config.Fov);
  805.                 Slider(150, "Thirdperson Fov", &Config.ThirdpersonFov);
  806.                 Slider(250, "Viewmodel Fov", &Config.ViewmodelFov);
  807.                 CheckBox("Draw Aim Fov Circle", &Config.DrawAimFov);
  808.                 ColorPicker("Aim Fov Circle Color", Config.AimFovColor);
  809.                 CheckBox("Recoil Crosshair", &Config.Crosshair);
  810.                 if (Config.NoRecoil)
  811.                     Slider(2.f, "Aimpunch Amount", &Config.AimPunchVal);
  812.                 CheckBox("Disable Post Processing", &Config.DisablePostProcess);
  813.  
  814.                 OffsetY = GroupTabPos[1] + 28;
  815.                 ControlsX = GroupTabPos[0] + (Width / 2);
  816.                 ControlsX2 = ControlsX + ((Width / 2) - 30);
  817.  
  818.                 CheckBox("Night Mode", &Config.Nightmode);
  819.                 if (Config.Nightmode)
  820.                 {
  821.                     Slider(255, "World Red", &World2Color.red);
  822.                     Slider(255, "World Green", &World2Color.green);
  823.                     Slider(255, "World Blue", &World2Color.blue);
  824.                     Config.WorldColor = { (float)World2Color.red, (float)World2Color.green, (float)World2Color.blue };
  825.                     Slider(255, "Prop Red", &Prop2Color.red);
  826.                     Slider(255, "Prop Green", &Prop2Color.green);
  827.                     Slider(255, "Prop Blue", &Prop2Color.blue);
  828.                     Config.PropColor = { (float)Prop2Color.red, (float)Prop2Color.green, (float)Prop2Color.blue };
  829.                 }
  830.                 CheckBox("Proper Night Mode", &Config.ProperNightmode);
  831.                 if (Config.ProperNightmode || Config.Nightmode)
  832.                     Slider(255, "Object Blend", &Config.NightmodeBlend);
  833.             }
  834.  
  835.             OffsetY = GroupTabPos[1] + 8;
  836.             ControlsX = GroupTabPos[0];
  837.             ControlsX2 = ControlsX + ((Width / 2) - 30);
  838.  
  839.             SubTab("Rendering 2");
  840.             {
  841.                 CheckBox("Ambient Light Controller", &Config.AmbientLight);
  842.                 if (Config.AmbientLight)
  843.                 {
  844.                     Slider(255, "Ambient Light Red", &AmbientLight2Color.red);
  845.                     Slider(255, "Ambient Light Green", &AmbientLight2Color.green);
  846.                     Slider(255, "Ambient Light Blue", &AmbientLight2Color.blue);
  847.                     Config.AmbientLightColor = { (float)AmbientLight2Color.red, (float)AmbientLight2Color.green, (float)AmbientLight2Color.blue };
  848.                 }
  849.  
  850.                 CheckBox("Trace Bullets", &Config.BulletTracers);
  851.                 if (Config.BulletTracers)
  852.                 {
  853.                     CheckBox("Trace Bullets Ipacts", &Config.Impacts);
  854.                     ComboBox("Impact Type", { "Square", "Sphere"}, & Config.ImpactType);
  855.                     CheckBox("Trace Enemy Bullets" ,&Config.monkey2);
  856.                     ColorPicker("Bullet Tracer Enemy Color", Config.BulletTracerEnemyColor);
  857.                     CheckBox("Trace Local Player Bullets", &Config.monkey);
  858.                     ColorPicker("Bullet Tracer Local Color", Config.BulletTracerLocalColor);
  859.                 }
  860.                 CheckBox("Kill Counter", &Config.KillCounter);
  861.             }
  862.  
  863.             SubTab("Chams");
  864.             {
  865.                 ComboBox("Chams Model", { "Players", "Viewmodel" }, &Chamstype);
  866.                 switch (Chamstype)
  867.                 {
  868.                 case 0:
  869.                     ComboBox("Chams Material", { "Metallic VertexLitGeneric", "Plastic VertexLitGeneric", "Unlit Generic", "Animated" }, &Config.ChamsMaterial);
  870.  
  871.                     CheckBox("Enemy Chams", &Config.EnemyChams);
  872.                     if (Config.EnemyChams)
  873.                     {
  874.                         ColorPicker("Enemy Chams Visible", Config.EnemyVisChamsColor);
  875.                         CheckBox("Enemy XQZ Chams", &Config.EnemyXQZChams);
  876.                         ColorPicker("Enemy Chams XQZ", Config.EnemyXQZChamsColor);
  877.                         ComboBox("BT Chams", { "Off", "Purple->Cyan", "White->Black", "Chams->Transparent", "Last White" }, & Config.BacktrackingChams);
  878.                     }
  879.  
  880.                     CheckBox("Team Chams", &Config.TeamChams);
  881.                     if (Config.TeamChams)
  882.                     {
  883.                         ColorPicker("Team Chams Visible", Config.TeamVisChamsColor);
  884.                         CheckBox("Team XQZ Chams", &Config.TeamXQZChams);
  885.                         ColorPicker("Team Chams XQZ", Config.TeamXQZChamsColor);
  886.                     }
  887.  
  888.                     CheckBox("Local Chams", &Config.LocalChams);
  889.                     ComboBox("ModelChanger", { "FBI 1", "FBI 2", "FBI 3", "FBI 4", "SAS", "ST6 1", "ST6 2", "ST6 3", "ST6 4", "ST6 5","ST6 6", "Balkan 1", "Balkan 2", "Balkan 3", "Balkan 4", "Balkan 5", "Leet 1", "Leet 2", "Leet 3", "Leet 4", "Phoenix 1", "Phoenix 2", "Phoenix 3", "Heavy Phoenix", "Jumpsuit", }, & Config.Modelchanger);
  890.                     if (Config.LocalChams)
  891.                     {
  892.                         ColorPicker("Local Chams Visible", Config.LocalVisChamsColor);
  893.                         CheckBox("Local XQZ Chams", &Config.LocalXQZChams);
  894.                         ColorPicker("Local Chams XQZ", Config.LocalXQZChamsColor);
  895.                     }
  896.  
  897.                     if (Config.Antiaim && Config.DesyncAngle)
  898.                     {
  899.                         CheckBox("Desync Chams/Ghost Chams", &Config.DesyncChams);
  900.                         if (Config.DesyncChams)
  901.                         {
  902.                             ColorPicker("Desync Chams Color", Config.DesyncChamsColor);
  903.                             Slider(255, "Desync Chams Transparency", &Config.DesyncChamsTransparency);
  904.                         }
  905.                     }
  906.                     break;
  907.                 case 1:
  908.                     CheckBox("Viewmodel stuff", &Config.viewmodelchams);
  909.                     if (Config.viewmodelchams)
  910.                     {
  911.                         CheckBox("Hand Chams", &Config.ArmsChams);
  912.                         if (Config.ArmsChams)
  913.                         {
  914.                             ComboBox("Arms Chams Mode", { "Normal","Light" }, &Config.ArmsChamsMode);
  915.                             Slider(255, "Arms Chams Red", &ArmsChams2Color.red);
  916.                             Slider(255, "Arms Chams Green", &ArmsChams2Color.green);
  917.                             Slider(255, "Arms Chams Blue", &ArmsChams2Color.blue);
  918.                             Config.ArmsChamsColor = { (float)ArmsChams2Color.red, (float)ArmsChams2Color.green, (float)ArmsChams2Color.blue };
  919.                             Slider(255, "Arms Chams Transparency", &Config.ArmsChamsTransparency);
  920.                             CheckBox("Arms Chams WireFrame", &Config.ArmsWireFrame);
  921.                         }
  922.                        
  923.                         CheckBox("Weapon Chams", &Config.WeaponChams);
  924.                         if (Config.WeaponChams)
  925.                         {
  926.                             Slider(255, "Weapon Chams Red", &WeaponChams2Color.red);
  927.                             Slider(255, "Weapon Chams Green", &WeaponChams2Color.green);
  928.                             Slider(255, "Weapon Chams Blue", &WeaponChams2Color.blue);
  929.                             Config.WeaponChamsColor = { (float)WeaponChams2Color.red, (float)WeaponChams2Color.green, (float)WeaponChams2Color.blue };
  930.                         }
  931.                     }
  932.                     break;
  933.                 default:
  934.                     break;
  935.                 }
  936.             }
  937.         }
  938.  
  939.         OffsetY = GroupTabPos[1] + 8;
  940.         ControlsX = GroupTabPos[0];
  941.         ControlsX2 = ControlsX + ((Width / 2) - 30);
  942.  
  943.         Tab("Misc");
  944.         {
  945.             SubTab("First");
  946.             {
  947.                 ComboBox("Fake Lag Type", { "Off","Factor", "Adaptive", "Switch" }, & Config.FakeLagType);
  948.                 Slider(20, "Fake Lag Value On Ground", &Config.FakeLagValue);
  949.                 Slider(20, "Fake Lag Value In Air", &Config.FakeLagValueGround);
  950.                 CheckBox("Show FakeLag", &Config.ShowLag);
  951.                 ColorPicker("Show FakeLag Color", Config.ShowLagColor);
  952.                 CheckBox("Slow Walk", &Config.SlowWalk);
  953.  
  954.                 OffsetY = GroupTabPos[1] + 28;
  955.                 ControlsX = GroupTabPos[0] + (Width / 2);
  956.                 ControlsX2 = ControlsX + ((Width / 2) - 30);
  957.  
  958.                 if (Config.SlowWalk)
  959.                 {
  960.                     ComboBox("Slow Walk Type", { "Hitchance Based", "Weapon Based", "Custom" }, &Config.SlowWalkType);
  961.                     if (Config.SlowWalkType == 2)
  962.                         Slider(100, "Custom Speed", &Config.SlowWalkAmount);
  963.                     CheckBox("Stop Leg Animations", &Config.StopLegAnim);
  964.                 }
  965.                 CheckBox("Hitmarker", &Config.VisHitmarker);
  966.                 if (Config.VisHitmarker)
  967.                     CheckBox("Show Dmg", &Config.ShowDmg);
  968.                 CheckBox("Log Damage", &Config.LogDamage);
  969.                 CheckBox("Crouch Block", &Config.blockbotonhead);
  970.                 if(Config.blockbotonhead)
  971.                     KeyBind("^ Key", &Config.BlockBotKey);
  972.                 CheckBox("Buy Bot", &Config.BuyBot.enable);
  973.                 if (Config.BuyBot.enable)
  974.                 {
  975.                     ComboBox("Primary Weapon", { "None","Auto","Awp", "Scout"}, &Config.BuyBot.main);
  976.                     ComboBox("Secondary Weapon", { "None","Heavy", "Dualies" }, & Config.BuyBot.second);
  977.                     ComboBox("Armor", { "None", "Kevlar + Helmet" }, & Config.BuyBot.armor);
  978.                     ComboBox("Grenades", { "None", "All" }, & Config.BuyBot.grenade);
  979.                 }
  980.                 Button("Hide Name", &InvisName);
  981.             }
  982.  
  983.             OffsetY = GroupTabPos[1] + 8;
  984.             ControlsX = GroupTabPos[0];
  985.             ControlsX2 = ControlsX + ((Width / 2) - 30);
  986.  
  987.             SubTab("Second");
  988.             {
  989.                 ComboBox("Hitsound", { "None","Metallic", "Cod", "Rifk", "Bubble", "Bameware", "Yonen Moan", "Custom 1", "Custom 2", "Custom 3", "Custom 4", "Custom 5" }, & Config.Hitmarker);
  990.                 KeyBind("Thirdperson Hotkey", &Config.ThirdpersonHotkey);
  991.                 ComboBox("Clantag Spammer", { "Off", "Static", "Rotate", "Ev0lve", "Penguware", "Clapware.clap", "Do not click ;)" }, & Config.ClanTagMode);
  992.                 CheckBox("Override Viewmodel", &Config.OverrideViewmodel);
  993.                 if (Config.OverrideViewmodel)
  994.                 {
  995.                     Slider(60, "Viewmodel X", &Config.ViewmodelOffsetX);
  996.                     Slider(60, "Viewmodel Y", &Config.ViewmodelOffsetY);
  997.                     Slider(60, "Viewmodel Z", &Config.ViewmodelOffsetZ);
  998.                     Slider(360, "Roll", &Config.roll);
  999.                 }
  1000.                 CheckBox("Knife Left Side", &Config.KnifeLeftSide);
  1001.                 CheckBox("Key Visualization", &Config.KeyVisualizer);
  1002.                 CheckBox("Bunnyhop", &Config.Bhop);
  1003.                 CheckBox("Auto Strafe", &Config.AutoStrafe);
  1004.                 CheckBox("Quick Bomb Plant", &Config.quickerplant);
  1005.                 CheckBox("namestealer", &Config.namestealer);
  1006.  
  1007.                 OffsetY = GroupTabPos[1] + 28;
  1008.                 ControlsX = GroupTabPos[0] + (Width / 2);
  1009.                 ControlsX2 = ControlsX + ((Width / 2) - 30);
  1010.  
  1011.                 CheckBox("Edge Jump", &Config.EdgeJump);
  1012.                 KeyBind("Edge Jump Key", &Config.EdgeJumpKey);
  1013.                 CheckBox("Indicators", &Config.indicators);
  1014.                 CheckBox("Shot Counter", &Config.shotcounter);
  1015.                 CheckBox("Disable Panorama Blur", &Config.DisablePanoramaBlur);
  1016.                 CheckBox("Watermark", &Config.Watermark);
  1017.                 CheckBox("Anti Client Crasher", &Config.AntiClientCrasher, "Prevents users from eploiting the invite system to crash your CS:GO");
  1018.             }
  1019.         }
  1020.  
  1021.         OffsetY = GroupTabPos[1] + 8;
  1022.         ControlsX = GroupTabPos[0];
  1023.         ControlsX2 = ControlsX + ((Width / 2) - 30);
  1024.  
  1025.         Tab("Config");
  1026.         {
  1027.             static bool overridemenucolor;
  1028.             CheckBox("Override Accent", &overridemenucolor);
  1029.             if (overridemenucolor)
  1030.             {
  1031.                 Slider(255, "Accent Red", &menu_accent.red);
  1032.                 Slider(255, "Accent Green", &menu_accent.green);
  1033.                 Slider(255, "Accent Blue", &menu_accent.blue);
  1034.                 Config.MenuColor = { (float)menu_accent.red, (float)menu_accent.green, (float)menu_accent.blue };
  1035.             }
  1036.             CheckBox("Draw Top Info Bar", &Config.TopInfoBar);
  1037.             /*CheckBox("x88 Menu Test", &Config.x88menu);*/
  1038.  
  1039.             Space(10);
  1040.  
  1041.             ComboBox("Config", { "Legit 1", "Legit 2", "Semi Rage", "HvH 1", "HvH 2" }, &Config.CurrentConfig);
  1042.  
  1043.             Space(5);
  1044.  
  1045.             Button("Save", &save);
  1046.             Button("Load", &load);
  1047.  
  1048.             Button("Reset Shot Counter", &reset);
  1049.             OffsetY = GroupTabPos[1] + 28;
  1050.             ControlsX = GroupTabPos[0] + (Width / 2);
  1051.             ControlsX2 = ControlsX + ((Width / 2) - 30);
  1052.  
  1053.  
  1054.             CheckBox("Knife Changer", &Config.knivchanger);
  1055.             ComboBox("Knife Model", { "Bayonet","Flip Knife","Gut Knife","Karambit","M9 Bayonet","Huntsman Knife","Butterfly Knife","Falchion Knife","Shadow Daggers","Bowie Knife","Navaja Knife","Stiletto Knife","Ursus Knife","Talon Knife" } , &Config.Knife);
  1056.             ComboBox("Knife Skin", { "Vanilla","Crimson Web","Bone Mask","Fade","Night","Blue Steel","Stained","Case Hardened","Slaughter","Safari Mesh","Boreal Forest","Ultraviolet","Urban Masked","Scorched","Rust Coat","Tiger Tooth","Damascus Steel","Damascus Steel","Marble Fade","Rust Coat","Doppler Ruby","Doppler Sapphire","Doppler Blackpearl","Doppler Phase 1","Doppler Phase 2","Doppler Phase 3","Doppler Phase 4","Gamma Doppler Phase 1","Gamma Doppler Phase 2","Gamma Doppler Phase 3","Gamma Doppler Phase 4","Gamma Doppler Emerald","Lore","Black Laminate","Autotronic","Freehand","Doppler_1new","Doppler_2new","Doppler_3new","Doppler_4new","Marble Fade_new","Damascus Steel_1new","Damascus Steel_2new" }, &Config.KnifeSkin);
  1057.             ComboBox("Scar Skin", { "Vanilla","Crimson Web","Bone Mask","Fade","Night","Blue Steel","Stained","Case Hardened","Slaughter","Safari Mesh","Boreal Forest","Ultraviolet","Urban Masked","Scorched","Rust Coat","Tiger Tooth","Damascus Steel","Damascus Steel","Marble Fade","Rust Coat","Doppler Ruby","Doppler Sapphire","Doppler Blackpearl","Doppler Phase 1","Doppler Phase 2","Doppler Phase 3","Doppler Phase 4","Gamma Doppler Phase 1","Gamma Doppler Phase 2","Gamma Doppler Phase 3","Gamma Doppler Phase 4","Gamma Doppler Emerald","Lore","Black Laminate","Autotronic","Freehand","Doppler_1new","Doppler_2new","Doppler_3new","Doppler_4new","Marble Fade_new","Damascus Steel_1new","Damascus Steel_2new" }, & Config.Skinchanger.SCAR20Skin);
  1058.             ComboBox("G3SG1 Skin", { "Vanilla","Crimson Web","Bone Mask","Fade","Night","Blue Steel","Stained","Case Hardened","Slaughter","Safari Mesh","Boreal Forest","Ultraviolet","Urban Masked","Scorched","Rust Coat","Tiger Tooth","Damascus Steel","Damascus Steel","Marble Fade","Rust Coat","Doppler Ruby","Doppler Sapphire","Doppler Blackpearl","Doppler Phase 1","Doppler Phase 2","Doppler Phase 3","Doppler Phase 4","Gamma Doppler Phase 1","Gamma Doppler Phase 2","Gamma Doppler Phase 3","Gamma Doppler Phase 4","Gamma Doppler Emerald","Lore","Black Laminate","Autotronic","Freehand","Doppler_1new","Doppler_2new","Doppler_3new","Doppler_4new","Marble Fade_new","Damascus Steel_1new","Damascus Steel_2new" }, & Config.Skinchanger.G3sg1Skin);
  1059.             ComboBox("SSG08 Skin", { "Vanilla","Crimson Web","Bone Mask","Fade","Night","Blue Steel","Stained","Case Hardened","Slaughter","Safari Mesh","Boreal Forest","Ultraviolet","Urban Masked","Scorched","Rust Coat","Tiger Tooth","Damascus Steel","Damascus Steel","Marble Fade","Rust Coat","Doppler Ruby","Doppler Sapphire","Doppler Blackpearl","Doppler Phase 1","Doppler Phase 2","Doppler Phase 3","Doppler Phase 4","Gamma Doppler Phase 1","Gamma Doppler Phase 2","Gamma Doppler Phase 3","Gamma Doppler Phase 4","Gamma Doppler Emerald","Lore","Black Laminate","Autotronic","Freehand","Doppler_1new","Doppler_2new","Doppler_3new","Doppler_4new","Marble Fade_new","Damascus Steel_1new","Damascus Steel_2new" }, & Config.Skinchanger.SSG08Skin);
  1060.             ComboBox("Dual Berretas Skin", { "Vanilla","Crimson Web","Bone Mask","Fade","Night","Blue Steel","Stained","Case Hardened","Slaughter","Safari Mesh","Boreal Forest","Ultraviolet","Urban Masked","Scorched","Rust Coat","Tiger Tooth","Damascus Steel","Damascus Steel","Marble Fade","Rust Coat","Doppler Ruby","Doppler Sapphire","Doppler Blackpearl","Doppler Phase 1","Doppler Phase 2","Doppler Phase 3","Doppler Phase 4","Gamma Doppler Phase 1","Gamma Doppler Phase 2","Gamma Doppler Phase 3","Gamma Doppler Phase 4","Gamma Doppler Emerald","Lore","Black Laminate","Autotronic","Freehand","Doppler_1new","Doppler_2new","Doppler_3new","Doppler_4new","Marble Fade_new","Damascus Steel_1new","Damascus Steel_2new" }, & Config.Skinchanger.DualSkin);
  1061.             ComboBox("R8 Skin", { "Vanilla","Crimson Web","Bone Mask","Fade","Night","Blue Steel","Stained","Case Hardened","Slaughter","Safari Mesh","Boreal Forest","Ultraviolet","Urban Masked","Scorched","Rust Coat","Tiger Tooth","Damascus Steel","Damascus Steel","Marble Fade","Rust Coat","Doppler Ruby","Doppler Sapphire","Doppler Blackpearl","Doppler Phase 1","Doppler Phase 2","Doppler Phase 3","Doppler Phase 4","Gamma Doppler Phase 1","Gamma Doppler Phase 2","Gamma Doppler Phase 3","Gamma Doppler Phase 4","Gamma Doppler Emerald","Lore","Black Laminate","Autotronic","Freehand","Doppler_1new","Doppler_2new","Doppler_3new","Doppler_4new","Marble Fade_new","Damascus Steel_1new","Damascus Steel_2new" }, & Config.Skinchanger.RevolverSkin);
  1062.             Button("Update", &forceupdate);
  1063.         }
  1064.  
  1065.         TabSize = TabOffset;
  1066.         SubTabSize = SubTabOffset;
  1067.     }
  1068. }
  1069.  
  1070. Color Shade(Color clr, float factor)
  1071. {
  1072.     Color newcolor(255, 255, 255);
  1073.     newcolor.red = clr.red * (1 - factor);
  1074.     newcolor.green = clr.green * (1 - factor);
  1075.     newcolor.blue = clr.blue * (1 - factor);
  1076.  
  1077.     return newcolor;
  1078. }
  1079.  
  1080. void Menu::Tab(std::string name)
  1081. {
  1082.     int height = 25;
  1083.     int width = (MenuWidth - 2) / 6;
  1084.     int TabArea[4] = {Pos.x + (TabOffset * width), Pos.y + 24, width, height};
  1085.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(TabArea[0], TabArea[1], TabArea[2], TabArea[3]))
  1086.         TabNum = TabOffset;
  1087.  
  1088.     if (TabOffset == TabNum)
  1089.     {
  1090.         g_pSurface->RoundedFilledRect(TabArea[0] + (TabArea[2] / 2) - 25, TabArea[1] + 24, 50, 10, 5, menu_accent);
  1091.         g_pSurface->FilledRect(TabArea[0] + (TabArea[2] / 2) - 25, TabArea[1] + 29, 50, 5, menu_background);
  1092.         g_pSurface->DrawT(TabArea[0] + (TabArea[2] / 2), TabArea[1] + 6, menu_text, g::SansSerifBold, true, name.c_str());
  1093.     }
  1094.     else
  1095.     {
  1096.         g_pSurface->DrawT(TabArea[0] + (TabArea[2] / 2), TabArea[1] + 6, menu_text, g::SansSerif, true, name.c_str());
  1097.     }
  1098.  
  1099.     TabOffset += 1;
  1100.     PreviousControl = -1;
  1101. }
  1102.  
  1103. void Menu::SubTab(std::string name)
  1104. {
  1105.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1106.         return;
  1107.  
  1108.     static int TabSkip = 0;
  1109.  
  1110.     if (SubTabSize != 0 && TabSkip == TabNum)
  1111.     {
  1112.  
  1113.         int TabLength = (GroupTabPos[2] / SubTabSize);
  1114.  
  1115.         int GroupTabArea[4] = { (GroupTabPos[0]) + (TabLength * SubTabOffset), GroupTabPos[1], TabLength, 20 };
  1116.  
  1117.         if ((GroupTabArea[0] + GroupTabArea[3]) <= (GroupTabPos[0] + GroupTabPos[2]))
  1118.         {
  1119.             if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(GroupTabArea[0], GroupTabArea[1], GroupTabArea[2], GroupTabArea[3]))
  1120.                 SubTabNum = SubTabOffset;
  1121.  
  1122.             int Offset = ((SubTabSize - 1) == SubTabOffset) ? 0 : 1;
  1123.  
  1124.             if (((SubTabSize - 1) == SubTabOffset) && (((TabLength * SubTabSize) > GroupTabPos[2]) || ((TabLength * SubTabSize) < GroupTabPos[2])))
  1125.                 Offset = (GroupTabPos[2] - (TabLength * SubTabSize));
  1126.  
  1127.             if (SubTabNum == SubTabOffset)
  1128.             {
  1129.                 g_pSurface->FilledRect(GroupTabArea[0], GroupTabArea[1], GroupTabArea[2], GroupTabArea[3], menu_background2);
  1130.             }
  1131.  
  1132.             g_pSurface->DrawT(GroupTabArea[0] + (GroupTabArea[2] / 2), GroupTabArea[1] + 4, menu_text, g::SansSerif, true, name.c_str());
  1133.         }
  1134.     }
  1135.  
  1136.     if (TabSkip != TabNum) // frame skip for drawing
  1137.         TabSkip = TabNum;
  1138.  
  1139.     if (SubTabOffset == SubTabNum)
  1140.         OffsetY += 20;
  1141.  
  1142.     SubTabOffset += 1;
  1143.     PreviousControl = -1;
  1144. }
  1145.  
  1146. void Menu::CheckBox(std::string name, bool* item, std::string tooltip)
  1147. {
  1148.     if (GroupTabBottom <= OffsetY + 16)
  1149.         return;
  1150.  
  1151.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1152.         return;
  1153.  
  1154.     if (SubTabOffset != 0)
  1155.         if (SubTabOffset - 1 != SubTabNum)
  1156.             return;
  1157.  
  1158.     static bool pressed = false;
  1159.  
  1160.     if (!GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX2 - 24, OffsetY + 6, 24, 12))
  1161.     {
  1162.         if (pressed)
  1163.             *item = !*item;
  1164.         pressed = false;
  1165.     }
  1166.  
  1167.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX2 - 24, OffsetY + 6, 24, 12) && !pressed)
  1168.         pressed = true;
  1169.  
  1170.     g_pSurface->FilledRect(ControlsX2 - 24, OffsetY + 6, 24, 12, menu_background2);
  1171.  
  1172.     if (*item == true)
  1173.         g_pSurface->FilledRect(ControlsX2 - 12, OffsetY + 6, 12, 12, menu_accent);
  1174.     else
  1175.         g_pSurface->FilledRect(ControlsX2 - 24, OffsetY + 6, 12, 12, Shade(menu_accent, 0.6));
  1176.  
  1177.     g_pSurface->DrawT(ControlsX, OffsetY + 6, menu_text, g::SansSerif, false, name.c_str());
  1178.  
  1179.     if (g_pSurface->MouseInRegion(ControlsX2 - 24, OffsetY + 6, 24, 12))
  1180.     {
  1181.         g_pSurface->OutlinedRect(ControlsX2 - 26, OffsetY + 4, 28, 16, Color(255, 255, 255));
  1182.  
  1183.         if (!tooltip.empty())
  1184.         {
  1185.             RECT TextSize = g_pSurface->GetTextSizeRect(g::SansSerif, tooltip.c_str());
  1186.             Vector2D MousePos = g_pSurface->GetMousePosition();
  1187.  
  1188.             g_pSurface->FilledRect(MousePos.x + 10, MousePos.y + 10, 32 + TextSize.right, 24, menu_background);
  1189.             g_pSurface->OutlinedRect(MousePos.x + 10, MousePos.y + 10, 32 + TextSize.right, 24, menu_accent);
  1190.  
  1191.             g_pSurface->DrawT(MousePos.x + 26, MousePos.y + 16, menu_text, g::SansSerif, false, tooltip.c_str());
  1192.         }
  1193.     }
  1194.  
  1195.     OldOffsetY = OffsetY;
  1196.     OffsetY += 24;
  1197.     PreviousControl = check_box;
  1198. }
  1199.  
  1200. void Menu::Slider(int max, std::string name, int* item)
  1201. {
  1202.     if (GroupTabBottom <= OffsetY + 16)
  1203.         return;
  1204.  
  1205.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1206.         return;
  1207.  
  1208.     if (SubTabOffset != 0)
  1209.         if (SubTabOffset - 1 != SubTabNum)
  1210.             return;
  1211.  
  1212.     RECT TextSize = g_pSurface->GetTextSizeRect(g::SansSerif, std::to_string(*item).c_str());
  1213.  
  1214.     int width = ControlsX2 - ControlsX;
  1215.  
  1216.     float pixelValue = max / 265.f;
  1217.  
  1218.     g_pSurface->DrawT(ControlsX - 8, OffsetY + 22, menu_text, g::Tahoma, false, "-");
  1219.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX - 8, OffsetY + 22, 4, 8))
  1220.         *item -= 1;
  1221.  
  1222.     g_pSurface->DrawT(ControlsX + width + 4, OffsetY + 22, menu_text, g::Tahoma, false, "+");
  1223.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + width + 4, OffsetY + 22, 4, 8))
  1224.         * item += 1;
  1225.  
  1226.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX - 2, OffsetY + 24, width, 8))
  1227.         *item = (g_pSurface->GetMousePosition().x - (ControlsX - 2)) * pixelValue;
  1228.  
  1229.     if (*item > max)
  1230.         *item = max;
  1231.     if (*item < 0)
  1232.         *item = 0;
  1233.  
  1234.     g_pSurface->DrawT(ControlsX, OffsetY + 6, menu_text, g::SansSerif, false, name.c_str());
  1235.     g_pSurface->DrawT(ControlsX2 - TextSize.right, OffsetY + 6, menu_text, g::SansSerif, true, std::to_string(*item).c_str());
  1236.  
  1237.     g_pSurface->RoundedFilledRect(ControlsX, OffsetY + 24, width, 8, 4, menu_background2);
  1238.     g_pSurface->RoundedFilledRect(ControlsX, OffsetY + 24, *item / pixelValue, 8, 4, menu_accent);
  1239.     g_pSurface->FilledRect((ControlsX + (*item / pixelValue)) - 3, OffsetY + 22, 6, 12, Color(255, 255, 255));
  1240.  
  1241.     OldOffsetY = OffsetY;
  1242.     OffsetY += 36;
  1243.     PreviousControl = slider;
  1244. }
  1245.  
  1246. void Menu::SliderFloat(float max, std::string name, float* item)
  1247. {
  1248.     if (GroupTabBottom <= OffsetY + 16)
  1249.         return;
  1250.  
  1251.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1252.         return;
  1253.  
  1254.     if (SubTabOffset != 0)
  1255.         if (SubTabOffset - 1 != SubTabNum)
  1256.             return;
  1257.  
  1258.     RECT TextSize = g_pSurface->GetTextSizeRect(g::SansSerif, std::to_string(*item).c_str());
  1259.  
  1260.     int width = ControlsX2 - ControlsX;
  1261.  
  1262.     float pixelValue = max / 265.f;
  1263.  
  1264.     g_pSurface->DrawT(ControlsX - 8, OffsetY + 22, menu_text, g::Tahoma, false, "-");
  1265.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX - 8, OffsetY + 22, 4, 8))
  1266.         * item -= 1;
  1267.  
  1268.     g_pSurface->DrawT(ControlsX + width + 4, OffsetY + 22, menu_text, g::Tahoma, false, "+");
  1269.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + width + 4, OffsetY + 22, 4, 8))
  1270.         * item += 1;
  1271.  
  1272.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX - 2, OffsetY + 24, width, 8))
  1273.         * item = (g_pSurface->GetMousePosition().x - (ControlsX - 2)) * pixelValue;
  1274.  
  1275.     if (*item > max)
  1276.         * item = max;
  1277.     if (*item < 0.f)
  1278.         * item = 0.f;
  1279.  
  1280.     g_pSurface->DrawT(ControlsX, OffsetY + 6, menu_text, g::SansSerif, false, name.c_str());
  1281.     g_pSurface->DrawT(ControlsX2 - TextSize.right, OffsetY + 6, menu_text, g::SansSerif, true, std::to_string(*item).c_str());
  1282.  
  1283.     g_pSurface->RoundedFilledRect(ControlsX, OffsetY + 24, width, 8, 4, menu_background2);
  1284.     g_pSurface->RoundedFilledRect(ControlsX, OffsetY + 24, *item / pixelValue, 8, 4, menu_accent);
  1285.     g_pSurface->FilledRect((ControlsX + (*item / pixelValue)) - 3, OffsetY + 22, 6, 12, Color(255, 255, 255));
  1286.  
  1287.     OldOffsetY = OffsetY;
  1288.     OffsetY += 36;
  1289.     PreviousControl = sliderfloat;
  1290. }
  1291.  
  1292. void Menu::ComboBox(std::string name, std::vector< std::string > itemname, int* item)
  1293. {
  1294.     if (GroupTabBottom <= OffsetY + 16)
  1295.         return;
  1296.  
  1297.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1298.         return;
  1299.  
  1300.     if (SubTabOffset != 0)
  1301.         if (SubTabOffset - 1 != SubTabNum)
  1302.             return;
  1303.  
  1304.     bool pressed = false;
  1305.     bool open = false;
  1306.     static bool selectedOpened = false;
  1307.     static bool clickRest;
  1308.     static bool rest;
  1309.     static std::string nameSelected;
  1310.  
  1311.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + 153, OffsetY, 100, 16) && !clickRest)
  1312.     {
  1313.         nameSelected = name;
  1314.         pressed = true;
  1315.         clickRest = true;
  1316.     }
  1317.     else if (!GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + 153, OffsetY, 100, 16))
  1318.         clickRest = false;
  1319.  
  1320.     if (pressed)
  1321.     {
  1322.         if (!rest)
  1323.             selectedOpened = !selectedOpened;
  1324.  
  1325.         rest = true;
  1326.     }
  1327.     else
  1328.         rest = false;
  1329.  
  1330.     if (nameSelected == name)
  1331.         open = selectedOpened;
  1332.  
  1333.     int arrowpos = 240;
  1334.  
  1335.     g_pSurface->DrawT(ControlsX, OffsetY + 6, menu_text, g::SansSerif, false, name.c_str());
  1336.  
  1337.     if (g_pSurface->MouseInRegion(ControlsX + 153, OffsetY + 2, 100, 16))
  1338.     {
  1339.         g_pSurface->OutlinedRect(ControlsX + 151, OffsetY, 104, 20, Color(255, 255, 255));
  1340.     }
  1341.     g_pSurface->FilledRect(ControlsX + 153, OffsetY + 2, 100, 16, menu_background2);
  1342.     g_pSurface->FilledRect(ControlsX + arrowpos + 4, OffsetY + 2 + 7, 5, 1, menu_background2);
  1343.     g_pSurface->FilledRect(ControlsX + arrowpos + 5, OffsetY + 2 + 8, 3, 1, menu_background2);
  1344.     g_pSurface->FilledRect(ControlsX + arrowpos + 6, OffsetY + 2 + 9, 1, 1, menu_background2);
  1345.  
  1346.     if (open)
  1347.     {
  1348.         g_pSurface->FilledRect(ControlsX + 153, OffsetY + 2, 100, 17 + (itemname.size() * 16), menu_background2);
  1349.         g_pSurface->FilledRect(ControlsX + 153, OffsetY + 2, 100, 16, menu_background2);
  1350.         g_pSurface->FilledRect(ControlsX + arrowpos + 4, OffsetY + 2 + 7, 5, 1, menu_background2);
  1351.         g_pSurface->FilledRect(ControlsX + arrowpos + 5, OffsetY + 2 + 8, 3, 1, menu_background2);
  1352.         g_pSurface->FilledRect(ControlsX + arrowpos + 6, OffsetY + 2 + 9, 1, 1, menu_background2);
  1353.  
  1354.         for (int i = 0; i < itemname.size(); i++)
  1355.         {
  1356.             if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + 153, OffsetY + 2 + 16 + i * 16, 100, 16))
  1357.                 *item = i;
  1358.  
  1359.             if (*item == i)
  1360.                 g_pSurface->FilledRect(ControlsX + 153, OffsetY + 2 + 16 + (i * 16), 100, 20, menu_background2);
  1361.  
  1362.             g_pSurface->DrawT(ControlsX + 159, OffsetY + 2 + 16 + (i * 16), menu_text, g::SansSerif, false, itemname.at(i).c_str());
  1363.         }
  1364.     }
  1365.  
  1366.     g_pSurface->DrawT(ControlsX + 159, OffsetY + 2, menu_text, g::SansSerif, false, itemname.at(*item).c_str());
  1367.  
  1368.     OldOffsetY = OffsetY;
  1369.  
  1370.     if (open)
  1371.         OffsetY += 24 + (itemname.size() * 16);
  1372.     else
  1373.         OffsetY += 24;
  1374.  
  1375.     PreviousControl = combo_box;
  1376. }
  1377.  
  1378. void Menu::ColorPicker(std::string name, ColorV2& item) // best coder in the universe
  1379. {
  1380.     if (GroupTabBottom <= OffsetY + 16)
  1381.         return;
  1382.  
  1383.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1384.         return;
  1385.  
  1386.     if (SubTabOffset != 0)
  1387.         if (SubTabOffset - 1 != SubTabNum)
  1388.             return;
  1389.  
  1390.     if (PreviousControl == slider || PreviousControl == -1)
  1391.         return;
  1392.  
  1393.     int CtrXoffset = 0;
  1394.  
  1395.     if (PreviousControl != check_box)
  1396.         CtrXoffset = 132;
  1397.     else
  1398.         CtrXoffset = 165;
  1399.  
  1400.     int yoffset = OldOffsetY + 6;
  1401.     int xoffset = ControlsX + 330;
  1402.  
  1403.     Color rainbow;
  1404.  
  1405.     bool pressed = false;
  1406.     bool open = false;
  1407.     static bool selectedOpened = false;
  1408.     static bool clickRest;
  1409.     static bool rest;
  1410.     static std::string nameSelected;
  1411.  
  1412.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + CtrXoffset, OldOffsetY, 16, 16) && !clickRest)
  1413.     {
  1414.         nameSelected = name;
  1415.         pressed = true;
  1416.         clickRest = true;
  1417.     }
  1418.     else if (!GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + CtrXoffset, OldOffsetY, 16, 16))
  1419.         clickRest = false;
  1420.  
  1421.     if (pressed)
  1422.     {
  1423.         if (!rest)
  1424.             selectedOpened = !selectedOpened;
  1425.  
  1426.         rest = true;
  1427.     }
  1428.     else
  1429.         rest = false;
  1430.  
  1431.     if (nameSelected == name)
  1432.         open = selectedOpened;
  1433.  
  1434.     if (open)
  1435.     {
  1436.         g_pSurface->RoundedFilledRect(xoffset, OldOffsetY, 100, 20, 5, Color(0, 0, 0, 255));
  1437.         g_pSurface->RoundedFilledRect(xoffset, OldOffsetY + 100, 100, 20, 5, Color(255, 255, 255, 255));
  1438.  
  1439.         if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(xoffset, OldOffsetY, 100, 10))
  1440.         {
  1441.             item.red = 0;
  1442.             item.green = 0;
  1443.             item.blue = 0;
  1444.             item.alpha = 255;
  1445.         }
  1446.  
  1447.         if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(xoffset, OldOffsetY + 110, 100, 10))
  1448.         {
  1449.             item.red = 255;
  1450.             item.green = 255;
  1451.             item.blue = 255;
  1452.             item.alpha = 255;
  1453.         }
  1454.  
  1455.         for (int i = 0; i < 100; i++)
  1456.         {
  1457.             if (xoffset >= ControlsX + 430)
  1458.             {
  1459.                 xoffset -= 100;
  1460.                 yoffset += 10;
  1461.             }
  1462.  
  1463.             float hue = (i * .01f);
  1464.  
  1465.             rainbow.FromHSV(hue, 1.f, 1.f);
  1466.  
  1467.             g_pSurface->FilledRect(xoffset, yoffset, 10, 10, rainbow);
  1468.  
  1469.             if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(xoffset, yoffset, 10, 10))
  1470.             {
  1471.                 item.red = rainbow.red;
  1472.                 item.green = rainbow.green;
  1473.                 item.blue = rainbow.blue;
  1474.                 item.alpha = 255.f;
  1475.             }
  1476.  
  1477.             xoffset += 10;
  1478.         }
  1479.     }
  1480.  
  1481.     rainbow.red = item.red;
  1482.     rainbow.green = item.green;
  1483.     rainbow.blue = item.blue;
  1484.     rainbow.alpha = 255;
  1485.  
  1486.     g_pSurface->FilledRect(ControlsX + CtrXoffset, OldOffsetY, 16, 12, rainbow);
  1487.     g_pSurface->OutlinedRect(ControlsX + CtrXoffset, OldOffsetY, 16, 12, menu_background2);
  1488. }
  1489.  
  1490. void Menu::KeyBind(std::string name, int* item) // needs to be working with mouse keys pls fix
  1491. {
  1492.     if (ControlsReturn)
  1493.         return;
  1494.  
  1495.     if (GroupTabBottom <= OffsetY + 16)
  1496.         return;
  1497.  
  1498.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1499.         return;
  1500.  
  1501.     if (SubTabOffset != 0)
  1502.         if (SubTabOffset - 1 != SubTabNum)
  1503.             return;
  1504.  
  1505.     static bool gotKey = false;
  1506.     bool pressed = false;
  1507.     if (gotKey)
  1508.         pressed = true;
  1509.     gotKey = false;
  1510.     bool open = false;
  1511.     static bool selectedOpened = false;
  1512.     static bool clickRest;
  1513.     static bool rest;
  1514.     static std::string nameSelected;
  1515.  
  1516.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + 153, OffsetY, 140, 16) && !clickRest)
  1517.     {
  1518.         nameSelected = name;
  1519.         pressed = true;
  1520.         clickRest = true;
  1521.     }
  1522.     else if (!GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + 153, OffsetY, 140, 16))
  1523.         clickRest = false;
  1524.  
  1525.     if (pressed)
  1526.     {
  1527.         if (!rest)
  1528.             selectedOpened = !selectedOpened;
  1529.  
  1530.         rest = true;
  1531.     }
  1532.     else
  1533.         rest = false;
  1534.  
  1535.     if (nameSelected == name)
  1536.         open = selectedOpened;
  1537.  
  1538.     g_pSurface->DrawT(ControlsX + 6, OffsetY, Color(255, 255, 255, 255), g::SansSerif, false, name.c_str());
  1539.     g_pSurface->AutoGradientRect(ControlsX + 153, OffsetY, 140, 16, Color(119, 119, 119, 255));
  1540.  
  1541.     if (open)
  1542.     {
  1543.         for (int i = 0; i < 255; i++)
  1544.         {
  1545.             if ((GetAsyncKeyState(i) & 0x8000) && i != 1 && i != 45)
  1546.             {
  1547.                 *item = i;
  1548.                 gotKey = true;
  1549.             }
  1550.         }
  1551.         g_pSurface->AutoGradientRect(ControlsX + 153, OffsetY, 140, 16, Color(53, 53, 53, 255));
  1552.     }
  1553.  
  1554.     g_pSurface->DrawT(ControlsX + 159, OffsetY, Color(255, 255, 255, 255), g::SansSerif, false, std::string(1, char(*item)).c_str()); // K LOL
  1555.  
  1556.     OldOffsetY = OffsetY;
  1557.     OffsetY += 18;
  1558.  
  1559.     PreviousControl = key_bind;
  1560. }
  1561.  
  1562.  
  1563. void Menu::Button(std::string text, Menu::ButtonCallback_t callback)
  1564. {
  1565.     if (GroupTabBottom <= OffsetY + 16)
  1566.         return;
  1567.  
  1568.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1569.         return;
  1570.  
  1571.     if (SubTabOffset != 0)
  1572.         if (SubTabOffset - 1 != SubTabNum)
  1573.             return;
  1574.  
  1575.     bool pressed = false;
  1576.     static bool clickRest;
  1577.     static bool rest;
  1578.  
  1579.     int height = 20;
  1580.     RECT TextSize = g_pSurface->GetTextSizeRect(g::SansSerif, text.c_str());
  1581.     int width = 16 + TextSize.right;
  1582.  
  1583.     if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX, OffsetY + 6, width, height) && !clickRest)
  1584.     {
  1585.         pressed = true;
  1586.         clickRest = true;
  1587.  
  1588.         g_pSurface->FilledRect(ControlsX, OffsetY + 6, width, height, menu_accent);
  1589.     }
  1590.     else if (!GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX, OffsetY + 5, width, height))
  1591.         clickRest = false;
  1592.  
  1593.     if (g_pSurface->MouseInRegion(ControlsX, OffsetY + 6, width, height))
  1594.     {
  1595.         g_pSurface->OutlinedRect(ControlsX - 2, OffsetY + 4, width + 4, height + 4, Color(255, 255, 255));
  1596.     }
  1597.  
  1598.     if (pressed)
  1599.     {
  1600.         if (!rest)
  1601.             callback();
  1602.  
  1603.         rest = true;
  1604.     }
  1605.     else
  1606.     {
  1607.         rest = false;
  1608.         g_pSurface->FilledRect(ControlsX, OffsetY + 6, width, height, menu_accent);
  1609.     }
  1610.  
  1611.     g_pSurface->DrawT(ControlsX + (width / 2) - 2, OffsetY + 8, menu_text, g::SansSerif, true, text.c_str());
  1612.  
  1613.     OldOffsetY = OffsetY;
  1614.  
  1615.     OffsetY += 32;
  1616.  
  1617.     PreviousControl = button;
  1618. }
  1619.  
  1620. void Menu::Space(int spaceval)
  1621. {
  1622.     OffsetY += spaceval;
  1623.     PreviousControl = spacer;
  1624. }
  1625.  
  1626. bool keys[256];
  1627. bool oldKeys[256];
  1628.  
  1629. bool GetKeyPress(unsigned int key)
  1630. {
  1631.     if (keys[key] == true && oldKeys[key] == false)
  1632.         return true;
  1633.     return false;
  1634. }
  1635.  
  1636. void Menu::TextBox(std::string name, std::string* text)
  1637. {
  1638.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1639.         return;
  1640.  
  1641.     if (SubTabOffset != 0)
  1642.         if (SubTabOffset - 1 != SubTabNum)
  1643.             return;
  1644.  
  1645.     if (GroupTabBottom <= OffsetY + 16)
  1646.         return;
  1647.  
  1648.     bool pressed = false;
  1649.     bool open = false;
  1650.     static bool selected_opened = false;
  1651.     static bool click_rest;
  1652.     static bool rest;
  1653.     static std::string name_selected;
  1654.  
  1655.     int ComboSize = 127; // 163
  1656.     int ComboSizeH = 127; // 163
  1657.     static int offset = 0;
  1658.     if (name == "")
  1659.     {
  1660.         offset = 0;
  1661.     }
  1662.     else
  1663.     {
  1664.         offset = 14;
  1665.     }
  1666.  
  1667.     std::copy(keys, keys + 255, oldKeys);
  1668.     for (int x = 0; x < 255; x++)
  1669.     {
  1670.         //oldKeys[x] = oldKeys[x] & keys[x];
  1671.         keys[x] = (GetAsyncKeyState(x));
  1672.     }
  1673.  
  1674.  
  1675.     if (menuOpened)
  1676.     {
  1677.         if (GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + 225, OffsetY + 1, 15, 8) && !
  1678.             click_rest)
  1679.         {
  1680.             name_selected = name;
  1681.             pressed = true;
  1682.             click_rest = true;
  1683.         }
  1684.         else if (!GetAsyncKeyState(VK_LBUTTON) && g_pSurface->MouseInRegion(ControlsX + 225, OffsetY + 1, 15, 8))
  1685.             click_rest = false;
  1686.  
  1687.         if (pressed)
  1688.         {
  1689.             if (!rest)
  1690.                 selected_opened = !selected_opened;
  1691.             rest = true;
  1692.         }
  1693.         else
  1694.             rest = false;
  1695.  
  1696.         if (name_selected == name)
  1697.             open = selected_opened;
  1698.     }
  1699.  
  1700.     const char* strg = text->c_str();
  1701.     if (open)
  1702.     {
  1703.         for (int i = 0; i < 255; i++)
  1704.         {
  1705.             if (GetKeyPress(i))
  1706.             {
  1707.                 if (i == VK_ESCAPE || i == VK_RETURN || i == VK_INSERT)
  1708.                 {
  1709.                     open = false;
  1710.                     return;
  1711.                 }
  1712.  
  1713.                 if (i == VK_BACK && strlen(strg) != 0)
  1714.                 {
  1715.                     *text = text->substr(0, strlen(strg) - 1);
  1716.                 }
  1717.  
  1718.                 if (strlen(strg) < 6 && (i == 0x30 || i == 0x31 || i == 0x32 || i == 0x33 || i == 0x34 || i == 0x35 || i
  1719.                     == 0x36 || i == 0x37 || i == 0x38 || i == 0x39 || i == VK_NUMPAD0 || i == VK_NUMPAD1 || i ==
  1720.                     VK_NUMPAD2 || i == VK_NUMPAD3 || i == VK_NUMPAD4 || i == VK_NUMPAD5 || i == VK_NUMPAD6 || i ==
  1721.                     VK_NUMPAD7 || i == VK_NUMPAD8 || i == VK_NUMPAD9))
  1722.                 {
  1723.                     *text = *text + g_Hotkeys.KeyDigits[i];
  1724.                     return;
  1725.                 }
  1726.             }
  1727.         }
  1728.     }
  1729.  
  1730.     const char* cstr = text->c_str();
  1731.     g_pSurface->FilledRect(ControlsX + 20, OffsetY, ComboSize, 20, button_dark);
  1732.     g_pSurface->OutlinedRect(ControlsX + 20, OffsetY, ComboSize, 20, menu_text);
  1733.     g_pSurface->DrawT(ControlsX + 20 + 5, OffsetY + 3, menu_text, g::SansSerif, false, cstr);
  1734.  
  1735.     OffsetY += 29;
  1736. }
  1737.  
  1738. void Menu::Text(std::string text)
  1739. {
  1740.     if (GroupTabBottom <= OffsetY + 16)
  1741.         return;
  1742.  
  1743.     if (TabOffset - 1 != TabNum || TabOffset == 0)
  1744.         return;
  1745.  
  1746.     if (SubTabOffset != 0)
  1747.         if (SubTabOffset - 1 != SubTabNum)
  1748.             return;
  1749.     g_pSurface->DrawT(ControlsX, OffsetY + 6, menu_text, g::SansSerif, false, text.c_str());
  1750.     OffsetY += 24;
  1751.     PreviousControl = label;
  1752. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top