Суббота, 23.11.2024, 00:00
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Fantastic Fishing
TomДата: Воскресенье, 11.08.2013, 22:08 | Сообщение # 1
Админ
Группа: Администраторы
Сообщений: 4279
Статус: Offline
Наживка:

Малёк можно сделать из горчака, верховки, пескаря, гамбузии,гольяна обыкновенного, гольца обыкновенного.

Живец из ельца, вьюна.

Кусочек рыбы(2) из многих рыб весом от 200 до 400 гр.

Раковая шейка - из любых раков.

Лягушка из лягушки.

Жук из жука.
 
TomДата: Воскресенье, 11.08.2013, 22:53 | Сообщение # 2
Админ
Группа: Администраторы
Сообщений: 4279
Статус: Offline
















 
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 // стоп
 
  • Страница 1 из 1
  • 1
Поиск: