UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
Levo222
Как на 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
Создать массив, в который записывать выполнялось ли действие. Принцип такой:
Код
--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
Цитата(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

как её проверить? Чтобы массив последовательно перебрался?
Вверх
cirus
Цитата
Чтобы массив последовательно перебрался?

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


Я имел ввиду как действием нажать те координаты, которые еще не нажимались?
Вверх
cirus
Цитата
как действием нажать те координаты

Вместо log использовать move.
Вверх
Levo222
Цитата(cirus @ 21.6.2020, 1:45)

Вместо log использовать move.

Всё работает вродебы.
Или нет. НиX@я не работает.
Вверх
cirus
Цитата
Тогда нажимаются сразу 2, мне одно надо нажать

break для выхода из цикла.
Вверх
Levo222
Цитата(cirus @ 21.6.2020, 2:21)

break для выхода из цикла.

Тут вот какая проблема, переменная count видна только внутри того цикла for в котром рассчитывается, а когда я выношу её за цикл, то она выдаёт ошибку
Вверх
cirus
Цитата
переменная count видна только внутри того цикла for в котром рассчитывается

Объявить её до цикла да и всё.
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.