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

> -Счётчик, -Lua-
Levo222
сообщение 20.6.2020, 12:08
Сообщение #1


*****

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 то цикл полностью завершает свою работу.
Т.е. важно чтобы скрипт помнил какие контейнеры он уже открывал, чтобы больше к ним не возвращаться.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 5.7.2020, 2:44
Сообщение #2


**********

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



Цитата
постоянно вылазит ошибка

Если пишет значит есть ошибка. Выкладывайте код или ищите ошибку.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 5.7.2020, 11:29
Сообщение #3


*****

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
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

 

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