Code:
#include "menu.h"
cMenu* menu = NULL;
char *Speed[5] = { "Off", "Legit", "Fast", "Faster", "Super Fast" };
char *RKILL[5] = { "Off", "Head", "Chest", "Neck", "Pelvis" };
char *Bones[4] = { "Head", "Chest", "Neck", "Pelvis" };
char *LinesEsp[4] = { "Off", "Bottom", "Middle", "Top" };
char *AimSpots[2] = { "Distance", "Crosshair" };
char *Esp[3] = { "Off", "Enemy", "All" };
char *FOV[2] = { "180", "360" };
char *OnOff[2] = { "Off", "On" };
char *NA = "NA";
//char *Speed[5] = { "0", "1", "2", "3", "4" };
//char *LinesEsp[4] = { "0", "1", "2", "3" };
//char *Bones[4] = { "0", "1", "2", "3" };
//char *AimSpots[2] = { "1", "2" };
//char *Esp[3] = { "0", "1", "2" };
//char *OnOff[2] = { "0", "1" };
//char *Telekill[3] = { "0", "1", "2" };
//char *FOV[2] = { "180", "360" };
//Make a new Hotkey Method
char *Keys[166] =
{
"OFF", "LBUTTON", "RBUTTON", "CANCEL", "MBUTTON", "MOUSE3", "MOUSE4", NA, "BACK", "TAB",
NA, NA, "CLEAR", "ENTER", NA, NA, "SHIFT", "CONTROL", "ALT", "PAUSE",
"CAPITAL", "KANA", NA, "JUNJA", "FINAL", "HANJA", NA, "ESCAPE", "CONVERT", "NOCONVERT",
"ACCEPT", "MODECHANGE", "SPACE", "PRIOR", "NEXT", "END", "HOME", "LEFT", "UP", "RIGHT",
"DOWN", "SELECT", "PRINT", "EXECUTE", "SNAPSHOT", "INSERT", "DELETE", "HELP", "0", "1",
"2", "3", "4", "5", "6", "7", "8", "9", NA, NA,
NA, NA, NA, NA, NA, "A", "B", "C", "D", "E",
"F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y",
"Z", "LWIN", "RWIN", "APPS", NA, "SLEEP", "NUMPAD0", "NUMPAD1", "NUMPAD2", "NUMPAD3",
"NUMPAD4", "NUMPAD5", "NUMPAD6", "NUMPAD7", "NUMPAD8", "NUMPAD9", "MULTIPLY", "ADD", "SEPARATOR", "SUBTRACT",
"DECIMAL", "DIVIDE", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8",
"F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18",
"F19", "F20", "F21", "F22", "F23", "F24", NA, NA, NA, NA,
NA, NA, NA, NA, "NUMLOCK", "SCROLL", NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
"LSHIFT", "RSHIFT", "LCONTROL", "RCONTROL", "LALT", "RALT"
};
int cMenu::CheckTabs( float x, float y, float w, float h )
{
if( Cur.x > x && Cur.x < x+w && Cur.y > y && Cur.y < y+h )
{
if( GetAsyncKeyState( VK_LBUTTON ) < 0 )
{
for( int i2 = 0; i2 < mSet.MaxTabs; i2++ )
{
if( i2 != mSet.TotalTabs )
Tab[i2].OnOff = false;
}
return 1;
}
return 2;
}
return 0;
}
int cMenu::GlobalCheck( int i, float x, float y, float w, float h, int speed, CTimer* timerList )
{
if( Cur.x > x && Cur.x < x+w && Cur.y > y && Cur.y < y+h )
{
if( GetAsyncKeyState( VK_LBUTTON ) < 0 )
{
if( !timerList[i]****nning() )
{
timerList[i].Start( (float)speed );
return 1;
}
}
return 2;
}
return 0;
}
// < OPTION > Cycle'r aka ArrowList ?
int cMenu::ArrowList( int i, float x, float y, int max, char** Array, char *Title, int Speed )
{
int Check1 = GlobalCheck( i, x, y - 1, 18, 18, Speed, AreaCheck );
int Check2 = GlobalCheck( i, x + 119, y, 18, 18, Speed, AreaCheck );
if( Arr[i].Value == 0 )
if( Check1 == 1 )
Arr[i].Value = max + 1;
if( Arr[i].Value == max )
if( Check2 == 1 )
Arr[i].Value = -1;
if( Arr[i].Value > 0 )
if( Check1 == 1 )
Arr[i].Value -= 1;
if( Arr[i].Value < max )
if( Check2 == 1 )
Arr[i].Value += 1;
DWORD dwArrowColor1 = 0xFFFFFFFF;
DWORD dwArrowColor2 = 0xFFFFFFFF;
if( Check1 == 2 )
dwArrowColor1 = DarkOutline;
else if( Check2 == 2 )
dwArrowColor2 = DarkOutline;
//////////////////////////////////////////////////////////////////////////
//Left Button
//////////////////////////////////////////////////////////////////////////
d3d->DrawBorder( x, y, 15, 15, LightOutline, DarkOutline );
engine->RenderString( engine->GetMenuFont(), x + 4, y + 1, main->ToWideString( STRING_DECREASE ), dwArrowColor1 );
//////////////////////////////////////////////////////////////////////////
//Right Button
//////////////////////////////////////////////////////////////////////////
d3d->DrawBorder( x + 121, y, 15, 15, LightOutline, DarkOutline );
engine->RenderString( engine->GetMenuFont(), x + 125, y + 1, main->ToWideString( STRING_INCREASE ), dwArrowColor2 );
//////////////////////////////////////////////////////////////////////////
//Print Name From Array
//////////////////////////////////////////////////////////////////////////
char Final[64];
//Display List of Chars
if( Array != NULL )
{
if( Title == NULL )
{
engine->RenderString( engine->GetMenuFont(), x + 48, y + 2, main->ToWideString( Array[Arr[i].Value] ), White );
}
else
{
sprintf( Final, STRING_SS, Title, Array[Arr[i].Value] );
engine->RenderString( engine->GetSmallFont(), x + 21, y + 2, main->ToWideString( Final ), White );
}
}
else //Display INT
{
sprintf( Final, STRING_SI, Title, Arr[i].Value );
engine->RenderString( engine->GetSmallFont(), x + 21, y + 2, main->ToWideString( Final ), White );
}
return Arr[i].Value;
}
void cMenu::DrawCheckBox( int i, char *Text, float x, float y )
{
cBox[i].name = Text;
int Check = GlobalCheck( i, x, y - 1, 145, 17, 170, ClickCheck );
if( Check == 1 )
cBox[i].OnOff =! cBox[i].OnOff;
if( cBox[i].OnOff )
{
d3d->DrawBorder( x, y, 15, 15, DarkOutline, LightOutline );
d3d->DrawCheck( 0xFFFFFFFF, x + 4, y + 7 );
}
else
d3d->DrawBorder( x, y, 15, 15, LightOutline, DarkOutline );
DWORD TextColor = White;
if( Check == 2 )
TextColor = DarkOutline;
engine->RenderString( engine->GetSmallFont(), x + 22, y + 2, main->ToWideString( Text ), TextColor );
}
void cMenu::DrawTabButton( char *Text, float w, float h, float x, float y )
{
Tab[mSet.TotalTabs].name = Text;
if( CheckTabs( x, y, w, h ) == 1 )
if( Tab[mSet.TotalTabs].OnOff != true )
Tab[mSet.TotalTabs].OnOff = true;
if( Tab[mSet.TotalTabs].OnOff )
d3d->DrawBorderWithFill( x, y, w, h, DarkOutline, LightOutline, LightAvacado );
else
d3d->DrawBorderWithFill( x, y, w, h, LightOutline, DarkOutline, LightAvacado );
float TextX = strlen( Text ) * 2.5f;
engine->RenderString( engine->GetMenuFont(), ( x + 28 ) - (int)TextX, y + 3, main->ToWideString( Text ), White );
if( !Tab[mSet.TotalTabs].OnOff )
if( CheckTabs( x, y, w, h ) == 1 || CheckTabs( x, y, w, h ) == 2 )
engine->RenderString( engine->GetMenuFont(), ( x + 28 ) - (int)TextX, y + 3, main->ToWideString( Text ), DarkOutline );
mSet.TotalTabs++;
}
void cMenu::RenderMenu( float x, float y, float w, float h )
{
if( !d3d->pDevice )
return;
if( GetAsyncKeyState( iMenuKey ) &1 )
mSet.Show = !mSet.Show;
if( mSet.Show )
{
mSet.TotalTabs = 0;
//////////////////////////////Main Gui Design/////////////////////////////
//Outline
d3d->DrawBorder( x - 1, y - 1, w + 1, h + 1, LightOutline, DarkOutline );
//////////////////////////////////////////////////////////////////////////
//Outside Border
d3d->DrawFilledRectangle( x, y, w, h, LightAvacado );
//////////////////////////////////////////////////////////////////////////
//Title Text
//engine->RenderString( engine->GetMenuFont(), ( w / 2 ) - 21, y + 4, main->ToWideString( STRING_MENU_TITLE ), OffYellow );
engine->RenderString( engine->GetSmallFont(), ( w / 2 ) - 21, y + 4, main->ToWideString( STRING_MENU_TITLE ), 0xFFFFFFFF );
//////////////////////////////////////////////////////////////////////////
//Inside Outline
d3d->DrawBorder( x + 7, y + 21, w - 16, h - 30, DarkOutline, LightOutline );
//////////////////////////////////////////////////////////////////////////
//Inside DarkerFill
d3d->DrawFilledRectangle( x + 8, y + 22, w - 17, h - 31, DarkInsideFill );
//////////////////////////////////////////////////////////////////////////
//Option Outline
d3d->DrawBorder( x + 22, y + 51, w - 46, h - 71, DarkOutline, LightOutline );
//////////////////////////////////////////////////////////////////////////
//Option Light Fill
d3d->DrawFilledRectangle( x + 23, y + 52, w - 47, h - 72, LightAvacado );
//Unlock Cursor
//*(int*)ADDR_CURSORCENTER = 0;
engine->GetLTBase()->RunConsoleCommand( STRING_MENU_CCENTER );
//GetCursor Pos
GetCursorPos( &Cur );
//////////////////////////////////////////////////////////////////////////
////////////////////////////// Tab Handling ////////////////////////////
//////////////////////////////////////////////////////////////////////////
DrawTabButton( STRING_MENU_TAB_AIMBOT, 62, 20, x + 22, y + 26 );
DrawTabButton( STRING_MENU_TAB_ESP, 62, 20, x + 89, y + 26 );
DrawTabButton( STRING_MENU_TAB_MEMORY, 62, 20, x + 157, y + 26 );
DrawTabButton( STRING_MENU_TAB_OTHERS, 62, 20, x + 225, y + 26 );
DrawTabButton( STRING_MENU_TAB_CONFIG, 63, 20, x + 293, y + 26 );
float LeftButtonX = x + 40;
float RightButtonX = LeftButtonX + 160;
//////////////////////////////////////////////////////////////////////////
//Aimbot Settings
if( Tab[0].OnOff )
{
//////////////////////////////////////////////////////////////////////////
//Left Side
DrawOptionGrouping( LeftButtonX - 11, y + 60, h - 90, STRING_MENU_GROUPING_AIMBOT, -2 );
DrawCheckBox( 4, STRING_MENU_CBOX_ACTIVATEBOT, LeftButtonX, y + 70 );
DrawCheckBox( 1, STRING_MENU_CBOX_AUTOAIM, LeftButtonX, y + 90 );
DrawCheckBox( 2, STRING_MENU_CBOX_AUTOFIRE, LeftButtonX, y + 110 );
DrawCheckBox( 3, STRING_MENU_CBOX_VISIBLE_ONLY, LeftButtonX, y + 130 );
DrawCheckBox( 6, STRING_MENU_CBOX_AIM_AT_TEAM, LeftButtonX, y + 150 );
DrawCheckBox( 5, STRING_MENU_CBOX_SPAWN_CHECK, LeftButtonX, y + 170 );
//////////////////////////////////////////////////////////////////////////
//Right Side
DrawOptionGrouping( RightButtonX - 7, y + 60, h - 90, STRING_MENU_GROUPING_AIMCONFIG, -2 );
AimBone = ArrowList( 0, RightButtonX + 3, y + 70, 3, Bones, STRING_MENU_CBOX_AIMBONE, 170 );
AimMode = ArrowList( 1, RightButtonX + 3, y + 90, 1, AimSpots, STRING_MENU_CBOX_AIMMODE, 170 );
MaxFov = ArrowList( 2, RightButtonX + 3, y + 110, 1, FOV, STRING_MENU_CBOX_MAXFOV, 170 );
DrawCheckBox( 29, STRING_MENU_CBOX_AUTOSWITCH, RightButtonX + 3, y + 130 );
DrawCheckBox( 54, STRING_MENU_CBOX_FPSCORRECTION, RightButtonX + 3, y + 150 );
DrawCheckBox( 56, STRING_MENU_CBOX_PREDICTION, RightButtonX + 3, y + 170 );
}
//////////////////////////////////////////////////////////////////////////
//Esp Settings
if( Tab[1].OnOff )
{
//////////////////////////////////////////////////////////////////////////
//Left Side
DrawOptionGrouping( LeftButtonX - 11, y + 60, h - 90, STRING_MENU_GROUPING_PLAYER, 4 );
NameEsp = ArrowList( 3, LeftButtonX, y + 70, 2, Esp, STRING_MENU_CBOX_NAME, 170 );
DistanceEsp = ArrowList( 4, LeftButtonX, y + 90, 2, Esp, STRING_MENU_CBOX_DISTANCE, 170 );
HealthBars = ArrowList( 5, LeftButtonX, y + 110, 2, Esp, STRING_MENU_CBOX_HEALTH, 170 );
BoxEsp = ArrowList( 6, LeftButtonX, y + 130, 2, Esp, STRING_MENU_CBOX_BOX, 170 );
LineEsp = ArrowList( 7, LeftButtonX, y + 150, 3, LinesEsp, STRING_MENU_CBOX_LINES, 170 );
DrawCheckBox( 27, STRING_MENU_CBOX_VIS_CHECK, LeftButtonX, y + 170 );
DrawCheckBox( 24, STRING_MENU_CBOX_BEHINDYOU, LeftButtonX, y + 190 );
DrawCheckBox( 25, STRING_MENU_CBOX_VISBILEWARN, LeftButtonX, y + 210 );
DrawCheckBox( 28, STRING_MENU_CBOX_NPC, LeftButtonX, y + 230 );
//////////////////////////////////////////////////////////////////////////
//Right Side
DrawOptionGrouping( RightButtonX - 7, y + 60, h - 90, STRING_MENU_GROUPING_OBJECT, 4 );
DrawCheckBox( 18, STRING_MENU_CBOX_EXPLOSIVE_NAME, RightButtonX + 3, y + 70 );
DrawCheckBox( 19, STRING_MENU_CBOX_EXP_OWNER, RightButtonX + 3, y + 90 );
DrawCheckBox( 20, STRING_MENU_CBOX_EXP_DISTANCE, RightButtonX + 3, y + 110 );
DrawCheckBox( 21, STRING_MENU_CBOX_EXP_WARNING, RightButtonX + 3, y + 130 );
DrawCheckBox( 22, STRING_MENU_CBOX_PICKUP, RightButtonX + 3, y + 150 );
DrawCheckBox( 23, STRING_MENU_CBOX_PICKUP_DISTANCE, RightButtonX + 3, y + 170 );
}
//////////////////////////////////////////////////////////////////////////
//Memory Settings
if( Tab[2].OnOff )
{
//////////////////////////////////////////////////////////////////////////
//Left Side Memory Hacks
DrawOptionGrouping( LeftButtonX - 11, y + 60, h - 90, STRING_MENU_GROUPING_MEM, 3 );
DrawCheckBox( 0, STRING_MENU_CBOX_2DRADAR, LeftButtonX, y + 70 );
DrawCheckBox( 48, STRING_MENU_CBOX_STATS, LeftButtonX, y + 90 );
DrawCheckBox( 58, STRING_MENU_CBOX_DRAWFPS, LeftButtonX, y + 110 );
DrawCheckBox( 50, STRING_MENU_CBOX_UNLIMITEDSTAM, LeftButtonX, y + 130 );
DrawCheckBox( 45, STRING_MENU_CBOX_CHAMS, LeftButtonX, y + 150 );
DrawCheckBox( 12, STRING_MENU_CBOX_EAGLE, LeftButtonX, y + 170 );
DrawCheckBox( 14, STRING_MENU_CBOX_FLY, LeftButtonX, y + 190 );
//////////////////////////////////////////////////////////////////////////
//Right Side Rage Hacks
DrawOptionGrouping( RightButtonX - 7, y + 60, h - 90, STRING_MENU_GROUPING_RAGE, 8 );
DrawCheckBox( 57, STRING_MENU_CBOX_SUPERBULLETS, RightButtonX + 3, y + 70 );
DrawCheckBox( 44, STRING_MENU_CBOX_WEAPONRANGE, RightButtonX + 3, y + 90 );
DrawCheckBox( 39, STRING_MENU_CBOX_SERVERCRASHER, RightButtonX + 3, y + 110 );
DrawCheckBox( 42, STRING_MENU_CBOX_SPAMMER, RightButtonX + 3, y + 130 );
DrawCheckBox( 59, STRING_MENU_CBOX_TELEKILL, RightButtonX + 3, y + 150 );
DrawCheckBox( 13, STRING_MENU_CBOX_ADISTANCE, RightButtonX + 3, y + 170 );
iSpeed = ArrowList( 11, RightButtonX + 3, y + 190, 4, Speed, STRING_MENU_CBOX_SPEED, 170 );
iRemoteKill = ArrowList( 12, RightButtonX + 3, y + 210, 1, RKILL, STRING_MENU_ARRR_REMOTEKILL, 170 ); //Limited to 1
}
//////////////////////////////////////////////////////////////////////////
//Other
if( Tab[3].OnOff )
{
//////////////////////////////////////////////////////////////////////////
//Left Side Removals
DrawOptionGrouping( LeftButtonX - 11, y + 60, h - 90, STRING_MENU_GROUPING_REMOVALS, -2 );
DrawCheckBox( 30, STRING_MENU_CBOX_AIMCORRECTION, LeftButtonX, y + 70 );
DrawCheckBox( 31, STRING_MENU_CBOX_SPREAD, LeftButtonX, y + 90 );
DrawCheckBox( 32, STRING_MENU_CBOX_NOFOG, LeftButtonX, y + 110 );
DrawCheckBox( 33, STRING_MENU_CBOX_NOCAMDAM, LeftButtonX, y + 130 );
//DrawCheckBox( 34, STRING_MENU_CBOX_NOSFX, LeftButtonX, y + 150 );
DrawCheckBox( 35, STRING_MENU_CBOX_NOGUN, LeftButtonX, y + 150 );
//DrawCheckBox( 37, no sway seperate, LeftButtonX, y + 190 );
//////////////////////////////////////////////////////////////////////////
//Left Side MISC
DrawOptionGrouping( RightButtonX - 7, y + 60, h - 90, STRING_MENU_GROUPING_MISC, 9 );
DrawCheckBox( 7, STRING_MENU_CBOX_HULK, RightButtonX + 3, y + 70 );
DrawCheckBox( 8, STRING_MENU_CBOX_WINDOWED, RightButtonX + 3, y + 90 );
DrawCheckBox( 9, STRING_MENU_CBOX_TRACERS, RightButtonX + 3, y + 110 );
DrawCheckBox( 10, STRING_MENU_CBOX_FULLBRIGHT, RightButtonX + 3, y + 130 );
//DrawCheckBox( 11, STRING_MENU_CBOX_CROSSHAIR, RightButtonX + 3, y + 150 );
}
//////////////////////////////////////////////////////////////////////////
//Config Settings
if( Tab[4].OnOff )
{
//////////////////////////////////////////////////////////////////////////
//Left Side
DrawOptionGrouping( LeftButtonX - 11, y + 60, h - 90, STRING_MENU_GROUPING_CONFIG, 10 );
iAimKey = ArrowList( 8, LeftButtonX, y + 70, 165, Keys, STRING_MENU_CBOX_AIMKEY, 170 );
iMenuKey = ArrowList( 9, LeftButtonX, y + 90, 165, Keys, STRING_MENU_CBOX_MENUKEY, 170 );
iTeleKey = ArrowList( 10, LeftButtonX, y + 110, 165, Keys, STRING_MENU_CBOX_TELEKEY, 170 );
}
if( !LockView )
{
Pitch = engine->GetPlayerMgr()->Pitch;
Yaw = engine->GetPlayerMgr()->Yaw;
LockView = true;
}
engine->GetPlayerMgr()->Pitch = Pitch;
engine->GetPlayerMgr()->Yaw = Yaw;
d3d->DrawMouse( White, Black );
}
else if( !mSet.Show )
LockView = false;
}
void cMenu::DrawGuiBox( float x, float y, float w, float h, char *Text )
{
//Outline
d3d->DrawBorder( x - 1, y - 1, w + 1, h + 1, LightOutline, DarkOutline );
//Outside Border
d3d->DrawFilledRectangle( x, y, w, h, LightAvacado );
//Title Text
engine->RenderString( engine->GetMenuFont(), x + ( w / 2 ) - strlen( Text ) * 2.5, y + 4, main->ToWideString( Text ), 0xFFFFFFFF );
//Inside Outline
d3d->DrawBorder( x + 7, y + 21, w - 16, h - 30, DarkOutline, LightOutline );
//Inside DarkerFill
d3d->DrawFilledRectangle( x + 8, y + 22, w - 17, h - 31, DarkInsideFill );
}
void cMenu::DrawOptionGrouping( float x, float y, float h, char *Text, int TextXOffset )
{
//Left Top Horizontal
d3d->DrawFilledRectangle( x, y, 30, 2, DarkInsideFill );
//Left Vertical
d3d->DrawFilledRectangle( x, y, 2, h, DarkInsideFill );
//Right Top Horizontal
d3d->DrawFilledRectangle( x + 127, y, 27, 2, DarkInsideFill );
//Bottom
d3d->DrawFilledRectangle( x, y + h, 157, 2, DarkInsideFill );
d3d->DrawFilledRectangle( x + 154, y, 2, h, DarkInsideFill );
engine->RenderString( engine->GetSmallFont(), ( x + 44 ) + TextXOffset, y - 7, main->ToWideString( Text ), 0xFFFFFFFF );
}