|
|
|
-Счётчик, -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 то цикл полностью завершает свою работу. Т.е. важно чтобы скрипт помнил какие контейнеры он уже открывал, чтобы больше к ним не возвращаться.
|
|
|
|
cirus |
20.6.2020, 13:01
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26745
Пользователь №: 16.971
Возраст: 29
|
Создать массив, в который записывать выполнялось ли действие. Принцип такой: Код --lua local H = {{100, 200}, {100, 300}, {100, 400}} local count = {0, 1, 0} -- изначально массив заполняем нулями, для примера действие 2 уже выполнено
log 'clear' log 'mode compact' for i=1, 3 do if count [i] == 0 then -- если действие ещё не выполнялось -- тут какое-то условие, если истина, то выполнить действие log (H[i][1], H[i][2]) count[i] = 1 -- записываем что он выполнено end end
|
|
|
|
Levo222 |
20.6.2020, 14:23
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 20.6.2020, 17:01) Создать массив, в который записывать выполнялось ли действие. Принцип такой: Код --lua local H = {{100, 200}, {100, 300}, {100, 400}} local count = {0, 1, 0} -- изначально массив заполняем нулями,
log 'clear' log 'mode compact' for i=0, 3 do if count [i] == 0 then -- если действие ещё не выполнялось -- тут какое-то условие, если истина, то выполнить действие log (H[i][1], H[i][2]) count[i] = 1 -- записываем что он выполнено end end Код --lua local H = {{100, 200}, {100, 300}, {100, 400}}
local count = {0, 1, 0} -- изначально массив заполняем нулями, для примера действие 2 уже выполнено
log 'clear' log 'mode compact' for i=0, 3 do if count [i] == 0 then -- если действие ещё не выполнялось -- тут какое-то условие, если истина, то выполнить действие log (H[i][1], H[i][2]) count[i] = 1 -- записываем что он выполнено end end как её проверить? Чтобы массив последовательно перебрался?
|
|
|
|
Levo222 |
20.6.2020, 21:37
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 20.6.2020, 21:21) Код --lua local H = {{100, 200}, {100, 300}, {100, 400}}
log 'clear' log 'mode compact'
for i=1, #H do log (H[i][1], H[i][2]) end Я имел ввиду как действием нажать те координаты, которые еще не нажимались?
|
|
|
|
Levo222 |
20.6.2020, 23:19
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 21.6.2020, 2:51) Объявить её до цикла да и всё.
Как инициировать полную остановку скрипта? А то у меня столько breakov получилось, что не поймёшь какой из-них куда ведёт. В идеале то конечно goto каким-то образом применить, но он вроде не работает? Если я напишу Код if 1 then 1 else if 2 then 2 else if 3 then break else end end end То break выведет скрипт и из двух последних End тоже? Или так и будет гонять их по кругу?
|
|
|
|
Levo222 |
21.6.2020, 0:04
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 21.6.2020, 4:02) break прерывает цикл.
То есть в if он не будет работать и сразу выведет за ближайший end "while/for"? --Upd-- Кажется я знаю зачем придумали Код
|
|
|
|
Levo222 |
21.6.2020, 1:00
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 21.6.2020, 4:56) Где скрипт?
Вроде дошло Цитата
Код
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|