Здравствуйте пользователи уопилота
раньше использовал сей инструмент вместе с другими как кликер по большей части
сейчас решил погнуть пальцы и реализовать бота для рыбалки в вов
ну и все хорошее на этом заканчивается и начинаются тучи проблем
во первых много раз вспомнил создателя языка программирования уопилота разными словами так сказать прощу прощения за форму подачи материала но не за содержание
во вторых программа постоянно ругается на ошибки на точки запятые в цифрах на условия в иф и многое другое сильно отличающееся от того же пхп
в третьих примеры не очень помогли честно говоря из хелпа по решению этой задачи
стратегию выбрал такую
кидает персонаж поплавок тот дергается потом часть поплавка уходит в воду то есть пиксели исчезают
думал ну фигня вопрос посчитаю пиксели сколько было сколько стало причем несколько раз в секунду
очертил поле и запустил и нефига не помогло
много времени кстати потратил на паинт так и не понял как там определять десятичный код цвета
пришлось качать еще фаст стоне на качанул сначала вивер а потом понял что надо капчур
короче оттуда вытащил код цвета
а оказалось что можно прямо из уопилота цвет брать
правда есть проблема когда курсор приближается к поплавку он меняет форму и становится не понятно на какую точку он указывает
в общем взял из уопилота значение десятичное построил скрипт но не понял как запомнить значения в каждом цикле то есть
поплавок на месте не стоит он движется и количество пикселей меняется но не сильно
потом он дергается и тогда резкое изменение количества пикселей но оно всегда разное
тут я забуксовал
потом решил просто брать пиксель красный и смотреть его координату
которая должна по игреку то есть высоте была меняться
но было не стабильно потому что изза движения поплавка скрипт искал первую точку схожую по цвету а не одну и ту же
а мне нужна была точка на картинке поплавка и отслеживать ее координату
короче этот вариант тоже забраковал
пока разбирался с синтаксисом ууууууууууууууууууууууу
в общем скрипт такой так но не очень пашет
повторюсь
закидываю поплавок
он дергается
потом уходит вся пробка под воду перья остаются
потом поднимается
надо тут навести курсор мыши и нажать на левую кнопку
если опоздал то рыбалка закончилась надо снова кидать поплавок
когда пробка уходит под воду она становится по цвету примерно как вода
скрипт и картинка
на ф1 остановку делал
на 1 запуск поплавка
анализ точек условия костыли для логики
//set #a findcolor ( 644 109 1137 375 1 1 (6047841) %close 2 ) // поиск в рабочем окне
//set workwindow 5780
set hotkeystart {F1}
set #f 0
set #a 0
set #b 0
while 0 < 1
set #d findcolor (482, 95 1353, 479 1 1 (16744287) %arr 2 1 5)
log #d
log #f
set #m %arr [1 2]
log #m
//end_while
if #d > 0
if #b = 0
set #f %arr [1 2]
set #b 1
end_if
set #g #f + 4
if #g < #m
set #a 2
end_if
// если найден нужный цвет, то делаем двойной левый клик мышкой в первой найденной точке
// move %arr [1 1], %arr [1 2]
// msg Цвет уже найден!
log #a
if #a > 1
//else
log Цвет найден
move %arr [1 1], %arr [1 2]
wait random(1000)
left %arr [1 1] %arr [1 2]
wait random(1000)
move random(1000), random (100)
wait random(3000)
set #a 0
set #f 0
set #b 0
send217 {1}
wait random(3000)
// msg Цвет не найден!
// log #d
set #a 0
set #f 0
set #b 0
end_if
else
send217 {1}
wait random(3000)
end_if
end_while
set #a 1000
while #a > 10 // пока найдено больше 10 пикселей (подобрать нужное значение)
set #a findcolor (...) // искать цвет
hint #a
wait 1
end_while
Здравствуйте
ты проверял?
там в каждый раз разные значения
размеры поплавка разные разные количества пикселей и часто уопилот не успевает перебрать количество пикселей а поплавок вспыл уже
бывает что 100+ находит бывает 40
послы нырка тоже по разному бывает 3 бывает 30
Здравствуйте
красный и синий не уходят под воду
но перья красные и синие меняют положение и количество пикселов меняется даже если поплавок в воду не ушел
заранее сказать сколько пикселов будет сложно
я не смог решить задачу
мне нужно взять первый проход скрипта
один раз прошелся и указал что пикселей нужного цвета 100
мне надо куда то это записать число первое
и с ним сравнивать колебания количества пикселей в последющих проходов скрипта
в первый раз 100 поплавок на поверхности
второй раз пикселей стало 110 поплавок на поверхности
сравниваю 100 и 110 разница меньше 30 значит все нормально
третий раз пробегает скрипт стало 90 пикселей
сравниваю 100 и 90 разница меньше 30 значит не клюет еще
тут кстати я не смог запустить проверку не понял как модульбрать
делал с абс но ничего не получилось
отрицательное значение выводило когда например делал абс(90-100)
получалось вроде -1 в логе
как решить не понял
а потом при очередном прохождении скрипта бац и количество пикселов 50
вычитаю и 50 100 через модуль как то делаю и получаю 50 что больше 30
значит поплавок ушел в воду значит надо подсекать
как это все сделать?
как запомнить первое значение количества пикселов? и сравнивать его с последующими значениями
потмо когда рыбу вытащил надо обнулить его снова и снова запомнить первое эталонное значение
в общем тут забуксовал во многих темах сразу
кто может помогите из моего сумбура вытащите полезное и оформите в скрипт пожалуйста
set #raznica 0
set #a findcolor (...) // первый поиск
log #a // нашлось пикселей
while #raznica < 30 // пока разница между первым и последующими поисками меньше 30
set #b findcolor (...) // искать цвет
set #raznica #a - #b // разница между первым поиском и следующим
set #raznica abs(#raznica) // модуль разницы
hint #raznica
wait 10
end_while
log !!!!!!!!!!!!
Здравствуйте как минимум спасибо за пример с модулем
можешь еще показать пример как цифры написать
1.5 или 1,5 если надо умножить например
set #r #d/1.5 или set #r #d/1,5
и еще почему например условие вызывает ошибку
if #g +4 < #m/2
что такое у меня было и получилось синтакс эррор
по поводу твоего скрипта
повторюсь
делал в своем скрипте отслеживание количества пикселей
в логе было так
50
57
39
18 тут поплавок ушел в воду
29 тут он всплыл
39
57
64
0 тут время вышло поплавок исчез тут я запускаю новый цикл ловли по условию
а бывает что поплавок закинулся ближе и он больше по размеру
значения такие
126
118
135
122
147
153 тут он подпрыгнул
89 ушел под воду
128 снова на поверхности
я к тому что я не знаю заранее каков диапазон прыжка будет
и сколько пикселей останется над водой
может 30 быть может 10 может 20
а если просто жмакать курсором на поплавке когда не клюет он будет просто исчезать и все надо начинать снова
возможно ты не играл в вов
потому ссылка на платного фишбота https://www.youtube.com/channel/UCRleP4ZVfCkirV0zpFFnpGw/videos
я его тестил он пашет но он платный и я захотел сделать примерно такой же по функционалу но без платы
там на видео механика ловли показана
может так будет понятней сам то я наверное мало что понял из своей писанинытак что благодарю за терпение
set #tmp #g + 4
set #tmp2 #m / 2
if #tmp < #tmp2
set #r #d * 2 / 3 // тоже самое что set #r #d/1.5
Здравствуйте
благодарю потестю 20 часов осталось акку в вове
7 часть писал книги своейможешь считать что частично тебе посвятил
http://samlib.ru/p/putewoj_m/
если успею отпишу как там с рыбалкой а если не успею до закрытия акка то все равно спасибо за разъяснения функционала твои бы ответы в вики добавить хорошо было бы
а так по рыбалке выяснил что не выгодно в вове нынче это даже на месяц оплаты не наловишь
решил просто уопилот для развития своих навыков потестить раньше не тестировал распознавание с экрана а тема оказывается интересная
еще тема мультибоксинга интересна тоже два одинаковых окна в два одинаковых персонажа и одни и теже нажатия в оба окна и так фармить в 2 раза больше одними тем же усилием по времени и кпд вроде выше хотя затраты на месяц тоже примерно одинаковые но все равно интересно
Здравствуйте
пашет такое но часто сбои
цифра 20 для сравнений это сферический конь вакууме
или надо больше каких то проверок или чего
сам поплавок при этом тоже неравно прыгает вверх вниз а как бы вертится вокруг оси так что пиксели неравномерно смещаются вверх и вниз но в указанном вверху боте как то это реализовано все он ловит примерно с 95 процентной вероятностью
примерно в 3-4 разах из 10 срабатывает правильно
set hotkeystart {F1}
set #a findcolor (482, 95 1353, 479 1 1 (7496830) %arr 2 -1 6) // первый поиск
log #a // нашлось пикселей
set #raznica 0
set #b 0
while #raznica < 20 // пока разница между первым и последующими поисками меньше 30
set #b findcolor (482, 95 1353, 479 1 1 (7496830) %arr 2 -1 6) // искать цвет
log #b
set #raznica #a - #b // разница между первым поиском и следующим
set #raznica abs(#raznica) // модуль разницы
log #raznica
wait 10
end_while
set #g findcolor (482, 95 1353, 479 1 1 (2702286) %tarr 2 -1 10)
if #b < 1 and #g <1 //проверка на наличие поплавка вообще и закидываеие если нет
send217 {1}
wait random(3000)
else
move %arr [1 1], %arr [1 2] //тут двигаем курсор на поплавок и дергаем удочку на себя:)
wait random(1000)
left %arr [1 1] %arr [1 2]
wait 1000
move random (1000), random (100)
send217 {1}
wait 3000
end_if
Где-то у меня был огромный комбайн, но я не смог его найти. Последнее время сижу вот на этом примитиве. Он работает. Написан под 1920*1080. Если разрешение другое, то нужно чуть подправить координаты будет:
559, 141 1243, 467
Цвет править тут:
( 0xeeeeee-0xffffff )
Сильной коррекции при дневной ловле обычно не требует. Крайне рекомендую на время ловли отключать эффекты, чтобы вода не бликовала.
send217 p - кнопка с биндом удочки.
set linedelay 2
set #dev 0
if #dev = 1
log close
log clear
log open 1430 -10 500 300
log mode noScript
set #handleLogWindow findwindow ("Log Window")
showwindow #handleLogWindow restore
set #handleUoPilot findwindow ("UoPilot")
end_if
set $bmp ".bmp"
:start
send217 p
set #timeout timer + 30000
while #timeout > timer
set #a findcolor (559, 141 1243, 467 1 1 ( 0xeeeeee-0xffffff ) %arr workwindow)
//log #a
if #a > 0
move %arr[1 1] %arr[1 2]
if 1 = 0
sendex ~{}
wait 1000 + random (300)
right %arr[1 1] %arr[1 2]
else
wait 700 + random (500)
right %arr[1 1] %arr[1 2]
wait 300 + random (300)
move 61, 254
right 61, 254
wait 200 + random (200)
move 60, 308
right 60, 308
wait 200 + random (200)
move 53, 361
right 53, 361
wait 200 + random (200)
move 57, 402
right 57, 402
end_if
wait 1000 + random (1000)
break
end_if
end_while
goto start
stop_script
Здравствуйте
DarkMaster а это точно скрипт под онлайн игру на оффе world of warcraft?
чего то я в нем ничего не понял
можно комментарии?
в смысле логику алгоритма и применение команд
если райт это правая кнопка мыши то зачем она? и зачем мувить курсор так часто?
set linedelay 2
:start
send217 p // кнопка закидывания удочки.
set #timeout timer + 30000
while #timeout > timer
// ищем брызги при поклевке.
set #a findcolor (559, 141 1243, 467 1 1 ( 0xeeeeee-0xffffff ) %arr workwindow)
//log #a // вывод результата поиска брызг.
if #a > 0
move %arr[1 1] %arr[1 2] // Перемещаем мышку на брызги(поплавок там же)
if 1 = 0
wait 700 + random (500)
right %arr[1 1] %arr[1 2] // Лутаем
end_if
wait 1000 + random (1000) // Задержка чтобы слутать успел.
break
end_if
end_while
goto start
Здравствуйте
брызг там нетулутается все автоматом
я вверху дал ссылку на канал кодера фишбота погляди как оно нынче в легионе
мда прогресс. убрали брызги и убрали леску. Осталось в браузере ловить. По текущей ситуации я бы искал цвет поплавка, находил средние коордианты, повторял поиск и сравнивал новые средние коодинаты. Иземенились - поплавок дернулся.
Здравствуйте
очень здравые рассуждения напиши скрипт)))с комментариями
а вообще у меня акк закончился уже ибо не готов был платить 2 тыр заа обновление легион а на 100 хрен на месяц голды набьешьсчас там максимум 110 и новые земли
но алгоритм интересен сам по себе мне вернее как другие его видят человек то там вон бота сваял и норм
дык а какой там особо алгоритм то?
set #firstRun findcolor(..... %fristRun) // Ищем точки после заброса.
for #i 1 #firstRun 1 // Находим суммы координат.
set #xSum #xSum + %firstRun[#i 1]
set #ySum #ySum + %firstRun[#i 2]
end_for
set #xMiddleFirst #xSum / #firstRun // Находим среднее арифметическое.
set #yMiddleFirst #ySum / #firstRun
while 1 = 1
set #secondRun findcolor(..... %secondRun) // Ищем точки поплавка.
for #i 1 #secondRun 1
set #xSum #xSum + %secondRun[#i 1]
set #ySum #ySum + %secondRun[#i 2]
end_for
set #xMiddleSecond #xSum / #secondRun // Находим среднее арифметическое.
set #yMiddleSecond #ySum / #secondRun
set #deltaX #xMiddleSecond - #xMiddleFrist // Находим разницу со средним арифметическим после заброса
set #deltaY #yMiddleSecond - #yMiddleFrist
set #deltaX abs(#deltaX) // Находим модуль разницы.
set #deltaY abs(#deltaY)
set #deltaSum #deltaX +#deltaY // Складываем модули разницы X и Y.
if #deltaSum > НЕКОТРОЕ_ЧИСЛО // Сравниваем с некоторой константой(погрешность)
log клюнуло!
end_if
end_while
set #xSum #xSum + %firstRun[#i 1]
set #ySum #ySum + %firstRun[#i 2]
Здравствуйте
я честно говоря не очень понял алгоритм
можешь на словах пояснить? что происходит
проверить уже не смогу аккаунт спит
но сама идея интересна
как выбрать например конкретные точки и отслеживать только их координаты?
по сути точек одного цвета может быть и 3 и 10 и 20
поплавок может быть больше а может быть меньше
set #xSum #xSum + %firstRun[#i 1]
set #ySum #ySum + %firstRun[#i 2]
set #firstRun findcolor(..... %fristRun) // Ищем точки после заброса.
for #i 1 #firstRun 1 // Находим суммы координат.
set #xSum #xSum + %firstRun[#i 1]
set #ySum #ySum + %firstRun[#i 2]
end_for
set #xMiddleFirst #xSum / #firstRun // Находим среднее арифметическое.
set #yMiddleFirst #ySum / #firstRun
while 1 = 1
set #secondRun findcolor(..... %secondRun) // Ищем точки поплавка.
for #i 1 #secondRun 1
set #xSum #xSum + %secondRun[#i 1]
set #ySum #ySum + %secondRun[#i 2]
end_for
set #xMiddleSecond #xSum / #secondRun // Находим среднее арифметическое.
set #yMiddleSecond #ySum / #secondRun
set #deltaX #xMiddleSecond - #xMiddleFrist // Находим разницу со средним арифметическим после заброса
set #deltaY #yMiddleSecond - #yMiddleFrist
set #deltaX abs(#deltaX) // Находим модуль разницы.
set #deltaY abs(#deltaY)
set #deltaSum #deltaX +#deltaY // Складываем модули разницы X и Y.
if #deltaSum > НЕКОТРОЕ_ЧИСЛО // Сравниваем с некоторой константой(погрешность)
log клюнуло!
end_if
end_while
когда я лет 10 назад играл на личе, то особо не загонялся по всем этим цветам, насколько я помню после закидывания удочки время до поклевки рандомное и случается так, что клевать начинает через пару секунд после закидывания, поэтому я просто ставил задержку в несколько секунд после закидывания, но не слишком долгую чтоб не прозевать первую поклевку и все, закидываешь wait несколько секунд и выдергиваешь и так постоянно, потом если что то поймалось то лут разбирал по цветам что надо а что нет, хотя щас я так понял это уже не требуется. Может показаться что так менее эффективно и больше тратится времени на все эти перезабросы удочки, но это вопрос спорный! Потому как иногда не клюет довольно долго. Да и по количеству добычи можно было судить что система работает
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)