|
-Счётчик, -Lua- |
|
|
Levo222 |
20.6.2020, 12:08
|
    
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689

|
Как на Lua создать счетчик последовательного выполнения действия с присвоением каждому действию кликов координат? (с досрочным выходом из цикла в случае достижения макс числа) code
Код Local TCicleMax = 3 --максимальное кол-во Count = Count + 1 local H1 = Kleft(100, 200) --первый контейнер local H2 = Kleft(100, 300) --второй контейнер local H3 = Kleft(100, 400) --третий контейнер
local h = findwindow("Containtg") local t = os.clock() While t > os.clock() do while Контейнер не полон (789, 9) ~= 9078784 do --Выполнять до тех пор пока контейнер не полон workwindow (h [1][1]) hint ("Проверяю заполненность") wait (100) if Контейнерполон (789, 9) == 9078785 -- and что-то еще (10, 82) ~= 0 then hint ("Контейнер полон") alarm ("Контейнер полон.wav") --но вот как узнать какой контейнер по счёту? потому что всего их 3. И если все 3 гонять по кругу это будет тупо. --Смотрим счётчик wait (10) --Если счётчик 3 (т.е. применялись H1, H2, H3) break --т.е. все 3 контейнера полны alarm ("Все контейнеры наполнены.wav") else --счетчик не 3 --Проверка следующего контейнера-- for i=1, #h do hint ("Открытие") workwindow (h[i][1]) --drawtext(HNDL, '...\r\n...', 70, 300, 48, 'Segoe Print', 65279, 16000000) send217 ("5") wait (500) --Здесь нужна какая-то функция открытия того контейнера, которыйне нажимался еще Kleft(Контейнер который не нажимался) --Т.е. H2/H3 второй/третий контейнер wait (500) send217 ("у") wait (1500) alarm ("Открытие контейнера.wav") end else hint ("Контейнер не заполнен") wait (200) end end alarm ("Завершение работы.wav") --log("Завершение работы") wait (500)
end
Если достигнуто TCicleMax, т.е. где-то в цикле уже прожимались H2 и H3 то цикл полностью завершает свою работу. Т.е. важно чтобы скрипт помнил какие контейнеры он уже открывал, чтобы больше к ним не возвращаться.
|
|
|
|
|
  |
Ответов
Levo222 |
5.7.2020, 11:29
|
    
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689

|
Цитата(cirus @ 5.7.2020, 6:44)  Если пишет значит есть ошибка. Выкладывайте код или ищите ошибку.
Ну Вот: 8
Код --lua log 'clear' log 'mode compact' ----------------Convert_Time--------------- function time (t) local m = math.floor( (math.floor(t) % 3600) / 60) local s = (math.floor(t) % 3600) % 60 return string.format("%02d:%02d", m, s) end do
-------------------Контейнеры---------------- --local H = {{693, 78}, {696, 262}, {685, 451}} -- local H = {{696, 120}, {692, 404}, {704, 491}} -- local window_name = {'W1', 'W2', 'W3', 'W4', 'W5', 'W6'} --ОКНА
local count = {0, 0, 0} ----------------------------------------------------------- log 'clear' log 'mode compact' ----------------time-------------------- local minute = 2.1 -- х.х local t = os.clock() + minute * 60 ----------------------------------------- ----------------Window--------------------- local h = findwindow("W0") local w1 = findwindow("W1") local w2 = findwindow("W2") local w3 = findwindow("W3") local w4 = findwindow("W4") local w5 = findwindow("W5") local w6 = findwindow("W6") -------------------Spot_x---------------------- function HC(x, y) return(color (x, y)) end function NС(x, y) return(color (x, y)) end
function D(x, y) return(color (x, y)) end function D1(x, y) return(color (x, y)) end
function IW(x, y) return(color (x, y)) end function IW1(x, y) return(color (x, y)) end
function PS(x, y) return(color (x, y)) end function AW(x, y) return(color (x, y)) end
function WL(x, y) return(color (x, y)) end function WL2(x, y) return(color (x, y)) end ---------------------------------------------------- workwindow (h [1][1]) ------------- ------------------------- --if (H[1][1], H[1][2]) == (696, 120) then --else (H[1][1], H[1][2]) == (693, 78) then --end -------------------------------------------------------- end --do
------------------- СТАТУС-------------------------------- while t > os.clock() do if h > 0 then log ("окно существует") alarm ("Проверяю загрузку.wav") if IW (10, 100) ~= 0 --НЕ загружен
then log ("Не загружен") if D (58, 575) == 0 and D1 (408, 572) == 1250075 then log ("Сбой") ---------------------------Выключение окон -------------------- for i=1, #window_name do local W = findwindow(window_name[i]) log('Имя окна: ' .. window_name[i]) if W then log('Найдено окон: ' .. tostring(#W)) for j=1, #W do if ActivW(317, 81) == 0 then --окно активно send217 ("выключить") else Wcount[j] = 1 -- записываем если неактивно hint ("Окно неактивно") end end else log('Найдено окон: 0') end end break else end -----------------Список выбора-------------------------------------- log ("Проверяю экран") if WL (441, 561) == 3026224 and WL2 (134, 580) == 1054234 then alarm ("Окно.wav") log ("Список") for forcount=1, 3 do log (count[forcount]) if count [forcount] == 0 then log (H[forcount][1], H[forcount][2]) log (count[forcount]) alarm ("Выбор контейнера.wav") move (H[forcount][1], H[forcount][2]) wait(100) left (H[forcount][1], H[forcount][2]) wait(300) send217 ("Enter") wait(100) while InWorld (10, 100) ~= 0 do --ждём загрузку if InWorld (10, 100) == 0 then break else end wait(200) end --count[forcount] = 1 --присвоили break else end end else end else end
while 1 == 1 do --Выполнять до тех пор пока не будут полны/не произойдёт сбоя hint ("Проверяю") wait (200) hint ("Проверка сбоя") if PS(11, 124) == 16579836 then log ('Сбой') --Send ("выход") wait (500) workwindow (h[1][1]) send217 ("5") wait (500) send217 ("5") wait (5000) send217 ("5") alarm ("выхожу.wav") count[forcount] = 1 -- записываем что он заполнен/бракованный --Выхожу из тех окон ---------------------------Выключение окон -------------------- for i=1, #window_name do local W = findwindow(window_name[i]) log('Имя окна: ' .. window_name[i]) if W then log('Найдено окон: ' .. tostring(#W)) for j=1, #W do if ActivW(317, 81) == 0 then --окно активно send217 ("5") wait(200) else Wcount[j] = 1 -- записываем если неактивно hint ("Окно неактивно") end end else log('Найдено окон: 0') end end --паузу 15 мин-- log ("Делаю паузу 15 мин") wait (150000) if t < os.clock() then break else end wait (20) ---------------------------Включаем ОКНА ОБРАТНО-------------------- for ii=1, #window_name do local WX = findwindow(window_name[ii]) log('Имя окна: ' .. window_name[ii]) if WX then log('Найдено окон: ' .. tostring(#WX)) for jj=1, #W do if ActivW(317, 81) ~= 0 then --окно неактивно send217 ("Enter") wait (2000) --alarm ("Захожу.wav") else Wcount[jj] = 1 -- записываем если активно hint ("Окно ктивно") end --if ActivW(317, 81) end else log('Найдено окон: 0') end end ------После включения окон ------------ break else wait (200) hint ("Нет сбоя") if HC (828, 11) == 7368192 --полон then hint ("Выхожу") workwindow (h[1][1]) alarm ("выхожу.wav") send217 ("5") wait (500) send217 ("5") wait (5000) send217 ("5") count[forcount] = 1 -- запиcываем что Бак на этом шаге счетчика полон break else end -- не полон!... (цикл продолжается) end end else break end end --вышли из цикла времени
if h then hint ("Окно существует") workwindow (h [1][1]) if (D (58, 575) == 0 and D1 (408, 572) == 1250075) then while (D (58, 575) == 0 and D (408, 572) == 1250075) do alarm ("сигнал.wav") wait (1000) alarm (".wav") hint ("Сбой") wait (1000) end else if count == 1 then while count == 1 do alarm ("сигнал.wav") wait (1000) hint ('Баки полны') wait (1000) end else if t < os.clock() then while t < os.clock() do wait (1000) hint ("Время истекло") wait (1000) alarm ("Время истекло.wav") end else end end end else while h < 1 do alarm ("Окно не существует.wav") wait (1000) hint ("Окно не существует") wait (1000) end end
|
|
|
|
Сообщений в этой теме
Levo222 -Счётчик 20.6.2020, 12:08 cirus Создать массив, в который записывать выполнялось л... 20.6.2020, 13:01 Levo222
Создать массив, в который записывать выполнялось ... 20.6.2020, 14:23 cirus
--lua
local H = {{100, 200}, {100, 300}, {100, 40... 20.6.2020, 17:21 Levo222
--lua
local H = {{100, 200}, {100, 300}, {100, 40... 20.6.2020, 21:37 cirus
Вместо log использовать move. 20.6.2020, 21:45 Levo222
Вместо log использовать move.
Всё работает вроде... 20.6.2020, 22:02 Levo222
Вместо log использовать move.
Почему для
log ... 21.6.2020, 5:46 cirus
break для выхода из цикла. 20.6.2020, 22:21 Levo222
break для выхода из цикла.
Тут вот какая проблем... 20.6.2020, 22:44 cirus
Объявить её до цикла да и всё. 20.6.2020, 22:51 Levo222
Объявить её до цикла да и всё.
Как инициировать ... 20.6.2020, 23:19 cirus
end_script() 20.6.2020, 23:36 Levo222
end_script()
Так, а теперь есть скрипт ч... 20.6.2020, 23:51 cirus
break прерывает цикл. 21.6.2020, 0:02 Levo222
break прерывает цикл.
То есть в if он не будет р... 21.6.2020, 0:04 Levo222 почему мне
log (count[i])
Выдаёт ... 21.6.2020, 0:42 cirus
Значит нет такой переменной. 21.6.2020, 0:47 Levo222 Мне надо чтобы гоняло цикл пока count полностью не... 21.6.2020, 0:49 cirus
Ответ тот же.
Где скрипт? 21.6.2020, 0:56 Levo222
Где скрипт?
Вроде дошло
while count[i... 21.6.2020, 1:00 Levo222 еще одна проблема
Угу
Если одно окно выпало, то ... 21.6.2020, 1:16 cirus
Что это за бред. Можно только одно окно сделать р... 21.6.2020, 1:29 Levo222 ууууууууууууууууууу 21.6.2020, 1:41  Levo222
workwindow (W[i][1], W[i... 21.6.2020, 2:08 cirus
С такой логикой если будет 50 окон, то в функцию ... 21.6.2020, 1:47 Levo222 l;kj;lk'l 21.6.2020, 2:49 Levo222 Вобщем ошибка такая:
43: attemp to compare number ... 21.6.2020, 9:51 cirus не работает
Кусок кода не может работать.
Точка ... 21.6.2020, 10:19 Levo222 Вот это вот не работает почему-то?
local w1 = find... 21.6.2020, 10:53 cirus
Переменная e не объявлена.
С 1 надо начинать цик... 21.6.2020, 11:23 Levo222
Переменная e не объявлена.
while Wcount[e... 21.6.2020, 15:00 cirus Опишите что вообще надо сделать. Или предлагаете п... 21.6.2020, 15:26 Levo222
Опишите что вообще надо сделать. Или предлагаете ... 21.6.2020, 15:45 cirus
Зачем? Findwindow возвращает массив, размер котор... 21.6.2020, 16:39 Levo222
Зачем? Findwindow возвращает массив, размер котор... 21.6.2020, 17:09 cirus
--lua
local WM_CLOSE = 0x0010
local window_name =... 21.6.2020, 18:48 Levo222
[code]--lua
local window_name = {'Блокнот... 27.6.2020, 4:56 Levo222 Мда. Туплю сегодня. Только понял что for i=0 вызыв... 22.6.2020, 8:34 cirus
Вывести в лог переменную c. 22.6.2020, 10:01 Levo222
Вывести в лог переменную c.
Я имел ввиду порядко... 27.6.2020, 4:07 cirus
Вывести значение переменной в лог и посмотреть.
... 27.6.2020, 11:42 Levo222
Где скрипт, который выдаёт такую ошибку?
Вобщем ... 28.6.2020, 5:55 cirus
Надо не городить, а понимать что в каком порядке ... 28.6.2020, 10:45 Levo222
[code]if count == {0, 0, 0} then
Это что?
[s]А, ... 28.6.2020, 11:00 Levo222 Не могу понять,
Вот такая конструкция:
while do
... 29.6.2020, 7:11 cirus
Работает.
Нет. 29.6.2020, 11:05 Levo222 local W = findwindow(window_name[i... 5.7.2020, 2:13 Fors1k if W then ?
Это выражение срабатывает, если W не n... 5.7.2020, 2:27 cirus
Тоже самое что:
if W ~= nil then 5.7.2020, 2:24 Levo222 У меня постоянно вылазит ошибка
Хотя все endы на... 5.7.2020, 2:37 cirus Он же пишет в какой строке ошибка.
5.7.2020, 11:36 Levo222
Он же пишет в какой строке ошибка.
Криво скопиро... 5.7.2020, 11:49 cirus
Значит нет окна с таким именем. 5.7.2020, 12:00 Levo222
Значит нет окна с таким именем.
Я всякие имена в... 5.7.2020, 12:01 cirus
В какой этой? 5.7.2020, 12:03 Levo222
В какой этой?
Немного разница есть в ошибках: Ко... 5.7.2020, 12:08 cirus
Если окно не найдено, то h будет nil. Поэтому wor... 5.7.2020, 12:19 Levo222
Если окно не найдено, то h будет nil. Поэтому wor... 5.7.2020, 12:29 cirus
Естественно. Над этим подумайте:
--lua
do
local ... 5.7.2020, 12:35 Levo222
Естественно. Над этим подумайте:
[code]--lua
do
... 5.7.2020, 12:48 cirus
Никакие, только числа сравниваются с 0. 5.7.2020, 12:53 Levo222 Область видимости переменных
Теперь у меня на
... 5.7.2020, 13:44  Levo222 Как сделать Блок участка
[codebox]for forcount=1,... 5.7.2020, 13:56 cirus
Все.
--lua
log 'clear' log 'mode comp... 5.7.2020, 13:54 cirus
Объявить переменные вначале скрипта. 5.7.2020, 13:57 Levo222
Объявить переменные вначале скрипта.
Дак по ходу... 5.7.2020, 14:27 cirus
И что? Будет другое значение, вот и все.
Не видн... 5.7.2020, 14:34 Levo222
И что? Будет другое значение, вот и все.
Не видн... 5.7.2020, 15:11 cirus
Добавить переменную, в которую записывать сколько... 5.7.2020, 15:24 Levo222
Добавить переменную, в которую записывать сколько... 5.7.2020, 15:27 Fors1k Можно было написать [..codebox..] [../codebox..] и... 5.7.2020, 19:48 Levo222
Благодарю за совет о том, что мне можно было напи... 6.7.2020, 23:10  Fors1k я тебе там такими терминами заверну про акцептенат... 7.7.2020, 1:42 Madeus Чет походу все сводится к непониманию синтаксиса L... 5.7.2020, 21:11 cirus
Конкатенация nil приведёт к ошибке, надо так:
log... 5.7.2020, 21:16 Madeus Так и задумывалось, увидеть ошибку и понять почему... 5.7.2020, 21:37 Fors1k Для того, чтобы не путаться в областях видимости, ... 5.7.2020, 22:10 cirus Не будет путаницы если давать переменным осмысленн... 5.7.2020, 22:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|