Автор Тема: Gods and glory  (Прочитано 3115 раз)

0 Пользователей и 1 Гость просматривают эту тему.

gsukhado

  • Освоившийся
  • **
  • Сообщений: 66
    • Просмотр профиля
Re: Gods and glory
« Ответ #15 : Август 09, 2017, 03:25:25 pm »
а вообще, ведь  можно каждую найденную шахту просто открывать и делать проверку на уровень (там цифры большие в окне будут) и занятость. Так не проще?
не знаю только, на сколько такой подход будет удобен админам для анализа факта на ботоводство.

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

faser

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Gods and glory
« Ответ #16 : Август 09, 2017, 04:35:28 pm »
одинаково хорошо ищется и вверху экрана и внизу?
Я делаю поиск по нижней половине экрана. Нарезки пока чуть разные (экспериментирую еще с параметрами самого экрана), но размеры стараюсь делать не более 30-40 pxl. Позже могу в личку кинуть

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

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

faser

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Gods and glory
« Ответ #17 : Август 09, 2017, 04:59:33 pm »
а вообще, ведь  можно каждую найденную шахту просто открывать и делать проверку на уровень (там цифры большие в окне будут) и занятость. Так не проще?
не знаю только, на сколько такой подход будет удобен админам для анализа факта на ботоводство.

Еще можно сделать виртуальную "карту" экрана, т.е. определить сетку клеток с возможным содержанием (пусто,замок,шахта,лагерь), я предполагаю сделать это по первому найденному строению в верхнем левом углу, определить координаты всех полей, а далее остальные клетки поля  буду проверять на возможное наличие там полезных объектов(т.е. картинку искать не во всём поле, а в выделенной клетке). далее, среди найденных объектов можно выбирать наиболее вероятный для атаки и делать его дополнительную проверку после открытия окна объекта. Если не подходит, то назад и  кликаем на следующий объект в списке найденных
(а)По отлавливанию ботоводов не знаю.
(б)Сама идея с сеткой любопытна. Но проблема в том что и замки тоже иногда по карте мигрируют. И лагеря своих и противников появляются... Т.е. алгоритмы проверок надо делать достаточно комплексные... И все равно упираемся в (а) с необходимостью открытия объекта для его детального изучения...
Ну я подход "б" как раз и думал для того, чтобы минимизировать отлов скрипта админами.
"Открывать" объект все-равно надо для атаки, но по крайней мере, при таком анализе "ложных" открытий будет меньше.
Что до мигрирующих замков/лагерей, так это маловолнующий фактор. Новый анализ делается при каждом свайпе карты.
1. проанализировал
2. если есть куда - напал, и гоуту 1
3. сдвинул карту
4. гоуту 1
ну т.е. осуществляется человекоподобная логика поиска жертв.
Тут же можно добавить проверку на наличие ифритов/суккубов с выбором нужного генерала для такой атаки или игнора таких шахт.
алгоритм сдвига можно реализовать псевдо-хаотичный. типа такого:

высылай свой скрипт на личку

gsukhado

  • Освоившийся
  • **
  • Сообщений: 66
    • Просмотр профиля
Re: Gods and glory
« Ответ #18 : Ноябрь 13, 2017, 11:20:48 pm »
Предлагаю скрипт фарма подзмелий игры Gods and glory
https://vk.com/godsandglory
Для русскоязычных игроков - группа в фейсбуке https://www.facebook.com/groups/GodsGloryRussia/

А сам код для фарма в подземельях в более универсализированном варианте у меня получился вот такой:
Код: Clickermann
  1. // Скрипт для Gods and Glory, фарм подземелий
  2. // По замечаниям и предложениям - пишите на gsukhado@yandex.ru
  3. #name "Фарм подземелий" - для универсального применения на разных компах
  4.  
  5. #define xmul(:$x_gr+INT((
  6. #define )xmul:-$x_gr)*$x_peresch)
  7. #define ymul(:$y_gr+INT((
  8. #define )ymul:-$y_gr)*$y_peresch)
  9.  
  10. // задание изменяемых переменных
  11. $avtopodb=0            // если =1 то авторасстановка ("автоподбор") войск включен
  12. $nout=1 // идентификатор компьютера (для выставления координат)
  13. $stavim_zaderhku=0 // если = 1 то срабатывают задержки, если = 2 то в двукратном размере
  14. $proverk_nalichvoisk=1 // если =1 то проверяется наличие фуллки войск
  15. $avto_naim=1            // если =1 то автоматически нанимаем какие-то войска
  16. $dlia_povtorenij=1      // если =1 то цикл по числу повторений, иначе - по заполнению полоски
  17. $chislo_povtorenij=290  // число повторений, только для цикла по числу а не по цвету
  18. $voevat_v_odinochku=1  // если =1 то при утрате войск гг пудет пытаться воевать в одиночку; иначе - запустится найм войск
  19. $vip_status=0 // =1 если есть VIP статус
  20. $berem_uskorenno=1  // = 1 удобно для быстрых компов
  21. $timer_vnachale=0 // если = 1, то запускается вначале таймер чтобы можно было убрать мышку (например если мешает TeamViewer)
  22. $pereproverka_deistvij=1 // если =1 то все действия перепроверяются; важно для слабых компов
  23.  
  24. $x_mash_ish=442
  25. $y_mash_ish=856
  26. $x_gr=6  // размер неизменяемой границы слева
  27. $y_gr=46  // размер неизменяемой границы сверху
  28.  
  29. switch($nout)   //  задание размера рабочей области
  30. case(0) // вариант для ноута-1
  31.   $x_mash_stavim=374
  32.   $y_mash_stavim=734
  33. case(1) // вариант для ноута-2
  34.   $x_mash_stavim=442
  35.   $y_mash_stavim=856
  36. case(2) // вариант для стационара
  37.   $x_mash_stavim=518
  38.   $y_mash_stavim=990
  39. case(3) // вариант для виртуалки (малое разрешение)
  40.   $x_mash_stavim=374
  41.   $y_mash_stavim=734
  42. default
  43.   print("Значение $nout какое-то странное = ", $nout)
  44. end_switch
  45.  
  46. $x_peresch=($x_mash_stavim-2*$x_gr)/($x_mash_ish-2*$x_gr)
  47. $y_peresch=($y_mash_stavim-2*$y_gr)/($y_mash_ish-2*$y_gr)
  48.  
  49.  
  50. /////////////////////////////////////////////////////////
  51. //процедура задержки для слабого ноута
  52.  
  53. sub(zaderhka, $how_long)
  54.   if($stavim_zaderhku=1)
  55.      waitms($how_long+rnd(0,80))
  56.   end_if
  57.   if($stavim_zaderhku=2)
  58.      waitms($how_long+rnd(0,80))
  59.   end_if
  60. end_sub
  61.  
  62. /////////////////////////////////////////////////////////
  63. //процедура клика с рандомным отклонением от точки клика на количество точек от -$rc до +$rc по обеим осям
  64. sub(ggclick2, $var_in_1, $var_in_2, $var_in_3)
  65.   $rc2=$var_in_3
  66.   $nx2=INT($var_in_1+rnd(0-$rc2,$rc2))
  67.   $ny2=INT($var_in_2+rnd(0-$rc2,$rc2))
  68.   move($nx2,$ny2)
  69.   ldown($nx2,$ny2)
  70.   waitms(130+rnd(0,30))
  71.   zaderhka(100)
  72.   lup($nx2,$ny2)
  73.   zaderhka(200)
  74. end_sub
  75.  
  76. /////////////////////////////////////////////////////////
  77. //  координаты атак                           /////
  78. /////////////////////////////////////////////////////////
  79. sub(koord_attack)
  80.   // координаты атак: 300, 387, 473, 560, 647. Итого разница в 87 пикселя
  81.  
  82.   // вариант 1: бьем только верхний конкретный отряд
  83.     ggclick2(xmul(370)xmul, ymul(300)ymul, 5)
  84.  
  85.   // вариант 2: бьем только нижние 4 отряда в подземелье - rnd(-1,3)
  86. //    ggclick2(xmul(370)xmul, INT(ymul(387)ymul+87*rnd(-1,3))*$y_peresch,5)
  87.  
  88.  
  89.   waitms(900+rnd(0,150))
  90. end_sub
  91.  
  92. /////////////////////////////////////////////////////////
  93. //       работа с окном                 ////////////////
  94.  
  95. sub(move_wind)
  96.  
  97.   $hwnd1=0
  98.   $hwnd1 = wndfind("BlueStacks") // получаем HWND окна Блюстака
  99.   if ($hwnd1 > 0)
  100.      print("нашли окно BlueStack = ", $hwnd1)
  101.   else
  102.      print("почему-то найти не смогли")
  103.   end_if
  104.   WNDBUMP ($hwnd1)     // Окно на передний план
  105.   WNDPOS ($hwnd1, 0, 0)  // подвинули окно в левый верхний угол
  106.  
  107.   waitms(1000+rnd(0,200))
  108.   WNDGETINFO ($hwnd1, $tmp_var1, $tmp_var2, $tmp_var3, $tmp_var4)
  109.   print("Было окно размером", $tmp_var1, "  ", $tmp_var2, " на ", $tmp_var3, "  ", $tmp_var4)
  110.  
  111.   //   waitms(500+rnd(0,200))
  112.   //   WNDSIZE($hwnd1,$x_mash_stavim,$y_mash_stavim)
  113.   //   print("Изменили")
  114.   //   waitms(700+rnd(0,200))
  115. end_sub
  116.  
  117. //////////////////////////////////////////////////////////
  118. //     наем войск                  ///
  119. ///////////////
  120. sub(naim_voisk_raboch)
  121.   ggclick2(xmul(42)xmul, ymul(774)ymul, 5)
  122.   waitms(3000+rnd(0,500))
  123.  
  124.   getscreen(xmul(78)xmul,ymul(82)ymul,xmul(163)xmul,ymul(108)ymul)
  125.   colormode(6,xmul(78)xmul,ymul(82)ymul,xmul(163)xmul,ymul(108)ymul)
  126.   if(pxl(xmul(155)xmul,ymul(95)ymul)=8339263)         // Если синий цвет - значит в поле
  127.      ggclick2(xmul(42)xmul, ymul(774)ymul, 5)  //перешли в город
  128.      waitms(3000+rnd(0,500))
  129.      getscreen(xmul(78)xmul,ymul(82)ymul,xmul(163)xmul,ymul(108)ymul)
  130.      colormode(6,xmul(78)xmul,ymul(82)ymul,xmul(163)xmul,ymul(108)ymul)
  131.      //               SCREENSHOT(["my_analiz_проверка_поле-город_2"])
  132.      zaderhka(900)
  133.      if(pxl(xmul(144)xmul,ymul(92)ymul)=4145151)         // Если красный цвет - то значит в городе
  134.         print  ("Находимся точно в городе")
  135.      else
  136.         print  ("Находимся НЕПОНЯТНО ГДЕ, ОСТАНОВ")
  137.         halt
  138.      end_if
  139.   end_if
  140.  
  141.   ggclick2(xmul(308)xmul, ymul(690)ymul, 3) //открыли "армия"
  142.   waitms(2500+rnd(0,500))
  143.   zaderhka(1300)
  144.   getscreen(xmul(60)xmul,ymul(595)ymul,xmul(375)xmul,ymul(675)ymul)
  145.   colormode(6,xmul(60)xmul,ymul(595)ymul,xmul(375)xmul,ymul(675)ymul)
  146.   waitms(2000+rnd(0,500))
  147.   zaderhka(1300)
  148.  
  149.   if((pxl(xmul(93)xmul,ymul(623)ymul)=8339263)&(pxl(xmul(123)xmul,ymul(656)ymul)=8339263))
  150.      ggclick2(xmul(108)xmul, ymul(635)ymul, 5) // вошли в казарму-1
  151.      waitms(2500+rnd(0,500))
  152.      //            ggclick2(xmul(197)xmul, ymul(518)ymul, 8) // выбрали воин с молотом (4й сверху)
  153.      ggclick2(xmul(200)xmul, ymul(573)ymul, 4) // выбрали лучников (5й сверху)
  154.  
  155.      waitms(2500+rnd(0,500))
  156.      ggclick2(xmul(340)xmul, ymul(615)ymul, 3) // нажали кнопку "Нанять"
  157.      waitms(2500+rnd(0,500))
  158.  
  159.      ggclick2(xmul(42)xmul, ymul(774)ymul, 5)  //перешли в город
  160.      waitms(2500+rnd(0,500))
  161.   end_if
  162.  
  163.   if((pxl(xmul(205)xmul,ymul(623)ymul)=8339263)&(pxl(xmul(234)xmul,ymul(656)ymul)=8339263))
  164.      ggclick2(xmul(216)xmul, ymul(635)ymul, 5) // вошли в казарму-2
  165.      waitms(2500+rnd(0,500))
  166.      //            ggclick2(xmul(210)xmul, ymul(384)ymul, 8) // выбрали ифритов (2й сверху)
  167.      //           ggclick2(xmul(210)xmul, ymul(455)ymul, 8) // выбрали клериков (3й сверху)
  168.      ggclick2(xmul(200)xmul, ymul(573)ymul, 4) // выбрали лучников (5й сверху)
  169.      waitms(2500+rnd(0,500))
  170.      ggclick2(xmul(340)xmul, ymul(615)ymul, 3) // нажали кнопку "Нанять"
  171.      waitms(2500+rnd(0,500))
  172.  
  173.      ggclick2(xmul(42)xmul, ymul(774)ymul, 5)  //перешли в город
  174.      waitms(2500+rnd(0,500))
  175.   end_if
  176.  
  177.   if((pxl(xmul(314)xmul,ymul(623)ymul)=8339263)&(pxl(xmul(344)xmul,ymul(656)ymul)=8339263))
  178.      ggclick2(xmul(327)xmul, ymul(635)ymul, 5) // вошли в казарму-3
  179.      waitms(2500+rnd(0,500))
  180.      ggclick2(xmul(200)xmul, ymul(573)ymul, 4) // выбрали лучников (5й сверху)
  181.      waitms(2500+rnd(0,500))
  182.      ggclick2(xmul(340)xmul, ymul(615)ymul, 3) // нажали кнопку "Нанять"
  183.      waitms(2500+rnd(0,500))
  184.  
  185.  
  186.      ggclick2(xmul(42)xmul, ymul(774)ymul, 5)  // открыли город
  187.      waitms(2500+rnd(0,500))
  188.   end_if
  189.   ggclick2(xmul(123)xmul, ymul(774)ymul, 5)  // перешли в подземелье
  190.   waitms(2500+rnd(0,500))
  191.  
  192.   $time_wait=3
  193.   print("поставили войска строиться, ждем ", $time_wait ," минут")
  194.   wait(60*$time_wait+rnd(0,40))
  195.  
  196. end_sub
  197.  
  198.  
  199.  
  200. /////////////////////////////////////////////////////////
  201. //      Основная подпрограмма
  202.  
  203. sub(main_farm)
  204.   // ---проверим на наличие войск в армии
  205.   getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  206.   colormode(6,0,0,xmul(440)xmul,ymul(855)ymul)
  207.   // SCREENSHOT(["my_analiz_проверка_войск_предварит"])
  208.   zaderhka(1500)
  209.   //   $gg_fill_voisk=1
  210.   //   $gg_fill_voisk=pxl(xmul(235)xmul,ymul(263)ymul)
  211.   waitms(900+rnd(0,100))
  212.  
  213.   if($avtopodb=1)
  214.      zaderhka(1000)
  215.      ggclick2(xmul(330)xmul, ymul(275)ymul, 5)  //  это "автоподбор"
  216.      waitms(400+rnd(0,100))
  217.      if($pereproverka_deistvij=1)
  218.         zaderhka(500)
  219.         ggclick2(xmul(330)xmul, ymul(275)ymul, 5)  //  для слабого ноута на всякий случай еще раз "автоподбор"
  220.         zaderhka(500)
  221.      end_if
  222.      waitms(900+rnd(0,100))
  223.      zaderhka(1000)
  224.   end_if
  225.  
  226.   zaderhka(1300)
  227.  
  228.   if($proverk_nalich_voisk=1)
  229.      getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  230.      colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  231.      // SCREENSHOT(["my_analiz_проверка_войск"])
  232.      $gg_fill_voisk=pxl(xmul(235)xmul,ymul(263)ymul)
  233.      //      if($gg_fill_voisk=4144959)         //- это цвет для colormode-6
  234.      if($gg_fill_voisk=8355711)
  235.         print("войска закончились!!!!")
  236.         waitms(3000+rnd(0,500))
  237.         if ($avto_naim = 1)     // это для автонайма войск
  238.            naim_voisk_raboch()
  239.         else
  240.            print("!!__войск НЕТ и НЕ нанимаем__!!. ОСТАНОВ")
  241.            halt
  242.         end_if
  243.         GOTO(proigrali)
  244.      end_if
  245.   end_if
  246.  
  247.   // ---Кнопка после настройки войск "Начать бой"
  248.  
  249.   zaderhka(1500)
  250.  
  251.   to_begin_boi_2:
  252.   ggclick2(xmul(370)xmul, ymul(663)ymul, 8)
  253.   // print("успешно кликнули-2")
  254.   waitms(950 + rnd(0,140))
  255.  
  256.  
  257.   if($pereproverka_deistvij=1)          // проверка для слабого ноута - что нажали Начать_бой-2 успешно
  258.      zaderhka(800)
  259.      getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  260.      colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  261.      zaderhka(800)
  262.      if(pxl(xmul(384)xmul,ymul(270)ymul)=8388479)  // это проверили по зелоному в Автоподбор
  263.         print("Не получилось, нажмем НАЧАТЬ БОЙ-2 повторно")
  264.         GOTO(to_begin_boi_2)
  265.      end_if
  266.   end_if
  267.  
  268.  
  269.   zaderhka(1000)
  270.  
  271.   getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  272.   colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  273.   //   SCREENSHOT(["my_analiz_подберите_войско"])
  274.   if((pxl(xmul(86)xmul,ymul(63)ymul)=8388479)&(pxl(xmul(309)xmul,ymul(61)ymul)=16777087)&(pxl(xmul(326)xmul,ymul(446)ymul)=16777087))    // ситуация "наберите войско используя автоподбор...или шанс крайне мал..."
  275.      // ресурс лес, ресурс пыль, кнопка назад
  276.  
  277.      if($voevat_v_odinochku=1)  // выбор что гг воюет без войск
  278.         ggclick2(xmul(150)xmul, ymul(445)ymul, 7)
  279.         waitms(2500+rnd(0,500))
  280.      else
  281.         ggclick2(xmul(296)xmul, ymul(445)ymul, 7)
  282.         waitms(2500+rnd(0,500))
  283.  
  284.         naim_voisk()
  285.         GOTO(proigrali)
  286.      end_if
  287.   end_if
  288.  
  289.   // ---Кнопка после появления противника "Начать бой"
  290.  
  291.   to_begin_boi_3:
  292.   zaderhka(1000)
  293.   ggclick2(xmul(220)xmul, ymul(690)ymul, 6)
  294.   // print("успешно кликнули-3 (начали бой)")
  295.  
  296.   zaderhka(1000)
  297.   if($pereproverka_deistvij=1)          // проверка для слабого ноута - что нажали Начать_бой-2 успешно
  298.      zaderhka(500)
  299.      getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  300.      colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  301.      zaderhka(1200)
  302.      if(pxl(xmul(278)xmul,ymul(689)ymul)=16744319)  // это проверили по синему в кнопке Начать бой
  303.         print("Не получилось, нажмем НАЧАТЬ БОЙ-3 повторно")
  304.         GOTO(to_begin_boi_3)
  305.      end_if
  306.   end_if
  307.   // ---Ожидание конца боя
  308.  
  309.   waitms(1000+rnd(0,200))
  310.   getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  311.   colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  312.   //   SCREENSHOT(["my_analiz_начало_боя_7_"])
  313.   zaderhka(1000)
  314.   print("бой идет", pxl(xmul(360)xmul,ymul(565)ymul))
  315.   while(((pxl(xmul(360)xmul,ymul(565)ymul)!8355711)|(pxl(xmul(245)xmul,ymul(565)ymul)!8355711))&(pxl(xmul(295)xmul,ymul(414)ymul)!16744319))
  316.      waitms(3000+rnd(0,300))
  317.      zaderhka(3000)
  318.      // print("бой идет",pxl(xmul(360)xmul,ymul(565)ymul))
  319.  
  320.      getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  321.      colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  322.      zaderhka(800)
  323.   end_cyc
  324.  
  325.   zaderhka(1000)
  326.   if(pxl(xmul(295)xmul,ymul(414)ymul)=16744319)   //проверка поражения
  327.      print("бой - поражение")
  328.      waitms(200+rnd(0,100))
  329.      ggclick2(xmul(221)xmul, ymul(406)ymul, 7)
  330.  
  331.      to_povtor_porazhenie:
  332.      zaderhka(1000)
  333.      if($pereproverka_deistvij=1)          // проверка для слабого ноута - что нажали успешно
  334.         zaderhka(500)
  335.         getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  336.         colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  337.         zaderhka(800)
  338.         if(pxl(xmul(295)xmul,ymul(414)ymul)=16744319)  // это проверили наличие поражения
  339.            print("Не получилось, нажмем после поражения повторно")
  340.            GOTO(to_povtor_porazhenie)
  341.         end_if
  342.      end_if
  343.  
  344.  
  345.      goto(proigrali)
  346.   end_if
  347.  
  348.   zaderhka(1000)
  349.   // ---Выбор сундука; сундуки на 60, 136, 209, 283, 360, т.е. интервал 75
  350.   $sund_num=rnd(1,5)
  351.   ggclick2((xmul(60)xmul+($sund_num-1)*75*$x_peresch), ymul(502)ymul, 7)
  352.   print("Взяли сундук номер ", $sund_num)
  353.   waitms(100 + rnd(0,50))
  354.   zaderhka(1200)
  355.   if ($berem_uskorenno=1)
  356.      ggclick2((xmul(60)xmul+($sund_num-1)*75*$x_peresch), ymul(502)ymul, 7)
  357.      waitms(400 + rnd(0,50))
  358.   else
  359.      waitms(3000 + rnd(0,500))
  360.   end_if
  361.  
  362.   zaderhka(3000)
  363.  
  364.   if ($vip_status=1)
  365.      $sund_num2=rnd(1,5)
  366.      waitms(200 + rnd(0,100))
  367.      zaderhka(300)
  368.      while($sund_num2=$sund_num)
  369.         $sund_num2=rnd(1,5)
  370.      end_cyc
  371.      waitms(200 + rnd(0,100))
  372.      ggclick2((xmul(60)xmul+($sund_num2-1)*75*$x_peresch), ymul(502)ymul, 7)
  373.      print("Взяли сундук номер ", $sund_num2)
  374.      zaderhka(4200)
  375.      waitms(150 + rnd(0,50))
  376.      if ($berem_uskorenno=1)
  377.         ggclick2((xmul(60)xmul+($sund_num-1)*75*$x_peresch), ymul(502)ymul, 7)
  378.         waitms(450 + rnd(0,50))
  379.      else
  380.         waitms(3000 + rnd(0,500))
  381.      end_if
  382.   end_if
  383.  
  384.   zaderhka(5000)
  385.  
  386.   // ---Кнопка "Закрыть"
  387.  
  388.   to_povtor_sunduki:
  389.   waitms(800 + rnd(0,50))
  390.  
  391.   if($pereproverka_deistvij=1)          // проверка для слабого ноута - что взяли сундуки
  392.      zaderhka(500)
  393.      getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  394.      colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  395.      zaderhka(800)
  396.      if((pxl(xmul(154)xmul,ymul(561)ymul)=8388479)&(pxl(xmul(50)xmul,ymul(556)ymul)=8388479))  // это проверили что слева зеленое "Открыть все"
  397.  
  398.         if(pxl(xmul(256)xmul,ymul(564)ymul)=8355711)  // это проверили что справа "Закрыть" серое
  399.            ggclick2((xmul(60)xmul, ymul(502)ymul, 7)
  400.            waitms(1600+rnd(0,100))
  401.            ggclick2((xmul(136)xmul, ymul(502)ymul, 7)
  402.            waitms(1600+rnd(0,100))
  403.            ggclick2((xmul(209)xmul, ymul(502)ymul, 7)
  404.            waitms(1600+rnd(0,100))
  405.            ggclick2((xmul(283)xmul, ymul(502)ymul, 7)
  406.            waitms(1600+rnd(0,100))
  407.            ggclick2((xmul(360)xmul, ymul(502)ymul, 7)
  408.            waitms(1600+rnd(0,100))
  409.            print("Еще раз попробовали открыть сундуки")
  410.            GOTO(to_povtor_sunduki)
  411.         end_if
  412.  
  413.      end_if
  414.   end_if
  415.  
  416.  
  417.   to_povtor_zakrytie:
  418.   zaderhka(1000)
  419.   ggclick2(xmul(290)xmul, ymul(560)ymul, 7)
  420.   print("Закрыли окно")
  421.  
  422.   if($pereproverka_deistvij=1)          // проверка для слабого ноута - что нажали успешно
  423.      zaderhka(500)
  424.      getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  425.      colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  426.      zaderhka(800)
  427.  
  428.      if((pxl(xmul(154)xmul,ymul(561)ymul)=8388479)&(pxl(xmul(50)xmul,ymul(556)ymul)=8388479)&(pxl(xmul(245)xmul,ymul(558)ymul)=16744319))  // это проверили что слева "Открыть все" зеленая, а справа "Закрыть" синяя"
  429.         print("Не получилось, нажмем на закрытие повторно")
  430.         GOTO(to_povtor_zakrytie)
  431. end_if
  432.   end_if
  433.  
  434.  
  435.   proigrali:
  436.   waitms(800+rnd(0,100))
  437. end_sub
  438.  
  439.  
  440. /////////////////////////////////////////////////////////
  441. //       main part основная часть       ////////////////
  442. ////////////////////////////////////////////////////////
  443.  
  444. if($timer_vnachale=1)
  445.   print("===========================")
  446.   print("таймер убрать мышку")
  447.   $ubrat_mysh_MAX=15
  448.   for($ubrat_mysh=1, $ubrat_mysh<$ubrat_mysh_MAX, 2)
  449.      wait(2)
  450.      print("таймер убрать мышку, осталось=", $ubrat_mysh_MAX-$ubrat_mysh)
  451.   end_cyc
  452. end_if
  453.  
  454. print("===========================")
  455. print("Начинаем фармить подземелье")
  456.  
  457. UNDEFINE ($gogs)
  458. DEFINE ($gogs, 1)
  459. move_wind() // подпрограмма чтобы окно сдвинуть в (0,0)
  460.  
  461. // если надо сделать оперативный скриншот текущего состояния:
  462. // getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  463. // colormode(6,0,0,xmul(440)xmul,ymul(855)ymul)
  464. // SCREENSHOT(["my_analiz_Тест_6_"])
  465. // colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  466. // SCREENSHOT(["my_analiz_Тест_7_"])
  467. // waitms(2000+rnd(0,200))
  468. // print("ОСТАНОВ")
  469. // halt
  470.  
  471. getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  472. colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  473. zaderhka(1300)
  474.  
  475. if ($dlia_povtorenij=1)
  476.   print("Вариант для конкретного числ повторений")
  477.   for ($gogs, $gogs < $chislo_povtorenij, 1)
  478.      print("Задали начало цикла, цикл номер= ", $gogs)
  479.      waitms(200+rnd(0,50))
  480.      zaderhka(1300)
  481.      to_koord_attack_povtor:
  482.      koord_attack()
  483.      waitms(200+rnd(0,50)
  484.      if($pereproverka_deistvij=1)
  485.         zaderhka(700)
  486.         getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  487.         colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  488.         zaderhka(700)
  489.         if(pxl(xmul(405)xmul,ymul(300)ymul)=8388479)
  490.            print("Не получилось, нажмем НАЧАТЬ БОЙ-1 повторно")
  491.            GOTO(to_koord_attack_povtor)
  492. end_if
  493.      end_if
  494.  
  495.      zaderhka(1300)
  496.      main_farm()
  497.      zaderhka(1300)
  498.      waitms(200+rnd(0,50))
  499.   end_cyc
  500.  
  501. else
  502.   print("Вариант для заполнения полоски")
  503.   while(pxl(xmul(330)xmul,ymul(212)ymul)=8355711)
  504.      $gogs=$gogs+1
  505.      print("Задали начало цикла, цикл номер= ", $gogs-1)
  506.      waitms(1000+rnd(0,200))
  507.  
  508.      koord_attack()
  509.      main_farm()
  510.  
  511.      getscreen(0,0,xmul(440)xmul,ymul(855)ymul)
  512.      colormode(7,0,0,xmul(440)xmul,ymul(855)ymul)
  513.      // SCREENSHOT(["my_analiz_для_продолжения_цикла"])
  514.      print("цвет для продолжение цикла-2 (продолжаем если 8355711)= ", pxl(xmul(330)xmul,ymul(212)ymul))
  515.      waitms(2000+rnd(0,200))
  516.   end_cyc
  517.  
  518. end_if
  519. //конец цикла, если очки набрались
  520. print("мы у цели, дальше самостоятельно")
  521. print("!!____!!")
  522. halt
  523.  
  524.  
« Последнее редактирование: Ноябрь 13, 2017, 11:36:48 pm от gsukhado »

gsukhado

  • Освоившийся
  • **
  • Сообщений: 66
    • Просмотр профиля
Re: Gods and glory
« Ответ #19 : Ноябрь 17, 2017, 10:39:51 pm »
А вот это существенно более сложный алгоритм - уже для фарма наземных шахт. Постарался максимально закомментировать, чтобы было понятно какие настройки за что отвечают
...опс, "Сообщение превышает максимально допустимую длину (20000 знаков)", кодом вставить не получается, поэтому вставляю только начало и прилагается файлом

Код: Clickermann
  1. #name "Фарм Наземный - поштучное распознавание"
  2. // Скрипт для Gods and Glory, фарм наземных шахт
  3. // По замечаниям и предложениям - пишите на gsukhado@yandex.ru
  4.  
  5. #define xmul(:$x_gr_new+INT((
  6. #define )xmul:-$x_gr_ish)*$x_peresch)
  7. #define ymul(:$y_gr+INT((
  8. #define )ymul:-$y_gr)*$y_peresch)
  9.  
  10. //   Изменяемые переменные
  11. $glob_map_SUMMARNO=50000 // общее число повторений работы по карте
  12. //$glob_map_for_centrirovanie_MAX_1=15 // как часто прыгаем в начало, минимальное значение
  13. //$glob_map_for_centrirovanie_MAX_2=20 // как часто прыгаем в начало, максимальное значение
  14. $max_lvl_shaht=15 // максимальный уровень шахт, которые можем атаковать
  15. $verojatn_proverki_voisk=3 // доля вероятности проверки войск, чем выше - тем реже проверяем
  16. $rezhim_obuchenia=-1 // если =1 то дается больше времени на ввод цифры, если =2 то вообще все смотрим без атак, если = -1 то атакуем все без проверок уровня
  17. $zadania_berem=0 // обычно =1 но на случай если надо сутки не брать задания
  18. $verojatn_zadania_berem=4 // доля вероятности брать задания, чем выше - тем реже проверяем
  19. $menshe_etogo_nabirat_voiska=690
  20. $delaem_poisk_monet=1
  21. $podtv_zavershenie_MAX=2 // количество экранов с уже собранными монетами
  22. $tsentriruem_po_citadel_OR_alians=1 // если =1 то центрирование по цитадели, иначе - по альянсу
  23. $nout=1 // номер компа для задания размеров рабочей области (для выставления координат)
  24.  
  25. $x_mash_ish=442
  26. $y_mash_ish=856
  27. $x_gr_ish=6  // размер неизменяемой границы слева
  28. if($nout=4)
  29. $x_gr_new=36
  30. else
  31. $x_gr_new=6
  32. end_if
  33. $y_gr=46  // размер неизменяемой границы сверху
  34.  
  35. switch($nout)
  36. case(0) // вариант для ноута-1
  37.   $x_mash_stavim=374
  38.   $y_mash_stavim=734
  39. case(1) // вариант для ноута-2
  40.   $x_mash_stavim=442
  41.   $y_mash_stavim=856
  42. case(2) // вариант для стационара
  43.   $x_mash_stavim=518
  44.   $y_mash_stavim=990
  45. case(3) // вариант для виртуалки для ноута (малое разрешение)
  46.   $x_mash_stavim=374
  47.   $y_mash_stavim=734
  48. default
  49.   print("Значение $nout какое-то странное = ", $nout)
  50. end_switch
  51.  
  52. $x_peresch=($x_mash_stavim-2*$x_gr_new)/($x_mash_ish-2*$x_gr_ish)
  53. $y_peresch=($y_mash_stavim-2*$y_gr)/($y_mash_ish-2*$y_gr)
  54.  
  55. //на случай если надо быстро сделать скрин экрана
  56. //print("Тестовый скрин начали")
  57. //waitms(1700+rnd(0,200))
  58. //getscreen()
  59. //colormode(6)
  60. //SCREENSHOT(["my_analiz-Тестовый__6_"])
  61. //colormode(7)
  62. //SCREENSHOT(["my_analiz-Тестовый__7_"])
  63. //print("Тестовый скрин Завершили. ОСТАНОВ")
  64. /halt
  65.  
  66. ////////////////////////////////////////////////////////////////////////////////
  67. //////////  описание важных подпрограмм                                            ////
  68. ////////////////////////////////////////////////////////////////////////////////
  69. //lines($x1_text,$y1_text,$x2_text,$y2_text) // определяет координаты строк
  70. //ответ - массивы   $x1_line_arr,$y1_line_arr,$x2_line_arr,$y2_line_arr
  71. /////////
  72. //pos_size($x1_line,$y1_line,$x2_line,$y2_line) // координаты и количество символов
  73. //ответ - массивы  $x1_char_arr,$y1_char_arr,$x2_char_arr,$y2_char_arr
  74. ////////
  75. //shape($x1_char,$y1_char,$x2_char,$y2_char)  //очертание каждого символа
  76. //ответ - строка очертания вида  01110311112042200240~
  77. ////////
  78. //reader($shape)  //обучение и распознавание
  79. //если цифра не распознана, то вылезет окно ввода, где нужно вписать нужную цифру, на эту цифру указывает курсор.
  80. //ответ - строка $all_str
  81.  
  82.  
  83. ////////////////////////////////////////////////////////////////////////////////
  84. //==============================================================================
  85. //процедура клика с рандомным отклонением от точки клика на количество точек от 0 до $rc по обеим осям
  86. //======
  87.  
  88. sub(ggclick2, $var_in_1, $var_in_2, $var_in_3)
  89.   $rc2=$var_in_3
  90.   $nx2=INT($var_in_1+2*rnd(0-$rc2,$rc2)) //горизонтально двукратное отклонение
  91.   $ny2=INT($var_in_2+rnd(0-$rc2,$rc2))
  92.   // print("Задали значения клика: nx2=", $nx2, "(при вход.=", $var_in_1,") ny2=", $ny2,"(при вход.=", $var_in_2,") rc2=", $rc2)
  93.   move($nx2,$ny2)
  94.   ldown($nx2,$ny2)
  95.   waitms(80+rnd(0,60))
  96.   lup($nx2,$ny2)
  97. end_sub
  98.  
  99. sub(ggclick1, $var_in_1, $var_in_2, $var_in_3)
  100.   $rc1=$var_in_3
  101.   $nx1=INT($var_in_1+rnd(0-$rc1,$rc1))  //горизонтально однократное отклонение
  102.   $ny1=INT($var_in_2+rnd(0-$rc1,$rc1))
  103.   // print("Задали значения клика: nx2=", $nx2, "(при вход.=", $var_in_1,") ny2=", $ny2,"(при вход.=", $var_in_2,") rc2=", $rc2)
  104.   move($nx1,$ny1)
  105.   //   print("клик на: ", $nx1, " " , $ny1)       //проверка что работаем в нужной точке
  106.   waitms(400+rnd(0,60))
  107.   ldown($nx1,$ny1)
  108.   waitms(80+rnd(0,60))
  109.   lup($nx1,$ny1)
  110. end_sub
  111.  
  112. /////////////////////////////////////////////////////////
  113. //       работа с окном                 ////////////////
  114.  
  115. sub(move_wind)
  116.   $hwnd1=0
  117.   $hwnd1 = wndfind("BlueStacks") // получаем HWND окна Блюстака
  118.   if ($hwnd1 > 0)
  119.      print("нашли окно BlueStack = ", $hwnd1)
  120.   else
  121.      print("почему-то найти не смогли")
  122.   end_if
  123.   WNDBUMP ($hwnd1)     // Окно на передний план
  124.   WNDPOS ($hwnd1, 0, 0)  // подвинули окно в левый верхний угол
  125.  
  126.   waitms(1000+rnd(0,200))
  127.   WNDGETINFO ($hwnd1, $tmp_var1, $tmp_var2, $tmp_var3, $tmp_var4)
  128.   print("Окно размером", $tmp_var1, "  ", $tmp_var2, " на ", $tmp_var3, "  ", $tmp_var4)
  129.   waitms(600+rnd(0,50))
  130.   WNDSIZE($hwnd1,$x_mash_stavim,$y_mash_stavim)
  131.  
  132.   //WNDSIZE($hwnd1,370,734)
  133.   print("изменили размер окна")
  134.   waitms(200+rnd(0,20))
  135.   //WNDGETINFO ($hwnd1, $tmp_var1, $tmp_var2, $tmp_var3, $tmp_var4)
  136.   //print("окно", $tmp_var1, "  ", $tmp_var2)
  137.   //print("на ", $tmp_var3, "  ", $tmp_var4)
  138.   //halt
  139.  
  140. end_sub
  141. //==============================================================================
  142. ////////////////////////////////////////////////////////////////////////////////
  143. /////////разбивает текст на строки//////////////////////////////////////////////
  144. ////////////////////////////////////////////////////////////////////////////////
  145.  
  146. SUB(lines,$x1_text,$y1_text,$x2_text,$y2_text)
  147.   UNDEFINE ($x1_line_arr)
  148.   UNDEFINE ($y1_line_arr)
  149.   UNDEFINE ($x2_line_arr)
  150.   UNDEFINE ($y2_line_arr)
  151.   //      print("===>подпрогр Lines")
  152.  
  153.  
  154.  
  155.   IF(PXLCOUNT($x1_text,$y1_text,$x1_text,$y2_text,$char_color)=($y2_text-$y1_text+1))
  156.      print("...(первый столбец забит фоном, НЕ учитывается)")
  157.      while(PXLCOUNT($x1_text,$y1_text,$x1_text,$y2_text,$char_color)=($y2_text-$y1_text+1))
  158.         inc($x1_text)
  159.         //         print("увеличиваем $x1_text= ", $x1_text , " при $x2_text= ", $x2_text)
  160.      END_CYC
  161.      if (($x1_text+3)>$x2_text)   //т.е. вообще везде какие-то помехи
  162.         $uspeh_raspoznav=0
  163.         GOTO(to_end_lines)
  164.      end_if
  165.   END_IF
  166.  
  167.  
  168.  
  169.   IF_PIXEL_IN($x1_text,$y1_text, $x1_text,$y2_text, $char_color)
  170.      print("...(текст не влазит в границы распознавания слева)")
  171.      $uspeh_raspoznav=0
  172.      GOTO(to_end_lines)
  173.   END_IF
  174.  
  175.   IF_PIXEL_IN($x2_text,$y1_text, $x2_text,$y2_text, $char_color)
  176.      print("...(текст не влазит в границы распознавания справа)")
  177.      $uspeh_raspoznav=0
  178.      GOTO(to_end_lines)
  179.   END_IF
  180.  
  181.   IF(PXLCOUNT($x1_text,$y1_text,$x2_text,$y1_text,$back_color)<($x2_text-$x1_text+1))
  182.      print("...(первая строка обрезана, НЕ учитывается)") // в т.ч. скидывает помехи?
  183.      while(PXLCOUNT($x1_text,$y1_text,$x2_text,$y1_text,$back_color)<($x2_text-$x1_text+1))
  184.         inc($y1_text)
  185.         //         print("увеличиваем $y1_text= ", $y1_text , " при $y2_text= ", $y2_text)
  186.      END_CYC
  187.      if (($y1_text+$h_str-2)>$y2_text)   //т.е. вообще везде какие-то помехи
  188.         $uspeh_raspoznav=0
  189.         GOTO(to_end_lines)
  190.      end_if
  191.   END_IF
  192.  
  193.   //   print("начинаем глючный $y1_text= ", $y1_text , " $y2_text= ", $y2_text)
  194.  
  195.   while($y1_text<$y2_text)
  196.      //      print("исходное $y1_text= ", $y1_text, " и $y2_text=", $y2_text)
  197.      while((PXLCOUNT($x1_text,$y1_text,$x2_text,$y1_text,$back_color)=($x2_text-$x1_text+1))&($y1_text<$y2_text))
  198.         inc($y1_text)
  199.         //         print("увеличиваем $y1_text= ", $y1_text , " при $y2_text= ", $y2_text)
  200.      END_CYC
  201.      //            print("взяли для границ цифр $y1_text= ", $y1_text)
  202.      //      SCREENSHOTEX($x1_text,$y1_text,$x2_text,$y2_text, ["my_analiz_кол-во войск_- верхняя граница"])
  203.  
  204.      IF($y1_text<$y2_text)
  205.         arrpush($x1_line_arr, $x1_text)
  206.         arrpush($y1_line_arr, $y1_text)
  207.  
  208.         $h_str_temp=0
  209.         while(($h_str_temp<$h_str)&($y1_text<$y2_text))
  210.            //           print("вошли в цикл $h_str_temp= ", $h_str_temp)
  211.            while(((PXLCOUNT($x1_text,$y1_text,$x2_text,$y1_text,$back_color))<($x2_text-$x1_text+1))&($y1_text<$y2_text))
  212.               inc($y1_text)
  213.               inc($h_str_temp)
  214.  
  215.            END_CYC
  216.            //                        print("сюда дошли?_ $h_str_temp=", $h_str_temp, " $h_str=", $h_str, " $y1_text=", $y1_text, " $y2_text=", $y2_text)      
  217.            IF(($h_str_temp<$h_str)&($y1_text<$y2_text))
  218.  
  219.               while((PXLCOUNT($x1_text,$y1_text,$x2_text,$y1_text,$back_color)=($x2_text-$x1_text+1))&($y1_text<$y2_text))
  220.                  inc($y1_text)
  221.  
  222.               END_CYC
  223.               $h_str_temp = 0
  224.               $del_arr = arrpop($x1_line_arr)
  225.               $del_arr = arrpop($y1_line_arr)
  226.               arrpush($x1_line_arr, $x1_text)
  227.               arrpush($y1_line_arr, $y1_text)
  228.            END_IF
  229.         END_CYC
  230.      END_IF
  231.      //      print("после if ?")
  232.  
  233.      IF(PXLCOUNT($x1_text,$y1_text,$x2_text,$y1_text,$back_color)=($x2_text-$x1_text+1))
  234.         arrpush($x2_line_arr, $x2_text)
  235.         arrpush($y2_line_arr, $y1_text-1)
  236.      else
  237.         print("...(последняя строка обрезана, НЕ учитывается)")
  238.         $del_arr = arrpop($x1_line_arr)
  239.         $del_arr = arrpop($y1_line_arr)
  240.      END_IF
  241.   END_CYC
  242.  
  243.   //   print("итог Lines- количество строк = ",arrsize($x1_line_arr))
  244.  
  245.   // координаты в лог и скрины
  246.   //FOR($a=0,$a<arrsize($x1_line_arr))
  247.   //      print($x1_line_arr[$a]," ",$y1_line_arr[$a]," ",$x2_line_arr[$a]," ",$y2_line_arr[$a])
  248.   //   SCREENSHOTEX($x1_line_arr[$a],$y1_line_arr[$a],$x2_line_arr[$a],$y2_line_arr[$a], ["подпрогр_Lines_скрин_итога_"])
  249.   //END_CYC
  250.  
  251.   IF(arrsize($x1_line_arr)=0)
  252.      print("...(текста не найдено)")
  253.      $uspeh_raspoznav=0
  254.      GOTO(to_end_lines)
  255.   END_IF
  256.  
  257.   to_end_lines:
  258.  
  259. END_SUB
  260. ////////////////////////////////////////////////////////////////////////////////
  261.  
  262. ////////////////////////////////////////////////////////////////////////////////
  263. /////////размер и количество символов в строке//////////////////////////////////
  264. ////////////////////////////////////////////////////////////////////////////////
  265. SUB(pos_size,$x1_line,$y1_line,$x2_line,$y2_line)
  266.   //   print("===>подпрогр pos_size")
  267.   UNDEFINE ($x1_char_arr)
  268.   UNDEFINE ($y1_char_arr)
  269.   UNDEFINE ($x2_char_arr)
  270.   UNDEFINE ($y2_char_arr)
  271.  
  272.  
  273.   FOR($x1_line_temp=$x1_line,$x1_line_temp<$x2_line+1)
  274.      FOR($y1_line_temp=$y1_line,$y1_line_temp<$y2_line+1)
  275.         IF(pxl($x1_line_temp,$y1_line_temp)=$char_color)
  276.            arrpush($x1_char_arr,$x1_line_temp)
  277.            while(PXLCOUNT($x1_line_temp,$y1_line,$x1_line_temp,$y2_line,$back_color)<$y2_line-$y1_line+1)
  278.               inc($x1_line_temp)
  279.            END_CYC
  280.            arrpush($x2_char_arr,$x1_line_temp-1)
  281.         END_IF
  282.      END_CYC
  283.   END_CYC
  284.  
  285.   FOR($i_char=0,$i_char<arrsize($x1_char_arr))
  286.      SCANPXL ($pix_temp,$x1_char_arr[$i_char],$y1_line,$x2_char_arr[$i_char],$y2_line,$char_color)
  287.      arrpush($y1_char_arr,$pix_temp[1])
  288.      arrpush($y2_char_arr,$pix_temp[arrsize($pix_temp)-1])
  289.      UNDEFINE ($pix_temp)
  290.   END_CYC
  291.  
  292.  
  293.   //   print("количество символов в строке - ",arrsize($x1_char_arr))
  294.  
  295.   //скрины каждого символа
  296.   //   FOR($a=0,$a<arrsize($x1_char_arr))
  297.   //      SCREENSHOTEX($x1_char_arr[$a],$y1_char_arr[$a],$x2_char_arr[$a],$y2_char_arr[$a], ["подпр_Pos_size_очертание_символа_"])
  298.   //   END_CYC
  299.  
  300. END_SUB
  301. ////////////////////////////////////////////////////////////////////////////////
  302.  
  303.  
  304. ////////////////////////////////////////////////////////////////////////////////
  305. ////////////////очертание символов//////////////////////////////////////////////
  306. ////////////////////////////////////////////////////////////////////////////////
  307. SUB(shape,$x1_char,$y1_char,$x2_char,$y2_char)
  308.   //   print("===>подпрогр shape")
  309.   UNDEFINE($left_1)
  310.   UNDEFINE($left_2)
  311.   UNDEFINE($left_3)
  312.   UNDEFINE($left_4)
  313.   UNDEFINE($left_5)
  314.   UNDEFINE($right_1)
  315.   UNDEFINE($right_2)
  316.   UNDEFINE($right_3)
  317.   UNDEFINE($right_4)
  318.   UNDEFINE($right_5)
  319.   UNDEFINE($up_1)
  320.   UNDEFINE($up_2)
  321.   UNDEFINE($up_3)
  322.   UNDEFINE($up_4)
  323.   UNDEFINE($up_5)
  324.   UNDEFINE($down_1)
  325.   UNDEFINE($down_2)
  326.   UNDEFINE($down_3)
  327.   UNDEFINE($down_4)
  328.   UNDEFINE($down_5)
  329.  
  330.   //лево
  331.   FOR($temp=$x1_char,(pxl($temp,$y2_char)!$char_color)&($temp<$x2_char))
  332.      inc($left_1)
  333.   END_CYC
  334.   $left_1 = ROUND($left_1/($x2_char-$x1_char+1)/$accur,-1)*10
  335.   IF($left_1 > 9)
  336.      $left_1 = 9
  337.   END_IF
  338.   FOR($temp=$x1_char,(pxl($temp,$y2_char-ROUND(($y2_char-$y1_char)/4,0))!$char_color)&($temp<$x2_char))
  339.      inc($left_2)
  340.   END_CYC
  341.   $left_2 = ROUND($left_2/($x2_char-$x1_char+1)/$accur,-1)*10
  342.   IF($left_2 > 9)
  343.      $left_2 = 9
  344.   END_IF
  345.   FOR($temp=$x1_char,(pxl($temp,$y2_char-ROUND(($y2_char-$y1_char)/2,0))!$char_color)&($temp<$x2_char))
  346.      inc($left_3)
  347.   END_CYC
  348.   $left_3 = ROUND($left_3/($x2_char-$x1_char+1)/$accur,-1)*10
  349.   IF($left_3 > 9)
  350.      $left_3 = 9
  351.   END_IF
  352.   FOR($temp=$x1_char,(pxl($temp,$y1_char+ROUND(($y2_char-$y1_char)/4,0))!$char_color)&($temp<$x2_char))
  353.      inc($left_4)
  354.   END_CYC
  355.   $left_4 = ROUND($left_4/($x2_char-$x1_char+1)/$accur,-1)*10
  356.   IF($left_4 > 9)
  357.      $left_4 = 9
  358.   END_IF
  359.   FOR($temp=$x1_char,(pxl($temp,$y1_char)!$char_color)&($temp<$x2_char))
  360.      inc($left_5)
  361.   END_CYC
  362.   $left_5 = ROUND($left_5/($x2_char-$x1_char+1)/$accur,-1)*10
  363.   IF($left_5 > 9)
  364.      $left_5 = 9
  365.   END_IF
  366.  
  367.   //право
  368.   FOR($temp=$x2_char,(pxl($temp,$y2_char)!$char_color)&($temp>$x1_char),-1)
  369.      inc($right_1)
  370.   END_CYC
  371.   $right_1 = $right_1 + (int(($y2_char-$y1_char+1)/2)-($x2_char-$x1_char))
  372.   $right_1 = ROUND($right_1/(int(($y2_char-$y1_char+1)/2))/$accur,-1)*10
  373.   IF($right_1 > 9)
  374.      $right_1 = 9
  375.   END_IF
  376.   FOR($temp=$x2_char,(pxl($temp,$y2_char-ROUND(($y2_char-$y1_char)/4,0))!$char_color)&($temp>$x1_char),-1)
  377.      inc($right_2)
  378.   END_CYC
  379.   $right_2 = $right_2 + (int(($y2_char-$y1_char+1)/2)-($x2_char-$x1_char))
  380.   $right_2 = ROUND($right_2/(int(($y2_char-$y1_char+1)/2))/$accur,-1)*10
  381.   IF($right_2 > 9)
  382.      $right_2 = 9
  383.   END_IF
  384.   FOR($temp=$x2_char,(pxl($temp,$y2_char-ROUND(($y2_char-$y1_char)/2,0))!$char_color)&($temp>$x1_char),-1)
  385.      inc($right_3)
  386.   END_CYC
  387.   $right_3 = $right_3 + (int(($y2_char-$y1_char+1)/2)-($x2_char-$x1_char))
  388.   $right_3 = ROUND($right_3/(int(($y2_char-$y1_char+1)/2))/$accur,-1)*10
  389.   IF($right_3 > 9)
  390.      $right_3 = 9
  391.   END_IF
  392.   FOR($temp=$x2_char,(pxl($temp,$y1_char+ROUND(($y2_char-$y1_char)/4,0))!$char_color)&($temp>$x1_char),-1)
  393.      inc($right_4)
  394.   END_CYC
  395.   $right_4 = $right_4 + (int(($y2_char-$y1_char+1)/2)-($x2_char-$x1_char))
  396.   $right_4 = ROUND($right_4/(int(($y2_char-$y1_char+1)/2))/$accur,-1)*10
  397.   IF($right_4 > 9)
  398.      $right_4 = 9
  399.   END_IF
  400.   FOR($temp=$x2_char,(pxl($temp,$y1_char)!$char_color)&($temp>$x1_char),-1)
  401.      inc($right_5)
  402.   END_CYC
  403.   $right_5 = $right_5 + (int(($y2_char-$y1_char+1)/2)-($x2_char-$x1_char))
  404.   $right_5 = ROUND($right_5/(int(($y2_char-$y1_char+1)/2))/$accur,-1)*10
  405.   IF($right_5 > 9)
  406.      $right_5 = 9
  407.   END_IF
  408.  
  409.   //верх
  410.   FOR($temp=$y1_char,(pxl($x1_char,$temp)!$char_color)&($temp<$y2_char))
  411.      inc($up_1)
  412.   END_CYC
  413.   $up_1 = ROUND($up_1/($y2_char-$y1_char+1)/$accur,-1)*10
  414.   IF($up_1 > 9)
  415.      $up_1 = 9
  416.   END_IF
  417.   FOR($temp=$y1_char,(pxl($x1_char+ROUND(($x2_char-$x1_char)/4,0),$temp)!$char_color)&($temp<$y2_char))
  418.      inc($up_2)
  419.   END_CYC
  420.   $up_2 = ROUND($up_2/($y2_char-$y1_char+1)/$accur,-1)*10
  421.   IF($up_2 > 9)
  422.      $up_2 = 9
  423.   END_IF
  424.   FOR($temp=$y1_char,(pxl($x1_char+ROUND(($x2_char-$x1_char)/2,0),$temp)!$char_color)&($temp<$y2_char))
  425.      inc($up_3)
  426.   END_CYC
  427.   $up_3 = ROUND($up_3/($y2_char-$y1_char+1)/$accur,-1)*10
  428.   IF($up_3 > 9)
  429.      $up_3 = 9
  430.   END_IF
  431.   FOR($temp=$y1_char,(pxl($x2_char-ROUND(($x2_char-$x1_char)/4,0),$temp)!$char_color)&($temp<$y2_char))
  432.      inc($up_4)
  433.   END_CYC
  434.   $up_4 = ROUND($up_4/($y2_char-$y1_char+1)/$accur,-1)*10
  435.   IF($up_4 > 9)
  436.      $up_4 = 9
  437.   END_IF
  438.   FOR($temp=$y1_char,(pxl($x2_char,$temp)!$char_color)&($temp<$y2_char))
  439.      inc($up_5)
  440.   END_CYC
  441.   $up_5 = ROUND($up_5/($y2_char-$y1_char+1)/$accur,-1)*10
  442.   IF($up_5 > 9)
  443.      $up_5 = 9
  444.   END_IF
  445.  
  446.   //низ
  447.   FOR($temp=$y2_char,(pxl($x1_char,$temp)!$char_color)&($temp>$y1_char),-1)
  448.      inc($down_1)
  449.   END_CYC
  450.   $down_1 = ROUND($down_1/($y2_char-$y1_char+1)/$accur,-1)*10
  451.   IF($down_1 > 9)
  452.      $down_1 = 9
  453.   END_IF
  454.   FOR($temp=$y2_char,(pxl($x1_char+ROUND(($x2_char-$x1_char)/4,0),$temp)!$char_color)&($temp>$y1_char),-1)
  455.      inc($down_2)
  456.   END_CYC
  457.   $down_2 = ROUND($down_2/($y2_char-$y1_char+1)/$accur,-1)*10
  458.   IF($down_2 > 9)
  459.      $down_2 = 9
  460.   END_IF
  461.   FOR($temp=$y2_char,(pxl($x1_char+ROUND(($x2_char-$x1_char)/2,0),$temp)!$char_color)&($temp>$y1_char),-1)
  462.      inc($down_3)
  463.   END_CYC
  464.   $down_3 = ROUND($down_3/($y2_char-$y1_char+1)/$accur,-1)*10
  465.   IF($down_3 > 9)
  466.      $down_3 = 9
  467.   END_IF
  468.   FOR($temp=$y2_char,(pxl($x2_char-ROUND(($x2_char-$x1_char)/4,0),$temp)!$char_color)&($temp>$y1_char),-1)
  469.      inc($down_4)
  470.   END_CYC
  471.   $down_4 = ROUND($down_4/($y2_char-$y1_char+1)/$accur,-1)*10
  472.   IF($down_4 > 9)
  473.      $down_4 = 9
  474.   END_IF
  475.   FOR($temp=$y2_char,(pxl($x2_char,$temp)!$char_color)&($temp>$y1_char),-1)
  476.      inc($down_5)
  477.   END_CYC
  478.   $down_5 = ROUND($down_5/($y2_char-$y1_char+1)/$accur,-1)*10
  479.   IF($down_5 > 9)
  480.      $down_5 = 9
  481.   END_IF
  482.  
  483.  
  484.   //   print($left_1," ",$left_2," ",$left_3," ",$left_4," ",$left_5)
  485.   //   print($right_1," ",$right_2," ",$right_3," ",$right_4," ",$right_5)
  486.   //   print($up_1," ",$up_2," ",$up_3," ",$up_4," ",$up_5)
  487.   //   print($down_1," ",$down_2," ",$down_3," ",$down_4," ",$down_5)
  488.  
  489.   $shape_str=STRCONCAT($left_1,$left_2,$left_3,$left_4,$left_5,$right_1,$right_2,$right_3,$right_4,$right_5,$up_1,$up_2,$up_3,$up_4,$up_5,$down_1,$down_2,$down_3,$down_4,$down_5,"~")
  490.  
  491.   //print($shape_str)
  492.  
  493. END_SUB
  494.  
  495.  

Kpekep

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Gods and glory
« Ответ #20 : Ноябрь 19, 2017, 02:20:18 pm »
Вылезает ошибка !

kiril

  • Герой форума
  • *****
  • Сообщений: 943
    • Просмотр профиля
Re: Gods and glory
« Ответ #21 : Ноябрь 19, 2017, 02:52:06 pm »
сохраните нужную картинку по указанному вам программой адресу и эта проблема будет решена.
Но другая останется. Все версии BlueStacks отображаются несколько по разному и чтоб всё отображалось как у автора вам потребуется использовать его версию эмулятора.

gsukhado

  • Освоившийся
  • **
  • Сообщений: 66
    • Просмотр профиля
Re: Gods and glory
« Ответ #22 : Ноябрь 22, 2017, 05:19:14 pm »
Вылезает ошибка !
1.Алгоритм не рассчитан на одиночного игрока, нужна территория альянса. Которую задать в соответствующих переменных, описанных в примечаниях к коду
2.Нужно взять скриншоты шахт для поиска, и в программе прописать к ним локальный путь

gsukhado

  • Освоившийся
  • **
  • Сообщений: 66
    • Просмотр профиля
Re: Gods and glory
« Ответ #23 : Ноябрь 22, 2017, 05:32:46 pm »
Но другая останется. Все версии BlueStacks отображаются несколько по разному и чтоб всё отображалось как у автора вам потребуется использовать его версию эмулятора.
У меня 3.50.50.1647. С твиком на запрет обновления версии и запрет показа рекламы.
Но в общем тот кто захочет применить для себя данный алгоритм - все равно должен будет хотя бы в основах Кликермана разобраться, чтобы что-то под себя обновлять и "допиливать" - например, какие именно войска нанимать для фарма, это полностью индивидуально...

gsukhado

  • Освоившийся
  • **
  • Сообщений: 66
    • Просмотр профиля
Re: Gods and glory
« Ответ #24 : Январь 13, 2018, 03:49:10 pm »
Чуть обновил код для фарма в подземельях

Kpekep

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Gods and glory
« Ответ #25 : Январь 15, 2018, 09:04:18 pm »
Чуть обновил код для фарма в подземельях
Привет, как нибудь  полегче бы фарм шахт сделал , чисто фарм, без всякого найма войск и тому подобного .
P.S. За подземку отдельное спасибо !

whonix

  • Зашел в гости
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Gods and glory
« Ответ #26 : Январь 19, 2018, 09:48:27 am »
Поддерживаю вариант с облегченной версией скрипта- только для фарма наземных шахт без найма юнитов и т.д.

ounce

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Gods and glory
« Ответ #27 : Январь 19, 2018, 10:11:30 pm »
Свайп я так понимаю ни у кого не получилось средствами кликера реализовать? Только скриптом эмулятора получается делать??

kiril

  • Герой форума
  • *****
  • Сообщений: 943
    • Просмотр профиля
Re: Gods and glory
« Ответ #28 : Январь 19, 2018, 10:12:54 pm »
Свайп я так понимаю ни у кого не получилось средствами кликера реализовать? Только скриптом эмулятора получается делать??
Не правильно понимаете, от слова совсем.

ounce

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Gods and glory
« Ответ #29 : Январь 20, 2018, 10:02:39 pm »
Не правильно понимаете, от слова совсем.
И? Есть реализация или нет?  :)