Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Обшибочка

Автор: Levo222 6.7.2019, 14:55

Пробовал код для нажатия клавишь в таймауте

1
Код
--lua
local button = {
    {"f1",1},     -- таймаут в секундах
    {"f2",2},
    {"f3",0.5},
}

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local main = function(button)
    for i = 1, #button do
        if button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
end

когда поставил милисекунды т.е. 0.5, 0.6, 0,8 в таймаутах и т.д. скрипт просто закрывал пилот, в чем может быть дело? Как написать для милисекунд
И еще
Как будет выглядеть подобный для 6-ти клавиш?

Автор: Fors1k 6.7.2019, 15:05

Таймаут - это пауза после клика?

Автор: Levo222 6.7.2019, 15:13

Цитата(Fors1k @ 6.7.2019, 19:05) *

Таймаут - это пауза после клика?

Да, типо кулдаун нажатия

Автор: Fors1k 6.7.2019, 16:09

Опиши полностью задачу, что должен делать скрипт.

Автор: Levo222 6.7.2019, 18:21

Цитата(Fors1k @ 6.7.2019, 20:09) *

Опиши полностью задачу, что должен делать скрипт.

В идеале нажимать кнопки с разными интервалами. Одни чаще другие реже. Но по нажатию на определенные ключи должен останавливаться/переходить к() уступая место ручному управлению. Т.е. к примеру жмется автоматически а, Б, С, а - с интервалом 60 мс, Б - 70, с - 80, но если нажать на Т, то T начинает жаться до тех пор пока клавиша нажата.
Те. он есть по сути такой скрипт
Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end
-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
while 1 do
    wait (1)
    local state, toggle = GetKeyState(0x91)
    local stateC = GetKeyState(0x43)
    local state5 = GetKeyState(0x35)
    local stateV = GetKeyState(0x56)
    log(tostring(toggle),tostring(state))
    log(tostring(toggle1),tostring(state1))
    if  toggle and state1 then
        wait (1)
        send217 ("1")
    else
        if  toggle and stateC then
            wait (1)
            send217 ("c")
        else
            if  toggle and state5 then
                wait (1)
                send217 ("5")
            else
                if  toggle and stateV then
                    wait (1)
                    send217 ("v")
                else
end
end
end
end

Но без интервального нажатия, просто ручное заспамливание клавиш.

Нужно соединить вот это
1
Код
--lua
local button = {
    {"f1",1},     -- таймаут в секундах
    {"f2",2},
    {"f3",0.5}
}

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local main = function(button)
    for i = 1, #button do
        if button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
end

И вот это
2
Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end
-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
while 1 do
    wait (1)
    local state, toggle = GetKeyState(0x91)
    local stateC = GetKeyState(0x43)
    local state5 = GetKeyState(0x35)
    local stateV = GetKeyState(0x56)
    log(tostring(toggle),tostring(state))
    log(tostring(toggle1),tostring(state1))
    if  toggle and state1 then
        wait (1)
        send217 ("1")
    else
        if  toggle and stateC then
            wait (1)
            send217 ("c")
        else
            if  toggle and state5 then
                wait (1)
                send217 ("5")
            else
                if  toggle and stateV then
                    wait (1)
                    send217 ("v")
                else
end
end
end
end

Автор: cirus 6.7.2019, 18:32

Цитата
local button = {
{"f1",1}, -- таймаут в секундах
{"f2",2},
{"f3",0.5},
}

Лишняя запятая.
Код
local button = {
    {"f1",1},     -- таймаут в секундах
    {"f2",2},
    {"f3",0.5}
}

Автор: Levo222 6.7.2019, 18:36

Цитата(cirus @ 6.7.2019, 22:32) *

Лишняя запятая.
Код
local button = {
    {"f1",1},     -- таймаут в секундах
    {"f2",2},
    {"f3",0.5}
}


а)
Окно пилота почему-то всёравно закрывается, я не могу понять по какой причине. Просто останавливаешь скрипт и оно закрывается
При нажатии на кнопку стоп

Автор: cirus 6.7.2019, 18:59

Цитата
Окно пилота почему-то всёравно закрывается

Нормально работает.

Автор: Levo222 6.7.2019, 21:52

Цитата(cirus @ 6.7.2019, 22:59) *

Нормально работает.

Может в настройках какие-то клавиши отвечают за закрытие пилота которые и прожимаются там?

Автор: Levo222 6.7.2019, 22:58

Цитата(Levo222 @ 7.7.2019, 1:52) *

Может в настройках какие-то клавиши отвечают за закрытие пилота которые и прожимаются там?

Проблема была в настройках отображения координат курсора, когда стоит галочка почему-то скрипт вылетает вместе с пилотом.

Автор: Levo222 6.7.2019, 23:12

Итак
что в данном скрипте означает 2?
Если button[3]это количество кнопок
то +button[i][2]?

Код
--lua
local button = {
    {"f1",1},     -- таймаут в секундах
    {"f2",2},
    {"f3",0.5},
}

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local main = function(button)
    for i = 1, #button do
        if button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
end


Вобщем сделал общий скрипт но он почему-то не работает

Код
--lua
local button = {
{"f1",0.06}, --Интервал в секундах
{"f2",0.07},
{"f3",0.08},
{"{f4}",0.05},
{"{f5}",1.1},
{"{f6}",0.9}
}

for i = 1, #button do
    button[i][6] = os.clock() + button[i][2]
    end

    local main = function(button)
    for i = 1, #button do
        if  button[i][6] < os.clock() then

            send217(button[i][1])
            button[i][6] = os.clock() + button[i][2]
            end
            end
            end
            
                                                                            while 1 do
                                                                                main(button)
                                                                                end
--fix



В каком-то месте должна быть вставка проверки текущего нажатия клавиши, чтобы она прерывала ход выполнения for i = 1, #button do и спамила ту клавишу?

Автор: cirus 6.7.2019, 23:43

Цитата
Если button[3]это количество кнопок
то +button[i][2]?

Для начала в этом коде разберитесь:
Код
--lua
local button = {
{"f1",0.06},
{"f2",0.07},
{"f3",0.08},
{"{f4}",0.05},
{"{f5}",1.1},
{"{f6}",0.9}
}

log "clear"  log "mode compact"
for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

for i = 1, #button do
    log(button[i][1] .. "     " .. button[i][2] .. "     " .. button[i][3])
end

button[1][1]=f1, button[1][2]=0.06, button[1][3]=время следующего нажатия кнопки f1
button[2][1]=f2, button[2][2]=0.07, button[2][3]=время следующего нажатия кнопки f2
и т. д.

Автор: Levo222 7.7.2019, 0:27

Цитата(cirus @ 7.7.2019, 3:43) *

button[1][1]=f1, button[1][2]=0.06, button[1][3]=время следующего нажатия кнопки f1
button[2][1]=f2, button[2][2]=0.07, button[2][3]=время следующего нажатия кнопки f2
и т. д.

Okay, тогда я маленько переборщил с цифрами.
Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

local button = {
{"f1",0.06}, --Интервал в секундах
{"f2",0.07},
{"f3",0.08},
{"f4",0.05},
{"f5",1.1},
{"f6",0.9}
}
for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
    end
    local main = function(button)
    for i = 1, #button do
        if  button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
            -- 111
            end
            end
            end
            while 1 do
                main(button)
                end


Теперь нужно как-то прервать функцию main, чтобы на время нажатия заданных клавиш цикл for не работал
Код
local stateC = GetKeyState(0x43)
if  toggle and stateC then
                        wait (1)
                        send217 ("c")
                    else


Автор: cirus 7.7.2019, 0:37

Примерно так, если я правильно понял что нужно:

код
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

local button = {
{"f1",0.06}, --Интервал в секундах
{"f2",0.07},
{"f3",0.08},
{"f4",0.05},
{"f5",1.1},
{"f6",0.9}
}

local button2 = {0x31,  0x32, 0x33}   -- 1 2 3, клаивиши, которые прерывают отправку клавиш из таблицы button

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
            while  state do   -- ждать пока клавиша нажата
                log("Нажата клавиша с кодом: " .. button2[i])
                wait (10)
            state=GetKeyState(button2[i])
        end
    end
end

local main = function(button)
    for i = 1, #button do
        pause()   -- вызов функции, которая проверяет нажатие клавиш
        if button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
    wait (1)
end

Автор: Levo222 7.7.2019, 0:46

Цитата(cirus @ 7.7.2019, 4:37) *

Примерно так, если я правильно понял что нужно:
код
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

local button = {
{"f1",0.06}, --Интервал в секундах
{"f2",0.07},
{"f3",0.08},
{"f4",0.05},
{"f5",1.1},
{"f6",0.9}
}

local button2 = {0x31,  0x32, 0x33}   -- 1 2 3, клаивиши, которые прерывают отправку клавиш из таблицы button

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
            while  state do   -- ждать пока клавиша нажата
                log("Нажата клавиша с кодом: " .. button2[i])
                wait (10)
            state=GetKeyState(button2[i])
        end
    end
end

local main = function(button)
    for i = 1, #button do
        pause()   -- вызов функции, которая проверяет нажатие клавиш
        if button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
    wait (1)
end


Спасибо, если я вставляю в цикл проверки нажатия само нажатие

Код
local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
            while  state do   -- ждать пока клавиша нажата
                log("Нажата клавиша с кодом: " .. button2[i])
                wait (10)
            state=GetKeyState(button2[i])
                 if state={0x32} then
                         wait (1)
                         send217 ("r")
                else
             end
        end
    end
end


Это не работает

Чему должен быть равен state?
к примеру state={0x32}

И почему мне выдаёт левые коды? т.е. на 52 даёт 82, на 31 - 49, на 33 51 и т.д?

Автор: cirus 7.7.2019, 2:05

Цитата
И почему мне выдаёт левые коды? т.е. на 52 даёт 82, на 31 - 49, на 33 51 и т.д?

0x52 в шестнадцатеричной системе это 82 в десятичной.
Открыть блокнот, привязаться Ctrl+A, запустить скрипт. Будет печатать буквы a,b,c,d,e,f. Если нажать клавиши 1, 2 или 3, то будет печатать нажатую клавишу.
код
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

local button = {
{"a",0.1},
{"b",0.2},
{"c",0.3},
{"d",0.4},
{"e",0.5},
{"f",0.6}
}

local button2 = {0x31,  0x32, 0x33}   -- 1 2 3, клавиши, которые прерывают отправку клавиш из таблицы button

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
            while  state do   -- ждать пока клавиша нажата
                log("Нажата клавиша с кодом: " .. string.format("%x", button2[i]))
                send('{' .. button2[i] .. '}')
                wait (10)
            state=GetKeyState(button2[i])
        end
    end
end

local main = function(button)
    for i = 1, #button do
        pause()   -- вызов функции, которая проверяет нажатие клавиш
        if button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
    wait (1)
end




Автор: Levo222 7.7.2019, 3:01

Цитата(cirus @ 7.7.2019, 6:05) *

код
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

local button = {
{"a",0.1},
{"b",0.2},
{"c",0.3},
{"d",0.4},
{"e",0.5},
{"f",0.6}
}

local button2 = {0x31,  0x32, 0x33}   -- 1 2 3, клавиши, которые прерывают отправку клавиш из таблицы button

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
            while  state do   -- ждать пока клавиша нажата
                log("Нажата клавиша с кодом: " .. string.format("%x", button2[i]))
                send('{' .. button2[i] .. '}')
                wait (10)
            state=GetKeyState(button2[i])
        end
    end
end

local main = function(button)
    for i = 1, #button do
        pause()   -- вызов функции, которая проверяет нажатие клавиш
        if button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
    wait (1)
end


Прозвучит конечно странно, но что будет если я одновременно 2 клавиши нажму?

Автор: cirus 7.7.2019, 11:24

Цитата
что будет если я одновременно 2 клавиши нажму?

Можно попробовать вообще-то.
Ничего не изменится, нажиматься будет первая нажатая клавиша.

Автор: Levo222 8.7.2019, 8:41

Цитата(cirus @ 7.7.2019, 15:24) *

Можно попробовать вообще-то.
Ничего не изменится, нажиматься будет первая нажатая клавиша.

Да, вот еще что странно, сделать то сделал. Но получается что сам свою первоначальную задумку полной автоматизации и завернул этими нажатиями. Ну да ладно.

Автор: DarkMaster 8.7.2019, 9:26

Цитата
local button = {
{"f1",1}, -- таймаут в секундах
{"f2",2},
{"f3",0.5}
}
Лишняя запятая.

Оффициально заявлено разрабами луа, что не лишняя и ошибкой не является. Обязательной так же не является. Сделано специально для удобства.

Автор: Levo222 8.7.2019, 19:07

Цитата(DarkMaster @ 8.7.2019, 13:26) *

Оффициально заявлено разрабами луа, что не лишняя и ошибкой не является. Обязательной так же не является. Сделано специально для удобства.


Там проблема какая-то с координатами
Цитата(Levo222 @ 7.7.2019, 2:58) *

Проблема была в настройках отображения координат курсора, когда стоит галочка почему-то скрипт вылетает вместе с пилотом.

По всей видимости они недоработаны для отображения в работающем скрипте, а только на этапе написания. Можете проверить [отображать относительные координаты курсора - запустить скрипт - остановить скрипт - пилот закрывается]
=
Еще такая загвоздка, теперь хочу сюда и клики мыши прописать, чтобы при их нажатии прекращался спам.
Т.е. у меня стоит send217('{' .. button2[i] .. '}')
Код
local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
        local toggle = GetKeyState(0x91) -- (Scroll_Lock)
        while  state and toggle do   -- ждать пока клавиша нажата
            local toggle = GetKeyState(0x91) -- (Scroll_Lock)
            log("Нажата клавиша с кодом: " .. button2[i])
            send217('{' .. button2[i] .. '}')
            wait (10)
            state=GetKeyState(button2[i])
            end
            end
            end

Вписал я чтобы они нажимались только при включенном Scroll/Caps например, и коды кнопок мыши в Button2. А сами то нажатия отправляются left/right, как добавить в ту же функции паузы еще и клики мышью чтобы не было ошибки?

Написал с дополнительными локалами и маусами:
-
Код

local button2 = {0x31,  0x52, 0x33, 0x43, 0x56, 0x35, 0x35, 0x35, 0x5A, 0x42, 0x32, 0x46, 0x58, 0x48, 0x47, 0xC0, 0x34, 0x04, 0x54}
local mouse1 = {0x01}
local mouse2 = {0x02}
for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
    end

    local pause = function()
    for i = 1, #button2 or #mouse1 or #mouse2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
        local mouse1=GetKeyState(mouse1[i])
        local mouse2=GetKeyState(mouse2[i])
        local toggle = GetKeyState(0x91) -- (Scroll_Lock)
        while  (state or mouse1 or mouse2) and toggle do   -- ждать пока клавиша нажата
            local toggle = GetKeyState(0x91) -- (Scroll_Lock)
            log("Нажата клавиша с кодом: " .. button2[i])
            if  state then
                send217('{' .. button2[i] .. '}')
                wait(0)
            else
                if  mouse1 then
                    left(mouse_pos() --Нажатия левой
                    wait(0)
                else
                    if  mouse2 then
                        right(mouse_pos()
                        wait(1)
                    else
                        end
                        end
                        end
                        wait (10)
                        state=GetKeyState(button2[i])
                        mouse1=GetKeyState(mouse1[i])
                        mouse2=GetKeyState(mouse2[i])
                        end
                        end
                        end

Но оно не работает естественно)

Автор: cirus 9.7.2019, 1:44

Цитата
Но оно не работает естественно)

Потому что куча ошибок.
Цитата
добавить в ту же функции паузы еще и клики мышью чтобы не было ошибки?

Для начала сделать чтобы клавиши нажимались, а потом что-то добавлять.
Цитата
local button2

Цитата
for i = 1, #button do
button[i][3] = os.clock() + button[i][2]

Объявлен массив button2, а в цикле узнаёте размер массива button.
Объявлен одномерный массив, а обращение к двухмерному.
Цитата
for i = 1, #button2 or #mouse1 or #mouse2 do

Что за бред.
Цитата
local state=GetKeyState(button2[i])
local mouse1=GetKeyState(mouse1[i])

Обращение через переменную i, при том что размеры массивов разные, Допустим i = 3, mouse1[3] вообще не существует, т. к. в массиве 1 элемент.
Цитата
left(mouse_pos()

2 открывающих скобки и только 1 закрывающая.

Автор: Levo222 9.7.2019, 7:18

Цитата(cirus @ 9.7.2019, 5:44) *

Для начала сделать чтобы клавиши нажимались, а потом что-то добавлять.

Так, они нажимаются, кроме мыши.

Цитата(cirus @ 9.7.2019, 5:44) *

Объявлен массив button2, а в цикле узнаёте размер массива button.

Ок.
Так работало же? В первом цикле я обращаюсь к одномерному массиву, а в функции паузы к двумерному, не?
Там просто я вначале не написал
Код
local button = {
{"f1",0.3},
{"f2",0.4}
}

у меня в скрипте есть, не думал что это нужно писать.


Цитата(cirus @ 9.7.2019, 5:44) *

Обращение через переменную i, при том что размеры массивов разные, Допустим i = 3, mouse1[3] вообще не существует, т. к. в массиве 1 элемент.


Так что нужно сделать?

Автор: cirus 9.7.2019, 11:13

Цитата
Так что нужно сделать?

Для начала выложить работающий код, который нажимает клавиши.

Автор: Levo222 9.7.2019, 14:48

Цитата(cirus @ 9.7.2019, 15:13) *

Для начала выложить работающий код, который нажимает клавиши.

-

Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

local button = {
{"f1",0.3}, --Интервал в секундах
{"f2",0.4},
{"f3",0.5}
}
local button2 = {0x31,  0x52, 0x33, 0x43, 0x56, 0x35, 0x35, 0x35, 0x5A, 0x42, 0x32, 0x46, 0x58, 0x48, 0x47, 0xC0, 0x34}

for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
    end

    local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
        while  state do   -- ждать пока клавиша нажата
            log("Нажата клавиша с кодом: " .. button2[i])
            send217('{' .. button2[i] .. '}')
            wait (10)
            state=GetKeyState(button2[i])
            end
            end
            end
            local main = function(button)
            for i = 1, #button do
                pause()   -- вызов функции, которая проверяет нажатие клавиш
                if  button[i][3] < os.clock() then
                    send217(button[i][1])
                    button[i][3] = os.clock() + button[i][2]
                    end
                    end
                    end

                    while 1 do
                        main(button)
                        wait (1)
                        end

Автор: cirus 10.7.2019, 1:31

Цитата
Так что нужно сделать?

Добавить ещё одну функцию, которая будет проверять нажатия кнопок мыши.

Автор: Levo222 11.7.2019, 18:26

Цитата(cirus @ 10.7.2019, 5:31) *

Добавить ещё одну функцию, которая будет проверять нажатия кнопок мыши.

Ну к примеру
Я пишу
Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

local button = {
{"f1",0.06}, --Интервал в секундах
{"f2",0.09}
}
local button2 = {0x31,  0x52, 0x33, 0x43, 0x56, 0x35, 0x35, 0x35, 0x5A, 0x42, 0x32, 0x46, 0x58, 0x48, 0x47, 0xC0, 0x34, 0x04, 0x54}   -- клаивиши, которые прерывают отправку клавиш из таблицы button
local mouse1 = {0x01}
--local mouse2 = {0x02}
for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
    end
    local pause = function()
    --local pause3 = function()
    for i = 1, #button do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
        --local mouse1=GetKeyState(mouse1[i])
        --local mouse2=GetKeyState(mouse2[i])
        --local toggle = GetKeyState(0x91) -- (Scroll_Lock)
        while  state do   -- ждать пока клавиша нажата
            --local toggle = GetKeyState(0x91) -- (Scroll_Lock)
            log("Нажата клавиша: " .. button2[i])
            send217('{' .. button2[i] .. '}')
            wait(1)
            -- right(mouse_pos(('{' .. button2[i] .. '}')))
            wait (10)
            state=GetKeyState(button2[i])
            --mouse1=GetKeyState(mouse1[i]) -- тут статус мыши не определяем?
            --mouse2=GetKeyState(mouse2[i])
            end
            end
            end
            local main = function(button) --Вот тут интересно, если я еще одну паузу сюда воткну, наверняка не будет работать? У нас была функция майн для button. Теперь нужно вторую для mouse? Или эта потянет?
            local pause2 = function()
            for i = 1, #mouse1 do   -- проверяем не нажата ли мышь
                local mouse1=GetKeyState(mouse1[i]) -- наверно i нужно другую присваивать? чет я всё в одну кучу слепил...
                --local toggle = GetKeyState(0x91) -- (Scroll_Lock)
                while  mouse1 do   -- ждать пока мышь1 нажата
                    --local toggle = GetKeyState(0x91) -- (Scroll_Lock)
                    log("Нажата клавиша: " .. mouse1[i])
                    left(mouse_pos(('{' .. mouse1[i] .. '}')))
                    wait(1)
                    -- right(mouse_pos(('{' .. button2[i] .. '}')))
                    wait (10)
                    state1=GetKeyState(mouse1[i]) -- ну тут мы типо статус мыши получаем
                    --mouse1=GetKeyState(mouse1[i])
                    --mouse2=GetKeyState(mouse2[i])
                    end
                    end
                    end
                    local main2 = function(mouse1) -- допустим я main2 создал, но её ведь не существует? она же базовая функция?
                    for i = 1, #button do
                        pause()   -- вызов функции, которая проверяет нажатие клавиш
                        pause2() -- и еще одну паузу, пусть еще проверяет, так скрипт точно зависнет)))
                        if  button[i][3] < os.clock() then
                            send217(button[i][1])
                            button[i][3] = os.clock() + button[i][2]
                            end
                            end
                            end

                            while 1 do
                                main(button)
                                wait (1)
                                end


Автор: cirus 12.7.2019, 2:12

Разбирайтесь.

код
Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

local button = {
{"f1",0.3}, --Интервал в секундах
{"f2",0.4},
{"f3",0.5}
}
local button2 = {0x31,  0x52, 0x33, 0x43, 0x56, 0x35, 0x35, 0x35, 0x5A, 0x42, 0x32, 0x46, 0x58, 0x48, 0x47, 0xC0, 0x34}
local mouse1= {1, 2}


for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
        while  state do   -- ждать пока клавиша нажата
            log("Нажата клавиша с кодом: " .. button2[i])
            send217('{' .. button2[i] .. '}')
            wait (10)
            state=GetKeyState(button2[i])
        end
    end
end

local mouse_pause = function()
    for i = 1, #mouse1 do   -- проверяем не нажата ли клавиша мыши
        local state=GetKeyState(mouse1[i])
        while  state do   -- ждать пока клавиша нажата
            log("Нажата клавиша с кодом: " .. mouse1[i])
            -- тут left или что нужно
            wait (10)
            state=GetKeyState(mouse1[i])
        end
    end
end

local main = function(button)
    for i = 1, #button do
        pause()   -- вызов функции, которая проверяет нажатие клавиш клавиатуры
        mouse_pause()  -- вызов функции, которая проверяет нажатие клавиш мыши
        if  button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
    wait (1)
end

Автор: Levo222 12.7.2019, 6:59

Цитата(cirus @ 12.7.2019, 6:12) *

Разбирайтесь.
код
Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

local button = {
{"f1",0.3}, --Интервал в секундах
{"f2",0.4},
{"f3",0.5}
}
local button2 = {0x31,  0x52, 0x33, 0x43, 0x56, 0x35, 0x35, 0x35, 0x5A, 0x42, 0x32, 0x46, 0x58, 0x48, 0x47, 0xC0, 0x34}
local mouse1= {1, 2}
for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
        while  state do   -- ждать пока клавиша нажата
            log("Нажата клавиша с кодом: " .. button2[i])
            send217('{' .. button2[i] .. '}')
            wait (10)
            state=GetKeyState(button2[i])
        end
    end
end

local mouse_pause = function()
    for i = 1, #mouse1 do   -- проверяем не нажата ли клавиша мыши
        local state=GetKeyState(mouse1[i])
        while  state do   -- ждать пока клавиша нажата
            log("Нажата клавиша с кодом: " .. mouse1[i])
            // тут left или что нужно
            wait (10)
            state=GetKeyState(mouse1[i])
        end
    end
end

local main = function(button)
    for i = 1, #button do
        pause()   -- вызов функции, которая проверяет нажатие клавиш клавиатуры
        mouse_pause()  -- вызов функции, которая проверяет нажатие клавиш мыши
        if  button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
    wait (1)
end


Неработает left в таком случае.

Код
local mouse_pause = function()
            for i = 1, #mouse1 do   -- проверяем не нажата ли клавиша мыши
                local state=GetKeyState(mouse1[i])
                while  state do   -- ждать пока клавиша нажата
                    log("Нажата клавиша с кодом: " .. mouse1[i])
                    if  state=1 then
                        local x, y = mouse_pos ()
                        left (x, y) // тут left или что нужно
                    else
                        if  state=2 then
                            local x, y = mouse_pos ()
                            right (x, y)
                        else
                            end
                            end
                            wait (10)
                            state=GetKeyState(mouse1[i])
                            end
                            end
                            end

Автор: cirus 12.7.2019, 10:54

Цитата
Неработает left в таком случае.

В луа вместо = используется ==.
Код
local mouse_pause = function()
    for i = 1, #mouse1 do   -- проверяем не нажата ли клавиша мыши
        local state=GetKeyState(mouse1[i])
        while  state do   -- ждать пока клавиша нажата
            -- тут left или что нужно
            if i == 1 then
                log("Нажата левая кнопка мыши")
            end
            if i == 2 then
                log("Нажата правая кнопка мыши")
            end
            wait (10)
            state=GetKeyState(mouse1[i])
        end
    end
end

Автор: Levo222 12.7.2019, 18:03

Цитата(cirus @ 12.7.2019, 14:54) *

В луа вместо = используется ==.
Код

            if i == 1 then
                log("Нажата левая кнопка мыши")
            end
            


--
.
Код
--lua
...


................

.
Код

..........
    

Еще одна проблема,!

Автор: Levo222 26.7.2019, 8:07

Цитата(cirus @ 12.7.2019, 6:12) *

Разбирайтесь.
код
Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

local button = {
{"f1",0.3}, --Интервал в секундах
{"f2",0.4},
{"f3",0.5}
}
local button2 = {0x31,  0x52, 0x33, 0x43, 0x56, 0x35, 0x35, 0x35, 0x5A, 0x42, 0x32, 0x46, 0x58, 0x48, 0x47, 0xC0, 0x34}
local mouse1= {1, 2}
for i = 1, #button do
    button[i][3] = os.clock() + button[i][2]
end

local pause = function()
    for i = 1, #button2 do   -- проверяем не нажата ли клавиша
        local state=GetKeyState(button2[i])
        while  state do   -- ждать пока клавиша нажата
            log("Нажата клавиша с кодом: " .. button2[i])
            send217('{' .. button2[i] .. '}')
            wait (10)
            state=GetKeyState(button2[i])
        end
    end
end

local mouse_pause = function()
    for i = 1, #mouse1 do   -- проверяем не нажата ли клавиша мыши
        local state=GetKeyState(mouse1[i])
        while  state do   -- ждать пока клавиша нажата
            log("Нажата клавиша с кодом: " .. mouse1[i])
            // тут left или что нужно
            wait (10)
            state=GetKeyState(mouse1[i])
        end
    end
end

local main = function(button)
    for i = 1, #button do
        pause()   -- вызов функции, которая проверяет нажатие клавиш клавиатуры
        mouse_pause()  -- вызов функции, которая проверяет нажатие клавиш мыши
        if  button[i][3] < os.clock() then
            send217(button[i][1])
            button[i][3] = os.clock() + button[i][2]
        end
    end
end

while 1 do
    main(button)
    wait (1)
end


Ищё одна загвоздка!
Средняя кнопка мыши не работает теперь. Как её сюда вписать? Если пишу
local mouse1= {1, 2, 3} -- соответственно это не работает
if i == 3 then
local x, y = mouse_pos ()
log("Нажата сред кнопка мыши")
middle (mouse_pos(('{' .. mouse1[i] .. '}')))
end

добавляю в паузу мыши, но она так как 2 первые кнопки не работает, пробовал в общие клавиши через код 0x04 добавлять но также не работает.

Автор: cirus 26.7.2019, 10:29

Цитата
local mouse1= {1, 2, 3} -- соответственно это не работает

Код
local mouse1= {1, 2, 4}

Автор: Levo222 26.7.2019, 10:40

Цитата(cirus @ 26.7.2019, 14:29) *

Код
local mouse1= {1, 2, 4}


Нет, не работает

в логе она показывает, но middle(mouse_pos(('{' .. mouse1[i] .. '}'))) её не нажимает

вот здесь допустим она работает

Код

while 1 do
    wait (13)
    local state, toggle = GetKeyState(0x14)
    local stateLKM = GetKeyState(0x01)
    local statePKM = GetKeyState(0x02)
    local state4 = GetKeyState(0x04)
    if  toggle and stateLKM then
        wait (1)
        local x, y = mouse_pos ()    
        left (x, y)     -- клик
    else
        if  toggle and statePKM then
            wait (1)
            local x, y = mouse_pos ()    
            right (x, y)     -- клик
        else
            if  toggle and state4 then
                wait (1)
                local x, y = mouse_pos ()
                middle (x, y)
            else
end
end
end
end


а в таком варианте:
Код

local mouse1 = {1, 2, 4}
local mouse_pause = function()
local state1, toggle = GetKeyState(0x90)
for i = 1, #mouse1 do  
    local state2=GetKeyState(mouse1[i])
    while  state2 do  
        local state1, toggle = GetKeyState(0x90) -- (Num_Lock)
        if  toggle then
            log("Нажата клавиша с кодом: " .. mouse1[i])
            local x, y = mouse_pos ()
            if  i == 1 then
                local x, y = mouse_pos ()
                left(mouse_pos(('{' .. mouse1[i] .. '}')))
                end
                if  i == 2 then
                    local x, y = mouse_pos ()
                    right(mouse_pos(('{' .. mouse1[i] .. '}')))
                    end
                    if  i == 4 then
                        local x, y = mouse_pos ()
                        middle(mouse_pos(('{' .. mouse1[i] .. '}')))
                        end
                        end
                        wait (10)
                        state2=GetKeyState(mouse1[i])
                        end
                        end
                        end

нет

Автор: cirus 26.7.2019, 11:05

Цитата
middle(mouse_pos(('{' .. mouse1[i] .. '}')))

Это что?

Автор: Levo222 26.7.2019, 11:42

Цитата(cirus @ 26.7.2019, 15:05) *

Это что?

То же что и это
left(mouse_pos(('{' .. mouse1[i] .. '}')))

Автор: cirus 26.7.2019, 11:44

Цитата
То же что и это
left(mouse_pos(('{' .. mouse1[i] .. '}')))

Так и что это?

Автор: Levo222 26.7.2019, 11:50

Цитата(cirus @ 26.7.2019, 15:44) *

Так и что это?

Нажать левую кнопку мыши

Т.е. {' .. mouse1[i] .. '}' можно не писать? Как я понимаю. Какой в ней смысл?

Автор: cirus 26.7.2019, 11:53

Цитата
Какой в ней смысл?

В данном случае никакого.
Цитата
left(mouse_pos()) -- клик под курсором

Автор: Levo222 26.7.2019, 11:56

Цитата(cirus @ 26.7.2019, 15:53) *

В данном случае никакого.

Дак почему средняя то не работает? даже при таком
local x, y = mouse_pos ()
middle (x, y) варианте


конкретно вот в этом скрипте. В других работает
)_______
Эм, проблема не в клавише. А в том что цифра 4 как-то не так считыватеся. Даже подставляя туда другую клавишу она не работает
А подставляя middle в другие цифры она работает

короче 4 не работает

_____
+ ко всему такой скрипт, если долго не включена лампочка на toggle начинает пролагивать окно к которому привязан, где то я его лишний раз написал, или не дописал, вобщем чет- не пойму

Автор: Levo222 7.11.2019, 15:55

Цитата(cirus @ 26.7.2019, 14:29) *

Код
local mouse1= {1, 2, 4}


вобщем не mouse1= {1, 2, 4}
а
mouse1= {1, 2, 3, 4}

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)