Fantastic Fishing
| |
Tom | Дата: Воскресенье, 11.08.2013, 22:08 | Сообщение # 1 |
Админ
Группа: Администраторы
Сообщений: 4279
Статус: Offline
| Наживка:
Малёк можно сделать из горчака, верховки, пескаря, гамбузии,гольяна обыкновенного, гольца обыкновенного.
Живец из ельца, вьюна.
Кусочек рыбы(2) из многих рыб весом от 200 до 400 гр.
Раковая шейка - из любых раков.
Лягушка из лягушки.
Жук из жука.
|
|
| | |
Diesel | Дата: Среда, 04.03.2015, 09:40 | Сообщение # 3 |
Генерал-лейтенант
Группа: Администраторы
Сообщений: 588
Статус: Offline
| #name "FanFish" #ps2_keyboard $x1 = 840 $y1 = 470 $x2 = 1280 $y2 = 505 // подпрограмма плавного движения мыши 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 $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 // подпрограмма подсечки и вываживания рыбы SUB(VYLOV) WAITMS (300) // ожидание монента подсечки и проверка, а не бросила ли рыба наживку $a = 1 WHILE ($a = 1) GETSCREEN (530, 270, 600, 340) COLORMODE (6, 530, 270, 600, 340) IF_PICTURE_IN (530, 270, 600, 340, "kurs.bmp", -1, 70) $a = 0 ELSE GETSCREEN ($x11, $y1, $x21, $y2) COLORMODE (6, $x11, $y1, $x21, $y2) IF_PICTURE_IN ($x11, $y1, $x21, $y2, $e, -1, 70) WAITMS (300) ELSE $a = 0 END_IF END_IF END_CYC // подсечка WAIT (RND(0.3, 0.5)) KEYPRESS (#SPACE) WAIT (RND(0.3, 0.5)) // вываживание $b = 1 WHILE ($b = 1) GETSCREEN (530, 270, 600, 340) COLORMODE (6, 530, 270, 600, 340) IF_PICTURE_IN (530, 270, 600, 340, "kurs.bmp", -1, 70) KEYDOWN (#H) WAITMS (150) KEYUP (#H) WAITMS (5) KEYDOWN (#G) WAITMS (140) KEYUP (#G) WAITMS (200) ELSE WAITMS (300) KEYPRESS (#T) $b = 0 END_IF END_CYC WAIT (1) END_SUB // основное тело программы WAIT (2) // заброс удочки 1 KEYPRESS (#1) MOUSE_MOVE (RND(838, 846), RND(412, 420)) WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (2) // заброс удочки 2 KEYPRESS (#2) MOUSE_MOVE (RND(1096, 1104), RND(386, 394)) WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (2) // заброс удочки 3 KEYPRESS (#3) MOUSE_MOVE (RND(1242, 1250), RND(351, 359)) WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (2) // сдвигаем курсор MOUSE_MOVE (RND(545, 555), RND(285, 295)) WAITMS (500) // ожидание поклевки и вылов рыбы $c = 1 WHILE ($c = 1) GETSCREEN ($x1, $y1, $x2, $y2) COLORMODE (6, $x1, $y1, $x2, $y2) IF_PICTURE_IN ($x1, $y1, $x2, $y2, "1kl.bmp", -1, 70) KEYPRESS (#1) $x11 = 840 $x21 = 875 $e = "11kl.bmp" VYLOV() ELSE IF_PICTURE_IN ($x1, $y1, $x2, $y2, "11kl.bmp", -1, 70) KEYPRESS (#1) $x11 = 840 $x21 = 875 $e = "11kl.bmp" VYLOV() ELSE IF_PICTURE_IN ($x1, $y1, $x2, $y2, "2kl.bmp", -1, 70) KEYPRESS (#2) $x11 = 1080 $x21 = 1140 $e = "22kl.bmp" VYLOV() ELSE IF_PICTURE_IN ($x1, $y1, $x2, $y2, "22kl.bmp", -1, 70) KEYPRESS (#2) $x11 = 1080 $x21 = 1140 $e = "22kl.bmp" VYLOV() ELSE IF_PICTURE_IN ($x1, $y1, $x2, $y2, "3kl.bmp", -1, 70) KEYPRESS (#3) $x11 = 1245 $x21 = 1280 $e = "33kl.bmp" VYLOV() ELSE IF_PICTURE_IN ($x1, $y1, $x2, $y2, "33kl.bmp", -1, 70) KEYPRESS (#3) $x11 = 1245 $x21 = 1280 $e = "33kl.bmp" VYLOV() ELSE END_IF END_IF END_IF END_IF END_IF END_IF // проверка садка IF ($c = 1) GETSCREEN (355, 550, 460, 580) COLORMODE (6, 355, 550, 460, 580) IF_PICTURE_IN (355, 550, 460, 580, "sadok.bmp", -1, 80) WAIT (0.5) ELSE $c = 0 WAIT (RND(2, 4)) MOUSE_MOVE (RND(1285,1305), RND(35,55)) // возврат на базу WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (RND(3,5)) MOUSE_MOVE (RND(370,450), RND(558,573)) // открытие садка WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (RND(3,5)) MOUSE_MOVE (RND(1030,1120), RND(453,468)) // продажа рыбы WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (RND(3,5)) MOUSE_MOVE (RND(690,780), RND(402,417)) // подтверждение продажи WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (RND(3,5)) MOUSE_MOVE (RND(805,895), RND(402,417)) // рыба продана WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (RND(3,5)) MOUSE_MOVE (RND(370,450), RND(582,597)) // переход на локальную карту WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (RND(3,5)) MOUSE_MOVE (RND(755,775), RND(245,265)) // возврат на локацию WAIT (RND(0.3, 1)) LCLICK ($LC1, $LC2) WAIT (RND(3,5)) END_IF END_IF END_CYC
|
|
| |
Diesel | Дата: Среда, 04.03.2015, 09:42 | Сообщение # 4 |
Генерал-лейтенант
Группа: Администраторы
Сообщений: 588
Статус: Offline
| Итак, приступим к настройке бота под твои, конкретно твои нужды, мой юный паддаван , гм...рыболов. Делать мы это будем пошагово и неторопясь :). Во первых строках своего письма, спешу сообщить тебе, мой друг, о первой строке моего бота...если у тебя нет PS/2 клавиатуры, то смело удаляй первую строку - она тебе не нужна :)
1. Запускаем "Fantast Fish" и "Кликерман" в кликере жмем кнопку "Менеджер окон", выбираем из списка нашу рыбалку и смотрим на параметры окна. Вводим необходимые нам циферки в поля "X", "Y" - координаты левого верхнего левого окна программы, "Ширина", "Высота" - это, как ты уже догадался, ширина и высота окна программы. Я рекомендую располагать окно в правых 3/4 экрана. К примеру, мое разрешение 1366х768 и задаю я такие параметры окна: 350, 0, 1000, 750. Эти цифирки необходимо записать (запомнить, выколоть на спине и т.д.) потому что в боте идет четкая привязка к координатной сетке и нужно будет вводить их каждый раз, когда ты запускаешь рыбалку и бота. Функция определения "hwnd" окна (и еже с ней) у меня не срабатывали, если что..., как сказал Oraven: "...вот такое у тебя, брат, окно..". Теперь нам нужно поймать хотя бы одну рыбку и положить ее в садок (пригодится позже, я объясню ниже).
2. Теперь нам необходимо определить точки, в которые мы будем забрасывать удочки. С помощью форума определяемся, где и что будем ловить, с помощью эхолота находим 3 точки, в которые забрасываем удочки и после того как решились, вносим координаты в мозг бота, удочка №1 - строка 61, удочка №2 - строка 65, удочка №3 - строка 69. Чтобы нас не поймали на использовании бота, координаты вносим так: точка заброса +- 4 пикселя, ибо невозможно руками попадать точно в одну и ту же координату на протяжении многих и многих часов. К примеру, моя удочка №1 забрасывается в координату 842, 416.
3. Пункт, как говорится №3. Важный пункт, не пропусти его, бо тут мы будем прикручивать индикатор по которому определяется, а схавала ли рыба наживку и не пора ли, ее вытягивать и до каких пор тянуть эту самую рыбу, пока она не окажется в садке. Тебе необходимо найти такую точку на активной карте (т.е. там, где ты еще можешь забросить удочку и где индикатор удочки будет иметь вид "поплавка"), где индикатор подсечки (типа "треугольник") будет находится в месте, где фон вокруг него будет пассивным. Я, нашел такое место в тени от деревьев, ты, конечно, можешь найти другое место, но никто не гарантирует, что потом программа найдет твой индикатор подсечки. Координату забиваем в строку 72. Тута, я рандом координат не делал, ибо лень :) потом сделаю ::), а может и не сделаю, но если есть желание, сделай сам.
Итак, мой френд, ты уже внес три координаты для заброса удочек и можешь попробовать запустить бота, он конечно же работать не будет, но забросить все 3 твои удочки, просто обязан, а также должен переместить курсор в выбранную тобою точку. Если сего не происходит, то начинай с самого начала, пока не добьешься заброса в нужные тебе 3 точки. Не забывай останавливать бота по команде "Alt+S'. Если все у тебя получилось, то возьми с полки пирожок и идем дальше. Не забудь сохранить изменения в боте, они нам еще пригодятся :).
4. В этом пункте , мы будем задавать область для поиска индикаторов поклевки. Запускаем бота ('Alt+A'), эабрасываем удочки и останавливаем бота. ИтоГо, на экране мы видим закинутые удочки и внизу 3 квадратика индикаторов поклевки (вот эти квадратики нам и нужны). переходим в режим "Редактор", затем "Включение лупы" и наводим курсор на левый верхний угол индикатора поклевки удочки №1, записываем координаты, наводим курсор на правый нижний угол индикатора поклевки удочки №3, записываем координаты. Теперь от координат левого верхнего угла по 'X" и 'Y' отнимаем по 20 и это будут переменные $x1 и $y1, вносим их в строки 2 и 3. Повторяем для правого нижнего угла, только не отнимаем, а прибавляем и вносим координаты в строки 4 и 5. Введение переменных, обусловлено их многократным использованием, аж целых 6 раз в одном прогоне программы :o (хотя это не так и важно, программер, я так себе 8)) 5. В котором мы найдем координаты кнопки "Садок". Кнопка "Садок" должна быть зеленой, то есть, ты еще не наловил полный садок рыбы. Определяем координаты для поиска изображения кнопки "Садок", левый верхний - 20, правый нижний + 20 и вносим получившиеся координаты в строчки 129, 130, 132. Расписывать действия не буду, ибо ты уже опытный и это уже умеешь, если же нет, то громко скажи " ОЙ, ВСЕ!" и начинай ловить руками :P (шутка юмора такая, ога), короч тренируйся, пока не получится.
6. Пункт, рассказывает тебе, дружище, как уйти на базу, продать выловленную рыбу и вернуться на локацию для продолжения рыбалки. Наводим курсор на "домик" - переход на базу, определяем границы рандома и вносим их в строку 136. Жмем мышкой на "домик" и переходим на базу. На базе, наводим курсор на кнопку "Садок" (ну да, снова "Садок" ну а фигли, не я такой, игра так сделана) определяем координаты (не забываем про границы рандома) и вносим в строку 138, жмем кнопку "Садок" и выплывает окно садка в котором мы находим кнопку "Продать все", (вот тут-то нам и пригодилась рыба, которую мы поймали вручную, в самом начале), определяем ее координаты, в смысле кнопки, (границы рандома), вносим в строку 140 и жимкаем эту кнопку. Появляется окно, в котором нас спрашивают, а точно продать (название окна - "Продать все?")?, вновь определяем координаты (границы рандома) кнопки "Продать" и вносим в строку 142. Появляется окно, в котором нас уведомили, что мы продали рыбу на какую-то огромную сумму, оно называется "Продажа рыбы". В этом окне, нам нужно найти кнопку "Закрыть" и внести ее координаты (границы рандома) в строку 142. Закрываем окно с уведомлением. Далее, ищем кнопку "Карта" (ну дык, слева посмотри) определяем координаты (границы рандома), вносим в строку 146, жмем эту кнопку и выходим в локальную карту. На локальной карте, выбираем кнопку локации в которой мы начинали/продолжали ловить рыбу, определяем ее координаты (границы рандома), жмем кнопку и переходим в локу, где будем рыбачить. Ну а дальше, бот сам забросит удочки, проверит садок и при необходимости уйдет на базу, продаст рыбу, вернется на локу и продолжит 8).
7. Воооот, теперича друже, мы с тобой переходим в редактирование подпрограммы подсечки и вываживания. Оно не так страшно, как ты думаешь,. Ну блин, подпрограмма, слово то какое-то матершинное. Это как звание "подполковник", т.е. находящийся под "полковником" Не боись, осилим. Подпрограмма, это программа, которая выполняется внутри программы (сам то понял что сказал?). ;D В строки 12, 13 и 15 вносим координаты области, в которой будем искать индикатор определения момента подсечки (это из пункта №3). Т.е. если рыба хапнет крючек, то изображение поплавка сменится на изображение курсора (типа треугольничек такой, повернутый влево на 45 градусов). Далее в строки 36, 37 и 39 снова пишем те же самые координаты. Не забудь расширить область поиска на 10-20 пикселей. Ну вот собственно и все с подпрограммой 8) 8. Возвращаемся к нашим баранам, ой, к основной программе :) В строки 81 (левый верх), 82 (правый низ) и 88 (левый верх), 89 (правый низ) вписываем область поиска индикатора удочки №1 (квадратик слева от первой удочки). Заметь, что вписываем только координаты по "Х", ибо координаты по "Y" мы уже описывали в строках 3 и 5, а они, как ты уже понял, не меняются. Точно также вписываем координаты "X" для удочки №2, строки 95, 96 и 102, 103. Ищем квадратик для удочки №3 и вписываем координаты в строки 109, 110 и 116, 117.
На этом самый муторный этап настройки бота заканчивается и его можно смело запустить в работу ;D Запустил? И ничего не работает? А кто сказал что будет легко??? Ты же еще не сделал картинки, по которым бот будет работать. Итак, начинаем креативить :P Нам понадобится 8 шт скриншотов:
"kurs.bmp" - скрин курсора из пункта №3 "1kl.bmp" - индикатор удочки №1 когда рыба клюет, но удочка не активна "11kl.bmp" - индикатор удочки №1 когда рыба клюет, удочка активна "2kl.bmp" - индикатор удочки №2 когда рыба клюет, но удочка не активна "11kl.bmp" - индикатор удочки №2 когда рыба клюет, удочка активна "3kl.bmp" - индикатор удочки №3 когда рыба клюет, но удочка не активна "33kl.bmp" - индикатор удочки №3 когда рыба клюет, удочка активна "33kl.bmp" - скриншот неполного (зеленого) садка Для облегчения твоей нелегкой доли, в деле изготовления картинок, вот тебе маленькая программка для делания скринов:
$x1 = 550 $y1 = 290 $x2 = 580 $y2 = 320 $z = "kurs.bmp" WAIT (2) KEYPRESS (#1) LCLICK ($x1, $y1) WAIT (2) GETSCREEN ($x1-10, $y1-10, $x2+10, $y2+10) // делаем снимок в буфер кликера COLORMODE (6, $x1-10, $y1-10, $x2+10, $y2+10) SCREENSHOTEX ($x1-10, $y1-10, $x2+10, $y2+10, "Image_", 0) // сохраняем снимок HALT // стоп
|
|
| |
|