[Полезное] Полноценное управление диалогами
|
|
[CM]James17 |
Дата: Четверг, 16.08.2018, 13:23 | Сообщение # 1
|
Новичок
Сообщений: 22
Статус: Offline
|
Всем привет, на форуме видел достаточное количество тем по "системам" управления диалогов и т.д., но они были или только для клавиатуры, или слишком сложны и непонятны для новичков. Поэтому я решил потратить немного времени и сделать полноценную "систему".
Проверка введенных данных в диалог с одной кнопкой "Закрыть". Работает для 1 и 3 стиля.
Код #SingleInstance Force #Include UDF.ahk AntiCrash() F2:: ShowDialog(1, "Проверка", "Введите данные:", "Закрыть") while (isDialogOpen()) { if (getKeyState("Enter", "P")) break if (getKeyState("Escape", "P")) return } sleep 150 output := readString(hGTA, dwSAMP + 0x12D8F8, 256) sleep 150 addChatMessage("{BDBDBD}Вы ввели: {FFFFFF}" output) return
Проверка введенных данных в диалог с двумя кнопками "Далее" и "Закрыть".
Код #SingleInstance Force #Include UDF.ahk AntiCrash() F2:: ShowDialog(1, "Проверка", "Введите данные:", "Далее", "Закрыть") while (isDialogOpen()) { if (getKeyState("Enter", "P")) break if (getKeyState("Escape", "P")) return } if isDialogButtonSelected("2") return sleep 150 output := readString(hGTA, dwSAMP + 0x12D8F8, 256) sleep 150 addChatMessage("{BDBDBD}Вы ввели: {FFFFFF}" output) return
Естественно, можно добавить проверку на пустоту введенных данных (перед addChatMessage()):
Выбор пункта из меню с одной кнопкой "Закрыть". Работает для 2 стиля.
Код #SingleInstance Force #Include UDF.ahk AntiCrash() F2:: ShowDialog(2, "Проверка", "Первая строка`nВторая строка`nТретья строка", "Закрыть") while (isDialogOpen()) { if (getKeyState("Enter", "P")) break if (getKeyState("Escape", "P")) return } sleep 100 if isDialogButtonSelected("1") return line := getDialogIndex() addChatMessage("{BDBDBD}Вы выбрали: {FFFFFF}" line " строку") return
Выбор пункта из меню с двумя кнопками "Далее" и "Закрыть".
Код #SingleInstance Force #Include UDF.ahk AntiCrash() F2:: ShowDialog(2, "Проверка", "Первая строка`nВторая строка`nТретья строка", "Далее", "Закрыть") while (isDialogOpen()) { if (getKeyState("Enter", "P")) break if (getKeyState("Escape", "P")) return } sleep 100 if isDialogButtonSelected("2") return line := getDialogIndex() addChatMessage("{BDBDBD}Вы выбрали: {FFFFFF}" line " строку") return Автор: я
Сообщение отредактировал [CM]James17 - Понедельник, 20.08.2018, 17:36 |
|
|
|
CZAR |
Дата: Четверг, 16.08.2018, 17:16 | Сообщение # 2
|
Czar Of Scripts
Сообщений: 1373
Статус: Offline
|
[CM]James17, ты хоть код проверяешь перед тем как выкладываешь?
Код if (getKeyState("Enter", "P") getCheckDialogButton()==1) Насчет функции isDialogButtonSelected, она не у всех работает..
Цитата "но они были или только для клавиатуры" В твоем случае скрипт вообще останавливается, пока активен цикл..
Я в ВК Ушел в веб.
• Ничего не покупаю. • Способы не проверяю.
У меня теперь новый домен, если ссылка не работает - напишите.
Гарант 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
|
|
|
|
CZAR |
Дата: Четверг, 16.08.2018, 17:30 | Сообщение # 3
|
Czar Of Scripts
Сообщений: 1373
Статус: Offline
|
И да.. Функция GetCheckDialogButton() вообще в вечный цикл уходит, магия какая-то..
Цитата [CM]James17 ( ) P.S. Еще одновременно возникает вопрос. Стоит ли перед ShowDialog() делать AntiCrash()? Иногда, при открытии диалога, крашит, а точнее картинка начинает жутко дрыгаться и лагать, а потом процесс игры закрывается, увидел вот функцию эту и решил спросить про нее, может она поможет.
Можешь anticrash() вшить в функцию ShowDialog().
Я в ВК Ушел в веб.
• Ничего не покупаю. • Способы не проверяю.
У меня теперь новый домен, если ссылка не работает - напишите.
Гарант 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
|
|
|
|
[CM]James17 |
Дата: Понедельник, 20.08.2018, 13:43 | Сообщение # 4
|
Новичок
Сообщений: 22
Статус: Offline
|
Phoenixxx_Czar, сглупил с оператором if, много раз приходилось обновлять код, забыл вставить "or". Исправил все ошибки, обновил все коды, избавился от ненужной функции GetCheckDialogButton(). Осталось избавиться от проблемы с циклом.
Сообщение отредактировал [CM]James17 - Понедельник, 20.08.2018, 14:18 |
|
|
|
Ghost29 |
Дата: Понедельник, 20.08.2018, 15:37 | Сообщение # 5
|
Новичок
Сообщений: 23
Статус: Offline
|
Зачем у тебя функция антикраша вызывается каждый раз при нажатии? Её достаточно использовать 1 раз при включении скрипта
|
|
|
|
[CM]James17 |
Дата: Понедельник, 20.08.2018, 17:35 | Сообщение # 6
|
Новичок
Сообщений: 22
Статус: Offline
|
Ghost29, хм, не знал. Думал эта функция требует постоянного ее вызова. Исправил.
|
|
|
|
|