Автор Тема: Бот для игры Gems of War  (Прочитано 1762 раз)

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

toto123

  • Зашел в гости
  • *
  • Сообщений: 4
    • Просмотр профиля
Бот для игры Gems of War
« : Декабрь 21, 2017, 02:09:58 pm »
Всем привет!

Нужен бот для игры Gems of War: http://steamcommunity.com/app/329110
Тип игры "три в ряд" + карточная игра. Собирается колода карт со своими умениями, а бой происходит на поле с камнями (7 типов камней: красный, синий, зеленый, желтый, фиолетовый, коричневый, черепа), при сборе которых карты заряжаются манной, с помощью которой можно использовать ульту.

Цель:

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


Может что-то коряво написал, извините, в программировании не разбираюсь.
Интересует можно ли такое сделать? Сколько это будет стоить? Сколько это займет времени?
« Последнее редактирование: Декабрь 21, 2017, 02:21:45 pm от toto123 »

kiril

  • Герой форума
  • *****
  • Сообщений: 1201
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #1 : Декабрь 21, 2017, 03:23:46 pm »
Можно.
Бюджет написания бота всегда формирует заказчик.
Срок написания и количество дополнительных функций зависят от размера выделенного бюджета.

toto123

  • Зашел в гости
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #2 : Декабрь 22, 2017, 12:14:17 pm »
Предположим 3000 рублей, но цена не окончательная, готов выслушать встречные предложения

kiril

  • Герой форума
  • *****
  • Сообщений: 1201
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #3 : Декабрь 24, 2017, 04:56:44 pm »
попробовал предложенный вами алгоритм запустить в этой игре, равным соперникам он тупо и постоянно сливает. Чтоб выигрывать на такой примитивной тактике, наверно нужен сильно прокаченый отряд - против слабых соперников.

toto123

  • Зашел в гости
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #4 : Декабрь 25, 2017, 12:37:16 pm »
Абсолютно так и есть!) Это фарм ресурсов, получаемых за победу в бою, отряд атаки прокачен на максимум, а оборона выбирается максимально слабой для скорости)

toto123

  • Зашел в гости
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #5 : Декабрь 25, 2017, 12:39:28 pm »
Единственная пооправка, это то, что зеленых и коричневых сборок может не быть, и тогда нужно собирать что попадается. Приоритет на цвета камней следующий: 1 коричневый, 2 зеленый, 3 черепа, 4-7 остальные в любом порядке

Spw

  • Зашел в гости
  • *
  • Сообщений: 13
  • Addicted
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #6 : Январь 09, 2018, 10:46:13 pm »
Накидал по быстрому, toto123, отпишите если еще интересно, объясню что к чему.
Код: Clickermann
  1. //1280x800
  2. wndpos( wndfind("GemsofWar"), 10, 10)
  3.  
  4. SUB(findall)
  5.   LOGCLEAR
  6.   UNDEFINE($arr_hor)
  7.   UNDEFINE($arr_vert)
  8.   GETSCREEN
  9.   COLORMODE(6, 300, 90, 1010,800)
  10.   FOR($a=1,$a<9)
  11.      FOR($b=1,$b<9)
  12.         $clr = PXL(260+($a*88),16+($b*88))  //??????? ???? ???? ??????
  13.         arrpush ($x_hor, 260+($a*88))
  14.         arrpush ($y_hor, 16+($b*88))
  15.         arrpush ($arr_hor, $clr)   //????? ? ?????? ?? ???????????
  16.         //         LOGWRITE($clr)
  17.         $clr = PXL(260+($b*88),16+($a*88))
  18.         arrpush ($x_vert, 260+($b*88))
  19.         arrpush ($y_vert, 16+($a*88))
  20.         arrpush ($arr_vert, $clr)           //????? ? ?????? ?? ?????????
  21.         LOGWRITE($clr," ",$diva," x:",260+($b*88)," y:",16+($a*88))
  22.         inc($diva)
  23.      END_CYC
  24.      logwrite("")
  25.   END_CYC
  26.   LOGWRITE ($arr_vert[62])
  27.   LOGWRITE (ARRSIZE($arr_vert))
  28. END_SUB
  29.  
  30.  
  31. SUB(findmatch, $color)
  32.   FOR($n1=0,$n1<63)
  33.      IF (($arr_hor[$n1] = $color) & (PXL($x_hor[$n1],$y_hor[$n1]+88) =  $color))  //??? ??????
  34.         //         LOGWRITE ("msg ", PXL($x_hor[$n1+2]+88,$y_hor[$n1+2]))
  35.  
  36.         //--------------????????? ????------------------------------
  37.  
  38.         SWITCH($color)
  39.         CASE(PXL($x_hor[$n1]+88,$y_hor[$n1]+176))   //c???? ??????
  40.            LCLICK($x_hor[$n1+2]+88,$y_hor[$n1+2])
  41.            waitms(100)
  42.            LCLICK($x_hor[$n1+2],$y_hor[$n1+2])
  43.            waitms(1000)
  44.            GOTO(start)
  45.         CASE(PXL($x_hor[$n1]-88,$y_hor[$n1]+176))   //c???? ?????
  46.            LCLICK($x_hor[$n1+2]-88,$y_hor[$n1+2])
  47.            waitms(100)
  48.            LCLICK($x_hor[$n1+2],$y_hor[$n1+2])
  49.            waitms(1000)
  50.            GOTO(start)
  51.         CASE(PXL($x_hor[$n1]+88,$y_hor[$n1]-88))    //c????? ??????
  52.            LCLICK($x_hor[$n1-1]+88,$y_hor[$n1-1])
  53.            waitms(100)
  54.            LCLICK($x_hor[$n1-1],$y_hor[$n1-1])
  55.            waitms(1000)
  56.            GOTO(start)
  57.         CASE(PXL($x_hor[$n1]-88,$y_hor[$n1]-88))    //c????? ?????
  58.            LCLICK($x_hor[$n1-1]-88,$y_hor[$n1-1])
  59.            waitms(100)
  60.            LCLICK($x_hor[$n1-1],$y_hor[$n1-1])
  61.            waitms(1000)
  62.            GOTO(start)
  63.         CASE(PXL($x_hor[$n1],$y_hor[$n1]+264)) //????? ?????
  64.            LCLICK($x_hor[$n1+2],$y_hor[$n1+2])
  65.            waitms(100)
  66.            LCLICK($x_hor[$n1+3],$y_hor[$n1+3])
  67.            waitms(1000)
  68.            GOTO(start)
  69.         CASE(PXL($x_hor[$n1],$y_hor[$n1]-176))     //?????? ??????
  70.            LCLICK($x_hor[$n1-2],$y_hor[$n1-2])
  71.            waitms(100)
  72.            LCLICK($x_hor[$n1-1],$y_hor[$n1-1])
  73.            waitms(1000)
  74.            GOTO(start)
  75.         DEFAULT
  76.            // ?????? ?? ?????????
  77.         END_SWITCH
  78.      END_IF
  79.  
  80.      IF (($arr_hor[$n1] = $color) & (PXL($x_hor[$n1],$y_hor[$n1]+176) =  $color)) //????? 1
  81.         SWITCH($color)
  82.         CASE(PXL($x_hor[$n1]+88,$y_hor[$n1]+88))     //??????
  83.            LCLICK($x_hor[$n1+1]+88,$y_hor[$n1+1])
  84.            waitms(100)
  85.            LCLICK($x_hor[$n1+1],$y_hor[$n1+1])
  86.            waitms(1000)
  87.            GOTO(start)
  88.         CASE(PXL($x_hor[$n1]-88,$y_hor[$n1]+88))    //?????
  89.            LCLICK($x_hor[$n1+1]-88,$y_hor[$n1+1])
  90.            waitms(100)
  91.            LCLICK($x_hor[$n1+1],$y_hor[$n1+1])
  92.            waitms(1000)
  93.            GOTO(start)
  94.         DEFAULT
  95.         END_SWITCH
  96.      END_IF
  97.  
  98.      IF (($arr_vert[$n1] = $color) & (PXL($x_vert[$n1]+88,$y_vert[$n1]) =  $color))
  99.         SWITCH($color)
  100.         CASE(PXL($x_vert[$n1]+176,$y_vert[$n1]+88))   //c???? ??????
  101.            LCLICK($x_vert[$n1+2],$y_vert[$n1+2]+88)
  102.            waitms(100)
  103.            LCLICK($x_vert[$n1+2],$y_vert[$n1+2])
  104.            waitms(1000)
  105.            GOTO(start)
  106.         CASE(PXL($x_vert[$n1]+176,$y_vert[$n1]-88))   //c???? ?????
  107.            LCLICK($x_vert[$n1+2],$y_vert[$n1+2]-88)
  108.            waitms(100)
  109.            LCLICK($x_vert[$n1+2],$y_vert[$n1+2])
  110.            waitms(1000)
  111.            GOTO(start)
  112.         CASE(PXL($x_vert[$n1]-88,$y_vert[$n1]+88))    //c????? ??????
  113.            LCLICK($x_vert[$n1-1],$y_vert[$n1-1]+88)
  114.            waitms(100)
  115.            LCLICK($x_vert[$n1-1],$y_vert[$n1-1])
  116.            waitms(1000)
  117.            GOTO(start)
  118.         CASE(PXL($x_vert[$n1]-88,$y_vert[$n1]-88))    //c????? ?????
  119.            LCLICK($x_vert[$n1-1],$y_vert[$n1-1]-88)
  120.            waitms(100)
  121.            LCLICK($x_vert[$n1-1],$y_vert[$n1-1])
  122.            waitms(1000)
  123.            GOTO(start)
  124.         CASE(PXL($x_vert[$n1]+264,$y_vert[$n1])) //????? ?????
  125.            LCLICK($x_vert[$n1+2],$y_vert[$n1+2])
  126.            waitms(100)
  127.            LCLICK($x_vert[$n1+3],$y_vert[$n1+3])
  128.            waitms(1000)
  129.            GOTO(start)
  130.         CASE(PXL($x_vert[$n1]-176,$y_vert[$n1]))     //?????? ??????
  131.            LCLICK($x_vert[$n1-2],$y_vert[$n1-2])
  132.            waitms(100)
  133.            LCLICK($x_vert[$n1-1],$y_vert[$n1-1])
  134.            waitms(1000)
  135.            GOTO(start)
  136.         DEFAULT
  137.         END_SWITCH
  138.      END_IF
  139.  
  140.      IF (($arr_vert[$n1] = $color) & (PXL($x_vert[$n1]+176,$y_vert[$n1]) =  $color)) //????? 1
  141.         SWITCH($color)
  142.         CASE(PXL($x_vert[$n1]+88,$y_vert[$n1]+88))     //??????
  143.            LCLICK($x_vert[$n1+1],$y_vert[$n1+1]+88)
  144.            waitms(100)
  145.            LCLICK($x_vert[$n1+1],$y_vert[$n1+1])
  146.            waitms(1000)
  147.            GOTO(start)
  148.         CASE(PXL($x_vert[$n1]+88,$y_vert[$n1]-88))    //?????
  149.            LCLICK($x_vert[$n1+1],$y_vert[$n1+1]-88)
  150.            waitms(100)
  151.            LCLICK($x_vert[$n1+1],$y_vert[$n1+1])
  152.            waitms(1000)
  153.            GOTO(start)
  154.         DEFAULT
  155.         END_SWITCH
  156.      END_IF
  157.   END_CYC
  158. END_SUB
  159.  
  160. start:
  161. IF  (PXL(100,800) = 2331458)
  162.   LCLICK(300,800)
  163.   WAITMS(500)
  164.   LCLICK(650,450)
  165.   WAITMS(500)
  166.   LCLICK(650,450)
  167.   WAITMS(200)
  168.   LCLICK(300,800)
  169.   WAITMS(2000)  
  170. END_IF
  171.  
  172. findall()
  173.  
  174. IF  (PXL(180,90) = 16777215)
  175.   IF (PXL(70,470) = 16732842)
  176.      LCLICK(70,500)
  177.      WAITMS(200)
  178.      LCLICK(570,710)
  179.   END_IF
  180.   findmatch("8339327") //???? ??????????
  181.   findmatch("4145023") //???? ???????
  182.   findmatch("16777215") //???? ??????
  183.   findmatch("4144959") //???? ??????????
  184.   findmatch("4161471") //???? ??????
  185.   findmatch("4161343") //???? ???????
  186.   findmatch("12533567") //???? ?????
  187. END_IF
  188. waitms(2000)
  189. GOTO(start)
  190.  
  191. halt

kiril

  • Герой форума
  • *****
  • Сообщений: 1201
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #7 : Январь 09, 2018, 11:07:51 pm »
а что за разрешение такое необычное?
1280 * 768 знаю

Spw

  • Зашел в гости
  • *
  • Сообщений: 13
  • Addicted
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #8 : Январь 10, 2018, 08:07:18 am »
Такое разрешение предлагает сама игра, тут особо не задумывался, по идее лучше было бы делать под 800х600, для запуска на слабых видеокартах. Канечно все очень гибко, можно пренастроить за пару минут.

kiril

  • Герой форума
  • *****
  • Сообщений: 1201
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #9 : Январь 10, 2018, 08:27:21 am »
Такое разрешение предлагает сама игра, тут особо не задумывался, по идее лучше было бы делать под 800х600, для запуска на слабых видеокартах. Канечно все очень гибко, можно пренастроить за пару минут.
Специально все разрешения заложенные в игру перепроверил, нет там 1280x800- это формат проекторов, а не мониторов.
И на счёт перенастроить сильно ошибаетесь.
В любом случае при написании  бота брать редкое  соотношение окна 16:10 вместо общедоступного 4:3 не правильное решение.
Кроме того постоянное выпрыгивание из подпрограммы по GOTO(start), может привести к сбоям.

Spw

  • Зашел в гости
  • *
  • Сообщений: 13
  • Addicted
    • Просмотр профиля
Re: Бот для игры Gems of War
« Ответ #10 : Январь 10, 2018, 09:02:49 am »
Такое разрешение предлагает сама игра, тут особо не задумывался, по идее лучше было бы делать под 800х600, для запуска на слабых видеокартах. Канечно все очень гибко, можно пренастроить за пару минут.
Кроме того постоянное выпрыгивание из подпрограммы по GOTO(start), может привести к сбоям.
Тут вы правы надо было переменную воткнуть там,  не красиво. Время будет свободное - переделаю. ;)