|
|
|
Переписывание скрипта на lua |
|
|
lnaqqa |
3.8.2020, 6:50
|
Registred
Сообщений: 7
Регистрация: 26.1.2016 Группа: Пользователи Наличность: 0
Пользователь №: 17.818
Возраст: 30
|
Пытаюсь переписать скрипт для браузерки на lua и на части отвечающим за поиск зоны с пикселями нужного цвета возникла сложность, т.к. не нашел аналогов gosub попытки переписать скрипт без этого приводят к его зависанию, скорее из-за не понимания как это нужно делать. Вот часть скрипта на пилоте: code
Код :color if_not 973, 712 16711653 and 979, 706 16711653 and 985, 713 16645860 // белые пиксели set #color 9932392 gosub zona end_if if_not 973, 712 16711653 and 979, 706 16711653 and 985, 713 16645860 // белые пиксели set #color 10783022 gosub zona end_if //таких ещё штук 20 :zona set #t 4 //кол-во точек нужного цвета во второй областе поиска set #m 1 //кол-во пикселей для смещения
if 118, 242 7554320 and 59, 246 7554320 //кнопка home set #a findcolor (190 250 820 585 5 5 (#color) %a) //ищем координаты цветов if #a > 1 for #i 1 size(%a) if 243, 602 16753445 and 198, 599 16753445 //синий пиксель ready sort_array %a dec set #x %a [#i 1] set #y %a [#i 2] set #x1 #x - #m set #y1 #y - #m set #x2 #x + #m set #y2 #y + #m set #zn findcolor (#x1, #y1 #x2, #y2 1 1 (#color) %arr 2) if #zn >= #t move 77, 653 wait 500 kleft_down 77, 653 wait 500 wait 500 move #x #y wait 500 kleft_up #x #y wait 500 wait 100 end_if end_if end_for end_if end_if gosub over return
Суть этой части: находим координату с нужным цветом, (начиная с последней найденной) и вокруг неё в зоне +1 пиксель вверх и вниз ищем наличие 4 и более таких же, если есть делаем несколько кликов. Если с первым цветом таких зон не находится ищет со следующем и так около 20 раз. Подскажите как это написать используя lua и возможно избавиться от такого кол-ва строчек с цветами. Сообщение отредактировал Fors1k - 3.8.2020, 15:27
|
|
|
|
lnaqqa |
3.8.2020, 23:08
|
Registred
Сообщений: 7
Регистрация: 26.1.2016 Группа: Пользователи Наличность: 0
Пользователь №: 17.818
Возраст: 30
|
Madeus, Попробовал сделать так как вы предложили, столкнулся с проблемой, что при такой конструкции findcolor выдает ошибку -1 вот код, который у меня получился: code
Код local function zona(color) local t = 4 local m = 1 local a = findcolor([[190, 250, 820, 585, 5, 5 (color), %arr]]) log (a) -- ошибка -1 описание ошибки: '-1' упало при поиске, точная причина не известна. log (color) if a > 0 then for i = 1, #arr do --log (arr[i][1], arr[i][2]) local x, y = arr[i][1], arr[i][2] local x1 = x - m local y1 = y - m local x2 = x + m local y2 = y + m local az = findcolor([[x1, y1, x2, y2 (color), %arr]]) if az >= t then move (77, 653) wait (500) kleft_down (77, 653) wait (500) move (x, y) wait (500) kleft_up (x, y) wait (500) end end end end
while true do -- вечный цикл if (not (color(973, 712) == 16711653)) then zona(9932392) wait (100) end if (not (color(973, 712) == 16711653)) then zona(7499539) wait (100) end end
Если "color" заменяю на номер цвета, всё нормально ищет. Что я делаю не так?
|
|
|
|
cirus |
4.8.2020, 1:51
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26703
Пользователь №: 16.971
Возраст: 29
|
Цитата if (not (color(973, 712) == 16711653)) then Зачем так усложнять. Тоже самое: Код if color(973, 712) ~= 16711653 then Цитата local az = findcolor([[x1, y1, x2, y2 (color), %arr]]) Нормальный синтаксис для findcolor не доделали, так что в таком виде использовать: Код local az = findcolor(x1, y1, x2, y2, 1, 1, "(" .. color .. ")", "%arr", 2, -1) Лучше бы не использовать имена переменных, совпадающих с именами функций. А то получается переменная color и функция color.
|
|
|
|
Madeus |
4.8.2020, 2:00
|
Apprentice
Сообщений: 283
Регистрация: 19.11.2019 Группа: Пользователи Наличность: 8460
Пользователь №: 19.451
Возраст: 32
|
Все таки lua творит чудеса, вообще lua не умеет findcolor, НО при такой странной записи вполне работает, на сколько я понял просто вызывает функции пилота внутри lua. Тебе надо помнеять строчку Код local a = findcolor([[190, 250, 820, 585, 5, 5 (color), %arr]])
на такую Код local a = findcolor([[190, 250, 820, 585, 5, 5, ]] .. color .. [[, %arr]])
Тут я вспомнил что недавно сошлись на том что lua не умеет prompt, и там были костыли с luaposh Вот с такой записью вполне работает Код --lua local a = prompt ('первый "второй выбор" третий') log(a)
Цитата(cirus @ 4.8.2020, 1:51) Зачем так усложнять.
Там в принципе много что изменить можно, я просто писал в точности как было, чтоб автор понял что к чему
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|