[Помощь] Управление в самповском диалоге с помощью мыши - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
Форум » Программирование » AHK Программирование » [Помощь] Управление в самповском диалоге с помощью мыши (Интересный вопрос)
[Помощь] Управление в самповском диалоге с помощью мыши
shadystyle Дата: Воскресенье, 22.01.2017, 16:17 | Сообщение # 1
Новичок
Сообщений: 12
Статус: Offline
Приветствую, уважаемые. В общем, тема такая: все наверное уже прекрасно видели урок от McFree, где описывалось управление в диалоге с id'ом 2 (диалог с выбором пункта), и активации пункта кнопкой Enter. Но вот не задача, как же это можно обойти с помощью памяти процесса, выбирая пункт мышью? Ведь это возможно написать, данную функцию? Например в стандартном udf'e есть функция IsDialogButton1Selected(). Так вот, эта функция вообще никак не работает... Думаю найдется такой профи в ахк, который все же сможет написать эту самую функцию, типа "нажат первый пункт в диалоге или же нажатая 1ая(2ая) кнопка.

Сообщение отредактировал shadystyle - Воскресенье, 22.01.2017, 23:22
RellaX Дата: Воскресенье, 22.01.2017, 23:18 | Сообщение # 2
Боец
Сообщений: 282
Статус: Offline
Ищи. К чему эта тема ваще?

https://vk.com/zatkap
Demchog Дата: Воскресенье, 22.01.2017, 23:54 | Сообщение # 3
Любитель
Сообщений: 33
Статус: Offline
RellaX, наверное к тому, чтобы узнать код, ибо сам не умеет/не может. Не додумался?
zloimiwka Дата: Понедельник, 23.01.2017, 01:09 | Сообщение # 4
Новичок
Сообщений: 3
Статус: Offline
Цитата shadystyle ()
Думаю найдется такой профи в ахк, который все же сможет написать эту самую функцию, типа "нажат первый пункт в диалоге или же нажатая 1ая(2ая) кнопка.

Если бы такой был, то уже давно написал бы.
shadystyle Дата: Понедельник, 23.01.2017, 16:11 | Сообщение # 5
Новичок
Сообщений: 12
Статус: Offline
Цитата zloimiwka ()
Если бы такой был, то уже давно написал бы.

Вот для этого я и создал тему, вдруг найдется умелец, который обращается с памятью процесса на "ты" и все же сможет написать функцию smile
Dworkin Дата: Понедельник, 23.01.2017, 18:58 | Сообщение # 6
Боец
Сообщений: 110
Статус: Offline
Цитата shadystyle ()
IsDialogButton1Selected().

она работает, но не так как ты думаешь.
Эта функция передает 1, когда ты наводишь мышкой и эта кнопка выделяется под мышкой. Например что бы нажать кнопку "Выбор" мышкой.

Можно и обойтись тем что есть. Могу подкинуть идею алгоритма.
В udf есть функция getDialogIndex() - показывает номер строки, которую выбрал. Например в списке слова "яблоко" идет вторым и когда ты выделишь мышкой то оно покажет индекс 2 тоесть номер строки 2.
Далее есть функция, которая считывает текст строки по номеру тоесть индексу getDialogLine(index)
Понимаешь на что я намекаю?
Далее примерно так:
когда нажимается левая кнопка мыши и при этом открыт диалог(что бы ложных срабатываний не было)
то он считывает getDialogLine(getDialogIndex()).

Либо сделайть таймер на то что бы постоянно считывал getDialogLine(getDialogIndex()). и выводил
shadystyle Дата: Понедельник, 23.01.2017, 21:39 | Сообщение # 7
Новичок
Сообщений: 12
Статус: Offline
Цитата Dworkin ()
она работает, но не так как ты думаешь.
Эта функция передает 1, когда ты наводишь мышкой и эта кнопка выделяется под мышкой. Например что бы нажать кнопку "Выбор" мышкой.

Можно и обойтись тем что есть. Могу подкинуть идею алгоритма.
В udf есть функция getDialogIndex() - показывает номер строки, которую выбрал. Например в списке слова "яблоко" идет вторым и когда ты выделишь мышкой то оно покажет индекс 2 тоесть номер строки 2.
Далее есть функция, которая считывает текст строки по номеру тоесть индексу getDialogLine(index)
Понимаешь на что я намекаю?
Далее примерно так:
когда нажимается левая кнопка мыши и при этом открыт диалог(что бы ложных срабатываний не было)
то он считывает getDialogLine(getDialogIndex()).

Либо сделайть таймер на то что бы постоянно считывал getDialogLine(getDialogIndex()). и выводил


Внимательно почитал, то что вы написали, решил протестить, вот сам код:
Код
Numpad5::
showDialog(0, "Диалог 1", "Название диалога", "Действия", "Закрыть", 1)
Sleep 100
SetTimer dialog, 20
return

dialog:
Sleep 4
DestroyAllVisual()
TextCreate("Arial", 9, true, false, 20, 226, 0xFFFFFFFF, "{00FFFF}Nashe chislo: {FFF450}" IsDialogButton1Selected() "", true, true)
return

Что могу сказать, наводил я мышью на кнопку "Действия" , а число он выводил упорно "0". На счет getDialogLine(getDialogIndex()) - она к сожалению тоже не рабочая, читал в одной теме, как тоже пытались высчитать этим самым пункт в диалоге, не получилось ни у кого. У меня уже есть функция, которая определяет линию в диалоге, а вот по нажатию пока что ничего. Думаю что тема все еще актуальна


Сообщение отредактировал shadystyle - Понедельник, 23.01.2017, 21:40
CZAR Дата: Понедельник, 23.01.2017, 22:02 | Сообщение # 8
Czar Of Scripts
Сообщений: 1373
Статус: Offline
shadystyle, Можно узнать как ты определяешь линию? А то у меня функция работает, а у многих нет.




Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Dworkin Дата: Понедельник, 23.01.2017, 22:27 | Сообщение # 9
Боец
Сообщений: 110
Статус: Offline
Насчет isDialogButton1Selected()
Код
#Include SAMP-UDF-Developer.ahk

F2::
showDialog(0, "Диалог 1", "Название диалога", "Действия", "Закрыть", 1)
return

F3::
DialogButton1Selected:= isDialogButton1Selected()
addChatMessage("Наведено сверху: " DialogButton1Selected)
return


Пишет 1 когда навожу на Действие, если навести на Закрыть то все равно 0

Теперь насчет getDialogIndex()
Код
#NoEnv
#Include SAMP-UDF-Developer.ahk

F2::
showDialog(2, "Название диалога", "Текст1`nТекст2`nТекст3", "Действия", "Закрыть", 1)
return

F3::
DialogIndex := getDialogIndex()
addChatMessage("Index: " DialogIndex)
return

Сначало жмеш F2, затем мышкой выбираешь строку и жмешь F3, тебе index показывает номер строки. Так что функция getDialogLine(getDialogIndex()) работает.
Я использвол udf отсюда http://cheat-master.ru/forum/149-619860-1
aknqkzxlcs Дата: Вторник, 24.01.2017, 18:57 | Сообщение # 10
Любитель
Сообщений: 33
Статус: Offline
Если у тебя нормально работает getDialogIndex() (а не выдает 201, как у меня всегда), то этот код прокатит:
Код
loop
{
    if(isDialogOpen() && getDialogCaption() == "Первое меню" && !item1)
    {
  item1 := true
  SCM(CWHITE, "item1 = true, i = " getDialogIndex() ", c = " getDialogCaption())
    }
    else if(isDialogOpen() && getDialogCaption() == "Второе меню" && !item2)
    {
  item2 := true
  SCM(CWHITE, "item2 = true, i = " getDialogIndex() ", c = " getDialogCaption())
    }
    
    if(!isDialogOpen() && item1)
    {
  SCM(CWHITE, "Первое меню: " getDialogIndex())
  item1 := false
    }
    else if(!isDialogOpen() && item2)
    {
  SCM(CWHITE, "Второе меню: " getDialogIndex())
  item2 := false
    }
}

!1::
    showDialog(2, "Первое меню", "Пункт 1`nПункт 2`nПункт 3", "Выбрать", "Закрыть")
return

!2::
    showDialog(2, "Второе меню", "Пункт 1`nПункт 2`nПункт 3", "Выбрать", "Закрыть")
return

если подумать головой, можно сделать лучше и удобнее


Сообщение отредактировал aknqkzxlcs - Вторник, 24.01.2017, 20:18
shadystyle Дата: Вторник, 24.01.2017, 20:01 | Сообщение # 11
Новичок
Сообщений: 12
Статус: Offline
Цитата aknqkzxlcs ()
Если у тебя работает getDialogIndex() (у меня всегда пишет 201), то этот код прокатит:

Интересно, думал что я один такой, у которого постоянно выдает 201 index.) Сейчас протестирую код, заранее спасибо за проделанную работу
P.S. Не понятная функция SCM(....), компилятор говорит что нет такой функции, также хотел спросить, как именно работает написанный вами код.


Сообщение отредактировал shadystyle - Вторник, 24.01.2017, 20:08
aknqkzxlcs Дата: Вторник, 24.01.2017, 20:10 | Сообщение # 12
Любитель
Сообщений: 33
Статус: Offline

работает через раз, проехали

Цитата shadystyle ()
Интересно, думал что я один такой, у которого постоянно выдает 201 index.) Сейчас протестирую код, заранее спасибо за проделанную работу

я не так выразился, не будет работать, если выдает 201


Сообщение отредактировал aknqkzxlcs - Вторник, 24.01.2017, 20:42
shadystyle Дата: Вторник, 24.01.2017, 20:44 | Сообщение # 13
Новичок
Сообщений: 12
Статус: Offline
Цитата aknqkzxlcs ()
Нашел нужные адреса

А где вы их находите, мне нужно именно проверка нажатия первой и второй кнопки, а так же нажатие именно в самом диалоге, а точнее говоря двойное нажатие на линию
А тот код, тот что выше, все равно не работает... Заменил SCM на AddChatMessage, постоянно выводит нули.
Форум » Программирование » AHK Программирование » [Помощь] Управление в самповском диалоге с помощью мыши (Интересный вопрос)
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7209]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи
chinazes000 [11:29]

donaldga2 [05:28]

rubenia18 [21:17]

pokotiloroman91 [18:24]

stephensh5 [12:00]

calliesv7 [06:11]

louqm16 [22:14]

artushak [16:32]

Kingpolker [15:42]

leeyv11 [15:12]

Trappa17 [01:00]

Djamalchik [16:40]

ajeense [14:24]