Devil™
28.06.2013, 17:52
Всем привет,с вами Devil :3
Сегодня я хочу выложить и объяснить код для вашего исходника.
На данный момент я разберу только код обычной кнопки.
Так же,вы можете данный материал использовать для чек кнопки.(Check Button)
И так,начёнм.
1.Ознакомление с кодом из паблик исходников.
В "паблик" исходниках,вам встретиться давольно ужасный\непонятный\хардкорный код,который вы не сразу-то и поймёте,да и разбираться в нём безполезно ,ибо ничего умного там нет.
Код который вам попадёться ,выглядит так :
Func_Button(int x ,int y , int w , int h ,int &Var ,char *Button_Text ,LPDIRECT3DDEVICE9 pDevice)
{
int y_ = (y) + (h/2)-7;
int x_ = x + 3+20;
int y__ = ((h) - (h/1));
int x__ = (x + w/1);
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
if(Var == 1 && Var !=0)
{
Var = 0;
}
else if(Var == 0)
{
if(Var == 0)
{
Var = 1;
}
}
}
}
if(Var == 0)
{
DrawBox(x_-26,y_,268,18, GRE2, pDevice);
//DrawBox(x_-27,y_+9,113,8.7, ButtonOff2, pDevice);
DrawBorder(x-3,y+2,268,h-2,BLACK, pDevice);
font->DrawText(x_+30,y_,TextOn,Button_Text,DT_CENTER|DT_ SHADOW);
}
if(Var == 1)
{
DrawBox(x_-27,y_,113,9, ButtonOn, pDevice);
DrawBox(x_-27,y_+9,113,8.7, ButtonOn2, pDevice);
DrawBorder(x-5,y+2,113,h-2,RED2, pDevice);
font->DrawText(x_+30,y_,TextOn,Button_Text,DT_CENTER|DT_ SHADOW);
}
}
Всё это очень грузит цп,и вообще нафиг никому не нужно.
Поэтому перейдём ко 2 части нашей темы.
2.Делаем "грамотный" код.
Сейчас мы будем делать "Грамотный код",который более-менее читается.
Для начала обьявим "Тело",для нашего кода.
void Кнопка(int x,int y,int w,int h,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
}
Мы сделали "тело" , для кода,и теперь давайте запишем туда наводку муши на кнопку.
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
if(IsInBox(x,y,w,h))
{
}
}
Так,это мы сделали ,теперь перейдём к коду :" Нажатие левой кнопки мыши",для этого мы запишем внутри "IsInBox" вот это :
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
}
Целиком всё будет выглядить так :
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
}
}
}
После мы в это место
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
ТУТ
}
Пишем вот это :
Var=!Var;
Дальше,мы объявляем ДаблВордом(DWORD),цвета которые будут использоваться ,да бы сократить код,и по 100 раз не писать новый бокс и т.д.
Перед if(IsInBox(x,y,w,h))
Пишем это :
DWORD Col1;
DWORD Col2;
Код будет выглядить так :
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1;
DWORD Col2;
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
}
Дальше,мы рисуем бокс,и текст(Основу кнопки,и текст ,который будет в названии кнопки).
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1;
DWORD Col2;
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
Text(Text,,y,Col2,DT_CENTER|DT_NOCLIP);
DrawBox(x,y,w,h,Col1,pDevice);
}
И теперь используем DWORD'ы,для манипуляции над цветом того или иного состояния кнопки.
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1 = RED;
DWORD Col2 = WHITE;
if(IsInBox(x,y,w,h))
{
Col1 = BLACK;
Col2 = DEEPSKYBLUE;
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
Text(Text,,y,Col2,DT_CENTER|DT_NOCLIP);
DrawBox(x,y,w,h,Col1,pDevice);
}
В этом коде,я присвоил значиние к DWORD ,цвета ,которым будет у нас кнопка выключенная.
И потом,просто изменял цвета,когда кнопка находиться в том или ином состоянии.
Ещё надо дописать что у нас будет,когда кнопка будет включена!
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1 = RED;
DWORD Col2 = WHITE;
if(IsInBox(x,y,w,h))
{
Col1 = BLACK;
Col2 = DEEPSKYBLUE;
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
if (Var==1)
{
Col1=BLACK;
Col2= BLUE;
}
Text(Text,,y,Col2,DT_CENTER|DT_NOCLIP);
DrawBox(x,y,w,h,Col1,pDevice);
}
Вроде бы всё,теперь используем кнопку так :
Кнопка(10,10,Test,"Название", pDevice);
Не забываем объявить переменную :
bool Test;
Всё,с вами был Devil , прошу помидорами не кидаться,тему писал для новичков в сфере Создания меню\читов ......
За некоторые ошибки прошу так же не ругаться,писал быстро,и не проверял(текст много).
Всем пока:)
Если надо,то напишу пояснения к коду:с
Сегодня я хочу выложить и объяснить код для вашего исходника.
На данный момент я разберу только код обычной кнопки.
Так же,вы можете данный материал использовать для чек кнопки.(Check Button)
И так,начёнм.
1.Ознакомление с кодом из паблик исходников.
В "паблик" исходниках,вам встретиться давольно ужасный\непонятный\хардкорный код,который вы не сразу-то и поймёте,да и разбираться в нём безполезно ,ибо ничего умного там нет.
Код который вам попадёться ,выглядит так :
Func_Button(int x ,int y , int w , int h ,int &Var ,char *Button_Text ,LPDIRECT3DDEVICE9 pDevice)
{
int y_ = (y) + (h/2)-7;
int x_ = x + 3+20;
int y__ = ((h) - (h/1));
int x__ = (x + w/1);
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
if(Var == 1 && Var !=0)
{
Var = 0;
}
else if(Var == 0)
{
if(Var == 0)
{
Var = 1;
}
}
}
}
if(Var == 0)
{
DrawBox(x_-26,y_,268,18, GRE2, pDevice);
//DrawBox(x_-27,y_+9,113,8.7, ButtonOff2, pDevice);
DrawBorder(x-3,y+2,268,h-2,BLACK, pDevice);
font->DrawText(x_+30,y_,TextOn,Button_Text,DT_CENTER|DT_ SHADOW);
}
if(Var == 1)
{
DrawBox(x_-27,y_,113,9, ButtonOn, pDevice);
DrawBox(x_-27,y_+9,113,8.7, ButtonOn2, pDevice);
DrawBorder(x-5,y+2,113,h-2,RED2, pDevice);
font->DrawText(x_+30,y_,TextOn,Button_Text,DT_CENTER|DT_ SHADOW);
}
}
Всё это очень грузит цп,и вообще нафиг никому не нужно.
Поэтому перейдём ко 2 части нашей темы.
2.Делаем "грамотный" код.
Сейчас мы будем делать "Грамотный код",который более-менее читается.
Для начала обьявим "Тело",для нашего кода.
void Кнопка(int x,int y,int w,int h,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
}
Мы сделали "тело" , для кода,и теперь давайте запишем туда наводку муши на кнопку.
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
if(IsInBox(x,y,w,h))
{
}
}
Так,это мы сделали ,теперь перейдём к коду :" Нажатие левой кнопки мыши",для этого мы запишем внутри "IsInBox" вот это :
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
}
Целиком всё будет выглядить так :
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
}
}
}
После мы в это место
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
ТУТ
}
Пишем вот это :
Var=!Var;
Дальше,мы объявляем ДаблВордом(DWORD),цвета которые будут использоваться ,да бы сократить код,и по 100 раз не писать новый бокс и т.д.
Перед if(IsInBox(x,y,w,h))
Пишем это :
DWORD Col1;
DWORD Col2;
Код будет выглядить так :
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1;
DWORD Col2;
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
}
Дальше,мы рисуем бокс,и текст(Основу кнопки,и текст ,который будет в названии кнопки).
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1;
DWORD Col2;
if(IsInBox(x,y,w,h))
{
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
Text(Text,,y,Col2,DT_CENTER|DT_NOCLIP);
DrawBox(x,y,w,h,Col1,pDevice);
}
И теперь используем DWORD'ы,для манипуляции над цветом того или иного состояния кнопки.
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1 = RED;
DWORD Col2 = WHITE;
if(IsInBox(x,y,w,h))
{
Col1 = BLACK;
Col2 = DEEPSKYBLUE;
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
Text(Text,,y,Col2,DT_CENTER|DT_NOCLIP);
DrawBox(x,y,w,h,Col1,pDevice);
}
В этом коде,я присвоил значиние к DWORD ,цвета ,которым будет у нас кнопка выключенная.
И потом,просто изменял цвета,когда кнопка находиться в том или ином состоянии.
Ещё надо дописать что у нас будет,когда кнопка будет включена!
void Кнопка(int x,int y,bool &Var,char *Text,LPDIRECT3DDEVICE9 pDevice)
{
DWORD Col1 = RED;
DWORD Col2 = WHITE;
if(IsInBox(x,y,w,h))
{
Col1 = BLACK;
Col2 = DEEPSKYBLUE;
if(GetAsyncKeyState(VK_LBUTTON)&1)
{
Var=!Var;
}
}
if (Var==1)
{
Col1=BLACK;
Col2= BLUE;
}
Text(Text,,y,Col2,DT_CENTER|DT_NOCLIP);
DrawBox(x,y,w,h,Col1,pDevice);
}
Вроде бы всё,теперь используем кнопку так :
Кнопка(10,10,Test,"Название", pDevice);
Не забываем объявить переменную :
bool Test;
Всё,с вами был Devil , прошу помидорами не кидаться,тему писал для новичков в сфере Создания меню\читов ......
За некоторые ошибки прошу так же не ругаться,писал быстро,и не проверял(текст много).
Всем пока:)
Если надо,то напишу пояснения к коду:с