Перейти к содержанию
Опубликовано
comment_170

Всем привет

 

Продолжаем работу над меню.

Предыдущий урок: http://fanhack.ru/index.php/topic/77-dobavliaem-knopki-v-meniu-%E2%84%963/

 

 

1. Добавляем в наш класс новую функцию для создания чек боксов:

 

Сначала добавим прототип:

bool AddItemCheck(char *names, float x, float y, int num, int &arg);// Чек бокс для активации функций

Потом опишем саму функцию:

bool D3DMenu::AddItemCheck(char *names, float x, float y, int num, int &arg)
{
if(arg == 0)DrawBox(x + 5, y + (15 * num) + 2, 15, 15, BLACK);// Бокс черный если функция выключена
else
{
DrawBox(x + 5, y + (15*num) + 2, 15, 15, GREEN);// Бокс зеленый если функция включена
}
if (IsInBox(x + 5,y + (15 * num) + 2, 15, 15))// Условие наведена ли мышка на бокс
{
DrawBox(x + 5, y + (15 * num) + 2, 15 , 15 , WHITETr);// Рисует еще полупрозрачный белый бокс для внешнего определения что мышка на нем
if (IsKeyPressed(VK_LBUTTON, 0))// ожидание нажатие клавиши мыши
{
if (arg == 0)arg = 1;// если аргумент равен 0(функция фыключена) то присваеваем ему один то есть включаем
else
{
arg = 0;// и наобород если вкл. то выключаем присваевая 0
}
}
}


DrawText(x + 5 + 20, y + (15 * num) + 2, WHITE, names, DT_LEFT);// отрисовка названия функции
DrawBorder(x  + 5, y + (15 * num) + 2, 15, 15 ,1, WHITE);// Рисеут рамку для внешности


return arg;
}

2. Добавим пару переменных которые будут работать как проверка какая функция была включена:

int but1q = 0;
int but2q = 0;
int but3q = 0;

3. Ну и использование нашего чек бокса:

if (DrawButtons("Кнопка 1", X + 5, Y + 25, 100, 30, 1, but1, RED))
{
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 1, but1q);
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 2, but2q);
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 3, but3q);
}

Подписей мало. Но по идее вы уже должны понять как все работает тут.

Это только примеры как работать с рисованием на дирексе.

Но вы должны понимать что это не все что можно сделать, еще очень много методов в D3D9 которые можно использовать.

Только тут уже вы должны сами думать как и каким образом что либо отрисовать, ведь основные примеры у вас теперь есть.)

Рисуется все от этих  функций. Можно сказать это базовые методы для рисования меню.

Все эти кнопки, чек боксы, ползунки и прочее берется из головы.)

 

Небольшие подсказки (как смог так и объяснил):

 

vH5PNONWTLODHTAPr-Tz7w.png

 

 

 

b1j418CGTh2ts2WyU6zvog.png

 

 

 

em_fYU-FQ2mN6uQOH1zj4Q.png

 

 

На этом можно закончить тему!) Все что непонятно или какие вопросы задавайте в разделе "Помощь по коду"

 

Полный исходник урока!

Рекомендуемые сообщения

Опубликовано
comment_209

А можешь прогайдить по поводу кнопок с изменяемым значением? допустим чтобы рядом было 2 кнопки < и > а посередине значение и оно отправляло в в чат команду допустим выбрал 14 нжал и в чат отправило /buy 14 или кaкую ты команду забиндил команду 

*чат открывается на Enter

Опубликовано
comment_212

@Qwest,ты хочешь пушить значение кнопкой? 

fI8TiLF34tE.jpg

вот так что бы было , есть игра в ней магазин командами хочу сделать чтото типа гуи но чтобы инджектилось с помошью длл

Опубликовано
comment_213

@Qwest,ну создаём буффер int buffer = 0;, далее в него пишем значение из меню с помощью инпута(нужно написать). Далее делаешь так

button(()[&]{//лямбда 
char* input;
char* cmd;
sprintf(input, "%i", buffer);
cmd = strcat("/buy", input);
 
Engine()->Chat("%s", cmd);//принт в чат в твоём сдк
 
})

@@MS_CHESTER помогай пиши инпуты))

With love by P45H3 =)

02a1fd3cc9ed.png

 

 

Опубликовано
comment_218

 

@Qwest

int var = 0;
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 1, var );
if (var) 
Chat("/buy %i", buffer);//buffer значение инпута

добавил в место тех кнопок что в исходнике пишет вот что 

KbGCodS7aAU.jpg

Опубликовано
comment_231

 

@Qwest

int var = 0;
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 1, var );
if (var) 
Chat("/buy %i", buffer);//buffer значение инпута

вобще изучался целую неделю неработает хоть убей)

  • 6 месяцев спустя...
Опубликовано
  • Автор
comment_886

Пропиши в EndScene вызов функций вх. Либо если у тебя chams то установи хук на IndexesDrawPrimitim как то так) В гугл в бей исправит название))

Опубликовано
comment_887

Блин как прикрутить WH к менюшке уже 2 день парюсь

Добавляешь класс "Function.h" как пример.Добавлешь этот класс к меню,далее описываешь функцию D3D.добавляешь к меню функцию.

Продажи:


Здравствуйте!Я являюсь официальным посредником по данным читам:
1.[AltezaHack] – [Point Blank]
2.[AimNester] – [Point Blank,Warface]
3.[GlobalHack] – [CS:GO]
4.[sMARTHACK] – [CS:GO]
5.[AimJunkies] – [CS:GO,Warface,PUBG,S.T.A.L.K.E.R.GTA V и многое другое]

6.[FanHack] - [PUBG]
7.[FanHack] - [CS:GO]
8.[FanHack] - [APEX]

В России,Украине и других странах “СНГ”
У меня лучшие цены в России,Украине и остальных странах!

Мой профиль в ВК: Сергей Иванов (vk.com)
Моя группа в ВК: Буст чего то там (vk.com)
Логин Skype: doni-dakk
Отзывы покупателей: https://vk.com/topic-145854178_35682231
Telegramm:@Sedine



Покупая товары у меня,вы получаете:
* Тех.поддержку.
* Быструю активацию ключа.
* Решение ваших проблем.
* Так же,тех.поддержка с сайта.


Особенности товаров:
1.Не банят.
2.Большой функционал.
3.Поддержка.
4.Полность на Русском языке.(часть из них)

При покупке,вам гарантирована активация,скрин,о том что ваши деньги дошли по меня.

Звонки,я не принимаю!Даже не пытайтесь!

 

Опубликовано
comment_891

Спасибо с Wh разобрался=)еще как сделать так чтобы при переключении DrawButtons то  AddItemCheck переключались (Старые скрываются) и идет показ новых (А не слитно =)))

Опубликовано
  • Автор
comment_892

Спасибо с Wh разобрался=)еще как сделать так чтобы при переключении DrawButtons то  AddItemCheck переключались (Старые скрываются) и идет показ новых (А не слитно =)))

Это в меню где отрисовка кнопок твоих.

Типо:

if(DrawButton1 == 1)
{
AddItemCheck 
AddItemCheck 1
AddItemCheck 3
}

if(DrawButton2 == 1)
{
AddItemCheck 
AddItemCheck 1
AddItemCheck 3
}
Опубликовано
  • Автор
comment_893

 

Спасибо с Wh разобрался=)еще как сделать так чтобы при переключении DrawButtons то  AddItemCheck переключались (Старые скрываются) и идет показ новых (А не слитно =)))

Это в меню где отрисовка кнопок твоих.

Типо:

if(DrawButton1 == 1)
{
AddItemCheck 
AddItemCheck 1
AddItemCheck 3
}

if(DrawButton2 == 1)
{
AddItemCheck 
AddItemCheck 1
AddItemCheck 3
}

 

 

Так сделай[hide s=2]

bool D3DMenu::DrawButtons(char *names, float x, float y, float w, float h, int num, int &arg, D3DCOLOR Color)
{
DrawBox(x, y*num, w, h, Color);
if (IsInBox(x, y*num, w, h))
{
DrawBox(x - 1, y*num - 1, w + 2, h + 2, Color);
// DrawBorder(x , y*num, w, h,1, WHITE);

if (IsKeyPressed(VK_LBUTTON, 0))
{
if (arg == 0)arg = 1;
else
{
arg = 0;
}
}
return arg; // это допиши и должно заработать
}

[/hide]

Опубликовано
  • Автор
comment_900

Ошибка (активно) E0042 несовместимые типы операндов ("bool (D3DMenu::*)(char *names, float x, float y, float w, float h, int num, int &arg, D3DCOLOR Color)" и "int")

 

Тогда так_)

[hide s=3]

bool D3DMenu::DrawButtons(char *names, float x, float y, float w, float h, int num, int &arg, D3DCOLOR Color)
{
DrawBox(x, y*num, w, h, Color);
if (IsInBox(x, y*num, w, h))
{
DrawBox(x - 1, y*num - 1, w + 2, h + 2, Color);
// DrawBorder(x , y*num, w, h,1, WHITE);

if (IsKeyPressed(VK_LBUTTON, 0))
{
if (arg == 0)arg = 1;
else
{
arg = 0;
}
}

if (arg == 0)return false;
else
{
return true;
}

return false; // это допиши и должно заработать
}

[/hide]

Гость
Эта тема закрыта для публикации ответов.