Author Topic: Gods and glory  (Read 28419 times)

0 Members and 1 Guest are viewing this topic.

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Gods and glory
« on: July 21, 2017, 11:06:48 AM »
Предлагаю скрипт фарма подзмелий игры Gods and glory
https://vk.com/godsandglory

Code: (clickermann) [Select]
//скрипт выполняет майн подземелий  в игре Gods and Glory
// подходит для сбора низкоуроуневых ресурсов для кузни
// останавливает сбор, когда войска начинают гибнуть
// или когда полоска очков подземелья заполняется почти до максимума
// запускать в ноксе, пришвартованном к левому верхнему углу экрана
#name "Слава шахтёрам"

//процедура клика с рандомным отклонением от точки клика на количество точек от 0 до $rc по обеим осям
sub (clkr, $xc,$yc,$rc)
   $nx=$xc+rnd(0-$rc,$rc)
   $ny=$yc+rnd(0-$rc,$rc)
   //   print(" x",$xc," y",$yc," nx",$nx, " ny",$ny)
   $getx=$_xmouse
   $gety=$_ymouse
   MOVE($nx,$ny)
   LDOWN($nx,$ny)
   waitms(80+rnd(0,60))
   LUP($nx,$ny)
   MOVE($getx,$gety)
end_sub

//процедура рандомного ожидания таймер +  1-10%
sub(waitrnd, $t)
   WAIT($t+$t*(1/rnd(1,10)))
end_sub

//main part основная часть
GETSCREEN
COLORMODE(6)
//screenshot

WHILE(pxl(226,185)=4144959)  //проверка по заполненности полоски очков,этот цикл можно поменять, если требуется другое условие для окончания фарма
   
   print("Можно в бой, очки есть куда собирать",pxl(315,500))
   
   //рандомно бьем один из отрядов в списке, можно выбирать только один из 2-х вариантов
   
   // вариант 1: бьем только нижние 4 отряда в подземелье, например, для  защиты от дыхания дракона
   clkr(325,341+76*rnd(0,3),5)
   
   //вариант 2: бьем все 5 отрядов, имеет смысл использовать при отключенной проверке на войска, но при уверенности, что остаток войск вытянет бои со всеми отрядами. иначе скрипт будет часто останавливаться т.к. войска будут дохнуть. ГГ маг вполне норм может фармить
   
   // clkr(325,263+76*rnd(0,4),5)
   waitrnd(1)
   
   //тут проверка на наличие войск в армии по цвету полоски,если войска начинают дохнуть и не пополняются, то  хальт, можно отключить и биться, к пример, только основным героем
   GETSCREEN
   COLORMODE(6)
   IF(pxl(210,230)=4144959)
      print("войска закончились! блеа!!!")
      halt
   END_IF
   
   //начать бой на выборе войск
   clkr(281,589,5)
   waitrnd(2)
   //начать бой на поле
   clkr(199,612,5)
   
   //дальше ждем конца, проверяем наличие  кнопки
   GETSCREEN
   COLORMODE(6)
   print("бой идет",pxl(315,500))
   WHILE(pxl(315,500)!8355711)
      waitrnd(1)
      print("бой идет",pxl(315,500))
      GETSCREEN
      COLORMODE(6)
   end_cyc
   //раздача призов
   
   //выбираем первый приз
   $pp=rnd(0,4)
   clkr(55+66*$pp,444,7)
   waitrnd(0.2)
   clkr(55+66*$pp,444,7)
   waitrnd(0.6)
   // а здесь выбираем второй приз. можно отключить всю эту конструкцию, если можно брать только один приз
   $vp=$pp
   WHILE($vp=$pp)
      $vp=rnd(0,4)
      waitrnd(0.1)
   end_cyc
   clkr(55+66*$vp,444,7)
   waitrnd(0.2)
   clkr(55+66*$vp,444,7)
   waitrnd(1.5)
   
   //после сбора призов можно выходить
   clkr(280,496,10)
   waitrnd(2)
   
   GETSCREEN
   COLORMODE(6)
end_cyc
//конец цикла, если очки набрались
print("мы почти у цели, дальше пили сам")

halt
« Last Edit: July 22, 2017, 08:46:45 AM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Gods and glory
« Reply #1 on: July 22, 2017, 08:48:14 AM »
Исправил кодировку. А чтоб такого не было нужно, перед копированием в буфер, раскладку языка в редакторе перевести на Ру.
« Last Edit: July 22, 2017, 08:49:49 AM by Oraven »

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #2 on: July 23, 2017, 09:04:27 PM »
спс

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Gods and glory
« Reply #3 on: July 31, 2017, 10:52:59 AM »
faser, идея классная, разве что я бы в районе 66-й строки еще добавил проверку на случайное поражение, с соответствующей логикой выхода из нее.
Ну и координаты точек увы не совпадают, надо все равно под свой экран перерабатывать :)

Плюс, не понимаю почему, но случайным образом, при проверке заполненности шкалы и проверке наличия войск, когда применяю getscreen - почему-то оказывается что используется не текущий экран, а предыдущий его снимок. Экспериментально вылечилось установлением больших задержек примерно по wait(5) до и после команды getscreen

upd: еще вспомнил: цели строк 66-67 не понял, у меня достаточно однократного клика на сундук. Соответственно, строки 78-87 без доната не проверял
« Last Edit: July 31, 2017, 10:56:45 AM by gsukhado »

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #4 on: August 07, 2017, 05:05:52 PM »
Благодарю за отзыв.
про поражение конечно думал, но не стал заморачиваться, т.к. основная цель скрипта - собрать обычные ресурсы для крафта (экспа - добавочно), поэтому проигрышей не бывает. ГГ обычно сам может бой вывезти.

Про координаты точек я сначала думал привязаться к окну, вымерять размер и указать "относительные точки". Потом чёт заленился и сделал абсолютные точки при том, что нокс подвешен к координатам 0,0 (примерно).
Если запрос будет, подумаю, чтоб переделать по-человечески.

С глюком скриншота не встречался. Возможно от мощности компа зависит.

цель 66 просто в лог писать, что бой идет. иногда полезно разбирать зацикливание. можно убрать
67 делаю скрин для проверки - закончился ли бой.

78-87 - действительно, для тех, кто может 2 ящика открыть (с донатом), как я там в комментарии написал, если ящик только один, то этот блок можно отключить

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #5 on: August 07, 2017, 05:08:05 PM »
у меня щас больше голова болит о том, как сделать автофарм шахт по выбранному уровню...
не могу определиться к чему цепять проверку на уровень и свободность шахты.
upd: увидел твоё http://crapware.aidf.org/forum/index.php?topic=88.msg22957#msg22957
буду изучать
« Last Edit: August 07, 2017, 05:37:00 PM by faser »

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Gods and glory
« Reply #6 on: August 08, 2017, 10:31:15 AM »
не могу определиться к чему цепять проверку на уровень и свободность шахты.
Я привязываю в абсолютных пикселях к координатам того фрагмента изображения шахты, по которому ищется сама шахта. Плюс добавляю люфты - учитывая неточность в поиске в размытых текстурах

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #7 on: August 08, 2017, 11:17:56 AM »
а увеличение карты?

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #8 on: August 08, 2017, 04:51:13 PM »
Общий вопрос по алгоритму Распознавание чисел 1.5.cms (http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571 )

Для случаев, когда конкретные написания цифр могут достаточно сильно отклоняться от "шаблона", можно ли использовать не конкретные образцы, а их массивы? Например, сделать подпапки "texures\number0\", "texures\number1\", "texures\number2\"... в которые накидывать разные написания одной и той же цифры. А алгоритм бы проверял на совпадение каждому из вариантов цифры в соответствующей подпапке.
А совсем идеально - чтобы если совпадений не найдено (установив высокую точность, например от 95), но скриншот данного кусочка экрана сразу складировался в отдельной папке - из которой потом вручную можно было бы нарезать цифры и добавить в нужную подпапку...

Есть мастера, которые могли бы так доделать алгоритм распознавания? Или тогда комп каждое распознавание будет по полчаса делать?
не, у нас фигня какая-то получается :( даже при "большом" увеличении есть несколько проблем
1) размеры цифр "вверху" и "внизу" экрана разные. внизу больше (типа ближе к наблюдателю). И кстати, это не только цифры, но и все объекты. Потому сложно будет найти шахты (тем  более, что теперь сияние ввели для тех шахт, с которых самоцвет выпадет)
2) при применении colormode вообще "сказка" получается. Даже на увеличенных изображениях отличить 1 от 2 или 7  может быть проблематично, а при увеличении количества цветов - проявляется нежелательный фон за цифрами, которые не позволяет достоверно определить цифры


в общем, надо думать.
Полагаю, что отдельные цифры искать вообще нет смысла. С точки зрения игрового процесса надо искать не отдельные цифры, а прям числа -2-3 уровня от уровня игрока. Т.е. если цита 15, то желательно искать шахты  12,13,14,15. Следовательно искать надо только эти картинки, а не все цифры. Так ИМХО будет быстрее для скрипта и правильнее для игрока.

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Gods and glory
« Reply #9 on: August 08, 2017, 11:42:59 PM »
Потому сложно будет найти шахты (тем  более, что теперь сияние ввели для тех шахт, с которых самоцвет выпадет)
...
Полагаю, что отдельные цифры искать вообще нет смысла. С точки зрения игрового процесса надо искать не отдельные цифры, а прям числа -2-3 уровня от уровня игрока. Т.е. если цита 15, то желательно искать шахты  12,13,14,15. Следовательно искать надо только эти картинки, а не все цифры. Так ИМХО будет быстрее для скрипта и правильнее для игрока.
1)У меня получается найти шахты почти все. Некоторые правда он распознает как несколько наложенных экземпляров друг на друга и чуть сдвинутых, но это не проблема для последующей обработки.
До сияния я еще не дорос, поэтому сказать не могу, скрин можешь прислать как выглядит?

2)попробовал, скрины не цифр, а чисел распознает тоже очень хреново, постоянно путает между собой, а если увеличить точность - то никак не распознает ((
Атаковать же вообще все шахты без учета их уровня - будут сплошные сливы на высокоуровневых шахтах... Писать "костыль" для отслеживания шахт на которых убиваешься и изымать их из массива, причем только на определенный срок, учитывая миграции шахт - имхо не лучшее решение, но возможно придется по нему пойти...

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Gods and glory
« Reply #10 on: August 08, 2017, 11:55:15 PM »
цель 66 просто в лог писать, что бой идет. иногда полезно разбирать зацикливание. можно убрать
67 делаю скрин для проверки - закончился ли бой.
Извини, похоже опечатался - имел в виду строки 74 и 76

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #11 on: August 09, 2017, 09:29:09 AM »
цель 66 просто в лог писать, что бой идет. иногда полезно разбирать зацикливание. можно убрать
67 делаю скрин для проверки - закончился ли бой.
Извини, похоже опечатался - имел в виду строки 74 и 76
А, ну тут все просто. Если один раз нажать, то приз долго крутится на экране, а если сделать двойной клик, то можно сразу идти к следующему шагу.
Поэтому я делаю просто двойной клик.

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #12 on: August 09, 2017, 10:18:42 AM »
1)У меня получается найти шахты почти все.
можешь тут код выложить с искомыми картинками? хочу понять, что именно ты ищешь и как.
одинаково хорошо ищется и вверху экрана и внизу?

1)
До сияния я еще не дорос, поэтому сказать не могу, скрин можешь прислать как выглядит?
вспышки на шахте анимированные, т.е. движутся (снизу вверх), меняясь при этом в размере
« Last Edit: August 09, 2017, 10:20:30 AM by faser »

faser

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Gods and glory
« Reply #13 on: August 09, 2017, 10:50:58 AM »
а вообще, ведь  можно каждую найденную шахту просто открывать и делать проверку на уровень (там цифры большие в окне будут) и занятость. Так не проще?
не знаю только, на сколько такой подход будет удобен админам для анализа факта на ботоводство.

Еще можно сделать виртуальную "карту" экрана, т.е. определить сетку клеток с возможным содержанием (пусто,замок,шахта,лагерь), я предполагаю сделать это по первому найденному строению в верхнем левом углу, определить координаты всех полей, а далее остальные клетки поля  буду проверять на возможное наличие там полезных объектов(т.е. картинку искать не во всём поле, а в выделенной клетке). далее, среди найденных объектов можно выбирать наиболее вероятный для атаки и делать его дополнительную проверку после открытия окна объекта. Если не подходит, то назад и  кликаем на следующий объект в списке найденных

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Gods and glory
« Reply #14 on: August 09, 2017, 03:17:11 PM »
одинаково хорошо ищется и вверху экрана и внизу?
Я делаю поиск по нижней половине экрана. Нарезки пока чуть разные (экспериментирую еще с параметрами самого экрана), но размеры стараюсь делать не более 30-40 pxl. Позже могу в личку кинуть

вспышки на шахте анимированные, т.е. движутся (снизу вверх), меняясь при этом в размере

Ссылка в дропбоксе не открывается. Даже если залогиниваюсь.  Не сделал ее публичной?