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

Fabregoo

Известный
656
128
Как при появленние диалога ид 966 кликать на строку с названнием "Ак 47" и туда вводить число и там откроется диалог ид 977 в котрые нужно вводить инфо по типу диалога с паролем, как туда ввести 1?
 

degrando

Известный
362
127
Как при появленние диалога ид 966 кликать на строку с названнием "Ак 47" и туда вводить число и там откроется диалог ид 977 в котрые нужно вводить инфо по типу диалога с паролем, как туда ввести 1?
Завтра сделаю
 

CaJlaT

Овощ
Модератор
2,806
2,603
Как при появленние диалога ид 966 кликать на строку с названнием "Ак 47" и туда вводить число и там откроется диалог ид 977 в котрые нужно вводить инфо по типу диалога с паролем, как туда ввести 1?
966 - диалог с выбором вариантов? (как меню)
Ща попробую накидать....
AutoHotKey:
numpad1::
{
    If (isDialogOpen() = 1 && getDialogID() = 966)
    count := getDialogLineCount()
    loop % count
    text := getDialogLine(%A_Index%)
    if(text contains Ак-47) ; тут на русском название, меняй на то, что нада
    {
        result := %A_index%
    }
    SetDialogIndex(result)
    sendinput, {enter}
    sleep 400
    If (isDialogOpen() = 1 && getDialogID() = 977)
    {
        sendinput, 1
    }
    return
}
 
Последнее редактирование:
  • Нравится
Реакции: Fabregoo

Fabregoo

Известный
656
128
966 - диалог с выбором вариантов? (как меню)
Ща попробую накидать....
AutoHotKey:
numpad1::
{
    If (isDialogOpen() = 1 && getDialogID() = 966)
    count := getDialogLineCount()
    loop % count
    text := getDialogLine(%A_Index%)
    if(text contains Ак-47) ; тут на русском название, меняй на то, что нада
    {
        result := %A_index%
    }
    SetDialogIndex(result)
    sendinput, {enter}
    sleep 400
    If (isDialogOpen() = 1 && getDialogID() = 977)
    {
        sendinput, 1
    }
    return
}
Да спасибо, диалог как с выбором.
Но он не нажимает на диалог, а наводит на последнюю строчку, смотри мне нужно( беру за пример ) что бы когда открыл /mm и нажал на numpadd1 нажимало на Моя статистика, а он отправляет на последню строчку..
 

CaJlaT

Овощ
Модератор
2,806
2,603
Да спасибо, диалог как с выбором.
Но он не нажимает на диалог, а наводит на последнюю строчку, смотри мне нужно( беру за пример ) что бы когда открыл /mm и нажал на numpadd1 нажимало на Моя статистика, а он отправляет на последню строчку..
попробуй так, я скобки забыл в loop
AutoHotKey:
numpad1::
{
    If (isDialogOpen() = 1 && getDialogID() = 966)
    count := getDialogLineCount()
    loop % count
    {
        text := getDialogLine(%A_Index%)
        if(text contains Ак-47) ; тут на русском название, меняй на то, что нада
        {
            result := %A_index%
        }
    }
    SetDialogIndex(result)
    sendinput, {enter}
    sleep 400
    If (isDialogOpen() = 1 && getDialogID() = 977)
    {
        sendinput, 1
    }
    return
}
 
  • Нравится
Реакции: Fabregoo

Fabregoo

Известный
656
128
966 - диалог с выбором вариантов? (как меню)
Ща попробую накидать....
AutoHotKey:
numpad1::
{
    If (isDialogOpen() = 1 && getDialogID() = 966)
    count := getDialogLineCount()
    loop % count
    text := getDialogLine(%A_Index%)
    if(text contains Ак-47) ; тут на русском название, меняй на то, что нада
    {
        result := %A_index%
    }
    SetDialogIndex(result)
    sendinput, {enter}
    sleep 400
    If (isDialogOpen() = 1 && getDialogID() = 977)
    {
        sendinput, 1
    }
    return
}
Смотри, вот действие с АК 47 закончено, его скрипт сделал, как сделать еще одно такое действие для м4?
 

CaJlaT

Овощ
Модератор
2,806
2,603
Смотри, вот действие с АК 47 закончено, его скрипт сделал, как сделать еще одно такое действие для м4?
AutoHotKey:
numpad2::
{
    If (isDialogOpen() = 1 && getDialogID() = 966)
    count := getDialogLineCount()
    loop % count
    text := getDialogLine(%A_Index%)
    if(text contains M4) ; тут на русском название, меняй на то, что нада
    {
        result := %A_index%
    }
    SetDialogIndex(result)
    sendinput, {enter}
    sleep 400
    If (isDialogOpen() = 1 && getDialogID() = ); тут id диалога с m4
    {
        sendinput, 1
    }
    return
}
 
  • Нравится
Реакции: Fabregoo

Fabregoo

Известный
656
128
Смотри, вот действие с АК 47 закончено, его скрипт сделал, как сделать еще одно такое действие для м4?
И еще нажимает на 1 строчку, а АК 47 может быть как и первой, так и 4, 3, 2, 1.
AutoHotKey:
numpad2::
{
    If (isDialogOpen() = 1 && getDialogID() = 966)
    count := getDialogLineCount()
    loop % count
    text := getDialogLine(%A_Index%)
    if(text contains M4) ; тут на русском название, меняй на то, что нада
    {
        result := %A_index%
    }
    SetDialogIndex(result)
    sendinput, {enter}
    sleep 400
    If (isDialogOpen() = 1 && getDialogID() = ); тут id диалога с m4
    {
        sendinput, 1
    }
    return
}
Смотри, еще 1 вопросс как в одной функцие запихнуть и АК 47, и М4?
 

CaJlaT

Овощ
Модератор
2,806
2,603
в код где нужно рандомить (где ввод числа в диалог с АК47)
AutoHotKey:
random, ak47, 1, 4
    if(ak47 == 1)
    sendinput 1
    if(ak47 == 2)
    sendinput 2
    if(ak47 == 3)
    sendinput 3
    if(ak47 == 4)
    sendinput 4
 

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
264
568
Смотри, еще 1 вопросс как в одной функцие запихнуть и АК 47, и М4?
AutoHotKey:
numpad2::
{
    gun("M4") ; Вводи на нужной раскладке
    sleep 400
    If (isDialogOpen() = 1 && getDialogID() = ); тут id диалога с m4
        sendinput, 1
    gun("AK47") ; Вводи на нужной раскладке
    return
}

gun(what)
{
    If (isDialogOpen() = 1 && getDialogID() = 966)
        loop % getDialogLineCount()
        {
        text := getDialogLine(A_Index)
        if (text contains %what%)
            {
                SetDialogIndex(A_Index)
                sendinput, {enter}
            }
        }
}
 

degrando

Известный
362
127
Привет. Помогите, пожалуйста.
Хочу сделать так, что при выборе диалогового окна у меня открывался чат, после чего было предложение ввести 2 цифры (1 или 2), при выборе 1 - идет одно действие, при выборе 2 - другое.
Заранее хочу поблагодарить. Надеюсь мне помогут :(
Сделаю
 

CaJlaT

Овощ
Модератор
2,806
2,603
Привет. Помогите, пожалуйста.
Хочу сделать так, что при выборе диалогового окна у меня открывался чат, после чего было предложение ввести 2 цифры (1 или 2), при выборе 1 - идет одно действие, при выборе 2 - другое.
Заранее хочу поблагодарить. Надеюсь мне помогут :(
Диалоговое окно в скрипте или серверное?
 

CaJlaT

Овощ
Модератор
2,806
2,603
В скрипте. Допустим, в диалоговом окне строчка: "Наказания", я выбираю ее - открывается чат, (В addchatmessage мне предлагается выбор "Нажмите 1 или 2"), если я ввожу 1 в чат - пишется, к примеру, заготовка для мута (/mute 30 MG); если ввожу 2 - заготовка для деморгана (/jail 30 DM) и т.д.
А не проще ещё один диалог вывести?
 

CaJlaT

Овощ
Модератор
2,806
2,603
Нет, в этом то и загвоздка.
Ща, минут 5-10 и напишу тогда
вроде должно работать, не чекал....
AutoHotKey:
#IfWinActive GTA:SA:MP
#NoEnv
#SingleInstance, force
#Include SAMP.ahk

LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
    return false
    while (isDialogOpen())
    continue
    if(GetKeyState("Esc", "P"))
    return false
    return getDialogLineNumber()
}


f2::
{
    ShowDialog("2", "[AHK]: Admin-panel", "{800080}1. {66CDAA}Что-то`n{800080}2. {66CDAA}Наказания", "Выбрать")
    Result := LineResult()
        if (!Result)
            return
        if (Result == 1)
        {
            addChatMessageEx("800080", "[AHK]: {66CDAA}Что-то....")
            return
        }
        if (Result == 2)
        {
            addChatMessageEx("800080", "[AHK]: {66CDAA} Нажмите соответствующую клавишу для заготовки наказания:")
            addChatMessageEx("800080", "[AHK]: {66CDAA} 1 - ...")
            addChatMessageEx("800080", "[AHK]: {66CDAA} 2 - ...")
            if (GetKeyState("1", "P") == true)
            {
                sendinput {f6}/mute 30 MG
                return
            }
            if (GetKeyState("2", "P") == true)
            {
                sendinput {f6}/jail 30 DM
                return
            }
            else
            return
        }
    return
}
Upd: Не работало, исправил...

AutoHotKey:
f2::
{
    ShowDialog("2", "[AHK]: Admin-panel", "{800080}1. {66CDAA}Что-то`n{800080}2. {66CDAA}Наказания", "Выбрать")
    Result := LineResult()
        if (!Result)
            return
        if (Result == 1)
        {
            addChatMessageEx("800080", "[AHK]: {66CDAA}Что-то....")
            return
        }
        if (Result == 2)
        {
            addChatMessageEx("800080", "[AHK]: {66CDAA} Нажмите соответствующую клавишу для заготовки наказания:")
            addChatMessageEx("800080", "[AHK]: {66CDAA} 1 - ...")
            addChatMessageEx("800080", "[AHK]: {66CDAA} 2 - ...")
            wait:
            {
                if (GetKeyState("1", "P") == true)
                {
                    sendinput {f6}/mute 30 MG
                    return
                }
                if (GetKeyState("2", "P") == true)
                {
                    sendinput {f6}/jail 30 DM
                    return
                }
                else
                    goto, wait
            }
        }
    return
}
если слишком костыльно, мб скинут лучше код... пока что этот держи)
 
Последнее редактирование:
  • Нравится
Реакции: ProstoTakChelik

CaJlaT

Овощ
Модератор
2,806
2,603
Спасибо большое! Но можете обьяснить как работает это:
addChatMessageEx("800080", "[AHK]: {66CDAA} Нажмите соответствующую клавишу для заготовки наказания:")
addChatMessageEx("800080", "[AHK]: {66CDAA} 1 - ...")
addChatMessageEx("800080", "[AHK]: {66CDAA} 2 - ...")
строчка с пояснением из юдф
AutoHotKey:
addChatMessageEx(Color, wText);- Локальное сообщение с изменением цвета timestamp'a