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

VuTuV

Участник
51
1
1) Как пользоваться Hotkey(выбор клавиши активации) в GUI, я хочу например задать alt + 1 это выдать розыск и т.д.
2) Сохранение всех настроек, которые будут в 1.
3) Можно ли сделать так, если будет стоять галочка(CheckBox), то включались дополнительные функции, например АХК для заместителя?
 
Последнее редактирование:

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
264
568
1) Как пользоваться Hotkey(выбор клавиши активации) в GUI, я хочу например задать alt + 1 это выдать розыск и т.д.
2) Сохранение всех настроек, которые будут в 1.
3) Можно ли сделать так, если будет стоять галочка(CheckBox), то включались дополнительные функции, например АХК для заместителя?
http://www.script-coding.com/AutoHotkey/GUIControls.html
hqdefault.jpg

JKC0JYv
 

Northup

Новичок
8
0
Ребята, как сделать чтобы скрип работал с помощью сочетании клавиш ПРАВОЙ кнопки мыши и клавиши N ?
 

executor_lzt

Участник
58
45
мне нужны адреса этих функций (КРМП)
getTargetPed(dwPED) - Возвращает PED ID, по таргету
; # - getPedById(dwId) - Возвращает PED ID по id игрока
; # - getIdByPed(dwId) - Ид по таргету (getIdByPed(getTargetPed()))
; # - getClosestPlayerPed() - Возвращает PED ID ближайшего игрока
; # - getClosestPlayerId() - Возвращает id ближайшего игрока
; # - getPedCoordinates(dwPED) - Возвращает кординаты (в зоне стрима) по PED ID
; # - getPlayerPosById(dwId) - Возвращает позицию игрока по id
 
  • Нравится
Реакции: xsilv

Northup

Новичок
8
0
Помогите реализовать идею! Допустим, скрипт выполняет это действие
sc2D::
{
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}^{A}лляляляллялялял{Enter}
KeyWait, sc2D, D
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}ололололололо{Enter}
Sleep, 1000
Send, {F6}лаллаыо{Enter}
Send, {F6}/heal (ЦИФРЫ){Enter}
}
return
------------------------------
мне нужно, чтобы в этой части кода скрипт ждал, когда я наберу комбинацию цифр и нажму ENTER
Код:
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}^{A}лляляляллялялял{Enter}
и тогда пойдёт остальная часть ,где скрипт вставит эту комбинацию цифр
Код:
Send, {F6}/heal (ЦИФРЫ){Enter}
 

Di3

Участник
432
20
Код:
i=1
ycord=10
Loop,read,Список.txt
{
Gui, Add, Button, x10 y%ycord% w830 h25 gsort, [%i%] %A_LoopReadLine%
i:=i+1
ycord:=ycord+30
}

Как можно после нажатии кнопки отловить какая кнопка именно была нажата? Количество строк в файле всегда будет разное и писать под каждую функцию бред.
 

darksoor

Известный
674
353
Помогите реализовать идею! Допустим, скрипт выполняет это действие
sc2D::
{
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}^{A}лляляляллялялял{Enter}
KeyWait, sc2D, D
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}ололололололо{Enter}
Sleep, 1000
Send, {F6}лаллаыо{Enter}
Send, {F6}/heal (ЦИФРЫ){Enter}
}
return
------------------------------
мне нужно, чтобы в этой части кода скрипт ждал, когда я наберу комбинацию цифр и нажму ENTER
Код:
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}^{A}лляляляллялялял{Enter}
и тогда пойдёт остальная часть ,где скрипт вставит эту комбинацию цифр
Код:
Send, {F6}/heal (ЦИФРЫ){Enter}

AutoHotKey:
sc2D::
{
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}^{A}лляляляллялялял{Enter}
Input, id, V, {vkD}
SendMessage, 0x50,, 0x4190419,, A
Send, {F6}ололололололо{Enter}
Sleep, 1000
Send, {F6}лаллаыо{Enter}
Send, {F6}/heal %id%{Enter}
}
return
 
  • Нравится
Реакции: Northup

ALCAPONE2225

Известный
37
0
Подскажите, у меня есть скрипт который останавливается при помощи F4::reload, как сделать так чтобы когда я жму F4 появлялось еще сообщение что скрипт выключен?
 
Последнее редактирование:

ALCAPONE2225

Известный
37
0
прочитал но не понял как сделать. Я попробовал так сделать но не работает..
Код:
F4::reload and AddMessageToChatWindow("{008000} Автодоклад выключен.")
Return
И еще вопрос. Есть вот этот код:
Код:
NumPad0::
   SendChat("/strobe 1")
Return
Можно ли сделать чтобы когда первый раз нажимаешь писало "/strobe 1" а второй раз "/strobe 2"?
 

Kolbasa241

Известный
213
57
Есть функция "IniWrite", она записывает инфу в переменную файла .ini, так вот, есть в AHK функция Hotkey. Допустим мы создадим окно GUI
Код:
Gui, add, hotkey, x20 y10 w80 h20 vkey,
Gui, add, button, x20 y40 w80 h20 gsave, Сохранить
Gui, add, button, x20 y70 w80 h20 gcheck, Проверить
Gui, show, Center w200 h100, GUI Hotkey
return

save:
Gui Submit, Nohide
IniWrite %key%, %A_ScriptDir%/Proverka.ini, proverka, key
TrayTip, GUI Hotkey, Сохранено
return

check:
Gui Submit, Nohide
IniRead, key, %A_ScriptDir%/Proverka.ini, proverka, key
MsgBox, Клавиша будет - %key%
return
Так, вот, вопрос вот в чём, как сделать, чтобы из этого .ini файла считывал переменную "key" (допустим мы в Хоткее указали сочетание клавиш - Alt + 1, в ини файл он запишет key=!1) и преобразовывал её не в !1 а в Alt + 1.
upload_2019-5-21_20-46-0.png
upload_2019-5-21_20-46-28.png
upload_2019-5-21_20-46-46.png

прочитал но не понял как сделать. Я попробовал так сделать но не работает..
Код:
F4::reload and AddMessageToChatWindow("{008000} Автодоклад выключен.")
Return
И еще вопрос. Есть вот этот код:
Код:
NumPad0::
   SendChat("/strobe 1")
Return
Можно ли сделать чтобы когда первый раз нажимаешь писало "/strobe 1" а второй раз "/strobe 2"?
Вопрос №1
Просто сделай так..
Код:
F4::
AddChatMessage("{008800} Автодоклад выключен")
Reload
Return
UDF не забудь подключить
Вопрос №2
Код:
Numpad0::
SendChat("/strobe " (test ? "1":"2"))
test := (test ? 0:1)
return
Мб должно работать, тут тоже не забудь UDF подрубить
 
  • Нравится
Реакции: ALCAPONE2225

Northup

Новичок
8
0
Проблема в том, что скрипт не видит переменную и условие в RegExMatch
Код:
F1::
{
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}^{sc1E}Здравствуйте, меня зовут Cristopher Jonson, я ваш специалист по выдаче медицинских карт.{Enter}
Sleep, 1500
Send, {F6}Вам обновить или сделать новую медицинскую карту?{Enter}

Send, {F6}Введи up или new  -{Space}
Input , idv, V, {enter}
Send, {F6}^{sc1E}
Sleep, 100


SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}^{sc1E}Отлично, не могли бы вы мне показать ваш паспорт.{Enter}
Sleep, 500
Send, {F6}/b /showpass ID передавать строго по Role Play{Enter}

Send, {F6}Введи айди игрока -{Space}
Input , id, V, {enter}
SendInput, {F6}^{sc1E}
Sleep, 1000
ChatLog = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt ; Путь к ЧатЛогу
FileDelete, %ChatLog%  ; Удаляем ЧатЛог
SendInput, {F6}/id %id%{Enter} ; Пишем в чат
Loop
{
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
RegExMatch(Chatlog, "\Q| Уровень:\E (.*)", out)
RegExMatch(out1, "[0-9]+", out2)
if (out2 > 0 and out2 <= 2){
dollars = 5000
FileDelete, ChatLog  ; Удаляем ЧатЛог
goto, MyLabel1
}
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
RegExMatch(Chatlog, "\Q| Уровень:\E (.*)", out) ; ищем в чат логе слово "Уровень"
RegExMatch(out1, "[0-9]+", out2) ; извлекаем число
if (out2 >= 3 and out2 <= 5){
dollars = 10000
FileDelete, ChatLog  ; Удаляем ЧатЛог
Goto, MyLabel1
}
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
RegExMatch(Chatlog, "\Q| Уровень:\E (.*)", out) ; ищем в чат логе слово "Уровень"
RegExMatch(out1, "[0-9]+", out2)
if (out2 >= 6 and out2 <= 10){
dollars = 15000
Send, {F6} %dollars%{Enter}
FileDelete, ChatLog  ; Удаляем ЧатЛог
Sleep, 1000
Send, {F6} %dollars%{Enter}

}
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
RegExMatch(Chatlog, "\Q| Уровень:\E (.*)", out) ; ищем в чат логе слово "Уровень"
RegExMatch(out1, "[0-9]+", out2) ; извлекаем число
if (out2 >= 11 and out2 <= 15){
dollars = 25000
FileDelete, ChatLog  ; Удаляем ЧатЛог
Goto, MyLabel1
}
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
RegExMatch(Chatlog, "\Q| Уровень:\E (.*)", out)
RegExMatch(out1, "[0-9]+", out2) ; извлекаем число
if (out2 >= 16 and out2 <= 20){
dollars = 35000
FileDelete, ChatLog  ; Удаляем ЧатЛог
Goto, MyLabel1
}
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
RegExMatch(Chatlog, "\Q| Уровень:\E (.*)", out) ; ищем в чат логе слово "Уровень"
RegExMatch(out1, "[0-9]+", out2) ; извлекаем число
if (out2 > 20){
    dollars = 50000
FileDelete, ChatLog  ; Удаляем ЧатЛог
Goto, MyLabel1
}

MyLabel1:
Когда я ввожу new или up в переменную в этой части скрипта,
Код:
Send, {F6}Введи up или new  -{Space}
Input , idv, V, {enter}
Send, {F6}^{sc1E}
Sleep, 100
то должно быть так, если ввести up, тогда для игроков 1-2 уровня (и для остальных уровней : 3-5, 6-10, 11-15, 16-20 и больше 20 переменная dollars умножается на 2 и выводится в метку MyLabel1.
Код:
MyLabel1:
Send, {F6}Медкарта вам обойдется в %dollars%
Если ввести new, переменная dollars не умножается, просто остаётся указанным значением в функции RegExMath.
 
Последнее редактирование:

eduard8702

Новичок
3
0
Помогите с АХК!
Как сделать чтобы ники игроков показывались через стены в зоне стрима?
Вот похожая тема: https://blast.hk/threads/15379/
Я знаю, что в upd есть 2 функции отвечающие за это:
getTagNameDistance() {
setTagNameDistance(status, distance) {
___________________________________________
; <COMPILER: v1.1.24.04>
#IfWinActive GTA:SA:MP
#SingleInstance, force
#NoEnv
F1::
{
getTagNameDistance() {
if(!checkHandles())
return -1

dwSAMPInfo := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
if(ErrorLevel) {
ErrorLevel := ERROR_READ_MEMORY
return -1
}

dwSAMPInfoSettings := readDWORD(hGTA, dwSAMPInfo + SAMP_INFO_SETTINGS_OFFSET)
if(ErrorLevel) {
ErrorLevel := ERROR_READ_MEMORY
return -1
}

distance := readFloat(hGTA, dwSAMPInfoSettings + 0x27)
if(ErrorLevel) {
ErrorLevel := ERROR_READ_MEMORY
return -1
}

ErrorLevel := ERROR_OK
return distance
}

setTagNameDistance(0, (wh ? 1500.0 : def))
if(!checkHandles())
return -1

status := status ? 1 : 0

dwSAMPInfo := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
if(ErrorLevel) {
ErrorLevel := ERROR_READ_MEMORY
return -1
}
______________________________________________________________________
Кто может помочь преобразовать это в полноценный ахк? Просто мои знания ахк - очень маленькие.
Еще раз говорю, что в игре при нажатие например, на F1, ники игроков должны показываться сквозь стены во всей зоне стрима.
А также прилагаю скриншот.
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    188.2 KB · Просмотры: 139