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

Black_Bird

Участник
59
4
Кто-то может скинуть работающий samp.udf и версию ahkl на которой все нормально работает? Найти не могу
 

Revalto

Известный
531
225
Помогите мне зделать скрипт ахк чтобы в игре самп каждые 3 минуты нажималось клавиша вперёд ну или же w.
Код:
NumPad1::
AntiAfk := !AntiAfk
SetTimer, Job, % (AntiAfk ? "180000":"off")
return

Job:
Send, {W down 1}
return

////// или

Job:
Send, {W down}
sleep 75
Send, {W up}
return
 

Black_Bird

Участник
59
4
Как можно сделать что бы при нажатой кнопке W автоматически жалось Alt а если не нажата, но alt отжимается
 

Revalto

Известный
531
225
Можно еще работающий samp.udf и версию ahkl на которой все нормально работает? Найти не могу
Вы можете его скачать тут. Убедитесь, что вы качаете его под свою версию SA:MP (Именно SA:MP 0.3.7 R1 или R2). Так же убедитесь, что у вас AHK ANSI 32.
AHK можно скачать тут. (Я пользуюсь 1.1)
 

Black_Bird

Участник
59
4
Не стоит засорять тему, чтобы поблагодарить кого либо, достаточно нажать на кнопку "Мне нравится".
Посмотреть вложение 15674
Использовал AHK 1.1 поставил ANSI присойденил SAMP.AHK вот что получилось:
C++:
#ifWinActive GTA:SA:MP
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#include SAMP.AHK
~RButton & 3::
{
SendMessage, 0x50,, 0x4190419,, A
    PedId:=getIdByPed(getTargetPed())
    if (PedId >= 0 )
    {
        PedName:=GetPlayerNameById(PedId)
        PedName:=RegExReplace(PedName, "_", " ")
        CarID:=getVehicleModelId()
        IF (CarID != 0)
        {
            sendChat("/me вышел из автомобиля")
            sleep 1000
        }
        sendChat("/me открыл дверь служебного авто")
        sleep 1000
        sendChat("/putm " PedId)
        sleep 1000
        sendChat("/me затолкал " PedName " в автомобиль")
        sleep 1000
        sendChat("/me закрыл дверь автомобиля")
        return
    }
    return
}

:?:/patrol::
{
SendMessage, 0x50,, 0x4190419,, A
SendChat("/r [Agent SWAT]: 2-Lincoln-1 Город: "  GetPlayerCity() ", Район" GetPlayerZone()  ".Код-4")
}
return

:?:/patrol2::
{
SendMessage, 0x50,, 0x4190419,, A
SendChat("/r [Agent SWAT]: 2-Adam-1 Город: "  GetPlayerCity() ", Район" GetPlayerZone()  ".Код-4")
}
return

:?:/mirand::
{
SendMessage, 0x50,, 0x4190419,, A
sendChat("Сейчас я зачитаю вам ваши права:")
        sleep 1000

sendChat("Вы имеете право хранить молчание.")
        sleep 1000
sendChat("Всё, что вы скажете, может и будет использовано против вас в суде.:")
        sleep 1000
sendChat("Ваш адвокат может присутствовать при допросе.")
        sleep 1000
sendChat("Если вы не можете оплатить адвоката...")
        sleep 1000
sendChat("он будет предоставлен вам государством.")
        sleep 1000
sendChat("Вам ясны ваши права?")
        sleep 1000
}
return

Почему оно не работает?
 
Последнее редактирование модератором:

Revalto

Известный
531
225
Использовал AHK 1.1 поставил ANSI присойденил SAMP.AHK вот что получилось:
#ifWinActive GTA:SA:MP
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#include SAMP.AHK
~RButton & 3::
{
SendMessage, 0x50,, 0x4190419,, A
PedId:=getIdByPed(getTargetPed())
if (PedId >= 0 )
{
PedName:=GetPlayerNameById(PedId)
PedName:=RegExReplace(PedName, "_", " ")
CarID:=getVehicleModelId()
IF (CarID != 0)
{
sendChat("/me вышел из автомобиля")
sleep 1000
}
sendChat("/me открыл дверь служебного авто")
sleep 1000
sendChat("/putm " PedId)
sleep 1000
sendChat("/me затолкал " PedName " в автомобиль")
sleep 1000
sendChat("/me закрыл дверь автомобиля")
return
}
return
}

:?:/patrol::
{
SendMessage, 0x50,, 0x4190419,, A
SendChat("/r [Agent SWAT]: 2-Lincoln-1 Город: " GetPlayerCity() ", Район" GetPlayerZone() ".Код-4")
}
return

:?:/patrol2::
{
SendMessage, 0x50,, 0x4190419,, A
SendChat("/r [Agent SWAT]: 2-Adam-1 Город: " GetPlayerCity() ", Район" GetPlayerZone() ".Код-4")
}
return

:?:/mirand::
{
SendMessage, 0x50,, 0x4190419,, A
sendChat("Сейчас я зачитаю вам ваши права:")
sleep 1000

sendChat("Вы имеете право хранить молчание.")
sleep 1000
sendChat("Всё, что вы скажете, может и будет использовано против вас в суде.:")
sleep 1000
sendChat("Ваш адвокат может присутствовать при допросе.")
sleep 1000
sendChat("Если вы не можете оплатить адвоката...")
sleep 1000
sendChat("он будет предоставлен вам государством.")
sleep 1000
sendChat("Вам ясны ваши права?")
sleep 1000
}
return

Почему оно не работает?
Какая ошибка?
 

Harryss

Участник
233
26
А вот и код:

Код:
#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return
Спасибо большое, пойду сейчас код разбирать.

А вот и код:

Код:
#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return
Братишка, спасибо большое, даже комментариев наставил. Но у меня проблема( при компиляции ругается:
Код:
тут был мой путь к папке\AHK.ahk (87) : ==> This line does not contain a recognized action.
     Specifically: return#include UDF_037.ahk
 
Последнее редактирование модератором:

Revalto

Известный
531
225
Братишка, спасибо большое, даже комментариев наставил. Но у меня проблема( при компиляции ругается:
Код:
тут был мой путь к папке\AHK.ahk (87) : ==> This line does not contain a recognized action.
     Specifically: return#include UDF_037.ahk
просто закинь в папку со скриптом, и пропиши #include UDF_037.ahk без всяких путей

Просто при наборе /patrol или нажатии ПКМ+1 ничего не происходит
Очень странно, такое бывает только если AHK не ANSI32, честно ничего посоветовать не могу... Ожидайте более продвинутых в AHK...
 
Последнее редактирование модератором:
  • Нравится
Реакции: Black_Bird

Harryss

Участник
233
26
просто закинь в папку со скриптом, и пропиши #include UDF_037.ahk без всяких путей
Братан, не въезжаю. Вот моя папка, UDF_037 понятен, SAMPTest просто был в архиве с UDF, поэтому его тоже закинул, ну мало ли. А в третий файл твой код закинул, но проблема та же самая остается. Ты мб меня неправильно понял с путями? Вот изначальный оригинальный код, я сам своих путей не добавлял, просто сократил репорт об ошибке.
Код:
C:\Users\sasha\Desktop\th\AutoHotkey Script.ahk (82) : ==> This line does not contain a recognized action.
     Specifically: return#include UDF_037.ahk


Imgur(https://imgur.com/a/HuUzkXZ)
HuUzkXZ
 
Последнее редактирование:

Black_Bird

Участник
59
4
Братан, не въезжаю. Вот моя папка, UDF_037 понятен, SAMPTest просто был в архиве с UDF, поэтому его тоже закинул, ну мало ли. А в третий файл твой код закинул, но проблема та же самая остается. Ты мб меня неправильно понял с путями? Вот изначальный оригинальный код, я сам своих путей не добавлял, просто сократил репорт об ошибке.
Код:
C:\Users\sasha\Desktop\th\AutoHotkey Script.ahk (82) : ==> This line does not contain a recognized action.
     Specifically: return#include UDF_037.ahk
попробуй переименовать UDF_037.AHK на samp.ahk и в коде тоже поменять


Imgur(https://imgur.com/a/HuUzkXZ)
HuUzkXZ
 

Revalto

Известный
531
225
Братан, не въезжаю. Вот моя папка, UDF_037 понятен, SAMPTest просто был в архиве с UDF, поэтому его тоже закинул, ну мало ли. А в третий файл твой код закинул, но проблема та же самая остается. Ты мб меня неправильно понял с путями? Вот изначальный оригинальный код, я сам своих путей не добавлял, просто сократил репорт об ошибке.
Код:
C:\Users\sasha\Desktop\th\AutoHotkey Script.ahk (82) : ==> This line does not contain a recognized action.
     Specifically: return#include UDF_037.ahk


Imgur(https://imgur.com/a/HuUzkXZ)
HuUzkXZ
Да все бы ничего, если бы ты 2 раза код в 1 файл не вставил...


Код:
#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return
 
  • Нравится
Реакции: Harryss