Всем привет! Все уже наверное знают про тему от McFree про меню со списком на стрелки. Так вот, это аналог только он работает по системе считывания выбранной строки через память. То есть.. Вы можете выбирать как в клео кликнул на пунк двойным щелчком ЛКМ или нажатием ентера, а так же выбрав строку курсором и нажав ентер. И так что нам нужно: 1. UDF последней версии. 2. Желательно ровные руки.
Теперь сам код: Код с нормальной табуляцией (отступами): *Линк*
Код
#include UDF_037.ahk ; UDF_037.ahk - это название файла UDF
;============================================= ; Обнуление переменной при нажатии ESC и F6 ;============================================= ~ESC:: ~F6:: menu:=0 return
;============================================= ; Кнопки вызова диалогов ;============================================= F3:: menu := 1 ShowDialog(2, "Диалог 1", "Первая`nВторая", "X") return F4:: menu := 2 ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X") return
~LButton:: Time := A_TickCount while(isDialogOpen()) { if (A_TickCount - Time > 500) { Return } } checkdialogMenu: if (isDialogButtonSelected() == 1) { menu := 0 } ifWinNotActive, GTA:SA:MP { return }
;============================================= ; Проверка на активное меню ;============================================= if (menu == 1) { menu := 0 line_num := getDialogLineNumber() line_text := getDialogLine(line_num)
addChatMessage("Выбрано: " line_text) return } else if (menu == 2) { menu := 0 line_num := getDialogLineNumber() line_text := getDialogLine(line_num)
if (line_num == 1) { showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X") menu := 3 } else if (line_num == 2) addChatMessage("Выбрано: " line_text) return } else if (menu == 3) { menu := 0 line_num := getDialogLineNumber() line_text := getDialogLine(line_num)
wongaBeast, на примере не заметрил в начале строку подключения UDF. Выглядит она так:
Код
#include UDF_037.ahk
СоответственноUDF_037.ahkэто файл который должен лежать там же где и скрипт (он же мой UDF который использую я в своих целях) Помогаю новичкам! По всем вопросам в ЛС!
McFree_, черт,я забыл подключение к UDF указать Благодарю за помощь
Добавлено (16.02.2017, 14:09) --------------------------------------------- McFree_, А как сделать чтобы при выборе в диалоге одного из вариантов был переход к следующему диалогу?
Дата: Понедельник, 06.03.2017, 20:32 | Сообщение # 11
Боец
Сообщений: 94
Статус: Offline
pkx_blr, если "isDialogButtonSelected" пашет на локальные диалоги, то можно сделать, а если нет, то можно попробовать через координаты мышки что-то намудрить...
~LButton:: if (A_PriorHotkey <> "~LButton" or A_TimeSincePriorHotkey > 500) ; Проверяем нажато ли два раза ЛКМ за 500мс, если нет ждем второе нажатие и ретурним { KeyWait, LButton return } ; Если нажато два раза, то делаем то что ниже if (menu==1) ; Если "menu" равно 1 { menu:=0 ; деактивирует меню line:=getDialogLineNumber() ; В переменную "line" будет номер выбранной строки sleep, 100 ; задержка перед телепортом на метку (можно делать под себя) Gosub, menu_1_%line% ; переходит на мету выбранного пункта return } if (menu==2) ; Если "menu" равно 2 { menu:=0 ; деактивирует меню line:=getDialogLineNumber() ; В переменную "line" будет номер выбранной строки sleep, 100 ; задержка перед телепортом на метку (можно делать под себя) Gosub, menu_2_%line% ; переходит на мету выбранного пункта return } return
$~Enter:: ; при нажатии на Entrer if (menu==1) ; Если "menu"равно 1 { menu:=0 ; деактивирует меню line:=getDialogLineNumber() ; В переменную "line" будет номер выбранной строки sleep, 500 ; задержка перед телепортом на метку (можно делать под себя) Gosub, menu_1_%line% ; переходит на мету выбранного пункта return } if (menu==2) ; Если "menu" равно 2 { menu:=0 ; деактивирует меню line:=getDialogLineNumber() ; В переменную "line" будет номер выбранной строки sleep, 500 ; задержка перед телепортом на метку (можно делать под себя) Gosub, menu_2_%line% ; переходит на мету выбранного пункта return } return
menu_1_1: ; это Первая строка в 1 диалоге addChatMessage("Вы выбрали первую строку в диалоге №1") return menu_1_2: ; это Вторая строка в 2 диалоге addChatMessage("Вы выбрали вторую строку в диалоге №1") return
menu_2_1: ; это Первая строка в 2 диалоге addChatMessage("Вы выбрали первую строку в диалоге №2") return menu_2_2: ; это Вторая строка в 2 диалоге addChatMessage("Вы выбрали вторую строку в диалоге №2") return
извените за беспокойство, но отключил аддон и заработало. с аддоном игру выбивало.
Сообщение отредактировал TaToCTAC - Вторник, 16.05.2017, 12:11