UoKit.com Форумы > Кликер > UO Pilot > UO Pilot в онлайн играх
Страницы: 1, 2, 3
mirace379
Здравствуйте пользователи уопилота
раньше использовал сей инструмент вместе с другими как кликер по большей части
сейчас решил погнуть пальцы и реализовать бота для рыбалки в вов
ну и все хорошее на этом заканчивается и начинаются тучи проблем
во первых много раз вспомнил создателя языка программирования уопилота разными словами так сказать прощу прощения за форму подачи материала но не за содержание
во вторых программа постоянно ругается на ошибки на точки запятые в цифрах на условия в иф и многое другое сильно отличающееся от того же пхп
в третьих примеры не очень помогли честно говоря из хелпа по решению этой задачи
стратегию выбрал такую
кидает персонаж поплавок тот дергается потом часть поплавка уходит в воду то есть пиксели исчезают
думал ну фигня вопрос посчитаю пиксели сколько было сколько стало причем несколько раз в секунду
очертил поле и запустил и нефига не помогло
много времени кстати потратил на паинт так и не понял как там определять десятичный код цвета
пришлось качать еще фаст стоне на качанул сначала вивер а потом понял что надо капчур
короче оттуда вытащил код цвета
а оказалось что можно прямо из уопилота цвет брать
правда есть проблема когда курсор приближается к поплавку он меняет форму и становится не понятно на какую точку он указывает
в общем взял из уопилота значение десятичное построил скрипт но не понял как запомнить значения в каждом цикле то есть
поплавок на месте не стоит он движется и количество пикселей меняется но не сильно
потом он дергается и тогда резкое изменение количества пикселей но оно всегда разное
тут я забуксовал
потом решил просто брать пиксель красный и смотреть его координату
которая должна по игреку то есть высоте была меняться
но было не стабильно потому что изза движения поплавка скрипт искал первую точку схожую по цвету а не одну и ту же
а мне нужна была точка на картинке поплавка и отслеживать ее координату
короче этот вариант тоже забраковал
пока разбирался с синтаксисом ууууууууууууууууууууууу
в общем скрипт такой так но не очень пашет
повторюсь
закидываю поплавок
он дергается
потом уходит вся пробка под воду перья остаются
потом поднимается
надо тут навести курсор мыши и нажать на левую кнопку
если опоздал то рыбалка закончилась надо снова кидать поплавок
когда пробка уходит под воду она становится по цвету примерно как вода
скрипт и картинка
на ф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


помогите пожалуйста делом
Вверх
cirus
Цитата
поплавок на месте не стоит он движется и количество пикселей меняется но не сильно
потом он дергается и тогда резкое изменение количества пикселей но оно всегда разное
тут я забуксовал

Код
set #a 1000
while #a > 10         // пока найдено больше 10 пикселей (подобрать нужное значение)
     set #a findcolor (...)      // искать цвет
     hint #a
     wait 1
end_while

Если будет найдено меньше 10 пикселей, значит поплавок опустился в воду.
Вверх
mirace379
Здравствуйте
ты проверял?
там в каждый раз разные значения
размеры поплавка разные разные количества пикселей и часто уопилот не успевает перебрать количество пикселей а поплавок вспыл уже
бывает что 100+ находит бывает 40
послы нырка тоже по разному бывает 3 бывает 30
Вверх
cirus
Цитата
бывает что 100+ находит бывает 40
послы нырка тоже по разному бывает 3 бывает 30

30 и 40 уже отличаются. Я сразу написал значения придётся подбирать. Также можно указать в Findcolor несколько цветов, искать не только красный, но и синий.
Вверх
mirace379
Здравствуйте
красный и синий не уходят под воду
но перья красные и синие меняют положение и количество пикселов меняется даже если поплавок в воду не ушел
заранее сказать сколько пикселов будет сложно
я не смог решить задачу
мне нужно взять первый проход скрипта
один раз прошелся и указал что пикселей нужного цвета 100
мне надо куда то это записать число первое
и с ним сравнивать колебания количества пикселей в последющих проходов скрипта
в первый раз 100 поплавок на поверхности
второй раз пикселей стало 110 поплавок на поверхности
сравниваю 100 и 110 разница меньше 30 значит все нормально
третий раз пробегает скрипт стало 90 пикселей
сравниваю 100 и 90 разница меньше 30 значит не клюет еще
тут кстати я не смог запустить проверку не понял как модульбрать
делал с абс но ничего не получилось
отрицательное значение выводило когда например делал абс(90-100)
получалось вроде -1 в логе
как решить не понял
а потом при очередном прохождении скрипта бац и количество пикселов 50
вычитаю и 50 100 через модуль как то делаю и получаю 50 что больше 30
значит поплавок ушел в воду значит надо подсекать
как это все сделать?
как запомнить первое значение количества пикселов? и сравнивать его с последующими значениями
потмо когда рыбу вытащил надо обнулить его снова и снова запомнить первое эталонное значение
в общем тут забуксовал во многих темах сразу
кто может помогите из моего сумбура вытащите полезное и оформите в скрипт пожалуйста
Вверх
cirus
Код
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  !!!!!!!!!!!!

Вверх
mirace379
Здравствуйте как минимум спасибо за пример с модулем
можешь еще показать пример как цифры написать
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/UCRleP4ZVfC...zpFFnpGw/videos
я его тестил он пашет но он платный и я захотел сделать примерно такой же по функционалу но без платы
там на видео механика ловли показана
может так будет понятней сам то я наверное мало что понял из своей писанинытак что благодарю за терпение
Вверх
cirus
Цитата
if #g +4 < #m/2

В условиях вычисления не поддерживаются. Можно так:
Код
set #tmp #g + 4
set #tmp2 #m / 2
if #tmp < #tmp2

Цитата
1.5 или 1,5 если надо умножить например
set #r #d/1.5 или set #r #d/1,5

Пилот работает только с целыми числами.
Код
set #r #d * 2 / 3     // тоже самое что set #r #d/1.5 

Либо использовать Плагин. Но при этом также придётся округлять число до целого чтобы использовать дальше.
Вверх
mirace379
Здравствуйте
благодарю потестю 20 часов осталось акку в вове
7 часть писал книги своейможешь считать что частично тебе посвятил
http://samlib.ru/p/putewoj_m/
если успею отпишу как там с рыбалкой а если не успею до закрытия акка то все равно спасибо за разъяснения функционала твои бы ответы в вики добавить хорошо было бы
а так по рыбалке выяснил что не выгодно в вове нынче это даже на месяц оплаты не наловишь
решил просто уопилот для развития своих навыков потестить раньше не тестировал распознавание с экрана а тема оказывается интересная
еще тема мультибоксинга интересна тоже два одинаковых окна в два одинаковых персонажа и одни и теже нажатия в оба окна и так фармить в 2 раза больше одними тем же усилием по времени и кпд вроде выше хотя затраты на месяц тоже примерно одинаковые но все равно интересно
Вверх
mirace379
Здравствуйте
пашет такое но часто сбои
цифра 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

Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.