Вопросы по AHK-скриптингу

bozhenka

Участник
36
3
С новым годом, форумчане!

Есть вопрос по-поводу ввода в диалог. Стандартный ввод вроде SendInput меня не интересует. Нужно что-то вроде функции dialogInput(str), которая будет вводить строку str в диалог типа DIALOG_STYLE_INPUT. Желательно еще, чтобы после ввода в диалоге нажималась определенная клавиша, например, клавиша "ОК". Еще желательно, чтобы ввод мог осуществляться в свернутый диалог (который свернут с помощью setDialogState(0)), если конечно это возможно. Искал эту функцию в Samp UDF, не нашел. Быть может её там действительно нет, но кто-то знает нужный мне оффсет. Буду благодарен за инфу.
 

uryukhai

Активный
196
104
почему некоторые скрипты не работают в некоторых играх?
Код:
+NumpadSub::
   SendInput, {e}
   Sleep 1
   SendInput, {n}
   Sleep 100
   SendInput, {d}
   Sleep 100
   SendInput, {m}
   Sleep 100
   SendInput, {i}
   Sleep 100
   SendInput, {s}
   Sleep 100
   SendInput, {s}
   Sleep 100
   SendInput, {i}
   Sleep 100
   SendInput, {o}
   Sleep 100
   SendInput, {n}
   Sleep 100
exit
данный скрипт не работает в арме 3, как пофиксить?(запуск игры в окне - не помогает)
 
Последнее редактирование:

Phoenixxx_CZAR

Известный
61
31
почему некоторые скрипты не работают в некоторых играх?
Код:
+NumpadSub::
   SendInput, {e}
   Sleep 1
   SendInput, {n}
   Sleep 100
   SendInput, {d}
   Sleep 100
   SendInput, {m}
   Sleep 100
   SendInput, {i}
   Sleep 100
   SendInput, {s}
   Sleep 100
   SendInput, {s}
   Sleep 100
   SendInput, {i}
   Sleep 100
   SendInput, {o}
   Sleep 100
   SendInput, {n}
   Sleep 100
exit
данный скрипт не работает в арме 3, как пофиксить?(запуск игры в окне - не помогает)
Клавиша слишком быстро нажимается и игра не успевает ее словить, делай зажимание клавиши на 50мс.
 

Enderly

Новичок
19
4
почему некоторые скрипты не работают в некоторых играх?
Код:
+NumpadSub::
   SendInput, {e}
   Sleep 1
   SendInput, {n}
   Sleep 100
   SendInput, {d}
   Sleep 100
   SendInput, {m}
   Sleep 100
   SendInput, {i}
   Sleep 100
   SendInput, {s}
   Sleep 100
   SendInput, {s}
   Sleep 100
   SendInput, {i}
   Sleep 100
   SendInput, {o}
   Sleep 100
   SendInput, {n}
   Sleep 100
exit
данный скрипт не работает в арме 3, как пофиксить?(запуск игры в окне - не помогает)

Я лечил это таким способом:
Код:
+NumpadSub::
   SendInput, {e down}{e up}
   Sleep 1
   SendInput, {n down}{n up}
   Sleep 100
   SendInput, {d down}{d up}
   Sleep 100
   SendInput, {m down}{m up}
   Sleep 100
   SendInput, {i down}{i up}
   Sleep 100
   SendInput, {s down}{s up}
   Sleep 100
   SendInput, {s down}{s up}
   Sleep 100
   SendInput, {i down}{i up}
   Sleep 100
   SendInput, {o down}{o up}
   Sleep 100
   SendInput, {n down}{n up}
   Sleep 100
exit
 
  • Нравится
Реакции: Vlad Horii
У

Удалённый пользователь 123482

Гость
Как сделать проверку:
Если раскладка на русском языке, то переключаем на английский и наоборот с помощью вот этой команды -
Код:
PostMessage, 0x50, 2,,, A
Эта команда переключает язык.
 

#Rin

Известный
Всефорумный модератор
1,214
1,037
Как сделать проверку:
Если раскладка на русском языке, то переключаем на английский и наоборот с помощью вот этой команды -
Код:
PostMessage, 0x50, 2,,, A
Эта команда переключает язык.
Одна из встроенных переменных AHK содержит язык системы, а также по DllCall в Windows, можно узнать язык в данный момент.
AutoHotKey:
Lang_In_Window := DllCall("GetKeyboardLayout", "UInt", Active_Window_Thread)
MsgBox, %A_Language% / %Lang_In_Window%
Вот номера:
RU: 68748313
EN: 67699721
Переключение на английский: SendMessage, 0x50,, 0x4090409,, A
Переключение на русский: SendMessage, 0x50,, 0x4190419,, A

AutoHotKey:
Lang_In_Window := DllCall("GetKeyboardLayout", "UInt", Active_Window_Thread)
If (Lang_In_Window == 68748313) {
SendMessage, 0x50,, 0x4090409,, A
} else If (Lang_In_Window == 67699721) {
SendMessage, 0x50,, 0x4190419,, A
}
 
Последнее редактирование:

IceBurn

Известный
10
1
Доброго времени суток. Столкнулся с проблемой, что AHK скрипты, которые до переустановки Windows работали исправно, сейчас либо вообще не работают, либо работают с оочень большой задержкой. Например, памятка с законами штата и прочими вещами в игре вообще не открывается, при нажатии кнопок 0 реакции. Скрипт с большим количеством забинденных кнопок работает частично и при нажатии кнопки с выводом текста в чат проходит секунд 7-8. Также заметил, что используемые скриптом клавиши перестают нажиматься (Например, если в моём скрипте задействована клавиша Alt, то свернуть игру комбинацией Alt+Tab уже не могу. А если задействована клавиша Enter, то не могу отослать сообщения в чат). С чем может быть проблема?
 
У

Удалённый пользователь 123482

Гость
Код:
Gui, Font, S10 CDefault, Consolas
Gui, Add, Checkbox, x67 y20 w50 h20 vKolk Checked, Yea!
Gui, Show, x532 y95 h96 w188, Window

Loop,
{
if Kolk = 1
{
Msgbox, 64, Успешно!, Программа завершила свою установку.
ExitApp
}
}

GuiClose:
ExitApp
return
Объясните почему не работает
 

#Rin

Известный
Всефорумный модератор
1,214
1,037
Код:
Gui, Font, S10 CDefault, Consolas
Gui, Add, Checkbox, x67 y20 w50 h20 vKolk Checked, Yea!
Gui, Show, x532 y95 h96 w188, Window

Loop,
{
if Kolk = 1
{
Msgbox, 64, Успешно!, Программа завершила свою установку.
ExitApp
}
}

GuiClose:
ExitApp
return
Объясните почему не работает

Потому что переменная так сказать не сохранилось еще.
Вот рабочий код:
AutoHotKey:
Gui, Font, S10 CDefault, Consolas
Gui, Add, Checkbox, x67 y20 w50 h20 gTEST vTEST, TEST
Gui, Show, x532 y95 h96 w188, Window
Loop,
{
If TEST = 1
{
Msgbox, 64, Успешно!, Программа завершила свою установку.
ExitApp
}
}
return
TEST:
Gui, Submit, NoHide
return
 
Последнее редактирование:

#Rin

Известный
Всефорумный модератор
1,214
1,037
Доброго времени суток. Столкнулся с проблемой, что AHK скрипты, которые до переустановки Windows работали исправно, сейчас либо вообще не работают, либо работают с оочень большой задержкой. Например, памятка с законами штата и прочими вещами в игре вообще не открывается, при нажатии кнопок 0 реакции. Скрипт с большим количеством забинденных кнопок работает частично и при нажатии кнопки с выводом текста в чат проходит секунд 7-8. Также заметил, что используемые скриптом клавиши перестают нажиматься (Например, если в моём скрипте задействована клавиша Alt, то свернуть игру комбинацией Alt+Tab уже не могу. А если задействована клавиша Enter, то не могу отослать сообщения в чат). С чем может быть проблема?
Было у мня когда-то такое же.
Установи Microsoft Visual C++:
x64
x86
Так же есть ли антивирус? Добавь в исключение.
SAMP Addon так же может вызвать проблемы, если сообщения отправляются через память.
Запуск в кадировке ANSI от имени администратора.
 

GooDY

Известный
9
0
Как брать строку последнего репорта из лога?
Код:
F4::
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
if RegExMatch(Chatlog, "\[(.*)\](.*)\[(\d{1,3})\]: \{FFCD00\}.*?(\d+).*", m)
{
SendChat("/ans " m3 " Слежу")
}
return
 

#Rin

Известный
Всефорумный модератор
1,214
1,037
Как брать строку последнего репорта из лога?
Код:
F4::
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
if RegExMatch(Chatlog, "\[(.*)\](.*)\[(\d{1,3})\]: \{FFCD00\}.*?(\d+).*", m)
{
SendChat("/ans " m3 " Слежу")
}
return
Есть несколько способов:
1. После каждого удачного обнаружения удалять файл чатлога: FileDelete
2. Использовать какой-то чатлог ридер, на CM есть целых 2
3. В SAMP UDF есть функция: GetChatLine(Line, Output) - Вывод строки из чат лога (0 - Последняя строка)