Bom, Essa arrow list foi tirada da base DH e com algumas modificações bastente simples coloquei ela na base Whit's Base v4
Pois então vamos ao que intereça!
Necessário a classe Timers.h
Code:
//Classe Timers.h
#ifndef _TIMERS_
#define _TIMERS_
#pragma once
#include "Includes.h"
class CTimer
{
public:
CTimer( void ) { dwStop = 0; }
~CTimer( void ) { }
void Start( float fSec )
{
dwStop = (DWORD)(fSec*1) + timeGetTime();
}
void Stop( void )
{
dwStop = 0;
}
float TimeLeft( void )
{
if( Running() )
return ( ( (float)( dwStop - timeGetTime() ) / 1 ) );
return 0;
}
bool Running( void )
{
return ( dwStop > timeGetTime() );
}
protected:
DWORD dwStop;
};
#endif
Agora declare Isto aqui em algum lugar que você ache conveniente!
Code:
///////////////////////////////
///////////////////////////////
struct sArrowList{ //
int Value; //
}; //
const int MaxArrs = 13; //
sArrowList Arr[MaxArrs]; //
CTimer AreaCheck[MaxArrs]; //
///////////////////////////////
///////////////////////////////
Adicione as Funções abaixo!
Code:
int cMenu::GlobalCheck( int i, float x, float y, float w, float h, int speed, CTimer* timerList )
{
POINT Cur;
GetCursorPos(&Cur);
if( Cur.x > x && Cur.x < x+w && Cur.y > y && Cur.y < y+h )
{
if( GetAsyncKeyState( VK_LBUTTON ) < 0 )
{
if( !timerList[i].Running() )
{
timerList[i].Start( (float)speed );
return 1;
}
}
return 2;
}
return 0;
}
int cMenu::ArrowList( int i, float x, float y, int max, char** Array, char *Title, int Speed, LPDIRECT3DDEVICE9 pDevice )
{
int Check1 = Menu.GlobalCheck( i, x, y - 1, 18, 18, Speed, AreaCheck );
int Check2 = Menu.GlobalCheck( i, x + 155, 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
//////////////////////////////////////////////////////////////////////////
Menu.DrawBorder( x, y, 15, 15, 1, DarkOutline, LightOutline , pDevice);
Menu.DrawString(x + 4, y - 0.5, dwArrowColor1, Menu.pFont,"<");
//////////////////////////////////////////////////////////////////////////
//Right Button
//////////////////////////////////////////////////////////////////////////
Menu.DrawBorder( x + 159, y, 15, 15, 1, DarkOutline, LightOutline , pDevice );
Menu.DrawString(x + 163, y - 0.5, dwArrowColor1, Menu.pFont,">");
//////////////////////////////////////////////////////////////////////////
//Print Name From Array
//////////////////////////////////////////////////////////////////////////
char Final[64];
//Display List of Chars
if( Array != NULL )
{
if( Title == NULL )
{
Menu.DrawString(x + 48, y - 2, White, Menu.pFont,Array[Arr[i].Value]);
}
else
{
sprintf( Final, "%s [%s]", Title, Array[Arr[i].Value] );
Menu.DrawString(x + 21, y + 2, White, Menu.pFont,Final);
}
}
else //Display INT
{
sprintf( Final, "%s [%i]", Title, Arr[i].Value );
Menu.DrawString(x + 21, y + 2, White, Menu.pFont,Final);
}
return Arr[i].Value;
}
Para não tem a Função DrawnString, Está aqui!
Code:
void cMenu::DrawString(float x, float y, DWORD color, LPD3DXFONT g_pFont, const char *fmt, ...)
{
RECT FontPos = { x, y, x + 120, y + 16 };
char buf[1024] = {'\0'};
va_list va_alist;
va_start(va_alist, fmt);
vsprintf_s(buf, fmt, va_alist);
va_end(va_alist);
g_pFont->DrawTextA(NULL, buf, -1, &FontPos, DT_NOCLIP, color);
}
Bom, está ai espero que gostem
Para quem não está conseguindo Colocar na base, se vire pois está tudo na mão ^^ .
Modo de Uso!
Code:
char *AimKeyk[7] = { "VK_ALT", "VK_SHIFT", "VK_CTRL","VK_LBUTTON","VK_RBUTTON","VK_TAB",NA };
int iAimKey;
iAimKey = ArrowList( 8, MX + 394 + 10, y + 79, 165, AimKeyk, "Aim Key", 225, pDevice );
Créditos!
Não sei quem criou esse Arrow List
Foi Retirado da Base DHVipBase
Obs: quem souber os Créditos pode avisar que eu coloco!