|
Для Юных Создателей Меню\Читов. - Разработка ПО для Point Blank - Бюро разработчиков Zhyk.Ru: создание чит-программ и прочего ПО для Point Blank |
28.06.2013, 17:52
|
#1
|
|
|
|
Разведчик
|
Регистрация: 17.05.2013
Сообщений: 13
Популярность: 293
Сказал(а) спасибо: 5
Поблагодарили 8 раз(а) в 6 сообщениях
|
Для Юных Создателей Меню\Читов.
Всем привет,с вами 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)
{
ТУТ
}
Пишем вот это :
Дальше,мы объявляем ДаблВордом(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);
Не забываем объявить переменную :
Всё,с вами был Devil , прошу помидорами не кидаться,тему писал для новичков в сфере Создания меню\читов ......
За некоторые ошибки прошу так же не ругаться,писал быстро,и не проверял(текст много).
Всем пока
Если надо,то напишу пояснения к коду:с
Последний раз редактировалось Devil™; 28.06.2013 в 18:12.
Причина: Добавлено сообщение
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
28.06.2013, 19:25
|
#2
|
|
|
|
Разведчик
|
Регистрация: 21.04.2013
Сообщений: 9
Популярность: 82
Сказал(а) спасибо: 1
Поблагодарили 5 раз(а) в 5 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
Извини меня,опытный менюшкостроитель,но чем первый код грузит цп,в отличии от второго?
По моему они ни чем существенно не отличаются.
ну кроме того,что кто-то в первом коде написал
else if(var==0)
{
if(var==0)
{
Последний раз редактировалось qwertyujhgb; 28.06.2013 в 19:28.
|
|
|
28.06.2013, 19:49
|
#3
|
|
|
|
Разведчик
|
Регистрация: 17.05.2013
Сообщений: 13
Популярность: 293
Сказал(а) спасибо: 5
Поблагодарили 8 раз(а) в 6 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
|
|
|
28.06.2013, 22:15
|
#4
|
|
|
|
Разведчик
|
Регистрация: 04.10.2012
Сообщений: 11
Популярность: 122
Сказал(а) спасибо: 4
Поблагодарили 13 раз(а) в 10 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
|
|
|
29.06.2013, 00:56
|
#6
|
|
|
|
Разведчик
|
Регистрация: 04.05.2012
Сообщений: 18
Популярность: 805
Сказал(а) спасибо: 24
Поблагодарили 25 раз(а) в 18 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
зачем двойной if? не ужеле в с++ нельзя использовать &&?
мб я не прав но
Код:
if(IsInBox(x,y,w,h) && (GetAsyncKeyState(VK_LBUTTON)&1))
{Var!=Var}
PS если не прав и в СПП так нельзя, звиняйте...
|
|
|
29.06.2013, 07:45
|
#7
|
|
|
|
Маршал
|
Регистрация: 05.05.2009
Сообщений: 875
Популярность: 48955
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
Естественно можно, но он этого не знает. Книжек соответственно по с++ он не читал, а только дергает малопонятный ему код из чужих исходников, не зная принципов того же сплайсинга который используется в перехвате D3D, да что там сплайсинг, даже массивы для него проблема. И мало понимает о том про что он пытается объяснить, судя из первого поста. Ну и плюс оформление кода в одну линию без отступов это просто жесть.
|
|
|
29.06.2013, 09:15
|
#8
|
|
|
|
Пехотинец
|
Регистрация: 11.01.2012
Сообщений: 84
Популярность: 3472
Сказал(а) спасибо: 97
Поблагодарили 182 раз(а) в 97 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
|
Цитата: |
|
|
|
|
|
|
|
|
|
if(IsInBox(x,y,w,h) && (GetAsyncKeyState(VK_LBUTTON)&1))
|
|
|
|
|
|
Вот как меня раздражает этот метод...
Неужели никто не хочет написать централизованный класс мыши, чтобы все было гораздо лучше?
Да и вот GetAsyncKeyState проверяет в таком условии только одно нажатие, а если накрутка или прокрутка, то как вам быть?
|
|
|
29.06.2013, 10:21
|
#9
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
|
Цитата: |
|
|
|
|
|
|
|
|
|
if(IsInBox(x,y,w,h))
|
|
|
|
|
|
А это что такое?
У меня необъявленный индентификатор, как быть?
Если пишеш, пиши полностью.
|
|
|
29.06.2013, 11:16
|
#10
|
|
|
|
Разведчик
|
Регистрация: 17.05.2013
Сообщений: 13
Популярность: 293
Сказал(а) спасибо: 5
Поблагодарили 8 раз(а) в 6 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
Так братцы кролики,вы давайте потише с комментариями,и зачем надо лезть в любую затычку,чтобы сунуть свой код?Смысл?Думаете исправят?Нет.....
Комменты без смысла.
|
|
|
29.06.2013, 11:50
|
#11
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
|
|
|
Пользователь сказал cпасибо:
|
|
29.06.2013, 12:49
|
#12
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
Devil™, У каждого, у кого есть комп, есть мышка.
Ты начал разъяснять функцию, так будь добр, довести дело до конца.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
02.07.2013, 23:48
|
#13
|
|
|
|
Старший сержант
|
Регистрация: 09.03.2012
Сообщений: 172
Популярность: 607
Сказал(а) спасибо: 368
Поблагодарили 112 раз(а) в 67 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
|
Цитата: |
|
|
|
|
|
|
|
|
|
Да и вот GetAsyncKeyState проверяет в таком условии только одно нажатие, а если накрутка или прокрутка, то как вам быть?
|
|
|
|
|
|
наверно так
Код:
//=============================================================================================================
void Button_PM(char *Button_Text,int &Var,char **typ,int max,int x,int y,LPDIRECT3DDEVICE9 pDevice)//Класс Кнопки
{
//======================================================
if(IsInBox(x,y,125,16)){//Координаты наведения и нажатия кнопки
//======================================================
DrawBox(x,y,125,16,BLACK2,pDevice);//Наведение
//======================================================
if(GetAsyncKeyState(VK_RBUTTON)){
if(Var!=0){Var--;Sleep(100);}}
if(GetAsyncKeyState(VK_LBUTTON)){
if(Var>=0 && Var<max){Var++;Sleep(100);}}}
DrawBox(x,y,125,16,DARK20,pDevice);
DrawBorder(x,y,125,16,DARK20,pDevice);
font->DrawText(x+63,y+1,WHITE,Button_Text,DT_CENTER|DT_SHADOW);
font->DrawText(x+99,y+1,WHITE,typ[Var],DT_SHADOW);
}
почему булл?булл обычно равен true или false, а у тебя тут включению.Или я не догоняю с++
Последний раз редактировалось BLACK_DEAD; 03.07.2013 в 09:49.
|
|
|
03.07.2013, 11:02
|
#14
|
|
|
|
Пехотинец
|
Регистрация: 11.01.2012
Сообщений: 84
Популярность: 3472
Сказал(а) спасибо: 97
Поблагодарили 182 раз(а) в 97 сообщениях
|
Re: Для Юных Создателей Меню\Читов.
А вот это не выход.
Лучше используй GetTickCount( ), будет подобие таймера.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 18:39.
|
|