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

gwplayer

Известный
Автор темы
Друг
188
35
Приветствую! Во избежании создания тем на подобии "Помогите с ахк" была создана данная тема.

Примечание:
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=autohotkey]здесь мог бы быть ваш код[/code]
  • Если ответ был полезный, не забудьте отблагодарить, нажав на кнопку "Мне нравится!".
 
Последнее редактирование модератором:

DimanProgram

Новичок
2
1
Мне нужен бот для авто докладов в самп каждые 10 минут и указывать напарника в докладе если такой есть! прошу помогите пожалуйста, а и еще прошу скажите как убрать ?????? вместо букв в бинде просто постоянно менять язык это бред
 
  • Нравится
Реакции: KuPyXa154

asdzxcjqwe

¯\_(ツ)_/¯
Друг
621
709
просто постоянно менять язык это бред
меняй скриптом
Код:
SendMessage, 0x50,, 0x4090409,, A ; английский
SendMessage, 0x50,, 0x4190419,, A ; русский

Код:
PostMessage, 0x50,, 0x4090409,, A ; английский
PostMessage, 0x50,, 0x4190419,, A ; русский

поменяй язык по умолчанию на английский, чтобы не приходилось менять скриптом, должно помочь как мне
также, в samp.cfg убрать ime=1, если есть (или поставить на 0)

YVHuAPd.png
 
Последнее редактирование:

dmitri4

Известный
452
78
Нужна помощь. Нужно подправить код:
Stroka := RegExMatch(A_LoopReadLine, ".*\[..:..:..\]\s" ranknick "\[" rankid "\]\s(.*)\[.*\].*")
if(Stroka==1)
NashloStroky:=A_LoopReadLine
}
RegExMatch(NashloStroky, ".*\[..:..:..\]\s" ranknick "\[" rankid "\]\s(.*)\[.*\].*", rank)
if(rank1!="")

суть скрипта в том что он считывает с логов ранг игрока и выводит на экран но код не совсем корректный, если не трудно подправьте под такие строчки
[13:15:59] Члены организации Online:
[13:15:59] На работе:
[13:15:59] [58] Nick_Nick ранг: 1 [Рядовой]
[13:15:59] [68] Nick_Nick ранг: 5 [Ст.Сержант]
Спасибо
 

asdzxcjqwe

¯\_(ツ)_/¯
Друг
621
709
Нужна помощь. Нужно подправить код:
Stroka := RegExMatch(A_LoopReadLine, ".*\[..:..:..\]\s" ranknick "\[" rankid "\]\s(.*)\[.*\].*")
if(Stroka==1)
NashloStroky:=A_LoopReadLine
}
RegExMatch(NashloStroky, ".*\[..:..:..\]\s" ranknick "\[" rankid "\]\s(.*)\[.*\].*", rank)
if(rank1!="")

суть скрипта в том что он считывает с логов ранг игрока и выводит на экран но код не совсем корректный, если не трудно подправьте под такие строчки
[13:15:59] Члены организации Online:
[13:15:59] На работе:
[13:15:59] [58] Nick_Nick ранг: 1 [Рядовой]
[13:15:59] [68] Nick_Nick ранг: 5 [Ст.Сержант]
Спасибо
Код:
rankinfo := ""
if RegExMatch(A_LoopReadLine, "\[" rankid "\] " ranknick " ранг: (\d+) \[([А-я.]+)\]", match)
    rankinfo := "номер ранга: " match1 ", наименование ранга: " match2
addChatMessageEx(0xFFFFFF, (strlen(rankinfo) ? rankinfo : "игрок с таким id и ником не найден"))
 

Fartuk)

Новичок
5
0
Доброго времени суток, вообще, необходима помощь с AHK скриптом... Пытался сделать так, что бы через диалоговое окно была возможность выполнять различные действия, в моем случае отправку текстовых сообщений в чат. Но при выборе строчки, скрипт реагирует лишь на стрелки на клавиатуре. Возможно ли сделать так, чтобы скрипт так же воспринимал мышку? Заранее спасибо :З

Код:
b:=13
~F6::
menu:=0
return

F3::
addMessageToChatWindow("{DBA901}[...]: " COL_WHITE "Text")
a:=1
menu:=1
ShowDialog("2", "{A818FF}Название{A818FF}", "Первая строка`nВторая строка`nТретья строка`nЧетвертая строка`n`nПятая строка`nШестая строка`nСедьмая строка`nВосьмая строка`nДевятая строка`nДесятая строка`nОдинадцатая строка`nДвенадцатая строка`nТринадцатая строка","Отмена")
return

~UP::
if a>1
{
a:=a-1
}
return
~Down::
if a<b
{
a:=a+1
}
return

~Enter::
if (menu==1) 
{
punk:="label"+a
Gosub, %punk%
menu:=0
}
return

label1:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
return

label2:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Return

label3:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label4:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label5:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label6:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label7:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label8:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label9:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label10:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label11:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label12:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label13:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
addMessageToChatWindow("{DBA901}[...]: " COL_WHITE "Text")
return
 

Shimo

Новичок
1
1
Доброго времени суток, вообще, необходима помощь с AHK скриптом... Пытался сделать так, что бы через диалоговое окно была возможность выполнять различные действия, в моем случае отправку текстовых сообщений в чат. Но при выборе строчки, скрипт реагирует лишь на стрелки на клавиатуре. Возможно ли сделать так, чтобы скрипт так же воспринимал мышку? Заранее спасибо :З

Код:
b:=13
~F6::
menu:=0
return

F3::
addMessageToChatWindow("{DBA901}[...]: " COL_WHITE "Text")
a:=1
menu:=1
ShowDialog("2", "{A818FF}Название{A818FF}", "Первая строка`nВторая строка`nТретья строка`nЧетвертая строка`n`nПятая строка`nШестая строка`nСедьмая строка`nВосьмая строка`nДевятая строка`nДесятая строка`nОдинадцатая строка`nДвенадцатая строка`nТринадцатая строка","Отмена")
return

~UP::
if a>1
{
a:=a-1
}
return
~Down::
if a<b
{
a:=a+1
}
return

~Enter::
if (menu==1)
{
punk:="label"+a
Gosub, %punk%
menu:=0
}
return

label1:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
return

label2:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Return

label3:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label4:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label5:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
Sendinput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label6:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label7:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label8:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label9:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label10:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label11:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
return

label12:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
return

label13:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
Sleep 500
SendInput, {F6}Text{enter}
addMessageToChatWindow("{DBA901}[...]: " COL_WHITE "Text")
return
Код:
Способ:

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
#Include, SAMP.ahk

;~ Создаем массивы с номерами строк диалога.

1Array := ["Первый.", "Первый массив.", "Выбрана первая строка."]
2Array := ["Второй.", "Второй массив.", "Выбрана вторая строка."]
3Array := ["Третий.", "Третий массив.", "Выбрана третья строка."]

!1::
Sleep, 100
ShowDialog(2, "Выбор массива", "Первый массив`nВторой массив`nТретий массив", "Закрыть") ;~ Создаем диалог с выбором строк.

Line := LineResult()

if (Line) {
    For k, v in %Line%Array {
        SendChat(v)
        Sleep, 2000
    }
}
return
Код:
Функция LineResult()
LineResult() {
    if (!isDialogOpen())
        return false
    if (getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
        return false
    while(!GetKeyState("LButton", "P") && !GetKeyState("Enter", "P") && !GetKeyState("Esc", "P"))
        continue
    if (GetKeyState("Enter", "P"))
        return getDialogLineNumber()
    else if (GetKeyState("Esc", "P"))
        return false
    else{
        KeyWait, LButton
        KeyWait, LButton, D T0.4
        if (isDialogOpen())
            return LineResult()
        else
            return getDialogLineNumber()
    }
}
 
  • Нравится
Реакции: Cesar Ballard

denzwdw[fwfa

Новичок
53
4
как сделать чтобы команда срабатывала после нажатия enter в ахк

:?:/pas 1::
SendMessage, 0x50,, 0x4190419,, A
Sleep 1200
SendInput {F6}/me Досконально изучил паспорт.{enter}
Sleep 2200
SendInput {F6}/me сообщил диспетчеру.{enter}
SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
Sleep 2200
return

:?:/pas 2::
SendMessage, 0x50,, 0x4190419,, A
Sleep 1200
SendInput {F6}/me получил сообщение от диспетчера о подозреваемом{Enter}
Sleep 2200
SendInput {F6}Вы находитесь в Федеральном розыске, Вам придется пройти со мной! .{enter}
return
 

dmitri4

Известный
452
78
как сделать чтобы команда срабатывала после нажатия enter в ахк
Если я правильно тебя понял
:?:/pas 1::
SendMessage, 0x50,, 0x4190419,, A
Sleep 1000
SendInput {F6}/me Досконально изучил паспорт.{enter}
Sleep 3000
SendInput {F6}/me сообщил диспетчеру.{enter}
Sleep 3000
SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
Sleep 1000
return

:?:/pas 2::
SendMessage, 0x50,, 0x4190419,, A
Sleep 1000
SendInput {F6}/me получил сообщение от диспетчера о подозреваемом{Enter}
Sleep 3000
SendInput {F6}Вы находитесь в Федеральном розыске, Вам придется пройти со мной! .{enter}
return
 

denzwdw[fwfa

Новичок
53
4
Если я правильно тебя понял
:?:/pas 1::
SendMessage, 0x50,, 0x4190419,, A
Sleep 1000
SendInput {F6}/me Досконально изучил паспорт.{enter}
Sleep 3000
SendInput {F6}/me сообщил диспетчеру.{enter}
Sleep 3000
SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
Sleep 1000
return

:?:/pas 2::
SendMessage, 0x50,, 0x4190419,, A
Sleep 1000
SendInput {F6}/me получил сообщение от диспетчера о подозреваемом{Enter}
Sleep 3000
SendInput {F6}Вы находитесь в Федеральном розыске, Вам придется пройти со мной! .{enter}
return
Смотри при воде /pas я нажимаю на пробел и у меня сразу отыгровка,а как мне сделать что бы я отправил а потом уже отыгровка
 

Vlad Horii

Известный
Проверенный
310
172
Смотри при воде /pas я нажимаю на пробел и у меня сразу отыгровка,а как мне сделать что бы я отправил а потом уже отыгровка
Код:
:*:/pas 1::
SendInput {F6}/pass 1{enter}
SendMessage, 0x50,, 0x4190419,, A
Sleep 1000
SendInput {F6}/me Досконально изучил паспорт.{enter}
Sleep 3000
SendInput {F6}/me сообщил диспетчеру.{enter}
Sleep 3000
SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
Sleep 1000
return
гы логично же))
Лучше использовать:
:*:/text::
 
  • Нравится
Реакции: Cesar Ballard

denzwdw[fwfa

Новичок
53
4
Код:
:*:/pas 1::
SendInput {F6}/pass 1{enter}
SendMessage, 0x50,, 0x4190419,, A
Sleep 1000
SendInput {F6}/me Досконально изучил паспорт.{enter}
Sleep 3000
SendInput {F6}/me сообщил диспетчеру.{enter}
Sleep 3000
SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
Sleep 1000
return
гы логично же))
Лучше использовать:
:*:/text::
Спасибо можете еще помочь они в одной папке
92e1aa5cd2a4.png
 

Belo4ka_belka1

Участник
31
0
Трабл с overlay возник. Подключил его, создал кусочек кода с текстом, жму кнопку и игра сразу вылетает, без ошибок. Отключил антивирус, ShadowPlay, гташку чистую поставил, вылетает так же. Использовал ANSI 32 bit AHK, попробовал 32 бит юникод, запускаю игру с включенным скриптом: один раз вылезла ошибка: ссылка, больше я её получить не смог. Потом уже игра вылетать перестала, сейчас уже просто ничего не показывает. АХК выполняется от имени админа, никаких фрапсов и тому подобного нету, чистый экран. Вот код:
Код:
SendMode Input
SetWorkingDir %A_ScriptDir%
#UseHook
#NoEnv
#SingleInstance force
#include %A_ScriptDir%\plugins\SAMP-UDF-Developer.ahk
#include %A_ScriptDir%\overlay.ahk
Dx9SetParam("use_window", "1")
Dx9SetParam("window", "GTA:SA:MP")
Dx9SetParam("process", "gta_sa.exe")
global fn := "Times New Roman"
global date := "22.10.1999"
text_overlay := -1

!Я::
if ( WinActive("GTA:SA:MP")) {
text_overlay := Dx9TextCreate(fn, 10, false, false, 20, 180, 0xFFFFFF00, date, false, true)
}
return

!Ч::
if ( WinActive("GTA:SA:MP")) {
     Dx9TextSetString(text_overlay, date)
}
return

Есть на соседнем форуме худ на АХК, он работает на ура, а я более чем уверен, что там тоже dx9 overlay используется. Кто-нибудь может что подсказать?
 

SKEEZYSHOW

Новичок
1
0
Ребят, как сделать авто обновление скрипта ? Типо вводишь команду и скрипт сам скачивает фаил и обновляется.