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

Nagenbl4

Новичок
107
2
Ребята,нужна помощь.
В общем: нужен ахк код,который при вводе допустим команды /qwe автоматически с определенной задержкой писал допустим команду /asd и ближайший ID ко мне через пробел.Как то так :)
Пример: Я ввожу команду /qwe,у меня прописывается команда /asd [ближайший ID].Через 1 минуту опять,но уже автоматически,пишет эту же команду /asd [ближайший ID(кроме того,который уже был].
Для сампа.
 
Последнее редактирование:

Adam_Rockwell

Активный
143
25
Как одним скриптом закрыть другой скрипт?

открывать я умею (run, script.ahk) , а закрыть как?

Process, Close, scriph.ahk - не помогает.
 

#Rin

Известный
Всефорумный модератор
1,214
1,035
Как одним скриптом закрыть другой скрипт?

открывать я умею (run, script.ahk) , а закрыть как?

Process, Close, scriph.ahk - не помогает.
Можно так, но нужно знать полный путь к другому скрипту
AutoHotKey:
Run % comspec " /k taskkill /f /im test.exe",, Hide
Если это программа с окном
AutoHotKey:
WinClose, Калькулятор
Если знаешь индификатор процесса
AutoHotKey:
Process, Close, %PID%

Ребята,нужна помощь.
В общем: нужен ахк код,который при вводе допустим команды /qwe автоматически с определенной задержкой писал допустим команду /asd и ближайший ID ко мне через пробел.Как то так :)
Пример: Я ввожу команду /qwe,у меня прописывается команда /asd [ближайший ID].Через 1 минуту опять,но уже автоматически,пишет эту же команду /asd [ближайший ID(кроме того,который уже был].
Для сампа.
Можно на SetTimer'e:
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() = 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If chatInput = /qwe
{
SetTimer, GWE, 60000
}
    If chatInput = /qwes
{
SetTimer, GWE, OFF
}
}
return
QWE:
SendChat("/asd " getClosestPlayerId())
return
Можно на Loop'e:
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() = 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If chatInput = /qwe
{
stat := 1
Loop
{
If stat = 0
{
return
}
SendChat("/asd " getClosestPlayerId())
Sleep 60000
}
}
    If chatInput = /qwes
{
stat := 0
}
}
return
 
Последнее редактирование модератором:
  • Нравится
Реакции: Cesar Ballard

_DeAs_

Новичок
27
1
4 вопроса, помогите пожалуйста)

1)
u_c4ffbb36d02560c147f17154187d4ff7_800.png
как поставить пробел между двумя переменными text11 и text10
2)showDialog 1 - не срабатывает на ENTER, только на SHIFT + ENTER - screen диалога
upload_2018-1-15_14-56-44.png

3)как пользоваться RegExr: Learn, Build, & Test RegEx(https://regexr.com) или же Regex101 - online regex editor and debugger(https://regex101.com) ?
4)можно ли в диалоге "2" активировать пункт мышкой?
^1::
showDialog("2", "Меню", "Наказания`nОтыгровка`nFunktion3", "Ок", "Отмена")
return
#If isDialogOpen() && WinActive("GTA:SA:MP")
$Enter::
OnDialogResponse(true)
return
ESC::
OnDialogResponse(false)
return
#If
OnDialogResponse(response) {
caption := getDialogCaption()
if (response) {
if (caption == "Меню") {
line := getDialogLine(getDialogIndex())
if (line == "Наказания") {
showDialog("2", "Под список", "Заглушки`nНаказания кпз`nРелоги", "Ок", "Отмена")
}
else if (line == "Отыгровка")
{
showDialog("1", "/я текст", "Введите отыгровку", "Ок", "Отмена")
input, text, V, {Enter}
SendChat("/я " text)
}
return
}
else if (caption == "Под список") {
line := getDialogLine(getDialogIndex())
AddChatMessage(line)
Send, {Enter}
}
else if (caption == "Keybinder - Funktion2") {
clipboardBuffer := ClipboardAll
clipboard := ""
Send, ^{A}
Send, ^{X}
sleep, 100
dialogInput := clipboard
clipboard := clipboardBuffer
if (dialogInput != -1 && dialogInput != "") {
AddChatMessage("Dialog Input: " dialogInput)
}
Send, {Enter}
}
else
Send, {Enter}
}
else {
if (caption == "Под список")
{
showDialog("2", "Меню", "Наказания`nОтыгровка`nFunktion3", "Ок", "Отмена")
}
else
Send, {ESC}
}
return
}
 

#Rin

Известный
Всефорумный модератор
1,214
1,035
1)
u_c4ffbb36d02560c147f17154187d4ff7_800.png
как поставить пробел между двумя переменными text11 и text10
AutoHotKey:
SendChat("/cmd " text11 " " text10)
2)showDialog 1 - не срабатывает на ENTER, только на SHIFT + ENTER - screen диалога
11163
Скорее всего только у тебя.
Сперва пойми сам принцип регулярок по урокам на ютубе.
4)можно ли в диалоге "2" активировать пункт мышкой?
*ТыК*

1) sendChat("/cmd "label1 " "label2 " ")
Зачем в конце " "?
 

Adam_Rockwell

Активный
143
25
Можно так, но нужно знать полный путь к другому скрипту
AutoHotKey:
Run %comspec% /c del /q /s "Путь к другому скрипту" && exit,, Hide
Если это программа с окном
AutoHotKey:
WinClose, Калькулятор
Если знаешь индификатор процесса
AutoHotKey:
Process, Close, %PID%

Ну капец... Ввёл Run %c omspec% /c del /q /s "script.ahk" && exit,, Hide и script.ahk бесследно исчез с моего компьютера... Я ЗАКРЫТЬ просил, а не УДАЛИТЬ

Ладно. Хорошо хоть у меня копия была, так бы просто лишился полезного скрипта...

Повторяю вопрос. Как ЗАКРЫТЬ ахк скрипт через другой ахк скрипт?
Можно полную строку кода, если не сложно. Оба скрипта лежат на рабочем столе.
 
Последнее редактирование модератором:

AnRtom

Новичок
13
1
В общем хотелось бы узнать как сделать данную функцию.
Функция заключается в том что-бы.
После ввода команды /pass и ИД игрока РП отыгралось автоматически
Что нужно добавить в данный код?
Буду очень благодарен за помощь.
Код:
:?:/pass ::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}/me достал паспорт"{enter}
 
Последнее редактирование модератором:

Adam_Rockwell

Активный
143
25
В общем хотелось бы узнать как сделать данную функцию.
Функция заключается в том что-бы.
После ввода команды /pass и ИД игрока РП отыгралось автоматически
Что нужно добавить в данный код?
Буду очень благодарен за помощь.
:?:/pass ::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}/me достал паспорт"{enter}

А зачем тебе отыгровка РП после ввода команды? Логичней будет вот так:

Код:
?:/pass::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}/me достал паспорт{enter}
sleep 500
SendInput, {F6}/pass{space}

Пишешь в чат "/pass" просто. Потом, после отыгровки, дописываешь id.
 
Последнее редактирование модератором:

_DeAs_

Новичок
27
1
Скорее всего только у тебя.
Не, не только у меня, проверил. Можно как-то фиксануть?

На всякий случай еще раз код
Код:
^1::
showDialog("2", "Меню", "Наказания`nОтыгровка`nFunktion3", "Ок", "Отмена")
return
#If isDialogOpen() && WinActive("GTA:SA:MP")
$Enter::
OnDialogResponse(true)
return
ESC::
OnDialogResponse(false)
return
#If
OnDialogResponse(response) {
caption := getDialogCaption()
if (response) {
if (caption == "Меню") {
line := getDialogLine(getDialogIndex())
if (line == "Наказания") {
showDialog("2", "Под список", "Заглушки`nНаказания кпз`nРелоги", "Ок", "Отмена")
}
else if (line == "Отыгровка")
{
showDialog("1", "/я текст", "Введите отыгровку", "Ок", "Отмена")
input, text, V, {Enter}
SendChat("/я " text)
}
return
}
else if (caption == "Под список") {
line := getDialogLine(getDialogIndex())
AddChatMessage(line)
Send, {Enter}
}
else if (caption == "Keybinder - Funktion2") {
clipboardBuffer := ClipboardAll
clipboard := ""
Send, ^{A}
Send, ^{X}
sleep, 100
dialogInput := clipboard
clipboard := clipboardBuffer
if (dialogInput != -1 && dialogInput != "") {
AddChatMessage("Dialog Input: " dialogInput)
}
Send, {Enter}
}
else
Send, {Enter}
}
else {
if (caption == "Под список")
{
showDialog("2", "Меню", "Наказания`nОтыгровка`nFunktion3", "Ок", "Отмена")
}
else
Send, {ESC}
}
return
}
 
Последнее редактирование:

#Rin

Известный
Всефорумный модератор
1,214
1,035
Ну капец... Ввёл Run %c omspec% /c del /q /s "script.ahk" && exit,, Hide и script.ahk бесследно исчез с моего компьютера... Я ЗАКРЫТЬ просил, а не УДАЛИТЬ

Ладно. Хорошо хоть у меня копия была, так бы просто лишился полезного скрипта...

Повторяю вопрос. Как ЗАКРЫТЬ ахк скрипт через другой ахк скрипт?
Можно полную строку кода, если не сложно. Оба скрипта лежат на рабочем столе.
Попутал
AutoHotKey:
Run % comspec " /k taskkill /f /im test.exe",, Hide

В общем хотелось бы узнать как сделать данную функцию.
Функция заключается в том что-бы.
После ввода команды /pass и ИД игрока РП отыгралось автоматически
Что нужно добавить в данный код?
Буду очень благодарен за помощь.
:?:/pass ::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}/me достал паспорт"{enter}
Если хочешь чтобы при вводе "/pass [ID]" сперва была отыгровка, а потом скрипт показал паспорт то используй командный процессор.
Либо как ниже сперва покажет паспорт, после отыгровка.
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() = 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If chatInput contains /pass
    {
SendChat("/me достал паспорт из кармана")
Sleep 1000
SendChat("/me передал паспорт человеку напротив")
}
}
Но только не забудь SAMP UDF подключить.

Не, не только у меня, проверил. Можно как-то фиксануть?

На всякий случай еще раз код
Код:
^1::
showDialog("2", "Меню", "Наказания`nОтыгровка`nFunktion3", "Ок", "Отмена")
return
#If isDialogOpen() && WinActive("GTA:SA:MP")
$Enter::
OnDialogResponse(true)
return
ESC::
OnDialogResponse(false)
return
#If
OnDialogResponse(response) {
caption := getDialogCaption()
if (response) {
if (caption == "Меню") {
line := getDialogLine(getDialogIndex())
if (line == "Наказания") {
showDialog("2", "Под список", "Заглушки`nНаказания кпз`nРелоги", "Ок", "Отмена")
}
else if (line == "Отыгровка")
{
showDialog("1", "/я текст", "Введите отыгровку", "Ок", "Отмена")
input, text, V, {Enter}
SendChat("/я " text)
}
return
}
else if (caption == "Под список") {
line := getDialogLine(getDialogIndex())
AddChatMessage(line)
Send, {Enter}
}
else if (caption == "Keybinder - Funktion2") {
clipboardBuffer := ClipboardAll
clipboard := ""
Send, ^{A}
Send, ^{X}
sleep, 100
dialogInput := clipboard
clipboard := clipboardBuffer
if (dialogInput != -1 && dialogInput != "") {
AddChatMessage("Dialog Input: " dialogInput)
}
Send, {Enter}
}
else
Send, {Enter}
}
else {
if (caption == "Под список")
{
showDialog("2", "Меню", "Наказания`nОтыгровка`nFunktion3", "Ок", "Отмена")
}
else
Send, {ESC}
}
return
}

Переделывай на этот лучше: *ТыК*
 
Последнее редактирование:

_DeAs_

Новичок
27
1
AutoHotKey:
if chatInput contains  /gos A
{
addChatMessageEx(0x3399FF,"{3399FF}Test")
addChatMessageEx(0xEEEE00,"{EEEE00}Admiral - ID445, Alpha - ID602")
}
вырвал один код, как сделать чтобы он полностью функционировал?
 

ae1c2a

Известный
195
6
можно ли сделать скрипт который читает чатлог самп и отправляет определенные строчки чатлога на форум?
 

AnRtom

Новичок
13
1
Кто-то то может шарит что происходит. В общем при первом вводе команды то есть /mask все отыгрывает и работает стабильно! Но при втором вводе команды, уже не прописывается 1-я строчка отыгровки и сама команда(/mask не работает)
Вот код:
Код:
:?:/mask::
SendMessage, 0x50,, 0x4190419,, A
Sendinput, {F6}/do В портфеле лежит несколько масок с изображением черепа.{Enter}
sleep 1100
Sendinput, {F6}/me спустив портфель с плеча открыл его и достал одну из них{Enter}
sleep 1100
Sendinput, {F6}/do Маска в руках.{Enter}
sleep 1100
Sendinput, {F6}/me резким движением натянул маску на лице{Enter}
sleep 1100
Sendinput, {F6}/do Маска на лице.{Enter}
 
Последнее редактирование модератором: