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

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

UoKit.com Форумы _ UO Pilot _ Вопрос по луа

Автор: dron4938 21.2.2018, 13:22

Как переделать например такой скрипт на луа?

:aaa
sendex {f11}
wait 25 + random (23)
if нажата F1
goto bbb
end_if
goto aaa

:bbb
sendex {f12}
wait 25 + random (23)

Автор: cirus 21.2.2018, 13:38

Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        sendex ("f11")
        wait (25 + math.random (23))
        log ("f11")
    end

    sendex ("f12")
    wait (25 + math.random (23))
    log ("   f12")
end

Автор: dron4938 21.2.2018, 13:47

Цитата(cirus @ 21.2.2018, 13:38) *

Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        sendex ("f11")
        wait (25 + math.random (23))
        log ("f11")
    end

    sendex ("f12")
    wait (25 + math.random (23))
    log ("   f12")
end


спс, чуть понятнее стало)

а если так

:aaa
sendex {f11}
wait 25 + random (23)
if нажата F1
goto bbb
end_if
goto aaa

:bbb
sendex {f12}
wait 25 + random (23)
if нажата F1
goto aaa
end_if
goto bbb

Автор: cirus 21.2.2018, 14:09

Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        sendex ("f11")
        wait (15 + math.random (15))
        log ("f11")
    end
    wait (200)
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        sendex ("f12")
        wait (15 + math.random (15))
        log ("   f12")
    end
    wait (2000)
end

Автор: dron4938 21.2.2018, 14:21

Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        wait (250 + math.random (350))
        hint ("СПИМ")
    end

    while not(Kbd.IsKeyPress(Kbd.F2)) do   -- пока не нажата f2
        sendex ("{F12}")
        wait (25 + math.random (23))
        if Kbd.IsKeyPress(Kbd.LMB) then   -- если нажата клавиша ЛКМ
        sendex ("J")
        wait (25 + math.random (23))
        end
        if Kbd.IsKeyPress(Kbd.3) then   -- если нажата клавиша 3
        sendex ("6")
        wait (25 + math.random (23))
        end
        if Kbd.IsKeyPress(Kbd.Q) then   -- если нажата клавиша Q
        sendex ("8")
        wait (25 + math.random (23))
        end
    end
end


начеркал код, в чем ошибка?

Автор: cirus 21.2.2018, 14:35

Цитата
Kbd.IsKeyPress(Kbd.3)

Код
Kbd.IsKeyPress(Kbd.Key3)

Смотрите коды клавиш.

Автор: dron4938 21.2.2018, 14:37

Ошибка понял в чём - key3

Но теперь надо чтобы при зажатой ЛКМ, спамилось нажатие J
Именно если зажать

Автор: cirus 21.2.2018, 15:01

Код
--lua
require("Kbd")

while 1 do
time = os.clock() + 1  -- 1 секунда и считается что кнопка зажата
    while  Kbd.IsKeyPress(Kbd.LMB) do   -- если нажата клавиша ЛКМ
        if time < os.clock() then
            sendex ("J")
            wait (25 + math.random (23))
        end
        wait (10)
    end
    wait (10)
end

Автор: dron4938 21.2.2018, 15:07

Цитата(cirus @ 21.2.2018, 15:01) *

Код
--lua
require("Kbd")

while 1 do
time = os.clock() + 1  -- 1 секунда и считается что кнопка зажата
    while  Kbd.IsKeyPress(Kbd.LMB) do   -- если нажата клавиша ЛКМ
        if time < os.clock() then
            sendex ("J")
            wait (25 + math.random (23))
        end
        wait (10)
    end
    wait (10)
end



Спасибо, а можно что бы между 2 вумя циклами этими на 1 кнопку переключаться.
Если и там и там f1 ставишь, то оно глючит както, через раз работает.

Изображение

Автор: dron4938 21.2.2018, 16:42

Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
    wait (50)
    log ("блок1")
    end

    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
    wait (50)
    log ("блок2")
    end
end


вот пример того как на 1 кнопку фигово работает, как поправить?

Автор: cirus 22.2.2018, 1:32

Цитата
как поправить?

Добавить wait. Подобрать нужное значение.
Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
    wait (50)
    log ("блок1")
    end
    wait (200)
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
    wait (50)
    log ("блок2")
    end
    wait (200)
end

Автор: dron4938 23.2.2018, 16:51

Все таки goto работает лучше) В маленьких кодах)

Автор: Cockney 23.2.2018, 17:25

Нет (доказано британскими учеными).

Автор: cirus 23.2.2018, 17:53

Правильнее так будет:

Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        wait (20)
        log ("блок1")
    end
    while Kbd.IsKeyPress(Kbd.F1) do wait (20) end    -- пока не отпустили f1

    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        wait (20)
        log ("блок2")
    end
    while Kbd.IsKeyPress(Kbd.F1) do wait (20) end  -- пока не отпустили f1
end


Автор: dron4938 24.2.2018, 11:36

Цитата(cirus @ 23.2.2018, 17:53) *

Правильнее так будет:
Код
--lua
require("Kbd")

while 1 do         -- бесконечный цикл
    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        wait (20)
        log ("блок1")
    end
    while Kbd.IsKeyPress(Kbd.F1) do wait (20) end    -- пока не отпустили f1

    while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
        wait (20)
        log ("блок2")
    end
    while Kbd.IsKeyPress(Kbd.F1) do wait (20) end  -- пока не отпустили f1
end



Да, так еще годно)
А hint в луа есть цветной? Или ток стандартный?

Автор: DarkMaster 24.2.2018, 11:53

Луа - это обработчик, набор синтаксиса. Все функции пилотовские. Ну разве что кое-что по математике имеется и строкам дополнительно.

Автор: dron4938 24.2.2018, 14:53

а вместо set timer, на луа как?

Автор: cirus 24.2.2018, 18:48

Цитата
А hint в луа есть цветной? Или ток стандартный?

В данный момент hint с параметрами не работает.
Цитата
а вместо set timer, на луа как?

os.clock() - возвращает время в секундах с точностью до миллисекунд с момента запуска пилота. Сбросить его нельзя вроде как.
Код
--lua
log "clear" log "mode compact"
time_out1 = 0    time_out2 = 0

while 1 do
    if time_out1 < os.clock() then     -- выполнять блок каждую секунду
        log ("+++")
        time_out1 = 1 + os.clock()     -- прибавляем 1 секунду
    end

    if time_out2 < os.clock() then     -- выполнять блок каждые 3.5 секунды
        log ("!!!!!!")
        time_out2 = 3.5 + os.clock()  -- прибавляем 3.5 секунды
    end
    wait (1)
end


Автор: dron4938 24.2.2018, 19:45

а как посчитать за какое время выполнился скрипт?
я что то не очень пойму про os.clock() - возвращает время в секундах с точностью до миллисекунд с момента запуска пилота.
Тобеж в момент запуска время равно нулю, и значит os.clock() всегда равен нулю?
как его в логе отобразить?

Автор: dron4938 24.2.2018, 20:45

Код
--lua
time1 = os.clock ()
wait (1300) -- скрипт
time2 = os.clock () - time1; log (time2); hint (time2)


Немного понял про os.clock ()
кажись немного сообразил как вычислять время затраченное на скрипт
Правильно же так?
Ток показывает время в милиардных долях) Как округлять хотяб чтобы 4 цифры после запятой?

Вернее былобы правильнее перевести в милисекунды результат time2, он там в секундах просто показывается

Автор: cirus 24.2.2018, 21:20

Цитата
Как округлять хотяб чтобы 4 цифры после запятой?

Код
--lua
function float (number, accuracy) return string.format("%." .. accuracy .. "f", number) end    -- в начало скрипта

time1 = os.clock ()
wait (1300) -- скрипт
time2 = os.clock () - time1

log "clear" log "mode compact"
-- передаём в функцию float: число, которое нужно округлить, и число, означающее до скольки знаков после точки округлить.
log (float (time2, 1))  -- окгруглить до 1 знака после точки
log (float (time2, 4))  -- до 4
log (float (time2, 2))  -- до 2
log (float (time2, 5))  -- до 5

Цитата
Вернее былобы правильнее перевести в милисекунды результат time2, он там в секундах просто показывается

Код
--lua
function ms (number) return math.floor(number * 1000) end    -- в начало скрипта

time1 = os.clock ()
wait (1300) -- скрипт
time2 = os.clock () - time1

log "clear" log "mode compact"
log (ms (time2))

Автор: cirus 24.2.2018, 22:28

Цитата
а на луа финдимидж есть? Можно пример на луа?

Вопросы по языку луа лучше не задавать в темах где примеры на языке пилота. Новичкам разобраться потом в каше из двух языков будет не реально.
Findimage есть, точнее некоторый костыль, который надо бы переделать под синтаксис луа.
Код
--lua
a = findimage (0, 0, 1920, 1080, "(C:\\pilot\\111.bmp)", "%arr", 2, 80, -1, 5)   -- возвращает тип данных string
hint (a)
if tonumber(a) > 0 then    --  поэтому для сравнения с числом переводим строку в число
    move (arr[1][1], arr [1][2])    -- навести курсор на  картинку
end

Все \ в пути пишутся 2 раза. Массивы(таблицы) в луа, в отличии от языка пилота не %arr[1 1], а arr[1][1]. Каждый элемент в квадратных скобках.

Автор: dron4938 25.2.2018, 20:06

Код
--lua
require("Kbd")
while 1 do         -- бесконечный цикл
   while Kbd.IsKeyPress(Kbd.Q) do   -- если нажата клавиша Q
   log ("Нажата q")
   wait (25 + math.random (23))
   end
   while Kbd.IsKeyPress(Kbd.key2) do   -- если нажата клавиша 2
   log ("Нажата 2")
   wait (25 + math.random (23))
   end
   while Kbd.IsKeyPress(Kbd.key3) do   -- если нажата клавиша 3
   log ("Нажата 3")
   wait (35 + math.random (27))
   end
   while Kbd.IsKeyPress(Kbd.LMB) do   -- если нажата клавиша ЛКМ
   log ("Нажата ЛКМ")
   wait (25 + math.random (23))
   end
end


в чем тут косяк, не жмакает 2 и 3
P.S понял) Key надо с большой буквы)

Автор: dron4938 28.2.2018, 12:44

Код
--lua
require("Kbd")

test = 2;

while 1 do
while  (Kbd.IsKeyPress(Kbd.F2)) or test = 2 do
log ("работает")
end
end


так не работает?

Автор: cirus 28.2.2018, 13:00

Для операций сравнения используются знаки операций: >, <, ==(равно), <=, >=, ~=(не равно).

Код
while  (Kbd.IsKeyPress(Kbd.F2)) or test == 2 do



Автор: dron4938 28.2.2018, 13:03

Цитата(cirus @ 28.2.2018, 13:00) *

Для операций сравнения используются знаки операций: >, <, ==(равно), <=, >=, ~=(не равно).
Код
while  (Kbd.IsKeyPress(Kbd.F2)) or test == 2 do


ой сори, туплю)

Автор: dron4938 28.2.2018, 14:13

код

Код
--lua
require("Kbd")
ff = nil

while 1 do         -- бесконечный цикл
hint (".") -- выполняется сразу
-------------------------------------------------------------------------------- выполняется сразу
--============================================================
if  (Kbd.IsKeyPress(Kbd.F1)) or ff == 1 then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
while 1 do
hint ("f1")
-------------------------------------------------------------------------------- если нажата f1
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F2)) or ff == 2 then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
while 1 do
hint ("f2")
-------------------------------------------------------------------------------- если нажата f2
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--================================================================
if  (Kbd.IsKeyPress(Kbd.F3)) or ff == 3 then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
while 1 do
hint ("f3")
-------------------------------------------------------------------------------- если нажата f3
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F4)) or ff == 4 then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
while 1 do
hint ("f4")
-------------------------------------------------------------------------------- если нажата f4
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--=============================================================
if  (Kbd.IsKeyPress(Kbd.F5)) or ff == 5 then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
while 1 do
hint ("f5")
-------------------------------------------------------------------------------- если нажата f5
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F6)) or ff == 6 then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
while 1 do
hint ("f6")
-------------------------------------------------------------------------------- если нажата f6
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F7)) or ff == 7 then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
while 1 do
hint ("f7")
-------------------------------------------------------------------------------- если нажата f7
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--============================================================
if  (Kbd.IsKeyPress(Kbd.F8)) or ff == 8 then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
while 1 do
hint ("f8")
-------------------------------------------------------------------------------- если нажата f8
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--===============================================================
if  (Kbd.IsKeyPress(Kbd.F9)) or ff == 9 then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
while 1 do
hint ("f9")
-------------------------------------------------------------------------------- если нажата f9
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F10)) or ff == 10 then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
while 1 do
hint ("f10")
-------------------------------------------------------------------------------- если нажата f10
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--===========================================================
if  (Kbd.IsKeyPress(Kbd.F11)) or ff == 11 then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
while 1 do
hint ("f11")
-------------------------------------------------------------------------------- если нажата f11
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = nil
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = 12
break
end
end
end
--====================================================================
if  (Kbd.IsKeyPress(Kbd.F12)) or ff == 12 then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
while 1 do
hint ("f12")
-------------------------------------------------------------------------------- если нажата f12
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end
ff = 1
break
end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end
ff = 2
break
end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end
ff = 3
break
end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end
ff = 4
break
end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end
ff = 5
break
end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end
ff = 6
break
end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end
ff = 7
break
end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end
ff = 8
break
end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end
ff = 9
break
end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end
ff = 10
break
end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end
ff = 11
break
end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end
ff = nil
break
end
end
end

end



Можно такое сделать в меньшем скрипте?
Блоки кода срабатывают на клавиши F1-F12

Автор: cirus 28.2.2018, 14:42

Что должен делать скрипт?

Автор: dron4938 28.2.2018, 14:46

Цитата(cirus @ 28.2.2018, 14:42) *

Что должен делать скрипт?

тоже что тот огромный) На нажатие клавиш ф1-ф12, запускаются определенные блоки скрипта.

нажали ф1
спамится код1
нажали ф2
спамится код2
нажали ф3
спамится код3

Автор: cirus 28.2.2018, 15:22

Как минимум использовать циклы:

Код
--lua
require("Kbd")
arr={"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"}

while 1 do
    for i = 112, 123 do
        if  Kbd.IsKeyPress(i) then
            hint ("Нажата " .. arr[i-111])
            wait (100)
        end
        wait (1)
    end
end

Это только пример. Остальное надо дописывать.

Автор: dron4938 28.2.2018, 17:12

Цитата(cirus @ 28.2.2018, 15:22) *

Как минимум использовать циклы:
Код
--lua
require("Kbd")
arr={"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"}

while 1 do
    for i = 112, 123 do
        if  Kbd.IsKeyPress(i) then
            hint ("Нажата " .. arr[i-111])
            wait (100)
        end
        wait (1)
    end
end

Это только пример. Остальное надо дописывать.


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

Код
--lua
require("Kbd")
ff = nil

while 1 do
hint (".") -------------------------------------------------- выполняется сразу
--=============================================================
if  (Kbd.IsKeyPress(Kbd.F1)) or ff == 1 then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end while 1 do
hint ("Нажата f1") -------------------------------------------- если нажата f1
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F2)) or ff == 2 then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end while 1 do
hint ("Нажата f2") --------------------------------------------- если нажата f2
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F3)) or ff == 3 then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end while 1 do
hint ("Нажата f3") --------------------------------------------- если нажата f3
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F4)) or ff == 4 then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end while 1 do
hint ("Нажата f4") --------------------------------------------- если нажата f4
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F5)) or ff == 5 then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end while 1 do
hint ("Нажата f5") --------------------------------------------- если нажата f5
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--===============================================================
if  (Kbd.IsKeyPress(Kbd.F6)) or ff == 6 then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end while 1 do
hint ("Нажата f6") ---------------------------------------------- если нажата f6
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F7)) or ff == 7 then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end while 1 do
hint ("Нажата f7") --------------------------------------------- если нажата f7
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F8)) or ff == 8 then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end while 1 do
hint ("Нажата f8") --------------------------------------------- если нажата f8
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F9)) or ff == 9 then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end while 1 do
hint ("Нажата f9") --------------------------------------------- если нажата f9
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F10)) or ff == 10 then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end while 1 do
hint ("Нажата f10") -------------------------------------------- если нажата f10
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F11)) or ff == 11 then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end while 1 do
hint ("Нажата f11")--------------------------------------------- если нажата f11
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = nil break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = 12 break end end end
--==============================================================
if  (Kbd.IsKeyPress(Kbd.F12)) or ff == 12 then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end while 1 do
hint ("Нажата f12") -------------------------------------------- если нажата f12
if  (Kbd.IsKeyPress(Kbd.F1)) then
while Kbd.IsKeyPress(Kbd.F1) do wait (20) end ff = 1 break end
if  (Kbd.IsKeyPress(Kbd.F2)) then
while Kbd.IsKeyPress(Kbd.F2) do wait (20) end ff = 2 break end
if  (Kbd.IsKeyPress(Kbd.F3)) then
while Kbd.IsKeyPress(Kbd.F3) do wait (20) end ff = 3 break end
if  (Kbd.IsKeyPress(Kbd.F4)) then
while Kbd.IsKeyPress(Kbd.F4) do wait (20) end ff = 4 break end
if  (Kbd.IsKeyPress(Kbd.F5)) then
while Kbd.IsKeyPress(Kbd.F5) do wait (20) end ff = 5 break end
if  (Kbd.IsKeyPress(Kbd.F6)) then
while Kbd.IsKeyPress(Kbd.F6) do wait (20) end ff = 6 break end
if  (Kbd.IsKeyPress(Kbd.F7)) then
while Kbd.IsKeyPress(Kbd.F7) do wait (20) end ff = 7 break end
if  (Kbd.IsKeyPress(Kbd.F8)) then
while Kbd.IsKeyPress(Kbd.F8) do wait (20) end ff = 8 break end
if  (Kbd.IsKeyPress(Kbd.F9)) then
while Kbd.IsKeyPress(Kbd.F9) do wait (20) end ff = 9 break end
if  (Kbd.IsKeyPress(Kbd.F10)) then
while Kbd.IsKeyPress(Kbd.F10) do wait (20) end ff = 10 break end
if  (Kbd.IsKeyPress(Kbd.F11)) then
while Kbd.IsKeyPress(Kbd.F11) do wait (20) end ff = 11 break end
if  (Kbd.IsKeyPress(Kbd.F12)) then
while Kbd.IsKeyPress(Kbd.F12) do wait (20) end ff = nil break end end end
end


Автор: DarkMaster 28.2.2018, 20:30

Начни писать вменяемо форматированный код. Проблемы сразу уйдут - сам все увидишь.

Автор: dron4938 28.2.2018, 21:07

Цитата(DarkMaster @ 28.2.2018, 20:30) *

Начни писать вменяемо форматированный код. Проблемы сразу уйдут - сам все увидишь.

Пилот луа не форматирует( как тут научишься

Автор: Cockney 28.2.2018, 23:11

А как пилот научится ?

Автор: dron4938 28.2.2018, 23:23

код
Код
--lua
require("Kbd")
arr={"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"}
iq = nil
while 1 do

while 1 do
    for i = 112, 123 do
    hint ("жду нажатия")
        if  Kbd.IsKeyPress(i) then
            --hint ("Нажата " .. arr[i-111])
            iq = i
        end
                while Kbd.IsKeyPress(i) do wait (20) end
        wait (1)
    end
    if iq ~= 0 then
    wait (100)
        break
    end
end

while iq == 112 do
   hint ("выполняю скрипт ф1")-------------тут скрипт1
   wait (10)
   for i = 112, 123 do
   if  Kbd.IsKeyPress(i) then
   iq = i
   if iq == 112 then
   iq = nil
   end
   while Kbd.IsKeyPress(i) do wait (20) end
   end
   end
end

while iq == 113 do
   hint ("выполняю скрипт ф2")-------------тут скрипт2
   wait (10)
   for i = 112, 123 do
   if  Kbd.IsKeyPress(i) then
   iq = i
   if iq == 113 then
   iq = nil
   end
   while Kbd.IsKeyPress(i) do wait (20) end
   end
   end
end

while iq == 114 do
   hint ("выполняю скрипт ф3")-------------тут скрипт3
   wait (10)
   for i = 112, 123 do
   if  Kbd.IsKeyPress(i) then
   iq = i
   if iq == 114 then
   iq = nil
   end
   while Kbd.IsKeyPress(i) do wait (20) end
   end
   end
end

while iq == 115 do
   hint ("выполняю скрипт ф4")--------------тут скрипт4
   wait (10)
   for i = 112, 123 do
   if  Kbd.IsKeyPress(i) then
   iq = i
   if iq == 115 then
   iq = nil
   end
   while Kbd.IsKeyPress(i) do wait (20) end
   end
   end
end

end
так?

или так правильнее?
код

Код
--lua
require("Kbd")
iq = 0 arr = {112, 113, 114, 123} --Коды использующих клавиш f1-f3, f12

while 1 do while 1 do
    for i = 1, #arr do i = arr[i] ----перебор клавиш f1-f3, f12
    hint (".")
        if  Kbd.IsKeyPress(i) then iq = i end
        while Kbd.IsKeyPress(i) do wait (20) end end
    if iq ~= 0 then wait (20) break end
end
--========================

while iq == 112 do
hint ("Нажата F1")-------------------тут скрипт если нажата F1
for i = 1, #arr do i = arr[i]
   if  Kbd.IsKeyPress(i) then iq = i
   if iq == 112 then iq = 0 end
while Kbd.IsKeyPress(i) do wait (20) end end end end

while iq == 113 do
hint ("Нажата F2")-------------------тут скрипт если нажата F2
for i = 1, #arr do i = arr[i]
   if  Kbd.IsKeyPress(i) then iq = i
   if iq == 113 then iq = 0 end
while Kbd.IsKeyPress(i) do wait (20) end end end end

while iq == 114 do
hint ("Нажата F3")-------------------тут скрипт если нажата F3
for i = 1, #arr do i = arr[i]
   if  Kbd.IsKeyPress(i) then iq = i
   if iq == 114 then iq = 0 end
while Kbd.IsKeyPress(i) do wait (20) end end end end

while iq == 123 do
hint ("Нажата F12")------------------тут скрипт если нажата F12
for i = 1, #arr do i = arr[i]
   if  Kbd.IsKeyPress(i) then iq = i
   if iq == 123 then iq = 0 end
while Kbd.IsKeyPress(i) do wait (20) end end end end
end

Автор: cirus 1.3.2018, 4:40

код
Код
--lua
require("Kbd")

--===== все функции можно загружать через require  ====
function F1(button_current)
    while Key_Press(button_current) == 0 do  -- пока не нажата другая кнопка
        log (1) wait (50)               -- этот код выполняется при нажатии F1, до тех пор пока не нажата другая клавиша
    end
end

function F2(button_current)
    while Key_Press(button_current) == 0 do  -- пока не нажата другая кнопка
        log (2)  wait (50)              -- этот код выполняется при нажатии F2, до тех пор пока не нажата другая клавиша
    end
end

function F3(button_current)
    while Key_Press(button_current) == 0 do  -- пока не нажата другая кнопка
        log (3)  wait (50)              -- этот код выполняется при нажатии F3, до тех пор пока не нажата другая клавиша
    end
end

function Key_Press(button)     -- функция для отслеживания нажатий, чтобы выйти из текущей функции
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) and arr[i] ~= button then
             return 1
        end
        wait (1)
    end
    return 0
end
--===========

arr={112, 113, 114}  -- какие клавиши отслеживать, 112(F1), 113(F2) и т. д.
t={F1, F2, F3}    -- таблица с функциями

while 1 do
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then   -- если нажата клавиша из массива arr
             t[i](arr[i])                 -- вызываем нужную функцию t[1] - при нажатии F1, t[2] - при нажатии F2
                                          -- и передаём код клавиши, которая была нажата
        end
        wait (1)
    end
end

При нажатии F1 пишет в лог 1, до тех пор пока не будет нажата другая клавиша, при нажатии F2 пишет 2, F3 пишет 3.

Автор: dron4938 1.3.2018, 10:58

Цитата(cirus @ 1.3.2018, 4:40) *

код
Код
--lua
require("Kbd")

--===== все функции можно загружать через require  ====
function F1(button_current)
    while Key_Press(button_current) == 0 do  -- пока не нажата другая кнопка
        log (1) wait (50)               -- этот код выполняется при нажатии F1, до тех пор пока не нажата другая клавиша
    end
end

function F2(button_current)
    while Key_Press(button_current) == 0 do  -- пока не нажата другая кнопка
        log (2)  wait (50)              -- этот код выполняется при нажатии F2, до тех пор пока не нажата другая клавиша
    end
end

function F3(button_current)
    while Key_Press(button_current) == 0 do  -- пока не нажата другая кнопка
        log (3)  wait (50)              -- этот код выполняется при нажатии F3, до тех пор пока не нажата другая клавиша
    end
end

function Key_Press(button)     -- функция для отслеживания нажатий, чтобы выйти из текущей функции
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) and arr[i] ~= button then
             return 1
        end
        wait (1)
    end
    return 0
end
--===========

arr={112, 113, 114}  -- какие клавиши отслеживать, 112(F1), 113(F2) и т. д.
t={F1, F2, F3}    -- таблица с функциями

while 1 do
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then   -- если нажата клавиша из массива arr
             t[i](arr[i])                 -- вызываем нужную функцию t[1] - при нажатии F1, t[2] - при нажатии F2
                                          -- и передаём код клавиши, которая была нажата
        end
        wait (1)
    end
end

При нажатии F1 пишет в лог 1, до тех пор пока не будет нажата другая клавиша, при нажатии F2 пишет 2, F3 пишет 3.


Кривовато работает, не останавливает на повторное нажатие

Автор: cirus 1.3.2018, 11:16

Цитата
Что должен делать скрипт?

Цитата
На нажатие клавиш ф1-ф12, запускаются определенные блоки скрипта.
нажали ф1
спамится код1
нажали ф2
спамится код2
нажали ф3
спамится код3

Где тут сказано про остановку скрипта?

Автор: dron4938 1.3.2018, 11:22

Цитата(cirus @ 1.3.2018, 11:16) *

Где тут сказано про остановку скрипта?

Не ну как без остановки то) Но он кстати иногда останавливает, если много раз пощелкать Фки.
Спасибо за пример с функциями

Автор: cirus 1.3.2018, 11:47

код
Код
--lua
require("Kbd")

--===== все функции можно загружать через require  ====
function F1()
    while Key_Press() == 0 do   -- пока не нажата кнопка, если F1 выйдет из функции
        log (1) wait (30)       -- этот код выполняется при нажатии F1
    end
end

function F2()
    while Key_Press() == 0 do   -- пока не нажата другая кнопка, если F2 выйдет из функции
        log (2)  wait (30)      -- этот код выполняется при нажатии F2
    end
end

function F3()
    while Key_Press() == 0 do   -- пока не нажата другая кнопка, если F3 выйдет из функции
        log (3)  wait (30)      -- этот код выполняется при нажатии F3
    end
end

function Key_Press()     -- функция для отслеживания нажатий, чтобы выйти из текущей функции
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then
            return 1
        end
        wait (1)
    end
    return 0
end
--===========

arr={112, 113, 114}  -- какие клавиши отслеживать, 112(F1), 113(F2) и т. д.
t={F1, F2, F3}    -- таблица с функциями
while 1 do
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then   -- если нажата клавиша
            time = os.clock () + 0.5      -- если кнопка зажата на 0.5 секунды, то функция тоже выполнится
            while Kbd.IsKeyPress(arr[i]) and os.clock() < time do wait (10) end  -- ждём когда кнопка будет отпущена или зажата на 0.5 секунды
                t[i]()                 -- вызываем нужную функцию t[1] - при нажатии F1, t[2] - при нажатии F2
            while Kbd.IsKeyPress(arr[i]) do wait (10) end  -- ждём когда кнопка будет отпущена
        end
        wait (1)
    end
end

При нажатии F1 пишет в лог 1, до тех пор пока не будет нажата другая клавиша (тогда будет вызвана другая функция) или снова не нажата F1 (тогда выйдет из функции). При нажатии F2 пишет 2, F3 пишет 3.

Автор: dron4938 1.3.2018, 12:34

Цитата(cirus @ 1.3.2018, 11:47) *

код
Код
--lua
require("Kbd")

--===== все функции можно загружать через require  ====
function F1()
    while Key_Press() == 0 do   -- пока не нажата кнопка, если F1 выйдет из функции
        log (1) wait (30)       -- этот код выполняется при нажатии F1
    end
end

function F2()
    while Key_Press() == 0 do   -- пока не нажата другая кнопка, если F2 выйдет из функции
        log (2)  wait (30)      -- этот код выполняется при нажатии F2
    end
end

function F3()
    while Key_Press() == 0 do   -- пока не нажата другая кнопка, если F3 выйдет из функции
        log (3)  wait (30)      -- этот код выполняется при нажатии F3
    end
end

function Key_Press()     -- функция для отслеживания нажатий, чтобы выйти из текущей функции
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then
            return 1
        end
        wait (1)
    end
    return 0
end
--===========

arr={112, 113, 114}  -- какие клавиши отслеживать, 112(F1), 113(F2) и т. д.
t={F1, F2, F3}    -- таблица с функциями
while 1 do
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then   -- если нажата клавиша
            time = os.clock () + 0.5      -- если кнопка зажата на 0.5 секунды, то функция тоже выполнится
            while Kbd.IsKeyPress(arr[i]) and os.clock() < time do wait (10) end  -- ждём когда кнопка будет отпущена или зажата на 0.5 секунды
                t[i]()                 -- вызываем нужную функцию t[1] - при нажатии F1, t[2] - при нажатии F2
            while Kbd.IsKeyPress(arr[i]) do wait (10) end  -- ждём когда кнопка будет отпущена
        end
        wait (1)
    end
end

При нажатии F1 пишет в лог 1, до тех пор пока не будет нажата другая клавиша (тогда будет вызвана другая функция) или снова не нажата F1 (тогда выйдет из функции). При нажатии F2 пишет 2, F3 пишет 3.

Так отлично работает, спасибо)

Автор: dron4938 3.3.2018, 14:31

--lua
a = findimage (0, 0, 1920, 1080, "(C:\\pilot\\111.bmp)", "%arr", 2, 80, -1, 5) -- возвращает тип данных string
hint (a)
if tonumber(a) > 0 then -- поэтому для сравнения с числом переводим строку в число
move (arr[1][1], arr [1][2]) -- навести курсор на картинку
end

как навести курсор на картинку не в (0 0) коодинаты, а со смещением?

Автор: DarkMaster 3.3.2018, 14:44

прибавить их)
move (arr[1][1] + offset_x, arr [1][2] + offset_y)
Это луа, тут можно все достаточно нативно и без доп переменных/строк.

Автор: dron4938 3.3.2018, 14:56

Цитата(DarkMaster @ 3.3.2018, 14:44) *

прибавить их)
move (arr[1][1] + offset_x, arr [1][2] + offset_y)
Это луа, тут можно все достаточно нативно и без доп переменных/строк.

ааа, спс

Автор: dron4938 5.3.2018, 22:41

В чем отличие math.random и просто random? Оба случая работают

Код
--lua
log "clear" log "mode compact"

while 1 do
time1 = os.clock (); log("ждем")
wait(1000+math.random(5000))
time2 = os.clock () - time1; log (time2)
end


Код
--lua
log "clear" log "mode compact"

while 1 do
time1 = os.clock (); log("ждем")
wait(1000+random(5000))
time2 = os.clock () - time1; log (time2)
end

Автор: Cockney 6.3.2018, 1:16

random - функция пилота, math.random - функция lua

Автор: cirus 6.3.2018, 1:37

Цитата
В чем отличие math.random и просто random?

Код
--lua
time=os.clock()
for i=0, 100000 do
    a=random(5000)
end
log(os.clock()-time)

Код
--lua
time=os.clock()
for i=0, 100000 do
    a=math.random(5000)
end
log(os.clock()-time)

Сравните время. Хотя для большинства случаев это не имеет значения.
Также рандом луа позволяет задать диапазон:
Код
--lua
a = math.random (-10, 6)        -- от -10 до 6
log (a)


Автор: dron4938 7.3.2018, 15:54

Код
--lua
arr = {01,"02",03}
log "clear" log "mode compact"
log ("Позвонить в полицию" arr[2])


я что-то не пойму, как в логе совмещать текст с переменными?
а понял, запятые)

Автор: cirus 7.3.2018, 16:19

Код
--lua
arr = {01,"02",03}
log "clear" log "mode compact"
log ("Позвонить в полицию " .. arr[2])

Автор: dron4938 7.3.2018, 17:40

Цитата(cirus @ 7.3.2018, 16:19) *

Код
--lua
arr = {01,"02",03}
log "clear" log "mode compact"
log ("Позвонить в полицию " .. arr[2])


двоеточие это тоже самое что запятая?

А как на луа будет get mouse_pos #x #y.
Тобеж отслеживание положения курсора

Автор: DarkMaster 7.3.2018, 17:44

Цитата
двоеточие это тоже самое что запятая?

Нет. Лог принимает до 10 параметров. Запятыми вы отделяете параметры, в лог они будут выведены с разделением пробелом. Используя же две точки вы испозуете функции луа по работе со строками и после преобразования получаете один параметр.

Автор: cirus 7.3.2018, 18:07

Цитата
Лог принимает до 10 параметров

До 20, если не ошибаюсь, также как findcolor/findimage.
Цитата
двоеточие это тоже самое что запятая?

Это две точки, а не двоеточие smile.gif По сути это склеивание переменных в одну строку.
Код
--lua
arr = {"01","02","03"}
a=666
log "clear" log "mode compact"

string = arr[1] .. arr[2] .. arr [3] .. a
log (string)

Цитата
А как на луа будет get mouse_pos #x #y.

Пока Кнайт не сделает никак.

Автор: dron4938 7.3.2018, 18:26

Цитата(cirus @ 7.3.2018, 18:07) *

Пока Кнайт не сделает никак.

Пичалька(

а можно условие задать по типу если кликнул в указанные координаты?
if left (0, 0, 100, 100) then
end

или так как то
while Kbd.IsKeyPress(Kbd.LMB) and move (0, 0, 100, 100) do
end

Автор: dron4938 7.3.2018, 19:37

Код
--lua
arr = {" 1 "," 2 "," 3 "," 4 "}
a=666
log "clear" log "mode compact"

if a==666 then
arr[math.random (1, 4)]="A"
end

string = arr[1] .. arr[2] .. arr[3] .. arr[4]
log (string)

вот так рандомное значение меняет, а как сделать чтобы менял только выбранные. Типа так:

Код
--lua
arr = {" 1 "," 2 "," 3 "," 4 "}
a=666
log "clear" log "mode compact"

if a==666 then
arr[1 or 3]="A"
end

string = arr[1] .. arr[2] .. arr[3] .. arr[4]
log (string)

Автор: cirus 7.3.2018, 19:47

Код
--lua
arr = {" 1 "," 2 "," 3 "," 4 "}
a=666
log "clear" log "mode compact"

arr2 = {1,3}  -- выбранные

if a==666 then
arr[arr2[math.random (1,2)]]="A"
end

string = arr[1] .. arr[2] .. arr[3] .. arr[4]
log (string)

Автор: Cockney 7.3.2018, 21:44

Цитата
Лог принимает до 10 параметров


А больше религия запрещает ?


Автор: DarkMaster 7.3.2018, 23:31

Цитата
А больше религия запрещает ?

Скорее здравый смысл. Зачем? Ну лепи через точечки, если надо да и все...

Автор: Cockney 8.3.2018, 0:04

А вдруг захочу шоб было ? В луа можно передавать и принимать различное и неограниченное кол-во аргументов.

Автор: DarkMaster 8.3.2018, 0:57

Цитата
В луа можно передавать и принимать различное и неограниченное кол-во аргументов.

А в делфи, насколько мне известно, нет. Имхо проще написать обертку на луа, если так нужно. 5 строчек радости.

Автор: dron4938 8.3.2018, 18:38

А чему в пилоте равна переменная wait?
В других интерпретаторах луа выскакивает ошибка, если там wait использовать.

Автор: Cockney 8.3.2018, 19:48

Цитата(DarkMaster @ 8.3.2018, 0:57) *

А в делфи, насколько мне известно, нет. Имхо проще написать обертку на луа, если так нужно. 5 строчек радости.



Делфи это делфи. Функция же работает с луа стеком, а не делфи параметрами.

Автор: cirus 8.3.2018, 19:51

Цитата
А чему в пилоте равна переменная wait?

wait - это функция пилота, а не переменная, такая же как left, move, findimage и другие.

Автор: DarkMaster 8.3.2018, 20:31

Цитата
Делфи это делфи. Функция же работает с луа стеком, а не делфи параметрами.

Дык лог то это функция делфи и с каким стеком она не начни работать ограничения делфи никуда не денутся. Ну можно переделать ее под принятие динамического массива, создавать, удалять, перебирать. Я вот просто убей не вижу в этом _актуальности_. Я не против, можно все это прикрутить, реализовать. Но это действительно так актуально, что мы развели столько демогогии? За все годы общения с пилотом я не могу вспомнить, когда мне было необходимо передать столько параметров в лог. При этом полноценная замена реализуется в пять строк на луа без каких-либо потерь. Такое количество параметров предполагает некоторое форматирование ибо иначе просто будет ничего не понятно, а в таком случае оператор две точки становится намного удобнее, чтобы не думать о том куда там влепит пилот свои делиметры.
Код
--lua
function _log (...)
    local s
    if  arg[1] then
        s = arg[1]
    else
        s = "nil"
    end
    for i = 2, arg.n do
        if  arg[i] then
            s = s .. " " .. arg[i]
        else
            s = s .. " " .. "nil"
        end
    end
    log(s)
end

_log(1,2,3,4,5,6,7,8,9,0,"Y","W","F","P","V","r","s","t","d","e",1,2,3,4,5,6,7,8,9,0,"Y","W","F","P","V","r","s","t","d","e")

Ирония в том, что стандартный лог это тоже сожрал)

Автор: Cockney 8.3.2018, 21:31

Посмотри пример плагина который я выкладывал. Там нет фич, зависящих от языка. Вся работа на стеке и только на нем. Нет, это не актуально, по крайней мере для меня. Просто я пытаюсь донести мысль, что нельзя оставлять пилот-код в таком же состоянии, каким он был до луа и пытаться стянуть две технологии для совместимости. Вот смотри :

Код
log "clear" log "mode compact"


Это вкусовщина, но по-моему лучше сделать так :

Код
log(clear) 
log(mode.compact)


Это как минимум. Можно еще лучше, вынеся настройки лога за функцию :

Код
log(clear)
log.mode.compact = true


Да вариантов несколько, не суть. Почему настройки-параметры передаются как строки, хотя они никак не связаны с ними ? Бред же.

Что касается лога с 10 параметрами. Тут смотри, луа может возвращать сколь угодно значений из функции и столько же принимать. Как луа-юзеру(именно луа) нужно догадаться, что ограничение 10 ? Почему 10 ? Это не естественные ограничения, а все эти обертки над логом адский костыль. Ты предлагаешь допиливать дефолтный лог при нужде ? Причем по совершенно глупой.


Это только вершина айсберга. Больше чем уверен есть еще много мест с такими нелепицами.

Автор: DarkMaster 8.3.2018, 21:48

Цитата
log(clear)
log(mode.compact)

Подобная запись предполагает наличие константных переменных clear и mode.compact, причем еще и глобального массива mode. Имхо крайне плохая идея.
Цитата
log.mode.compact = true

Похоже направду. Ну либо функцией - не суть. Но при этом подходе невозможно будет сделать:
log(some_text)
т.к. log больше не функция, а массив.
Цитата
Больше чем уверен есть еще много мест с такими нелепицами.

Есть. Причем гораздо более страшными, поэтому я и говорил, что не на том фокусируемся, есть неработающие под луа функции, и жесткий косяк с параметрами заданными строкой, о чем ты как раз написал. Приоритеты...

Автор: Cockney 8.3.2018, 22:02

Код
settings.log.mode = compact
settings.log.size = 0
settings.log.autoopen = true

etc



Что плохого в глобальных переменных ? Так-то workwindow() тоже глобальный. И я его непринужденным методом ломаю.

Автор: DarkMaster 9.3.2018, 3:09

Цитата
Что плохого в глобальных переменных ?

типа clear? или settings? огромный шанс конфликта имен из-за незнания зарезервированных переменных.
Ну и глобальные переменные очень тормозные.

Автор: Cockney 9.3.2018, 13:18

Ну так справочка есть. А то так можно от всего открещиваться.
Да ладно, в чем они тормознутые ? Медленней того же workwindow() что-ли ?

Автор: DarkMaster 9.3.2018, 13:24

Цитата
чем они тормознутые

Едва ли медленнее, но они правда тормознутые. Особенность релизации луа.

Автор: Cockney 9.3.2018, 18:06

Я что-то не вижу проблемы. Если это особенность луа.

Автор: dron4938 9.3.2018, 19:38

Код
set %adres[1] "C:\Users\Andrey\Desktop"
set #a findimage(0 0 1920 1080 (%adres[1]\b.bmp) %arr 2 80 1 10)

на пилоте так можно, а на луа как так делается?

Автор: cirus 9.3.2018, 19:55

Код
--lua
adres = [[C:\Users\Andrey\Desktop]]   -- квадратные скобки для того чтобы не писать \ по 2 раза
image = [[\b.bmp]]
a = findimage(0, 0, 1920, 1080, "(", adres .. image,  ")", "%arr", 2, 80, 1, 10)
hint (a)

Вообще это всё надо переделывать под синтаксис луа.

Автор: dron4938 9.3.2018, 20:07

Цитата(cirus @ 9.3.2018, 19:55) *

Код
--lua
adres = [[C:\Users\Andrey\Desktop]]   -- квадратные скобки для того чтобы не писать \ по 2 раза
image = [[\b.bmp]]
a = findimage(0, 0, 1920, 1080, "(", adres .. image,  ")", "%arr", 2, 80, 1, 10)
hint (a)

Вообще это всё надо переделывать под синтаксис луа.

Пилотовским языком культурнее смотрится)

А если без задания переменной картинке? Чет не работает так
Код
--lua
adres = [[C:\Users\Andrey\Desktop\]]   -- квадратные скобки для того чтобы не писать \ по 2 раза
--image = [[\b.bmp]]
a = findimage(0, 0, 1920, 1080, "(", adres .."\b.bmp",  ")", "%arr", 2, 100, 1, 0)
hint (a)

Автор: cirus 9.3.2018, 20:30

Код
--lua
adres = [[C:\Users\Andrey\Desktop\]]   -- квадратные скобки для того чтобы не писать \ по 2 раза
a = findimage(0, 0, 1920, 1080, "(", adres .."b.bmp",  ")", "%arr", 2, 100, 1, 0)
hint (a)

\ в имени картинки не нужен, он же в пути указан.

Автор: dron4938 9.3.2018, 20:40

Цитата(cirus @ 9.3.2018, 20:30) *

Код
--lua
adres = [[C:\Users\Andrey\Desktop\]]   -- квадратные скобки для того чтобы не писать \ по 2 раза
a = findimage(0, 0, 1920, 1080, "(", adres .."b.bmp",  ")", "%arr", 2, 100, 1, 0)
hint (a)

\ в имени картинки не нужен, он же в пути указан.

Так тоже не работает)


Так работает:
Код
--lua
adres = [[C:\Users\Andrey\Desktop\]]   -- квадратные скобки для того чтобы не писать \ по 2 раза
image = [[b.bmp]]
a = findimage(0, 0, 1920, 1080, "("..adres..image,")", "%arr", 2, 100, 1, 0)
hint (a)


Так нет:
Код
--lua
adres = [[C:\Users\Andrey\Desktop\]]   -- квадратные скобки для того чтобы не писать \ по 2 раза
a = findimage(0, 0, 1920, 1080, "("..adres.."b.bmp", ")", "%arr", 2, 100, 1, 0)
hint (a)


Тест картинка:
Изображение
Ааа заработало хд


Прикрепленные файлы
Прикрепленный файл  b.bmp ( 4,25 килобайт ) Кол-во скачиваний: 85

Автор: dron4938 9.3.2018, 22:08

Можно ли задать переменной какое то действие?
Например:

Код
--lua
bb = "wait(1000+math.random(1000))"
log (bb)
--bb


но вызов переменной bb выдает ошибку

Автор: DarkMaster 9.3.2018, 22:48

Цитата
Можно ли задать переменной какое то действие?

Это назвывается функция =)
Код

function bb (var)
    wait(var + math.random(var))
    return
end
-- вызываем:
bb(1000)

кстати bb в луа является ссылкой и по своей природе настоящей переменной. Даже объявление на самом деле просходит, как:
Код
bb = function(var)

а запись:
Код
function bb (var)

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

Автор: dron4938 9.3.2018, 22:53

function bb (var)
wait(var + math.random(var))
return
end
-- вызываем:
bb(1000)

(var) - это чего означает?)
ааа понял) var это то что вызываем в скобках)

Автор: DarkMaster 9.3.2018, 23:03

Цитата
(var) - это чего означает?)

это значение, которое мы передаем в функцию.

Автор: dron4938 9.3.2018, 23:05

Цитата(DarkMaster @ 9.3.2018, 23:03) *

это значение, которое мы передаем в функцию.

функция, это выходит тоже самое, что на пилоте gosub?

Автор: cirus 9.3.2018, 23:06

Цитата
function bb (var)
wait(var + math.random(var))
return
end
-- вызываем:
bb(1000)

return в данном случае не нужен, т. к. функция ничего не возвращает. В место перенаправления и так вернётся.
Пример с return:
Код
--lua
function bb (var1, var2)
    return var1 * 3, var2 / 4   -- возвращаем 2 значения
end

a, b = bb(10, 20)
log (a, b)

Автор: DarkMaster 9.3.2018, 23:46

Цитата
return в данном случае не нужен, т. к. функция ничего не возвращает. В место перенаправления и так вернётся.

Феншуй и не более того.

Скорее gosub некоторое подобие функции со своими фишками в виде общей области видимости. Если вы объявляете переменную внутри функции с приставкой local:
local var = 12
тогда этот var не будет виден вне этой функции. Это очень удобно. Например, мы имеем некоторый счетчик, который использует переменную i, мы можем внутри вызываемой функции использовать свою local i и не переживать, что перезапишем вышестояющую переменную (у нас будет своя локальная i с другим значением).

Автор: dron4938 9.3.2018, 23:53

из функции можно выскочить как-то типа break?
Или функция должна обязательно вернутся к месту вызова?

Автор: cirus 10.3.2018, 0:10

Цитата
Или функция должна обязательно вернутся к месту вызова?

Вернётся в любом случае. Либо когда будет end - конец функции, либо через return из любого места в функции.
В луа 5.1 goto нет. В 5.3 есть.

Автор: Cockney 10.3.2018, 1:24

Я не помню, была ли проблема определения выполнения текущей строки, он же ход скрипта ?

Автор: DarkMaster 10.3.2018, 2:21

Цитата
Я не помню, была ли проблема определения выполнения текущей строки, он же ход скрипта ?

ее крайне обще касался я с кнайтом на этапе крикручивания луа. В том плане чтобы прикрутить логгирование и т.д. Было особо не до того, как следствие нет ни отслеживания ни логгирования. Тут еще очень большой вопрос в том, чтобы иметь возможность полноценно вырубать всю эту радость и получать 100% скорости.

гораздо актуальнее выдрать нахрен crystalLua, который тащит за собой какие-то невменяемые баги, но там какие-то проблемы с определением ниток тогда.

Автор: dron4938 11.3.2018, 14:07

все функции можно загружать через require. Это как?

Автор: DarkMaster 11.3.2018, 14:22

Это способ хранить все не в одном файле.
https://forum.uokit.com/index.php?showtopic=30000
Тут, например, мой скрипт подключается через require.
Хочу обратить ваше внимание, что из-за кривого crystal lua который используется в качестве прокладки между луа и делфи, вызов подобных функци производится фактически, как:
arr:func
вместо
arr.func
Т.е. вы пишете arr.func, а на самом деле из-за бага будет вызван arr:func. И это самая страшная проблема в пилоте на данный момент. Ибо это фактически убивает подключение сторонних либ, либо их нужно переписывать.

Автор: dron4938 11.3.2018, 14:52

я тут намедни вычитал, что на луа можно проигрывать звуки без остановки скрипта. Как такое делать?

Автор: cirus 11.3.2018, 15:14

Цитата
все функции можно загружать через require. Это как?

Открываем блокнот, вставляем:
Код
function f(a, b)
    return a+b
end

Сохраняем блокнот с любым именем, например: func. Меняем расширение с txt на lua. Т. е. файл будет называться func.lua. Закидываем его рядом с пилотом.
Код
--lua
require("func")  -- загружаем функцию из файла

result=f(2, 3)   -- вызываем её
log (result)



Автор: dron4938 11.3.2018, 18:19

мне показалось или невозможно функцию загрузить через require? если в функции присутствуют такие параметры как Kbd.IsKeyPress из подгруженной длл-ки.
Пример из скрипта выше:

пример

Код
--lua
require("Kbd")

--===== все функции можно загружать через require  ====
function F1()
    while Key_Press() == 0 do   -- пока не нажата кнопка, если F1 выйдет из функции
        log (1) wait (30)       -- этот код выполняется при нажатии F1
    end
end

function F2()
    while Key_Press() == 0 do   -- пока не нажата другая кнопка, если F2 выйдет из функции
        log (2)  wait (30)      -- этот код выполняется при нажатии F2
    end
end

function F3()
    while Key_Press() == 0 do   -- пока не нажата другая кнопка, если F3 выйдет из функции
        log (3)  wait (30)      -- этот код выполняется при нажатии F3
    end
end

function Key_Press()     -- функция для отслеживания нажатий, чтобы выйти из текущей функции
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then
            return 1
        end
        wait (1)
    end
    return 0
end
--===========

arr={112, 113, 114}  -- какие клавиши отслеживать, 112(F1), 113(F2) и т. д.
t={F1, F2, F3}    -- таблица с функциями
while 1 do
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then   -- если нажата клавиша
            time = os.clock () + 0.5      -- если кнопка зажата на 0.5 секунды, то функция тоже выполнится
            while Kbd.IsKeyPress(arr[i]) and os.clock() < time do wait (10) end  -- ждём когда кнопка будет отпущена или зажата на 0.5 секунды
                t[i]()                 -- вызываем нужную функцию t[1] - при нажатии F1, t[2] - при нажатии F2
            while Kbd.IsKeyPress(arr[i]) do wait (10) end  -- ждём когда кнопка будет отпущена
        end
        wait (1)
    end
end



если эту функцию грузить через require, то она не работает
Код
function Key_Press()     -- функция для отслеживания нажатий, чтобы выйти из текущей функции
    for i = 1, #arr do
        if  Kbd.IsKeyPress(arr[i]) then
            return 1
        end
        wait (1)
    end
    return 0
end

Автор: DarkMaster 11.3.2018, 21:04

Цитата
если эту функцию грузить через require, то она не работает

Цитата
Хочу обратить ваше внимание, что из-за кривого crystal lua который используется в качестве прокладки между луа и делфи, вызов подобных функци производится фактически, как:
arr:func
вместо
arr.func

Цитата
https://forum.uokit.com/index.php?showtopic=30000
Тут, например, мой скрипт подключается через require.


Автор: DarkMaster 12.3.2018, 4:16

https://forum.uokit.com/index.php?s=&showtopic=68521&view=findpost&p=424403

Автор: cirus 12.3.2018, 13:53

Цитата
В связи с чем полноценно заработал require.

И как теперь это должно выглядеть?
Код
--lua
require("Kbd")  -- загрузка функции
while 1 do      -- бесконечный цикл
    if Kbd.IsKeyPress(Kbd.Q) then   -- если нажата клавиша Q
        log("Нажата Q")
        wait (300)
    end
    wait (20)
end

В данном виде не работает. Как по-другому надо вызывать или плагин переписывать?

Автор: Cockney 12.3.2018, 14:39

Да и когда и в чем он криво работал ?


Цитата
В связи с чем полноценно заработал require.

Автор: DarkMaster 12.3.2018, 17:45

Некоторый плагин:

Код
function uoext.test_param (var1, var2, var3)
    return var1, var2, var3
end

вызываем:
Код
    local var1, var2, var3 = 1,"2","!@ywfVRS"
    var10, var20, var30 = uoext.test_param(var1, var2, var3)
    if var1 == var10 and var2 == var20 and var3 == var30 then
        log("Передача и возврат параметров: ОК.")
    else
        log("Передача и возврат параметров: ERROR.")
        log("Параметр1: " .. (var10 or "nil") .. " ожидалось: " .. (var1 or "nil"))
        log("Параметр2: " .. (var20 or "nil") .. " ожидалось: " .. (var2 or "nil"))
        log("Параметр3: " .. (var30 or "nil") .. " ожидалось: " .. (var3 or "nil"))
        error = error + 1
    end

Автор: Cockney 12.3.2018, 19:19

Плагин это просто луа скрипт ? Если длл, то

Цитата
Передача и возврат параметров: ОК.

Автор: DarkMaster 12.3.2018, 19:50

Плагин всмысле через require. Сама функция должна быть в другом файле.

Автор: Cockney 12.3.2018, 19:59

Так плагин(dll) или include ?

Автор: DarkMaster 12.3.2018, 20:22

require... Вообще "плагин" оно условно. Ибо просто другой файл.

файл luaPlugins\extended.lua

Код
--lua
function uoext.test_param (var1, var2, var3)
    return var1, var2, var3
end

вызываем из пилота:
Код
--lua
    log"clear"
    log"mode noscript"
    log"Начало теста."

    -- Для отладки в консоли луа.
    if not log then log = print print("log объявлен, как print") end
    -- Подгружаем либу.
    require("luaPlugins\\extended")

    local error = 0
    local var1, var2, var3 = 1,"2","!@ywfVRS"
    var10, var20, var30 = uoext.test_param(var1, var2, var3)
    if var1 == var10 and var2 == var20 and var3 == var30 then
        log("Передача и возврат параметров: ОК.")
    else
        log("Передача и возврат параметров: ERROR.")
        log("Параметр1: " .. (var10 or "nil") .. " ожидалось: " .. (var1 or "nil"))
        log("Параметр2: " .. (var20 or "nil") .. " ожидалось: " .. (var2 or "nil"))
        log("Параметр3: " .. (var30 or "nil") .. " ожидалось: " .. (var3 or "nil"))
        error = error + 1
    end

log("Обнаружено ошибок: " .. error .. ".")
log"Тест окончен."

Автор: Cockney 12.3.2018, 21:33

Вопрос снят в общем.

Автор: cirus 13.3.2018, 1:59

Цитата
файл luaPlugins\extended.lua

Цитата
--lua
function uoext.test_param (var1, var2, var3)
return var1, var2, var3
end

А массив кто будет объявлять.

Автор: DarkMaster 13.3.2018, 5:29

Цитата

А массив кто будет объявлять.

объявлен несколько сотен строк назад =) выдернуто.

Автор: cirus 15.3.2018, 2:00

Цитата
Вопрос снят в общем.

Cockney, а что с плагином для статуса клавиш? Его переделывать надо или он рабочий?

Автор: Cockney 15.3.2018, 18:17

Цитата(cirus @ 15.3.2018, 2:00) *

Cockney, а что с плагином для статуса клавиш? Его переделывать надо или он рабочий?



Не надо.

Автор: dron4938 21.3.2018, 15:46

hint еще не научился передвигаться по экрану?)

Автор: DarkMaster 21.3.2018, 21:40

нет. Ты хочешь на хинте построить движок для 2д игры?)

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

Видимо имелось ввиду неработающий хинт с параметрами.

Автор: dron4938 1.4.2018, 15:09

terminate ("блокнот")

если в названии приложения есть цифры, то не работает терминат.
Поправить бы)

Код
--lua
a = "number"
b = "25"
hint (a,"-",b)


как сделать чтобы 25 в кавычках отображалось в хинте?

Автор: cirus 1.4.2018, 20:01

Цитата
если в названии приложения есть цифры, то не работает терминат.

Работает.
Цитата
как сделать чтобы 25 в кавычках отображалось в хинте?

Код
--lua
a = "number"
b = '"25"'  -- в одинарных кавычках можно использовать двойные
c = "'25'"  -- в двойных кавычках можно использовать одинарные
d = [["25"]] -- или так, при этом игнорируются и escape последовательности, текст передаётся как есть
hint (a,"-", b, c, d)



Автор: dron4938 1.4.2018, 20:04

Цитата(cirus @ 1.4.2018, 20:01) *

Работает.

Код
--lua
a = "number"
b = '"25"'  -- в одинарных кавычках можно использовать двойные
c = "'25'"  -- в двойных кавычках можно использовать одинарные
d = [["25"]] -- или так, при этом игнорируются и escape последовательности, текст передаётся как есть
hint (a,"-", b, c, d)


Спасибки smile.gif

Автор: dron4938 1.4.2018, 22:06

а что с буфером?
set clipboard
get clipboard

как на луа вызываются?

в терминат оказывается надо название окна вписывать) А я название процесса вписывал)

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