1 (изменено: X_vorost, 2021-08-01 15:41:06)

Тема: AHK: Обращение к двумерному массиву

Всем доброго времени суток.
Не могу понять в чем проблема, хочу вывести в msgbox элемент двумерного массива, но ничего не выводится.
Весь форум пересмотрел, не нашел информации

#NoEnv
SendMode Input

~Home::Suspend
~End::ExitApp
~Ins::Reload

patt_ak47 := [[-2,3,8], [-10,10,8]]

~$*LButton::
    i := 0
    msgbox % patt_ak47[i][0] ; ничего не выводит
    While (GetKeyState("LButton", "p")) {
        Loop patt_ak47[i][2]
        If GetKeyState("LButton", "p") {
            Sleep, 6
            mouseXY(patt_ak47[i][0],patt_ak47[i][1])
            i := i + 1
        }
        else
            break
    }
return

mouseXY(x,y)
{
    DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}

2

Re: AHK: Обращение к двумерному массиву

В AHK отсчёт элементов массива начинается с единицы.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: X_vorost, 2021-08-01 16:32:31)

Re: AHK: Обращение к двумерному массиву

teadrinker

Спасибо, не знал.
Все равно ничего не выводит.

#NoEnv
SendMode Input

~Home::Suspend
~End::ExitApp
~Ins::Reload

patt_ak47 := [[-2,3,8], [-10,10,8]]

~$*LButton::
    i := 1
    msgbox % patt_ak47[i][1] ; ничего не выводит
    While (GetKeyState("LButton", "p")) {
        Loop patt_ak47[i][3]
        If GetKeyState("LButton", "p") {
            Sleep, 6
            mouseXY(patt_ak47[i][1],patt_ak47[i][2])
            i := i + 1
        }
        else
            break
    }
return

mouseXY(x,y)
{
    DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}

4 (изменено: X_vorost, 2021-08-01 16:41:55)

Re: AHK: Обращение к двумерному массиву

teadrinker

Работает только так:

~$*LButton::
    patt_ak47 := [[-2, 3, 8], [-10, 10, 8]]
    i := 1
    msgbox % patt_ak47[1][1]
    While (GetKeyState("LButton", "p")) {
        Loop patt_ak47[i][3]
        If GetKeyState("LButton", "p") {
            Sleep, 6
            mouseXY(patt_ak47[i][1],patt_ak47[i][2])
            i := i + 1
        } else break
    }
return

Но мне нужно, чтобы массив был вне контекста выполнения LButton

global patt_ak47 := [[-2, 3, 8], [-10, 10, 8]]

не помогает

5

Re: AHK: Обращение к двумерному массиву

У меня выводит:

patt_ak47 := [[-2,3,8], [-10,10,8]]
i := 1
msgbox % patt_ak47[i][1] ; -2
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Обращение к двумерному массиву

X_vorost пишет:

Все равно ничего не выводит.

У вас строчка

patt_ak47 := [[-2,3,8], [-10,10,8]]

не выполняется.
Пример:

#NoEnv
SendMode Input

~Home::Suspend
~End::ExitApp
~Ins::Reload

MsgBox, Это сообщение не появится
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: X_vorost, 2021-08-01 16:44:15)

Re: AHK: Обращение к двумерному массиву

X_vorost пишет:

teadrinker

Работает только так:

~$*LButton::
    patt_ak47 := [[-2, 3, 8], [-10, 10, 8]]
    i := 1
    msgbox % patt_ak47[1][1]
    While (GetKeyState("LButton", "p")) {
        Loop patt_ak47[i][3]
        If GetKeyState("LButton", "p") {
            Sleep, 6
            mouseXY(patt_ak47[i][1],patt_ak47[i][2])
            i := i + 1
        } else break
    }
return

Но мне нужно, чтобы массив был вне контекста выполнения LButton

global patt_ak47 := [[-2, 3, 8], [-10, 10, 8]]

не помогает

Вот так у меня все работает, но мне нужно, чтобы переменная с массивом была вне оператора LButton, перед ним

8

Re: AHK: Обращение к двумерному массиву

Смотрите пример выше.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Обращение к двумерному массиву

Обращение к двумерному массиву происходит так: array[i, j], а не двумя "[]"