Автокликер Clickermann :: Форум

Основной раздел => Использование => Topic started by: Ksaliman on December 25, 2015, 05:58:34 AM

Title: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 25, 2015, 05:58:34 AM
Вообщем хочу написать бота для игры но мои знания не позволяют этого сделать, поэтому пытаюсь переделать вот этого http://crapware.aidf.org/forum/index.php?topic=320.msg10056#msg10056 (http://crapware.aidf.org/forum/index.php?topic=320.msg10056#msg10056)

Code: (clickermann) [Select]
// Заброс удилища
wait(1)
  keyDown(32)
waitms(1360)  // 2060
  keyUp(32)
wait (1)               
LOGWRITE ("Забросили")
wait (10)
 
// Процесс подмотки
b:
GETSCREEN
IF_PICTURE_IN (1552, 681, 1613, 721, "nekl.bmp", -1, 50)
wait (3)
KEYDOWN(#SPACE)
wait (2)
KEYUP(#SPACE)
wait (1)
goto (b)
Else
LOGWRITE ("Клюет")
waitms (10)
 
// Подсечка
KEYDOWN (#SPACE)
WAITMS (400)
KEYDOWN (#ENTER)
wait (1)
KEYUP (#ENTER)
WAITMS (200)
KEYUP (#SPACE)
wait (1)               
LOGWRITE ("Тянем")
 
// Процесс вываживания     
$var = 1
while ($var < 4)
WAITMS (10)     
KEYDOWN (#SPACE)
WAITMS (1000)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (20)
KEYUP (#ENTER)
WAITMS (900)
KEYUP (#SPACE)
WAITMS (5)
inc ($var)
end_cyc
END_IF

Не получается сделать так что-бы он определял когда нужно переходить к циклу подсечки. Т.е. теоретически он на 13 строчке должен определить индикатор натяжения лески и если натяжения нет то он должен выполнять действия в строчках 15-17, если появился индикатор то он должен выполнить действие 24ой строчки.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Vint on December 25, 2015, 09:24:44 AM
50% совпадения, на практике не рабочее значение. Лучше держатся в пределах 70-100.
Если не получается - задействовать COLORMODE
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 25, 2015, 02:00:44 PM
Ссылка на игру: http://store.steampowered.com/app/380600/?l=russian
1 скрин когда вываживаем рыбу - http://i.imgur.com/LQ39sry.jpg
2 скрин когда производится проводка - http://i.imgur.com/IaVjMpM.jpg

Каковы функции я хочу реализовать: 1) Забрасывает удочку (Хотел сделать что-бы в определенный координат кидал но там курсор привязывается к центру). 2) Начинал проводку зажимая пробел на 2 секунды потом отпускал на 1 и так далее пока рыба не клюнет. 3) Когда клюнула нужно подсеч зажав Ентер на 0.5 секунд и немного подтянуть пробелом. 4) Рыба подсеклась значит нужно вываживание - зажатием пробела и зажимание на 1-2 секунды Ентер. 5) Рыба подошла на 0 метров значит мы ее поймали, теперь нужно нажать на кнопку забрать. 6) Если забился садок нажать на Т и промотать время на 05.00 утра (так тут продается рыба). 6) Начать с действия 1.

P.s. До содка не дошел т.к. не могу решить проблему с переходом с 2 пункта на 3ий.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 25, 2015, 02:47:42 PM
Code: (clickermann) [Select]

// Заброс удилища
wait(1)
  keyDown(32)
waitms(1360)  // 2060
  keyUp(32)
wait (1)               
LOGWRITE ("Забросили")
wait (4)

b:
GETSCREEN
COLORMODE(7, 1523,438,1569,489)
IF(PXL(1531,463)=16777215)
//IF_PICTURE_IN (1560, 685, 1610, 730, "nekl3.bmp", -1, 50)
wait (3)
KEYDOWN(#SPACE)
wait (2)
KEYUP(#SPACE)
wait (1)
goto (b)
Else
LOGWRITE ("Клюет")
waitms (10)
 
// Тянем
KEYDOWN (#SPACE)
WAITMS (400)
KEYDOWN (#ENTER)
wait (1)
KEYUP (#ENTER)
WAITMS (200)
KEYUP (#SPACE)
wait (1)               
LOGWRITE ("Тянем")
 
// ?????     
$var = 1
while ($var < 4)
WAITMS (10)     
KEYDOWN (#SPACE)
WAITMS (1000)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (300)
KEYUP (#ENTER)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (20)
KEYUP (#ENTER)
WAITMS (900)
KEYUP (#SPACE)
WAITMS (5)
inc ($var)
end_cyc
END_IF
END_IF


Сейчас сделал поиск по пикселю но на другой значек который находится над шкалой в виде небольшого поплавка, и начало работать но если снасть доводит до конца и не было поклевки этот значек пропадает и бот думает что клюет и начинает цыкл подсечки. Как мне сделать так что-бы он тянул до тех пор пока шкала не  поменяет свой цвет.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 25, 2015, 03:22:47 PM
Приобретите игру и начинайте? Загружаемый контент для данной игры -3454 pуб.
требования:
Процессор: Quad-Core 3.0 GHz
Оперативная память: 8 GB ОЗУ
Видеокарта: Graphics Card with 2 GB Video RAM:
 место на диске 7 GB
+ регистрация аккаунта и установка  на комп игрового лаунчера на 1 GB.
там наверняка и защиты установлены, слишком всё коммерческое и платное в этом проекте.
авторы пишут, что игра условно-бесплатная только на периуд разработки.
мало найдётся фанатов  писать и тестировать бота в таких условиях.
так что расчитывайте только на свой энтузиазм.
кстати название картинок в скрипте и архиве несовпадают.

Спасибо за разъяснения. Как можно сделать что-бы он проверял на наличие картинки и если она присутствует то он переходил к другому циклу. А если нету то продолжал делать цикл проводки.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 25, 2015, 05:46:32 PM
Code: (clickermann) [Select]

// Заброс удилища
wait(1)
keyDown(32)
waitms(1360)  // 2060
keyUp(32)
LOGWRITE ("Забросили")
wait (5)

$var=0
WHILE($var < 5) // Процес подтяжки  5 -число подтяжек ограничено , нужно подобрать практически
   INC($var,1)
   GETSCREEN
   COLORMODE(7, 1523,438,1569,489)
   IF(PXL(1531,463)=16777215)
      wait (3) // можно сделать рандомным или подобрать промежутки между подтяжками.
      KEYDOWN(#SPACE)
      wait (2)
      KEYUP(#SPACE)
      wait (1)
   Else
      $var=777
   END_IF
END_CYC

IF($var = 777)
   // Если верно Тянем     
   LOGWRITE ("Клюет")
   KEYDOWN (#SPACE)
   WAITMS (400)
   KEYDOWN (#ENTER)
   wait (1)
   KEYUP (#ENTER)
   WAITMS (200)
   KEYUP (#SPACE)
   wait (1)
   LOGWRITE ("Тянем")
   
   // ?????   видимо это два способа тянуть? одного недостаточно?
   KEYDOWN (#SPACE)
   WAITMS (RND(433,1477))
   FOR($a=0,$a<20) // повторяем 20 раз
      KEYDOWN (#ENTER)
      WAITMS (RND(233,377)) //  время нажатия
      KEYUP (#ENTER)
      WAITMS (RND(37,97))  // время между нажатиями
   END_CYC
   KEYUP (#SPACE)
END_IF


Спасибо за помощь код работает но не так как нужно, я так думаю что это будет сложно сделать мне не знающего языка на должном уровне и поэтому я не буду пытаться доделать этого бота. Проблема в том что много факторов играет свою роль. Например при поклевке бот переходит на цикл подсечки но если он не подсекает рыбу то все равно начинает ее вываживать и по-этому весь цикл сбивается.

https://www.youtube.com/watch?v=NhWMf9uj6K0
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Svarog on December 26, 2015, 04:10:15 PM
Есть более продвинутый бот по этому алгоритму, но он более сложный, зато более оптимизированный. Если есть желание разбираться - могу выложить. Если нужна проводка наживки, то это уже ловля на спиннинг, немного другой алгоритм, но он тоже есть у меня) 
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 27, 2015, 02:16:29 AM
Есть более продвинутый бот по этому алгоритму, но он более сложный, зато более оптимизированный. Если есть желание разбираться - могу выложить. Если нужна проводка наживки, то это уже ловля на спиннинг, немного другой алгоритм, но он тоже есть у меня)

Был-бы признателен. Интересно как там все выглядит.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 27, 2015, 09:13:20 AM
Что-то мне много мыслей в голу лезет и не могу остановится на не доделанном. Вообщем допилил систему подсечки работает хоть и туповато но зато подсекает рыбу а не коряги, так как сделал проверку по 2 скриншотам - Когда натягивается леска бот делает подсечку и проверяет значек скорости катушки если он изменился то он переходит к циклу вываживания но тут загвоздка, как я не пытался, что я только не делал он у меня не хочет этого делать, в чем причина не пойму.

Логи:
8:41:13 Забросили
8:41:55 Клюет
8:41:55 Тянем
До этих пор работает нормально дальше не чекает картинки и делает 2 процесса не в свое время.
8:41:56 Вытащили
8:42:14 Забрали рыбу

Знающие посмотрите где мои ошибки.


Code: (clickermann) [Select]
// Заброс удилища

wait(1)
keyDown(32)
waitms(2060)  // 2060
keyUp(32)
LOGWRITE ("Забросили")
wait (5)

// Индикатор натяжание лески, подтягиваем пока не натянется леска
$var=0
WHILE($var < 20) // Колличество подтяжек
   INC($var,1)
   //GETSCREEN
   //COLORMODE(7, 1423,824,1470,854)
   //IF_PICTURE_IN (1423,824,1470,854, "pr.bmp", -1, 90) // Проверяем не дотянул-ли снасть до берега без поклевки.
   //waitms(1)
   GETSCREEN
   COLORMODE(7, 1505,689,1610,980)
   IF_PICTURE_IN (1562,686,1601,719, "nekl2.bmp", -1, 90) //Индикатор натяжание лески, подтягиваем пока не натянется леска
      KEYDOWN(#SPACE)
      wait (1)
      KEYUP(#SPACE)
      wait (2)
   Else
      // натянулась - подсекаем зажимая энтер на 0.7 секунд
      KEYDOWN(#enter)
      WAITMS(700)
      KEYUP(#enter)
      GETSCREEN
      COLORMODE(7, 1505,689,1610,980)
      IF_PICTURE_IN (1543,946,1576,982, "nekl.bmp", -1, 90) //Проверяем подсеклас-ли рыба, если да переходим к вываживанию
      Else
         LOGWRITE ("Клюет")
         LOGWRITE ("Тянем")
         $var=777
      END_IF
   END_IF
END_CYC


IF($var=777)  // Если верно Тянем
   $var=0
   WHILE($var < 10) // Колличество подтяжек
      INC($var,2)
      KEYDOWN(#space)
      WAITMS(68)
      KEYDOWN(#enter)
      WAITMS(32)
      KEYUP(#enter)
      WAITMS(32)
      KEYUP(#space)
      GETSCREEN
      COLORMODE(7, 1423,824,1470,854)
      IF_PICTURE_IN (1423,824,1470,854, "pr.bmp", -1, 90) // Проверяем не вытянулась-ли рыба
      Else
      END_IF
   END_IF
END_CYC
LOGWRITE ("Вытащили")


// Нажимаем на кнопку забрать.
$c = 0
WHILE ($c = 0)
   wait (2)
   GETSCREEN
   COLORMODE(7, 600,935,629,965)
   IF_PICTURE_IN (600,935,629,965, "zabr.bmp", -1, 90)
      $c = 1
      waitms (10)
      LCLICK(908,911)
      wait (8)
   END_IF
END_CYC
LOGWRITE ("Забрали рыбу")


Функции которые хочу реализовать:

1) Подтяжку не определенное количество раз (т.к. он бывает делает +- 2 раза прокрутки) а с проверкой пикселей, до того момента пока не дотянет до берега, какие пикселя задействовать знаю но в коде реализовать не могу.

2) Если возможно постоянную проверку на натяжение лески так-как пока работает цикл подтяжки бывает садится рыба и программа не успевает сделать скриншот в нужный промежуток времени.

3)Проверку содка после каждого вылова рыбы, и промотки времени в случаи его заполнения.

4) Сделать не общее количество подтяжек и проверки скриншотов, а допустим он 10 раз подтянул проверил по скриншоту если не вытянул еще 10 раз и т.д. пока не дотянет до берега.

Архив с наработками: https://yadi.sk/d/owj1MXinmWpAw
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Svarog on December 27, 2015, 01:06:56 PM
Вот бот для ловли на спиннинг. Проверку протяжки осуществляет по пикселю в строке №243.....как нашел пиксель - так закончил протяжку. Проверку наполнения садка определяет по изменению кнопки "Садок" - она меняет цвет - как изменилась кнопка, то идем продавать. Там много для тебя ненужного - типа проверки снастей, проверки связи с сервером, проверки всплывающих окон получения клада (достижения, выполнения личной задачи) - это можно безболезненно удалить)

P.S. А как спойлер делать? Чет я не нашел(((

PPS. Эту игрулю как-то можно без стима установить или нет?
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Svarog on December 27, 2015, 01:32:17 PM
Функции которые хочу реализовать:

1) Подтяжку не определенное количество раз (т.к. он бывает делает +- 2 раза прокрутки) а с проверкой пикселей, до того момента пока не дотянет до берега, какие пикселя задействовать знаю но в коде реализовать не могу.

2) Если возможно постоянную проверку на натяжение лески так-как пока работает цикл подтяжки бывает садится рыба и программа не успевает сделать скриншот в нужный промежуток времени.

3)Проверку содка после каждого вылова рыбы, и промотки времени в случаи его заполнения.

4) Сделать не общее количество подтяжек и проверки скриншотов, а допустим он 10 раз подтянул проверил по скриншоту если не вытянул еще 10 раз и т.д. пока не дотянет до берега.


п.1 Правильно, смотри какая картинка меняется после окончания протяжки и по ней делай проверку.
п.2. Программа все успеет сделать, возможно ты неправильно ей задаешь условия. Опять же смотри что точно меняется и оттуда пляши.
п.3. Смотри чем отличается полный и пустой садок - и опять же делай проверку.
п.4. См. п.1. Т.е. тянуть надо не количество раз, а до берега)))
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Svarog on December 27, 2015, 01:41:20 PM
COBCEM_3BEPb   Спасибо))) Я на эту кнопку боялся нажимать, уж больно страшный значек, еще со Сталкера в подсознании осталось)))

Ksaliman Сними видео несколько минут со всеми нужными функциями, попробую помочь. Если можно - с пояснениями, где что и когда)
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Золотой on December 27, 2015, 04:25:38 PM
обработал скрипт спининга напильником, для уменьшения числа строк, проверь работоспособность.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 27, 2015, 08:44:11 PM
COBCEM_3BEPb

Видео (Включите субтитры и анотации): https://www.youtube.com/watch?v=dGSdXh9ogYQ

Появилась ошибка http://i.imgur.com/n9H75mS.png?1
Вообщем бот работает но без 1 функции, он не делает ничего после проверки на то не дотянул-ли рыбу до берега и так-же не забирает рыбу так как там такая-же проверка. Поправил таймер на вываживание, он должен работать с минимально задержкой. Сделал проверку pr.bmp на полную цифру 0 а то она срабатывала на цифру 9.

[spoiler]
Code: (clickermann) [Select]

// Заброс удилища
wait(1)
keyDown(32)
waitms(2060)  // 2060
keyUp(32)
LOGWRITE ("Забросили")
wait (5)
 
// Индикатор натяжание лески, подтягиваем пока не натянется леска
$var=0
WHILE($var=0) // подтягиваем пока не дотянул-ли снасть до берега или не натянется леска
   KEYDOWN(#SPACE)
   wait (1)  //  время пожтяжки лески
   KEYUP(#SPACE)
   GETSCREEN
   COLORMODE(7, 1505,689,1610,980)
   IF_PICTURE_IN (1562,686,1601,719, "nekl2.bmp", -1, 90) //Индикатор натяжание лески, подтягиваем пока не натянется леска
      wait (2)  // пауза между подтяжками лески
   Else
      // натянулась - подсекаем зажимая энтер на 0.7 секунд
      KEYDOWN(#enter)
      WAITMS(700)
      KEYUP(#enter)
      BEEP(800,200) // звук при подсечке
      WAITMS(700) // пауза после подсечки
      IF_PICTURE_IN (1543,946,1576,982, "nekl.bmp", -1, 90) //Проверяем подсеклас-ли рыба, если да переходим к вываживанию
         WAITMS(10)
      Else
         LOGWRITE ("Клюет")
         LOGWRITE ("Тянем")
         $var=777// выход из цикла "натяжание лески", переходим к вываживанию
      END_IF
   END_IF
 
   GETSCREEN
   COLORMODE(7, 1423,824,1470,882)
   IF_PICTURE_IN (1423,824,1470,882, "pr.bmp", -1, 90) // Проверяем не дотянул-ли снасть до берега без поклевки. (После это проверки не переходит на цикл заброски удилища к строчке 3)
      $var=555
      waitms(10)
   END_IF
END_CYC
 
IF($var=777)  // Если верно Тянем
   $var=0
   WHILE($var=0)
      GETSCREEN
      COLORMODE(7, 1423,824,1470,882)
      IF_PICTURE_IN (1423,824,1470,882, "pr.bmp", -1, 90) // Проверяем не вытянулась-ли рыба (После этой не проверяет не вытянулась-ли рыба и не нажимает на кнопку забрать к строчке 56)
         INC($var,1)  // если вытянулась
         LOGWRITE ("Вытащили")
         $c = 0
         WHILE ($c = 0)
            GETSCREEN
            COLORMODE(7, 600,935,629,965)
            IF_PICTURE_IN (600,935,629,965, "zabr.bmp", -1, 90) // Проверка поймали мы рыбу или нет.
               $c = 1
               waitms (10)
               LCLICK(908,911)   // Нажимаем на кнопку забрать.
               wait (8)   // пауза после нажатия  забрать
            END_IF
         END_CYC
         INC($fish,1)
         LOGWRITE ("Забрали рыбы")
         HINTPOPUP("Забрали рыбы", ,$fish)         
      Else
         KEYDOWN(#space)
         WAITMS(68)
         KEYDOWN(#enter)
         WAITMS(32)
         KEYUP(#enter)
         WAITMS(32)
         KEYUP(#space)
         waitms (2)  //  пауза после подтягивания рыбы (изменил - подтягивание должно работать очень быстро до тех пор пока не вытащишь рыбу)
      END_IF
   END_IF
END_CYC
[/spoiler]

Svarog

Спасибо большой за скрипт. Буду изучать что да как. Но при первом взгляде там жесткая привязка к курсору. В моей игре курсор всегда в центре и особо не попользуешся этой функцией. Но все равно спасибо. Может что возьму на заметку.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 27, 2015, 11:13:05 PM
Лог если делает проводку и рыба не клюнула. Доходит до 0 метров и дальше ничего

23:06:34 Забросили
23:07:38 Берег без поклевке

Если рыба клюнула во время поклевке то доходит до 0 и забирает рыбу но не забрасывает для повторной ловли.

23:05:01 Забросили
23:05:24 Клюет
23:05:24 Тянем
23:06:05 Вытащили
23:06:16 Забрали рыбу
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 27, 2015, 11:26:11 PM
Я тоже об этом подумал, но нет, стоит неограниченно.  Ошибка пропала, вроде. Картинку переснял и поменял название на zero.bmp



[spoiler]
Code: (clickermann) [Select]
// Заброс удилища
wait(1)
keyDown(32)
waitms(2060)  // 2060
keyUp(32)
LOGWRITE ("Забросили")
wait (5)
 
// Индикатор натяжание лески, подтягиваем пока не натянется леска
$var=0
WHILE($var=0) // подтягиваем пока не дотянул-ли снасть до берега или не натянется леска
   KEYDOWN(#SPACE)
   wait (1)  //  время пожтяжки лески
   KEYUP(#SPACE)
   GETSCREEN
   COLORMODE(7, 1505,689,1610,980)
   IF_PICTURE_IN (1562,686,1601,719, "nekl2.bmp", -1, 90) //Индикатор натяжание лески, подтягиваем пока не натянется леска
      wait (2)  // пауза между подтяжками лески
   Else
      // натянулась - подсекаем зажимая энтер на 0.7 секунд
      KEYDOWN(#enter)
      WAITMS(700)
      KEYUP(#enter)
      BEEP(800,200) // звук при подсечке
      WAITMS(700) // пауза после подсечки
      IF_PICTURE_IN (1543,946,1576,982, "nekl.bmp", -1, 90) //Проверяем подсеклас-ли рыба, если да переходим к вываживанию
         WAITMS(10)
      Else
         LOGWRITE ("Клюет")
         LOGWRITE ("Тянем")
         $var=777// выход из цикла "натяжание лески", переходим к вываживанию
      END_IF
   END_IF
 
   GETSCREEN
   COLORMODE(7, 1427,825,1466,882)
   IF_PICTURE_IN (1427,825,1466,882, "zero.bmp", -1, 90) // Проверяем не дотянул-ли снасть до берега без поклевки.
      $var=555
      waitms(10)
      LOGWRITE ("Берег без поклевке")
   END_IF
END_CYC

IF($var=777)  // Если верно Тянем
   $var=0
   WHILE($var=0)
      GETSCREEN
      COLORMODE(7, 1427,825,1466,882)
      IF_PICTURE_IN (1427,825,1466,882, "zero.bmp", -1, 90) // Проверяем не вытянулась-ли рыба
         INC($var,1)  // если вытянулась
         LOGWRITE ("Вытащили")
         $c = 0
         WHILE ($c = 0)
            GETSCREEN
            COLORMODE(7, 600,935,629,965)
            IF_PICTURE_IN (600,935,629,965, "zabr.bmp", -1, 90)
               $c = 1
               wait (3)
               KEYDOWN(#space) // Доп подтяжка в случаии если бот не дотянул
               WAITMS(100)
               KEYUP(#space)
               wait (5)
               LCLICK(908,911)   // Нажимаем на кнопку забрать.
               wait (8)   // пауза после нажатия  забрать
            END_IF
         END_CYC
         INC($fish,1)
         LOGWRITE ("Забрали рыбу")
         HINTPOPUP("Забрали рыбу", ,$fish)         
      Else
         KEYDOWN(#space)
         WAITMS(68)
         KEYDOWN(#enter)
         WAITMS(32)
         KEYUP(#enter)
         WAITMS(32)
         KEYUP(#space)
         waitms (5)  //  пауза после подтягивания рыбы
      END_IF
   END_IF
END_CYC
[/spoiler]
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 28, 2015, 12:02:28 AM
Вот кривые мои руки. Спасибо большое, все работает как надо. осталось прикрутить проверку садка и можно пускать в производство. Как думаешь в какую часть его запихнуть? Если он заполняется то в верхнем левом углу цифры веса в желтый окрашиваются.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 28, 2015, 12:28:01 AM
Спасибочки за наводку. Сейчас буду пробовать что-то стряпать. Если что как всегда опишу проблему в подробностях.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 28, 2015, 06:16:35 AM
Что-то не выходит у меня. Не проверяет картинку и после заполнения садка продолжает закидывать.

[spoiler]
Code: (clickermann) [Select]

// Заброс удилища
wait(2)
LCLICK(908,911)
wait(5)
keyDown(32)
waitms(2060)  // 2060
keyUp(32)
LOGWRITE ("Забросили")
wait (5)

// Индикатор натяжание лески, подтягиваем пока не натянется леска
$var=0
WHILE($var=0) // подтягиваем пока не дотянул-ли снасть до берега или не натянется леска
   KEYDOWN(#SPACE)
   waitms (RND(1000,1100))  //  пауза между подтяжками лески
   KEYUP(#SPACE)
   GETSCREEN
   COLORMODE(7, 1505,762,1610,980)
   IF_PICTURE_IN (1569,802,1607,821, "nekl2.bmp", -1, 90) //764Индикатор натяжание лески, подтягиваем пока не натянется
      waitms (RND(1700,1800))  //  время подтяжки лески
   Else
      // натянулась - подсекаем зажимая энтер на 0.7 секунд
      KEYDOWN(#enter)
      WAITMS(800)
      KEYUP(#enter)
      BEEP(800,200) // звук при подсечке
      WAITMS(1000) // пауза после подсечки
      IF_PICTURE_IN (1543,946,1576,982, "nekl.bmp", -1, 90) //Проверяем подсеклас-ли рыба, если да переходим к вываживанию
         WAITMS(10)
      Else
         LOGWRITE ("Клюет")
         LOGWRITE ("Тянем")
         $var=777// выход из цикла "натяжание лески", переходим к вываживанию
      END_IF
   END_IF
   
   GETSCREEN
   COLORMODE(7, 1427,825,1466,882)
   IF_PICTURE_IN (1427,825,1466,882, "zero.bmp", -1, 90) // Проверяем не дотянул-ли снасть до берега без поклевки.
      $var=555
      waitms(10)
      LOGWRITE ("Без поклевки")
   END_IF
END_CYC

IF($var=777)  // Если верно Тянем
   $var=0
   WHILE($var=0)
      GETSCREEN
      COLORMODE(7, 1427,825,1466,882)
      IF_PICTURE_IN (1427,825,1466,882, "zero.bmp", -1, 90) // Проверяем не вытянулась-ли рыба
         INC($var,1)  // если вытянулась
         LOGWRITE ("Вытащили")
         $c = 0
         WHILE ($c = 0)
            GETSCREEN
            COLORMODE(7, 600,935,629,965)
            IF_PICTURE_IN (600,935,629,965, "zabr.bmp", -1, 90)
               $c = 1
               wait (3)
               KEYDOWN(#space) // Доп подтяжка в случаии если бот не дотянул
               WAITMS(100)
               KEYUP(#space)
               wait (5)
               LCLICK(908,911)   // Нажимаем на кнопку забрать.
               wait (2)   // пауза после нажатия  забрать
            END_IF
         END_CYC
         INC($fish,1)
         LOGWRITE ("Забрали рыбу")
         HINTPOPUP("Забрали рыбу", ,$fish)
      Else
         keyDown(32)
         waitms(40)
         waitms(176)
         keyDown(13)
         waitms(56)
         keyUp(13)
         waitms(161)
         keyDown(13)
         waitms(72)
         keyUp(13)
         waitms(143)
         keyDown(13)
         waitms(80)
         keyUp(13)
         waitms(129)
         keyDown(13)
         waitms(71)
         keyUp(13)
         waitms(137)
         keyDown(13)
         waitms(63)
         keyUp(13)
         waitms(144)
         keyUp(32)
         waitms(240)  //  пауза после подтягивания рыбы
      END_IF
   END_CYC
   // Проверка садка
   
   IF($b = 1)
      GETSCREEN
      COLORMODE(7, 42,127,94,143)
      IF_PICTURE_IN (42,127,94,143, "sadok2.bmp", -1, 70) //Если изменился цвет то садок полный (70% совпадений так-как время суток меняется и с ними меняются цвета пикселей.)
         LOGWRITE ("Садок еще не наполнился")
         WAIT (0.5)
      ELSE
         $b = 0
         WAIT (2)
         LOGWRITE ("Садок полный")
         KEYPRESS (#T)  //Вызываем перемотку времени
         WAIT (1)
         $a = 0
         WHILE ($a = 0)
            GETSCREEN
            COLORMODE(7, 800,491,840,517)
            IF_PICTURE_IN (800,491,840,517, "time.bmp", -1, 90)  // Нужная картинка
               LCLICK(947,502)  //Кликаем в точку пока не совпадет картинка.
               waitms (RND(700,500)
               $a = 1
            ELSE
               wait (1)
               LCLICK(768,592)  //Картинка совпала? Кликаем в эту точку.
               wait (10)
            END_CYC
         END_IF
      END_IF
   END_IF
END_IF
[/spoiler]

Пробовал через поиск пикселей, такая же беда. 99% в коде проблемы.

Code: (clickermann) [Select]
IF_PIXEL_IN (42,127,94,143, 3582651, 3844800, 5948388, 6599108, 4964041, 6538711, 8571859, 5883612)
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Луций on December 28, 2015, 03:43:42 PM
а ссылочку на рабочий бот в целях рекламы можно увидеть?
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 29, 2015, 07:59:52 AM
а ссылочку на рабочий бот в целях рекламы можно увидеть?

Почему нет? Но учти там не выставлены тайминги и возможно придется переделать картинку проверки садка т.к. если меняется время в игре, следовательно и освещение, то бывает не срабатывает проверка.

https://yadi.sk/d/FeFshGR7mZUiR (https://yadi.sk/d/FeFshGR7mZUiR)
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 29, 2015, 11:32:05 AM
С чего ты взял что его кто-то будет продавать? И насчет кривого бота, полностью согласен.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 30, 2015, 02:39:32 AM
Строки 59-63. Должен кликать в определенную точку, но курсор не двигает в ту точку и он кликает просто в центр. Пробовал использовать плавное движение курсором, та-же байда. Такое началось как перевел код на окно. В полный экран все работает.

[spoiler]
Code: (clickermann) [Select]
#name "Fishing Planet"
#ps2_keyboard


$x1 = 0
$y1 = 1286
$x2 = 0
$y2 = 829

SUB(MOUSE_MOVE, $MOVE_END_X, $MOVE_END_Y)
   $MOVE_SPEED = 25  // множитель скорости, вносим вручную
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   $dist = DIST($MOVE_END_X, $MOVE_END_Y, $MOVE_Start_X, $MOVE_Start_Y)
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
   IF ($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
   $MOVE_step = ($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   FOR ($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE   (ROUND($MOVE_X, 0), ROUND($MOVE_Y, 0))
      WAITMS (1)
   END_CYC
   MOVE ($MOVE_END_X, $MOVE_END_Y)
   $LC1 = $MOVE_END_X
   $LC2 = $MOVE_END_Y
END_SUB

==Часть кода===

IF($var=777)  // Если верно Тянем
   $var=0
   WHILE($var=0)
      GETSCREEN
      COLORMODE(8, 1090,652,1125,699)
      IF_PICTURE_IN (1090,652,1125,699, "zero.bmp", -1, 90) // Проверяем не вытянулась-ли рыба
         INC($var,1)  // если вытянулась
         LOGWRITE ("Вытащили")
         $c = 0
         WHILE ($c = 0)
            GETSCREEN
            COLORMODE(8, 543,706,633,736)
            IF_PICTURE_IN (543,706,633,736, "zabr.bmp", -1, 90)
               $c = 1
               wait (3)
               LDOWN(497,438) // Доп подтяжка в случаии если бот не дотянул
               WAITMS(100)
               LUP(497,438)
               wait (5)
               RCLICK(697,722)
               WAITMS(1000)
               MOUSE_MOVE (RND(697, 722))
               WAIT       (RND(0.3, 1))
               LCLICK     ($LC1, $LC2)
               WAIT       (2)
               //LCLICK(697,722) // Нажимаем на кнопку забрать.
               wait (2)   // пауза после нажатия  забрать
            END_IF
         END_CYC
         INC($fish,1)
         LOGWRITE ("Забрали рыбу")
         LCLICK(697,722) // Нажимаем на кнопку забрать.
         HINTPOPUP("Забрали рыбу", ,$fish)
      Else
         LDOWN(497,438) // зажимаем пробел
         WAITMS(60)
         FOR($count=0,$count<20) // пять раз нажимаем Энтер
            RDOWN(497,438)
            WAITMS(RND(130,160)) // задержка между зажал=отжал
            RUP(497,438)
            WAITMS(RND(100,180)) // задержка после нажатия
         END_CYC
         LUP(497,438) // отпускаем пробел
      END_IF
   END_CYC

==Часть кода==
[/spoiler]
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Oraven on December 30, 2015, 08:40:52 AM
Ты что написал вообще?
Code: (clickermann) [Select]
MOUSE_MOVE (RND(697, 722))
WAIT       (RND(0.3, 1))

верно так
Code: (clickermann) [Select]
MOUSE_MOVE (697, 722)
WAITMS       (RND(300, 1000))
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Ksaliman on December 30, 2015, 05:35:11 PM
Я так понимаю двигать курсор в окне его не заставить?
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Svarog on December 30, 2015, 07:53:57 PM
С окнами лучше не связывайся (имеется ввиду привязка окна к кликеру) - там сам дядя Билл ногу сломить, делай как работает.
Title: Re: [Нужна помощь] Бот для Fishing Planet
Post by: Vint on December 30, 2015, 10:52:04 PM
С окнами лучше не связывайся (имеется ввиду привязка окна к кликеру) - там сам дядя Билл ногу сломить, делай как работает.