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

Dmitry575

Новичок
38
0
Помогите разобраться с AHK Биндером
Смотрите, хочу сделать чтобы при нажатии B+D производилась покупка наркотиков *В игре GTA San Andreas Multi-Player, уважаемые агенты ФСБ особенно для вас подчёркиваю в игре. Так вот, я пишу такой скрипт (ниже) и вроде всё хорошо, всё покупается, но та кнопка что стоит первой, в данном случае vk42 буква B, просто напросто перестаёт функционировать, и если писать что-либо в чат, то эту букву написать не получится, если поменять местами то буква D не будет работать, а это уже если ехать на машине то не получится поворачивать направо, вот так, кто знает как исправить?
Вот сам скрипт:
vk42&vk44::
{
SendInput {F6}/buydrugs 150{enter}
sleep 2000
}
return
 

denzwdw[fwfa

Новичок
53
4
Gui как сделать что бы в настройках можно было выбрать профиль и к этому профилю были бы применены другие настройки.
 

DaNiLa-99

Новичок
1
0
Подскажите как сделать, что бы при однократном нажатии на "1" например высвечивалось сообщение "Привет". А при двукратном нажатии "Пока" и так далее.
 

Tanaka

Участник
41
10
Подскажите как сделать, что бы при однократном нажатии на "1" например высвечивалось сообщение "Привет". А при двукратном нажатии "Пока" и так далее.
Заполняешь массив словами/предложениями. Каждый элемент, например, ["привет"] соответствует 1 нажатию на кнопку.
Либо используй 2-й вариант
C++:
~1::
Array := ["Один", "Два", "Три", "Четыре"]
if (Presses > 0) {
    Presses += 1
    return
}

Presses := 1

SetTimer, Key, 1000
return

Key:
SetTimer, Key, Off
if (Presses > Array.Length()) {
    ;Сообщение об ошибке
}else {
    MsgBox, % Array[Presses]
}

Presses := 0
Array   := 0

return
C++:
~1::
if (Presses > 0) {
    Presses += 1
    return
}

Presses := 1

SetTimer, Key, 1000
return

Key:
SetTimer, Key, Off
if (Presses = 1) {
    ;Действие при 1-м нажатии
    MsgBox, 1
}
else if (Presses = 2) {
    ;Действие при 2-м нажатии
    MsgBox, 2
}

;И так далее

Presses := 0

return
 
Последнее редактирование:

RTD

Нестандартное звание
Модератор
391
414
Заполняешь массив словами/предложениями. Каждый элемент, например, ["привет"] соответствует 1 нажатию на кнопку.
C++:
~1::
Array := ["Один", "Два", "Три", "Четыре"]
if (Presses > 0) {
    Presses += 1
    return
}

Presses := 1

SetTimer, Key, 1000
return

Key:
SetTimer, Key, Off
if (Presses > Array.Length()) {
    ;Сообщение об ошибке
}else {
    MsgBox, % Array[Presses]
}

Presses := 0
Array   := 0

return
C++:
~1::
if (Presses > 0) {
    Presses += 1
    return
}

Presses := 1

SetTimer, Key, 1000
return

Key:
SetTimer, Key, Off
if (Presses = 1) {
    ;Действие при 1-м нажатии
    MsgBox, 1
}
else if (Presses = 2) {
    ;Действие при 2-м нажатии
    MsgBox, 2
}

;И так далее

Presses := 0

return
Он не про это и зачем так усложнять не нужными вещами код(Метки, переменные, массивы)?

Подскажите как сделать, что бы при однократном нажатии на "1" например высвечивалось сообщение "Привет". А при двукратном нажатии "Пока" и так далее.
Код:
~1::
KeyWait, 1
KeyWait, 1, D T0.3
if (ErrorLevel) {
    MsgBox, Нажал несколько раз
}else{
    MsgBox, Нажал один раз
}
return
 

BH.Daichi

Новичок
23
2
Как в собе от фипа называеться нижняя минюшка где INV WEAPON MONEY FLY AIRBRK и так далее
Я имею введу в коде
 

inf

Известный
77
89
Как в собе от фипа называеться нижняя минюшка где INV WEAPON MONEY FLY AIRBRK и так далее
Я имею введу в коде
никак не называется, она просто рисуется сама по себе на самом дне собейта, перед обновлением
mod_s0beit_sa/proxyIDirect3DDevice9.cpp at master · BlastHackNet/mod_s0beit_sa · GitHub(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/proxyIDirect3DDevice9.cpp#L3729)
 

Dexide

Новичок
45
1
Добрый день, написал код, но не получается активировать более 1 клавиши на метке ohotkey (РАБОТАЮТ КОГДА ВКЛЮЧЕНА ФУНКЦИЯ В ДИАЛОГЕ), нужно что-бы на vk31 выводилось сообщение "1", vk32 сообщение "2" и т.д до vk39. Т.Е Когда функция активна, должны работать 9 клавиш, когда выключена, они не работают

#Persistent
#SingleInstance FORCE
#Include E:\Games\Grand Theft Auto\Mods\АХК Скрипты\MultiAHK for Arizona RP\Multi AHK\SAMP-UDF.ahk

CommandProcessor := new CommandProcessor()
CommandProcessor.SetStatusProcessor(true)

oname = {FF52A4} Multi AHK {FFFFFF}by {EEB440}Dementor
hotkey_func := false
SetTimer, Chat, 100
return


~F6::
~ESC::
menu := 0
return
~LButton::
Time := A_TickCount
while(isDialogOpen())
{
if (A_TickCount - Time > 500)
return
}
checkdialogMenu:
if (isDialogButton1Selected() == 1)
menu := 0
IfWinNotActive, GTA:SA:MP
return
if (menu == 1)
{
menu := 0
line := getDialogLineNumber()
if (line == 1)
{
if (hotkey_func == false) {
hotkey_func := true
goto ohotkey
}
else if (hotkey_func == true) {
hotkey_func := false
goto ohotkey
}
}
}
return


Chat:
chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
FileRead, chatlog, % chat
save(chatlog)
return

~Enter::
if(CommandProcessor.StatusProcessor)
{
if(IsChatActive()==1)
{
blockChatInput()
while(IsChatActive()==1)
continue
unBlockChatInput()
TextChat := GetChatText()
if(SubStr(TextChat, 1, 1) = "/")
{
InputCMD := StrSplit(TextChat, A_Space)
InputCMD := InputCMD[1]
CommandProcessor.TempCmd := InputCMD
CommandProcessor.TempText := TextChat
if(CommandProcessor.CommandArray.HasKey(InputCMD))
{
ClearTextDialog()
SetTimer, % CommandProcessor.CommandArray[InputCMD], -1
}
else
{
SendChat(TextChat)
ClearTextDialog()
}
}
else
{
if(TextChat != "")
{
CommandProcessor.TempText := TextChat
SendChat(TextChat)
ClearTextDialog()
}
}
}
}
goto, checkdialogMenu
return

f1_key:
~F1::
menu := 1
text := ["{FF52A4}1.{BDBDBD} Hotkeys test`t" (hotkey_func ? "{32CD32}Активен" : "{dd0000}Выключен")]
ShowDialog("2", oname, gettext(text)[1] , "Закрыть")
return


kp:
chatInput := CommandProcessor.TempText
dialogs:
return


ohotkey:
vk31::
if (&& hotkey_func)
{
addChatMessage("1")
}
return
 
Последнее редактирование:

RTD

Нестандартное звание
Модератор
391
414
Добрый день, написал код, но не получается активировать более 1 клавиши на метке ohotkey (РАБОТАЮТ КОГДА ВКЛЮЧЕНА ФУНКЦИЯ В ДИАЛОГЕ), нужно что-бы на vk31 выводилось сообщение "1", vk32 сообщение "2" и т.д до vk39. Т.Е Когда функция активна, должны работать 9 клавиш, когда выключена, они не работают

#Persistent
#SingleInstance FORCE
#Include E:\Games\Grand Theft Auto\Mods\АХК Скрипты\MultiAHK for Arizona RP\Multi AHK\SAMP-UDF.ahk

CommandProcessor := new CommandProcessor()
CommandProcessor.SetStatusProcessor(true)

oname = {FF52A4} Multi AHK {FFFFFF}by {EEB440}Dementor
hotkey_func := false
SetTimer, Chat, 100
return


~F6::
~ESC::
menu := 0
return
~LButton::
Time := A_TickCount
while(isDialogOpen())
{
if (A_TickCount - Time > 500)
return
}
checkdialogMenu:
if (isDialogButton1Selected() == 1)
menu := 0
IfWinNotActive, GTA:SA:MP
return
if (menu == 1)
{
menu := 0
line := getDialogLineNumber()
if (line == 1)
{
if (hotkey_func == false) {
hotkey_func := true
goto ohotkey
}
else if (hotkey_func == true) {
hotkey_func := false
goto ohotkey
}
}
}
return


Chat:
chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
FileRead, chatlog, % chat
save(chatlog)
return

~Enter::
if(CommandProcessor.StatusProcessor)
{
if(IsChatActive()==1)
{
blockChatInput()
while(IsChatActive()==1)
continue
unBlockChatInput()
TextChat := GetChatText()
if(SubStr(TextChat, 1, 1) = "/")
{
InputCMD := StrSplit(TextChat, A_Space)
InputCMD := InputCMD[1]
CommandProcessor.TempCmd := InputCMD
CommandProcessor.TempText := TextChat
if(CommandProcessor.CommandArray.HasKey(InputCMD))
{
ClearTextDialog()
SetTimer, % CommandProcessor.CommandArray[InputCMD], -1
}
else
{
SendChat(TextChat)
ClearTextDialog()
}
}
else
{
if(TextChat != "")
{
CommandProcessor.TempText := TextChat
SendChat(TextChat)
ClearTextDialog()
}
}
}
}
goto, checkdialogMenu
return

f1_key:
~F1::
menu := 1
text := ["{FF52A4}1.{BDBDBD} Hotkeys test`t" (hotkey_func ? "{32CD32}Активен" : "{dd0000}Выключен")]
ShowDialog("2", oname, gettext(text)[1] , "Закрыть")
return


kp:
chatInput := CommandProcessor.TempText
dialogs:
return


ohotkey:
vk31::
if (&& hotkey_func)
{
addChatMessage("1")
}
return
Как ты этот код вообще понимаешь?
Подробнее о том что ты хочешь сделать.
 

Dexide

Новичок
45
1
Как ты этот код вообще понимаешь?
Подробнее о том что ты хочешь сделать.
Мне нужно запихнуть несколько клавиш в функцию, что-бы когда в диалоге была надпись "Активен", клавиша vk31-vk39 выводила через addChatMessage число в чат, например vk31 выводит 1, vk32 выводит 2, vk33 выводит 3 и т.д ( ПРИ НАЖАТИИ НА КЛАВИШУ), Тоесть если функция активна, клавишы выводят сообщения, когда выключена они работают в стандартном режиме(ничего не делают)

Как ты этот код вообще понимаешь?
Подробнее о том что ты хочешь сделать.
Дам пример, есть код:

func:
~vk52::
if (&& Stuned)
{
SendChat("get rekt")
showGameText("stuned!", "100", "1")
}
return

У меня в диалоге показывает "Активен", я нажимаю на клавишу vk52 и в чат выводит сообщение + показывается гейм-текст, когда в диалоге показывает "Выключен" , я нажимаю на эту клавишу и ничего не происходит.

Напиши в вк - Egor Nouneym(https://vk.com/egorixzol), расскажу подробнее если не понял
 
Последнее редактирование модератором:

RTD

Нестандартное звание
Модератор
391
414
Дам пример, есть код:

func:
~vk52::
if (&& Stuned)
{
SendChat("get rekt")
showGameText("stuned!", "100", "1")
}
return

У меня в диалоге показывает "Активен", я нажимаю на клавишу vk52 и в чат выводит сообщение + показывается гейм-текст, когда в диалоге показывает "Выключен" , я нажимаю на эту клавишу и ничего не происходит.
В данном случае лучше просто в чат выводить сообщение об активно/не активно. Использовать диалог с ид 2 когда там только 1-н пункт безсмысленно, я так считаю...
Код:
F1::
active := !active
addChatMessageEx(0xFFFFFF, (active ? "Активно":"Не активно"))
Return
~vk52::
if(!active)
    Return
addChatMessageEx(0xFFFFFF, "Работает")
Return
 

Dexide

Новичок
45
1
В данном случае лучше просто в чат выводить сообщение об активно/не активно. Использовать диалог с ид 2 когда там только 1-н пункт безсмысленно, я так считаю...
Код:
F1::
active := !active
addChatMessageEx(0xFFFFFF, (active ? "Активно":"Не активно"))
Return
~vk52::
if(!active)
    Return
addChatMessageEx(0xFFFFFF, "Работает")
Return

1) У меня много функций в диалоге, просто нужно присвоить что-бы хоткеи работали (клавишы быстрого доступа).
2) Ты меня не так понял, напиши в лс в вк.

В данном случае лучше просто в чат выводить сообщение об активно/не активно. Использовать диалог с ид 2 когда там только 1-н пункт безсмысленно, я так считаю...
Код:
F1::
active := !active
addChatMessageEx(0xFFFFFF, (active ? "Активно":"Не активно"))
Return
~vk52::
if(!active)
    Return
addChatMessageEx(0xFFFFFF, "Работает")
Return
Вообщем мне нужно при активации функции active (у тебя актив), что-бы работали больше 2ух клавиш с биндами, если же функция выключена , эти клавиши не выполняют бинды
 
Последнее редактирование модератором:

Kolya_Kortez

Участник
49
3
Приветствую! Почему getIdByPed(getTargetPed()) возвращает -1?
Код:
Код:
Labeles1:
{
    pid := getIdByPed(getTargetPed())
    Text := "Паспорт "pid
    Addchatmessage(text)
}
return

Возвращает: Паспорт -1
Что не так?
 

ishi

Известный
493
110
исходник бы функций getIdByPed и getTargetPed
по тому что ты скинул ничего полезного не скажешь