Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Обшибочка, _+_
Levo222
сообщение 6.7.2019, 14:55
Сообщение #1


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Пробовал код для нажатия клавишь в таймауте
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-ти клавиш?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 6.7.2019, 15:05
Сообщение #2


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



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


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 6.7.2019, 15:13
Сообщение #3


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



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

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

Да, типо кулдаун нажатия
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 6.7.2019, 16:09
Сообщение #4


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



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


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 6.7.2019, 18:21
Сообщение #5


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.7.2019, 18:32
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



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

Лишняя запятая.
Код
local button = {
    {"f1",1},     -- таймаут в секундах
    {"f2",2},
    {"f3",0.5}
}
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 6.7.2019, 18:36
Сообщение #7


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



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

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


а)
Окно пилота почему-то всёравно закрывается, я не могу понять по какой причине. Просто останавливаешь скрипт и оно закрывается
При нажатии на кнопку стоп
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.7.2019, 18:59
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



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

Нормально работает.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 6.7.2019, 21:52
Сообщение #9


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



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

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

Может в настройках какие-то клавиши отвечают за закрытие пилота которые и прожимаются там?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 6.7.2019, 22:58
Сообщение #10


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



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

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

Проблема была в настройках отображения координат курсора, когда стоит галочка почему-то скрипт вылетает вместе с пилотом.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 6.7.2019, 23:12
Сообщение #11


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Итак
что в данном скрипте означает 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 и спамила ту клавишу?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.7.2019, 23:43
Сообщение #12


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Если 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
и т. д.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 7.7.2019, 0:27
Сообщение #13


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(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

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.7.2019, 0:37
Сообщение #14


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Примерно так, если я правильно понял что нужно:
код
Код
--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
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 7.7.2019, 0:46
Сообщение #15


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(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 и т.д?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.7.2019, 2:05
Сообщение #16


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
И почему мне выдаёт левые коды? т.е. на 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



Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 7.7.2019, 3:01
Сообщение #17


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(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 клавиши нажму?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.7.2019, 11:24
Сообщение #18


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



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

Можно попробовать вообще-то.
Ничего не изменится, нажиматься будет первая нажатая клавиша.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 8.7.2019, 8:41
Сообщение #19


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



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

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

Да, вот еще что странно, сделать то сделал. Но получается что сам свою первоначальную задумку полной автоматизации и завернул этими нажатиями. Ну да ладно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.7.2019, 9:26
Сообщение #20


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



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

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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

3 страниц V  1 2 3 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 15:53
Designed by Nickostyle