#include "external_include.h"
std::vector< std::string > m_slots =
{
_w( "Config slot #1" ),
_w( "Config slot #2" ),
_w( "Config slot #3" ),
_w( "Config slot #4" ),
_w( "Config slot #5" ),
_w( "Config slot #6" )
};
std::vector< std::string > m_sounds =
{
_w( "bubble" ),
_w( "cod" ),
_w( "fatality" ),
_w( "arena_switch" ),
};
std::vector< std::string > m_knives =
{
_w( "Default" ),
_w( "Karambit" ),
_w( "M9 Bayonet" ),
_w( "Butterfly" ),
_w( "Bayonet" ),
_w( "Bowie Knife" ),
_w( "Gut Knife" ),
_w( "Flip Knife" ),
_w( "Falchion" ),
_w( "Shadow Daggers" )
};
std::vector< std::string > aimware_type =
{
_w("Off"),
_w("Still"),
_w("Balance"),
_w("Stretch"),
_w("Jitter")
};
std::vector<std::string> m_baim =
{
_w( "Off" ),
_w( "Adaptive" ),
};
std::vector<std::string> m_baim_when =
{
_w( "In air" ),
_w( "Lethal" ),
_w( "Resolver unsure" ),
};
std::vector<std::string> m_baim_when_au =
{
_w( "aim_au_bm_air" ),
_w( "aim_au_bm_l" ),
_w( "aim_au_bm_ru" )
};
std::vector<std::string> m_baim_when_sc =
{
_w( "aim_sc_bm_air" ),
_w( "aim_sc_bm_l" ),
_w( "aim_sc_bm_ru" )
};
std::vector<std::string> m_baim_when_awp =
{
_w( "aim_awp_bm_air" ),
_w( "aim_awp_bm_l" ),
_w( "aim_awp_bm_ru" )
};
std::vector<std::string> m_baim_when_hp =
{
_w( "aim_hp_bm_air" ),
_w( "aim_hp_bm_l" ),
_w( "aim_hp_bm_ru" )
};
std::vector<std::string> m_baim_when_p =
{
_w( "aim_p_bm_air" ),
_w( "aim_p_bm_l" ),
_w( "aim_p_bm_ru" )
};
std::vector<std::string> m_baim_when_o =
{
_w( "aim_o_bm_air" ),
_w( "aim_o_bm_l" ),
_w( "aim_o_bm_ru" )
};
std::vector<std::string> m_chams_type =
{
_w( "Normal" ),
_w( "Flat" ),
_w( "Shiny" )
};
std::vector<std::string> m_autostop_type =
{
_w( "Off" ),
_w( "Normal" ),
_w( "Full" ),
};
std::vector<std::string> m_spread_type =
{
_w( "Gradient" ),
_w( "Rainbow" ),
_w( "Rainbow ( rotating )" )
};
std::vector<std::string> m_world_glow =
{
_w( "Weapons" ),
_w( "Grenades" ),
_w( "C4" )
};
std::vector<std::string> m_world_glow2 =
{
_w( "v_gl_w_weap" ),
_w( "v_gl_w_gre" ),
_w( "v_gl_w_c4" )
};
std::vector<std::string> m_choke =
{
_w( "Peek" ),
_w( "Reload" ),
_w( "Weapon switch" ),
_w( "Shot" )
};
std::vector<std::string> m_choke2 =
{
_w( "aa_fk_on_peek" ),
_w( "aa_ck_rl" ),
_w( "aa_ck_sw" ),
_w( "aa_ck_sh" )
};
std::vector<std::string> m_world_esp =
{
_w( "Weapons" ),
_w( "Grenades" ),
_w( "C4" )
};
std::vector<std::string> m_world_esp2 =
{
_w( "v_w_weap" ),
_w( "v_w_gre" ),
_w( "v_w_c4" )
};
std::vector<std::string> m_info_esp =
{
_w( "Scoped" ),
_w( "Bomb" ),
_w( "Reload" )
};
std::vector<std::string> m_pitch_type = {
_w("Disabled"),
_w("Emotion"),
_w("Up-Nospread")
};
std::vector<std::string> m_yaw_desync_type = {
_w("Disabled"),
_w("Backwars"),
_w("Tension - Desync")
};
std::vector<std::string> m_info_esp2 =
{
_w( "v_i_scop" ),
_w( "v_i_bomb" ),
_w( "v_i_reload" )
};
std::string weapon_filter;
std::string kit_filter;
void save_config()
{
_( menu_slot, "menu_slot" );
config::get().save( g_cfg[ menu_slot ]->get<int>() + 1 );
}
void load_config()
{
_( menu_slot, "menu_slot" );
config::get().load( g_cfg[ menu_slot ]->get<int>() + 1 );
}
void inventory_add()
{
inventorychanger::get().add();
}
void inventory_save()
{
inventorychanger::get().save();
}
void inventory_rm()
{
inventorychanger::get().remove();
}
void c_menu::init()
{
if ( m_init )
return;
c_window* main_window = new c_window( _w( "MAIN WINDOW" ), bounds( 100, 100, 860, 600 ), true );
c_tab* tab_first = main_window->add_tab( _w( "Rage" ) );
{
c_subtab* subtab_one = tab_first->add_subtab( _w( "Aimbot" ) );
{
} tab_first->pushback_subtab( subtab_one );
c_subtab* subtab_three = tab_first->add_subtab( _w( "Anti-aim" ) );
{
} tab_first->pushback_subtab( subtab_three );
c_subtab* subtab_four = tab_first->add_subtab( _w( "AA Regular" ) );
{
if (vars::aa.desync_enable.get<int>() == 2)
{
}
} tab_first->pushback_subtab( subtab_four );
} main_window->pushback_tab( tab_first );
c_tab* tab_second = main_window->add_tab( _w( "Config" ) );
{
c_subtab* subtab_one = tab_second->add_subtab( _w( "Slots" ) );
{
} tab_second->pushback_subtab( subtab_one );
c_subtab* subtab_two = tab_second->add_subtab( _w( "Auto" ) );
{
} tab_second->pushback_subtab( subtab_two );
c_subtab* subtab_three = tab_second->add_subtab( _w( "Scout" ) );
{
} tab_second->pushback_subtab( subtab_three );
c_subtab* subtab_four = tab_second->add_subtab( _w( "AWP" ) );
{
} tab_second->pushback_subtab( subtab_four );
c_subtab* subtab_five = tab_second->add_subtab( _w( "Heavy pistols" ) );
{
} tab_second->pushback_subtab( subtab_five );
c_subtab* subtab_six = tab_second->add_subtab( _w( "Pistols" ) );
{
} tab_second->pushback_subtab( subtab_six );
c_subtab* subtab_seven = tab_second->add_subtab( _w( "Other" ) );
{
} tab_second->pushback_subtab( subtab_seven );
} main_window->pushback_tab( tab_second );
c_tab* tab_third = main_window->add_tab( _w( "Visuals" ) );
{
c_subtab* subtab_one = tab_third->add_subtab( _w( "Chams" ) );
{
} tab_third->pushback_subtab( subtab_one );
c_subtab* subtab_two = tab_third->add_subtab( _w( "Esp" ) );
{
} tab_third->pushback_subtab( subtab_two );
c_subtab* subtab_three = tab_third->add_subtab( _w( "Glow" ) );
{
} tab_third->pushback_subtab( subtab_three );
c_subtab* subtab_four = tab_third->add_subtab( _w( "Misc" ) );
{
} tab_third->pushback_subtab( subtab_four );
} main_window->pushback_tab( tab_third );
c_tab* tab_fourth = main_window->add_tab( _w( "Gameplay" ) );
{
c_subtab* subtab_one = tab_fourth->add_subtab( _w( "Visual" ) );
{
} tab_fourth->pushback_subtab( subtab_one );
c_subtab* subtab_two = tab_fourth->add_subtab( _w( "Movement" ) );
{
subtab_two->add_checkbox( _w( "Bhop" ), _w( "m_bhp" ) );
subtab_two->add_checkbox( _w( "Autostrafer" ), _w( "m_strf" ) );
} tab_fourth->pushback_subtab( subtab_two );
} main_window->pushback_tab( tab_fourth );
c_tab* tab_five = main_window->add_tab( _w( "Legit" ) );
{
} main_window->pushback_tab( tab_five );
c_tab* tab_six = main_window->add_tab( _w( "Skins" ) );
{
c_subtab* subtab_one = tab_six->add_subtab( _w( "Inventory" ) );
{
} tab_six->pushback_subtab( subtab_one );
} main_window->pushback_tab( tab_six );
this->m_windows.push_back( main_window );
m_init = true;
}
void c_menu::render()
{
init();
if ( !m_opened )
return;
update_input();
inventorychanger::get().update_selected();
for ( auto window : m_windows )
window->render();
draw_cursor();
}
bool c_menu::is_hovering( bounds pbounds )
{
return is_in_area( g_mouse.pos, pbounds );
}
bool c_menu::is_holding( bounds pbounds ) const
{
if ( !g_mouse.is_holding )
return false;
return is_in_area( g_mouse.hold_pos, pbounds );
}
bool c_menu::mouse_is_holding()
{
return g_mouse.is_holding;
}
void c_menu::reset_mouse_state()
{
g_mouse.is_pressed = false;
g_mouse.is_holding = false;
g_mouse.needs_reset = true;
}
bool c_menu::key_updated( int key )
{
return ( m_keystate[ key ] && !m_oldstate[ key ] );
}
bool c_menu::mouse_is_pressed()
{
return g_mouse.is_pressed;
}
bool c_menu::is_pressed( bounds pbounds )
{
if ( !g_mouse.is_pressed )
return false;
return is_in_area( g_mouse.press_pos, pbounds );
}
POINT c_menu::get_mouse_pos()
{
return g_mouse.pos;
}
POINT c_menu::get_hold_pos()
{
return g_mouse.hold_pos;
}
POINT c_menu::get_press_pos()
{
return g_mouse.press_pos;
}
//if this is ghetto - change plz
bool c_menu::is_in_area( POINT p, bounds pbounds )
{
if ( p.x >= pbounds.x && p.x <= ( pbounds.x + pbounds.w ) )
if ( p.y > pbounds.y && p.y < ( pbounds.y + pbounds.h ) )
return true;
return false;
}
bool& c_menu::get_opened()
{
return m_opened;
}
void c_menu::toggle()
{
static bool prev_state;
const bool state = GetAsyncKeyState( VK_INSERT );
if ( prev_state != state )
{
if ( state )
m_opened = !m_opened;
_( cl_mouseenable, "cl_mouseenable " );
auto msg = cl_mouseenable + std::to_string( !m_opened );
g_pEngine->ClientCmd_Unrestricted( msg.c_str() );
prev_state = state;
}
}
void c_menu::release_images()
{
{
for ( auto window : m_windows )
{
SAFE_RELEASE( window->img );
SAFE_RELEASE( window->sprite );
SAFE_RELEASE( window->img_big );
SAFE_RELEASE( window->sprite_big );
}
}
}
void c_menu::draw_cursor()
{
/*recreation of csgo cursor (size-wise)*/
D3DCOLOR main_color = D3DCOLOR_RGBA( 20, 179, 178, 255 );
D3DCOLOR back_color = D3DCOLOR_RGBA( 189, 201, 221, 255 );
POINT p1; p1.x = g_mouse.pos.x; p1.y = g_mouse.pos.y;
POINT p2; p2.x = g_mouse.pos.x + 24; p2.y = g_mouse.pos.y + 12;
POINT p3; p3.x = g_mouse.pos.x + 12; p3.y = g_mouse.pos.y + 24;
render::get().filled_triangle( p1, p2, p3, main_color );
POINT p4; p4.x = g_mouse.pos.x + 3; p4.y = g_mouse.pos.y + 3;
POINT p5; p5.x = g_mouse.pos.x + 23; p5.y = g_mouse.pos.y + 13;
POINT p6; p6.x = g_mouse.pos.x + 13; p6.y = g_mouse.pos.y + 23;
render::get().filled_triangle( p4, p5, p6, back_color );
}
void c_menu::update_input()
{
std::copy( m_keystate, m_keystate + 255, m_oldstate );
// simple keyboard iteration
for ( auto n = 0; n < 255; ++n )
{
// update current state
m_keystate[ n ] = GetAsyncKeyState( n );
}
POINT p;
if ( !GetCursorPos( &p ) )
return;
ScreenToClient( init::window, &p );
if ( GetAsyncKeyState( VK_LBUTTON ) && g_mouse.needs_reset )
return;
else if ( g_mouse.needs_reset )
g_mouse.needs_reset = false;
g_mouse.pos = p;
if ( GetAsyncKeyState( VK_LBUTTON ) && !g_mouse.is_pressed && !g_mouse.is_holding )
{
g_mouse.is_pressed = true;
g_mouse.press_pos = p;
}
else if ( GetAsyncKeyState( VK_LBUTTON ) && !g_mouse.is_holding )
{
g_mouse.is_pressed = false;
g_mouse.is_holding = true;
g_mouse.hold_pos = p;
}
else if ( !GetAsyncKeyState( VK_LBUTTON ) )
{
g_mouse.is_pressed = false;
g_mouse.is_holding = false;
}
else if ( g_mouse.is_holding )
{
g_mouse.hold_pos = p;
}
}
uintptr_t c_menu::modulate_alpha( uintptr_t orig, int alpha )
{
int a = ( orig >> 24 ) & 0xff;
int r = ( orig >> 16 ) & 0xff;
int g = ( orig >> 8 ) & 0xff;
int b = orig & 0xff;
int newAlpha = ceil( alpha * a );
UINT newColor = r << 16;
newColor += g << 8;
newColor += b;
newColor += ( newAlpha << 24 );
return ( uintptr_t )newColor;
}