Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - JustAUser

Pages: [1]
1
Всё, с помощью программы Unique Colors Search, удалось настроить бота для добычи. Благодарю за помощь и на всякий случай скидываю код, с исправленными ошибками. Мало ли, кому-нибудь пригодится.

Code: (clickermann) [Select]
move(961,528) //статичное положение персонажа на экране
 $x1 = $_xmouse
 $y1 = $_ymouse
Getscreen // поиск пикселя ресурса на экране
 If_pixel_in(966,449, 1226,765, 5590612, 6775139, 6248282, 5853784, 5459026, 5327694, 6511968, 5985624, 6248542, 6577247, 5261900, 6446174, 5919577, 5130315, 5722710, 5525331, 5854297, 6183003, 5130573, 6182749, 6709089, 6117209, 5195080, 5195080, 5195080, 5656659, 5788502, 7300970, 5918803, 6446175, 6841705)
 waitms(42)
  move($_return1, $_return2)
 $x2 = $_xmouse
 $y2 = $_ymouse
End_If
 $Diff_x = ($x2 - $x1)
waitms(30)
 $Diff_y = ($y2 - $y1)
 $mtt_x = ($Diff_x / 0.043) // 0.043 - скорость персонажа пиксель/миллисекунда, высчитана вручную
 $mtt_y = ($Diff_y / 0.043)
 $mtt_x = round($mtt_x, 0)
 $mtt_y = round($mtt_y, 0)
rDown($_xmouse, $_ymouse) // условия конкретной игры, для стабилизации скорости персонажа
If ($mtt_x < 0)
  $mtt_x = Abs($mtt_x)
    keyDown(#A)
waitms($mtt_x)
  keyup(#A)
else
  keyDown(#D)
 waitms($mtt_x)
  keyUp(#D)
End_IF

If ($mtt_y < 0)
  $mtt_y = Abs($mtt_y)
    keyDown(#W)
waitms($mtt_y)
  keyup(#W)
else
  keyDown(#S)
 waitms($mtt_y)
  keyUp(#S)
End_IF
waitms(276 + $S_CORR)
  lDown($_xmouse, $_ymouse)
waitms(36272 + $S_CORR)   // время добычи ресурса
  lUp($_xmouse, $_ymouse)
waitms(470 + $S_CORR)
rUp($_xmouse, $_ymouse)

По поводу If_Picture_In так и не смог полностью разобраться. Допустим, лежит картинка небольшого размера в папке и алгоритм её находит, но стоит мне открыть её средством для просмотра фотографий Windows и алгоритм уже её не находит, хотя размер этой картинки абсолютно не меняется на экране. Видимо, какие-то изменения всё же происходят с ней.

Всем большое спасибо за помощь. Приятная программа для простых людей :)

2
С масштабом всё нормально, лупа видит изображение. В аппаратной части не может быть проблем? Может вопрос покажется глупым, но у меня изначально монитор с дефектами цветов и сломано встроенное видеоядро (покупали с рук с таким дефектом). Пользуюсь дискретной, само собой. В этом не может быть проблема? Я просто не совсем понимаю как работает программа -пк, поэтому на всякий случай говорю об этом. Монитор имеет цвета rgb:75, 90, 65. Настраивал вручную, чтобы цвет был белый, а не фиолетовый, но монитор уже брали не б/у, а просто не повезло :)

Благодарю за ссылку на программу, обязательно попробую.

3
 Прошу помощи ещё с несколькими проблемами. У меня не работает функция If_picture_in. Я бы всё понял, если бы что-то делал не так, но оказалось, что моей вины не было. Я скинул своей скриншот и искомый фрагмент своему другу и объяснил, что делать. У моего друга программа находит искомый фрагмент на скриншоте, а у меня нет. В чём может быть причина? Вторая проблема в том, что я не могу заставить бота увидеть ресурсы на экране по пикселям, потому что у меня не получается выявить "уникальный" пиксель. Да ещё и дело осложняется сменой дня и ночи, а соответственно и сменой цветов. Поэтому я решил спросить про альтернативные методы распознавания элементов в игре, по всей видимости, не связанные с анализом экрана :(

4
 Вот что у меня получилось в итоге. Это не конечный, а черновой вариант, но тем не менее персонаж проходит расстояние сам, в зависимости от расстояния между точками А и Б. Если я правильно понял, то функция DIST показывала общее расстояние, поэтому пошёл на другому пути. Оказывается в справке программы, во владке "введение", находилось почти всё, что мне нужно было знать, для начала работы. Открывал всё до этого, кроме этой вкладки, тогда и вопрос с вычислением отпал.
 В данном алгоритме отсутствует анализ экрана, который собираюсь добавить позже, а также некоторые другие элементы.В данном виде персонаж ходит только по х и у осям, поэтому  алгоритм получился грубый, первобытный, но работает и это главное.
Code: (clickermann) [Select]
waitms(50)
move(988, 547)
waitms(110)
 $x1 = $_xmouse
 $y1 = $_ymouse
move (311, 50)
 $x2 = $_xmouse
 $y2 = $_ymouse
waitms(124)
 $Diff_x = ($x2 - $x1)
waitms(30)
 $Diff_y = ($y2 - $y1)
 $mtt_x = ($Diff_x / 0.43)  // 0.43 скорость персонажа пиксель/мс, высчитана вручную.
 $mtt_y = ($Diff_y / 0.43)
 
If ($mtt_x < 0)
  $mtt_x = Abs($mtt_x)
  $mtt_x = round($mtt_x, 0)
    keyDown(#A)
waitms($mtt_x)
  keyup(#A)
else
  keyDown(#D)
 waitms($mtt_x)
  keyUp(#D)
End_IF

If ($mtt_y < 0)
  $mtt_y = Abs($mtt_y)
   $mtt_y = round($mtt_y, 0)
    keyDown(#W)
waitms($mtt_y)
  keyup(#W)
else
  keyDown(#S)
 waitms($mtt_y)
  keyUp(#S)
End_IF

waitms(276 + $S_CORR)
  lDown($_xmouse, $_ymouse)
waitms(36272 + $S_CORR)
  lUp($_xmouse, $_ymouse)
waitms(470 + $S_CORR)
Halt

P.s не сразу понял, что дробное число миллисекунд не даёт выполнить алгоритм, но, благо, ошибку нашёл.

5
Спасибо за помощь! Пойду составлять и тестировать  :)

6
Препятствие есть, одно, в фиксированном месте, но оно меня особо не интересует, по крайней мере пока что :) В остальном можно ходить куда угодно и как угодно.

Допустим, я высчитаю скорость движения персонажа в секунду, какой функцией мне воспользоваться, чтобы в дальнейшем производился автоматический подсчёт и движение к искомому объекту? Я могу вычислить на бумаге время зажатия и прочее, но вот сделать из этого скрипт... Если возможно, напишите необходимые функции, с которым я должен познакомиться или небольшой фрагмент скрипта для примера. Скорость какая угодно, к примеру 30 пикселей в секунду, не важно и без учёта препятствия.

Моя основная цель сейчас состоит не в создании полноценного бота, который бы делал всё работу для меня. Мне достаточно, чтобы он смог добывать хоть какой-то промежуток времени самостоятельно, чтобы разгрузить меня от рутины. Пусть его хватит на 10 минут безошибочной работы, этого будет более чем достаточно. А если уж возникнет желание для развития, думаю я смогу развить его с полученным опытом и наработками.

7
Доброго времени суток!
Имеется 3D приложение с видом сверху, в котором есть персонаж и собираемый ресурс. Ресурс появляется рандомно в определённой области на экране. Чтобы ресурс мог собираться, нужно подойти персонажем вплотную. Персонаж двигается по принципу: W - вверх, S - вниз, A - влево, D - вправо (диагональное перемещение возможно). Премещение персонажа мышью невозможно. Отсюда возникают следующие мысли: 1. Возможно ли на основании данной программы составить скрипт, который сможет самостоятельно подходить к текущему положению курсора на экране с помощью клавиатуры? 2. Справится ли с таким скриптом рядовой пользователь пк, имеющий нулевой уровень в программировании? 3. Возможны ли какие-то альтернативные варианты для выполнения данной задачи?
Я уже разобрался как находить искомый пиксель на экране и работать с ним, используя только мышь. Однако теперь нужно подключить ещё и клавиатуру для составления бота. Если имеются какие-нибудь обучающие статьи, то буду рад почитать. К сожалению на форуме ничего подобного не нашёл.


Pages: [1]