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 - Hooligan

Pages: [1] 2
1
Доброго времени суток. Есть бот для одной игрушки. Все работает в эмуляторе андроид. Так вот суть не совсем проблемы конечно. Но есть неловкости в работе на разных машинах. На одной довольно мощное железо на второй не очень. Дак вот хочется оптимизировать работу на обоих машинах. Простыми ожиданиями проги не совсем решаемый подход. На более медленном компе все норм, а вот на более мощном чувствуется медленная работа в действиях. Там такие ожидания впринцепе не нужны.

Дак вот я так понимаю большую часть действий лучше писать наверное через while($time>$_time_t) раз уж меню на обоих компах грузится по разному. Один немного подвисает второй летает

2
Для меня все в новинку. Все новые функции. Куда мне их пристроить?
Почитал справку. Но примера я чет не увидел
Не понял реализацию всего этого в моем случае((((

3
Code: (clickermann) [Select]
 
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
         LOGWRITE("    мы в меню атаки")
         WAITMS(800)
      ELSE
         $mon2 = 1
         LOGWRITE("    не дошли до меню атаки")
      END_IF
 
   IF($mon2 = 0)

Нафига эти $mon1 = 0 и $mon2 = 0? Цикл WHILE($mon1 = 0) который выполняется 1 раз, найдено/не найдено все равно идем дальше,  и условие IF($mon2 = 0) которое конечно же выполнится потому как сверху $mon2 = 0.
[/quote]

Я в тупике тогда)
Я так понимаю первый цикл вообще нужно убрать?
Убрать объявление переменных вверху
И при неудаче нахождения панели атаки присвоить переменной $mon2 значение выше 0,
 для предотвращения срабатывания условия IF($mon2 = 0) ?

Так?)))

4
Code: (clickermann) [Select]
SUB(атаковать монстра)
   
   $mon1 = 0  //объявление переменной
   $mon2 = 0  //объявление переменной
   
   WHILE($mon1 = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
         $mon1 = 1
         LOGWRITE("    мы в меню атаки")
         WAITMS(800)
      ELSE
         $mon1 = 1
         LOGWRITE("    не дошли до меню атаки")
      END_IF
   END_CYC
   
   IF($mon2 = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
         LOGWRITE("    построения отряда")
         LCLICK($_return1, $_return2)
         WAITMS(300)
      ELSE
         LOGWRITE("    нет выбор построения")
      END_IF
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
         LOGWRITE("    отмена дракона")
         LCLICK($_return1, $_return2)
         WAITMS(300)
      ELSE
         LOGWRITE("    не вижу отмены дракона")
      END_IF
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
         INC($monster,1)
         LOGWRITE("    атакую")
         LCLICK(325, 675)
         WAITMS(800)
      ELSE
         $monster = 4 //завершение цикла
         LOGWRITE("    не вижу атака монстра")
      END_IF
   END_IF
END_SUB


//SUB(ПОИСК МОНСТРОВ)
LOGWRITE("**ПОИСК МОНСТРОВ")
WAITMS(500)
на карту()
WAITMS(500)

$monster = 0
WHILE($monster < 4)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,400, 55,622, "quick resource search.bmp", -1, 60)
      LOGWRITE("    вижу меню быстрый поиск")
      LCLICK($_return1, $_return2)
      WAITMS(1000)
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (165,670, 200,695, "search.bmp", -1, 60)
         LOGWRITE("     вижу кнопку поиск")
         LCLICK(45,535)
         WAITMS(500)
      END_IF
     
      $lvl = rnd(2,5)  // тут выбирается уровень монстра
      switch($lvl)
         case(1)
            LCLICK(145,600)
            LOGWRITE("    выбран 1 уровень")
         case(2)
            LCLICK(150,600)
            LOGWRITE("    выбран 2 уровень")
         case(3)
            LCLICK(155,600)
            LOGWRITE("    выбран 3 уровень")
         case(4)
            LCLICK(160,600)
            LOGWRITE("    выбран 4 уровень")
         case(5)
            LCLICK(165,600)
            LOGWRITE("    выбран 5 уровень")
         case(6)
            LCLICK(170,600)
            LOGWRITE("    выбран 6 уровень")
         case(7)
            LCLICK(175,600)
            LOGWRITE("    выбран 7 уровень")
         case(8)
            LCLICK(180,600)
            LOGWRITE("    выбран 8 уровень")
         case(9)
            LCLICK(185,600)
            LOGWRITE("    выбран 9 уровень")
         case(10)
            LCLICK(285,600)
            LOGWRITE("    выбран 30 уровень")
      end_switch
     
      WAITMS(500)
      LCLICK(210,685)
      WAITMS(3000)
     
      $time = $_time_t + 3
      WHILE($time > $_time_t)
         GETSCREEN
         COLORMODE(6)
         IF_PICTURE_IN (233,380, 265,408, "monster attack banner.bmp", -1, 70)
            $time = 0
            LOGWRITE("    есть баннер для атаки")
            LCLICK($_return1-32, $_return2+125)
            WAITMS(1500)
            атаковать монстра()
         ELSE
            LOGWRITE("    нет баннера атаки")
            LOGWRITE("    ручной выбор")
            LCLICK(200, 350)
            WAITMS(1500)
           
            GETSCREEN
            COLORMODE(6)
            IF_PICTURE_IN (220,360, 275,415, "monster attack banner.bmp", -1, 70)
               LOGWRITE("    есть баннер для атаки")
               LCLICK($_return1-32, $_return2+125)
               WAITMS(1500)
               атаковать монстра()
            END_IF
         END_IF
      END_CYC
   ELSE
      WAITMS(500)
      LOGWRITE("    не вижу меню быстрого поиска")
      come back()
      на карту()
   END_IF
   LOGWRITE("    отрядов отправил:", $monster)
END_CYC
LOGWRITE("**END")
//END_SUB

Спасибо дорогой друг. Теперь я разобрался. Очень помог. Заставил меня порассуждать над своей писаниной. Плюсик в карму)

5
Это верно. Но вот цикл на строках 117-118
Code: (clickermann) [Select]
      $time = $_time_t + 5
      WHILE($time > $_time_t)
лишен всякого смысла, потому как найдена картинка "monster attack banner.bmp" или не найдена везде стоит $time = 0 То есть такой "цикл" больше одного раза выполняться в принципе не будет.
И почему там везде $mon2 = 0 ?
[/quote]

$mon =0 я понял что лишнее было. Т.к я эту переменную объявляю и так равной 0 с самого начала цикла.
$time поправил. Оставил после первой попытки поиска картинки.

6
Если виснет то значит "monster attack banner.bmp" не найдено. Кстати если не найдено то без всяких задержек начинаем искать снова и снова. Довольно таки напряжно.

Цикл завершится только если "monster attack banner.bmp" и "monster attack banner1.bmp" будут найдены 2а раза.

Дело в том, что он не пишет о ненахождении картинки.
В остальном структура скрипта верна?


Code: (clickermann) [Select]
SUB(атаковать монстра)
 
   $mon1 = 0
   $mon2 = 0
   
   WHILE($mon1 = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
         $mon1 = 1
         $mon2 = 0
         LOGWRITE("    мы в меню атаки")
         WAITMS(800)
      ELSE
         $mon1 = 1
         LOGWRITE("    не дошли до меню атаки")
      END_IF
   END_CYC
   
   IF($mon2 = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
         LOGWRITE("    построения отряда")
         LCLICK($_return1, $_return2)
         WAITMS(300)
      ELSE
         LOGWRITE("    нет выбор построения")
      END_IF
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
         LOGWRITE("    отмена дракона")
         LCLICK($_return1, $_return2)
         WAITMS(300)
      ELSE
         LOGWRITE("    не вижу отмены дракона")
      END_IF
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
         INC($monster)
         LOGWRITE("    атакую")
         LCLICK(325, 675)
         WAITMS(800)
      ELSE
         $monster = 4 //тут верно я поставил переменную? Для остановки цикла в общем
         LOGWRITE("    не вижу атака монстра")
      END_IF
   END_IF
END_SUB


//SUB(ПОИСК МОНСТРОВ)
LOGWRITE("**ПОИСК МОНСТРОВ")
WAITMS(500)
на карту()
WAITMS(500)

$monster = 0
WHILE($monster < 4)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,400, 55,622, "quick resource search.bmp", -1, 60)
      LOGWRITE("    вижу меню быстрый поиск")
      LCLICK($_return1, $_return2)
      WAITMS(500)
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (66,659, 339,703, "search.bmp", -1, 60)
         LOGWRITE("     вижу кнопку поиск")
         LCLICK(45,535)
         WAITMS(500)
      END_IF
     
      $lvl = rnd(2,5)  // тут выбирается уровень монстра
      switch($lvl)
         case(1)
            LCLICK(145,600)
            LOGWRITE("    выбран 1 уровень")
         case(2)
            LCLICK(150,600)
            LOGWRITE("    выбран 2 уровень")
         case(3)
            LCLICK(155,600)
            LOGWRITE("    выбран 3 уровень")
         case(4)
            LCLICK(160,600)
            LOGWRITE("    выбран 4 уровень")
         case(5)
            LCLICK(165,600)
            LOGWRITE("    выбран 5 уровень")
         case(6)
            LCLICK(170,600)
            LOGWRITE("    выбран 6 уровень")
         case(7)
            LCLICK(175,600)
            LOGWRITE("    выбран 7 уровень")
         case(8)
            LCLICK(180,600)
            LOGWRITE("    выбран 8 уровень")
         case(9)
            LCLICK(185,600)
            LOGWRITE("    выбран 9 уровень")
         case(10)
            LCLICK(285,600)
            LOGWRITE("    выбран 30 уровень")
      end_switch
     
      WAITMS(500)
      LCLICK(210,685)
      WAITMS(3000)
     
      $time = $_time_t + 5
      WHILE($time > $_time_t)
         GETSCREEN
         COLORMODE(6)
         IF_PICTURE_IN (220,360, 275,415, "monster attack banner.bmp", -1, 70)
            $time = 0
            LOGWRITE("    есть баннер для атаки")
            LCLICK(205,510)
            WAITMS(1500)
            атаковать монстра()
         ELSE
            $time = 0
            LOGWRITE("    нет баннера атаки")
            LOGWRITE("    ручной выбор")
            LCLICK(200,345)
            WAITMS(1500)
            GETSCREEN
            COLORMODE(6)
            IF_PICTURE_IN (220,360, 275,415, "monster attack banner.bmp", -1, 70)
               $time = 0
               LOGWRITE("    есть баннер для атаки")
               LCLICK(205,510)
               WAITMS(1500)
               атаковать монстра()
            END_IF
         END_IF
      END_CYC
   ELSE
      WAITMS(500)
      LOGWRITE("    не вижу меню быстрого поиска")
      come back()
      на карту()
   END_IF
   LOGWRITE("    отрядов отправил:", $monster)
   LOGWRITE("**END")
END_CYC

Вроде работает. Но есть еще вопрос. Куда мне воткнуть переменную $monster = 4 чтобы цикл не зацикливался и при нехватке походов их всего 4 или еще каком либо сбое прекратил работу

7
Если виснет то значит "monster attack banner.bmp" не найдено. Кстати если не найдено то без всяких задержек начинаем искать снова и снова. Довольно таки напряжно.

Цикл завершится только если "monster attack banner.bmp" и "monster attack banner1.bmp" будут найдены 2а раза.

Дело в том, что он не пишет о ненахождении картинки.
В остальном структура скрипта верна?

8
Не пойму что такое.

Почему у тебя 4 ELSE в одном условии??
Code: (clickermann) [Select]
            GETSCREEN
            COLORMODE(6)
            IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
               INC($monster)
               LOGWRITE("    атакую")
               LCLICK(325, 675)
               WAITMS(800)
            ELSE
               LOGWRITE("    нет выбор построения")
            ELSE
               LOGWRITE("    не вижу отмены дракона")
            ELSE
               LOGWRITE("    нет выбор построения")
            ELSE
               
               LOGWRITE("    не вижу атака монстра")
            END_IF






Code: (clickermann) [Select]
SUB(атаковать монстра)
   WAITMS(500)
   $mon = 0
   $mon1 = 0
   $mon2 = 0
   WHILE($mon < 2)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (90,495, 315,525, "monster attack banner.bmp", -1, 70)
         IF_PICTURE_IN (305,355, 365,420, "monster attack banner1.bmp", -1, 70)
            INC($mon,1)
            LOGWRITE("    есть баннер для атаки")
            LCLICK(205,510)
            WAITMS(1500)
         ELSE
            LOGWRITE("    нет баннера атаки")
            LOGWRITE("    ручной выбор")
            LCLICK(200,345)
            WAITMS(1500)
         END_IF
      END_IF
   END_CYC
   
   WHILE($mon1 = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
         $mon1 = 1
         $mon2 = 0
         LOGWRITE("    мы в меню атаки")
         WAITMS(800)
      ELSE
         $mon1 = 1
         LOGWRITE("    не дошли до меню атаки")
      END_IF
   END_CYC
   
   IF($mon2 = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
         LOGWRITE("    построения отряда")
         LCLICK($_return1, $_return2)
         WAITMS(300)
      ELSE
         LOGWRITE("    нет выбор построения")
      END_IF
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
         LOGWRITE("    отмена дракона")
         LCLICK($_return1, $_return2)
         WAITMS(300)
      ELSE
         LOGWRITE("    не вижу отмены дракона")
      END_IF
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
         INC($monster)
         LOGWRITE("    атакую")
         LCLICK(325, 675)
         WAITMS(800)
      ELSE
         LOGWRITE("    не вижу атака монстра")
      END_IF         
   END_IF
END_SUB

Сегодня на свежую голову просмотрел все. Поправил. Думаю верно. Но все же виснет код(((
Эта часть кода
Code: (clickermann) [Select]
WHILE($mon < 2)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (90,495, 315,525, "monster attack banner.bmp", -1, 70)
         IF_PICTURE_IN (305,355, 365,420, "monster attack banner1.bmp", -1, 70)
            INC($mon,1)
            LOGWRITE("    есть баннер для атаки")
            LCLICK(205,510)
            WAITMS(1500)
         ELSE
            LOGWRITE("    нет баннера атаки")
            LOGWRITE("    ручной выбор")
            LCLICK(200,345)
            WAITMS(1500)
         END_IF
      END_IF
   END_CYC

9
Тут я уже от безвыходности пробовал все варианты

10
Сначала происходит поиск монстра. Там все норм. Когда приходит на эту функцию бывает виснет.
Тупо код не выполняется пока на карту не нажмешь в любое пустое место. Не пойму что такое.
Так же хочу чтобы он отправлял определенное количество походов. К примеру 4 удачные отправки что бы он сделал. Но попытался не более 6 раз. Если за 6 раз не вышло удачно отправить 4 попытки из 6 прекратил выполнение. Ну и соответственно если сразу с первых 4 раз все прошло удачно тоже прекратил свои действия.

Code: (clickermann) [Select]
SUB(атаковать монстра)
   
   $mon = 0
   WHILE($mon < 2)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (90,495, 315,525, "monster attack banner.bmp", -1, 60)
         //         IF_PICTURE_IN (305,355, 365,420, "monster attack banner1.bmp", -1, 60)
         $mon = 2
         LOGWRITE("    есть баннер для атаки")
         LCLICK(205,510)
         WAITMS(1500)
      ELSE
         INC($mon)
         LOGWRITE("    нет баннера атаки")
         LOGWRITE("    ручной выбор")
         LCLICK(200,345)     //Бывает что ручной выбор не делает. стоит и тупит
         WAITMS(1500)
         //         END_IF
      END_IF
   END_CYC
   
   $mon1 = 0
   WHILE($mon1 < 2)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
         INC($mon1,2)
         $mon2 = 0
         LOGWRITE("    мы в меню атаки")
         WAITMS(800)
      ELSE
         $mon1 = 3
         $mon2 = 3
         LOGWRITE("    не дошли до меню атаки")
      END_IF
   END_CYC
   
   $mon2 = 0
   IF($mon2 < 1)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
         LOGWRITE("    построения отряда")
         LCLICK($_return1, $_return2)
         WAITMS(300)
         
         
         GETSCREEN
         COLORMODE(6)
         IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
            LOGWRITE("    отмена дракона")
            LCLICK($_return1, $_return2)
            WAITMS(300)
           
           
            GETSCREEN
            COLORMODE(6)
            IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
               INC($monster)
               LOGWRITE("    атакую")
               LCLICK(325, 675)
               WAITMS(800)
            ELSE
               LOGWRITE("    нет выбор построения")
            ELSE
               LOGWRITE("    не вижу отмены дракона")
            ELSE
               LOGWRITE("    нет выбор построения")
            ELSE
               
               LOGWRITE("    не вижу атака монстра")
            END_IF
         END_IF
      END_IF
   END_IF
END_SUB

//*****************************

SUB(ПОИСК МОНСТРОВ)
   LOGWRITE("**ПОИСК МОНСТРОВ")
   WAITMS(500)
   на карту()
   WAITMS(500)
   
   $monster = 0
   WHILE($monster < 4)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (0,400, 55,622, "quick resource search.bmp", -1, 60)
         LOGWRITE("    вижу меню быстрый поиск")
         LCLICK($_return1, $_return2)
         WAITMS(500)
         
         GETSCREEN
         COLORMODE(6)
         IF_PICTURE_IN (66,659, 339,703, "search.bmp", -1, 60)
            LOGWRITE("     вижу кнопку поиск")
            LCLICK(45,535)
            WAITMS(500)
         END_IF
         
         $lvl = rnd(2,5)  // тут выбирается уровень монстра
         switch($lvl)
            case(1)
               LCLICK(145,600)
               LOGWRITE("    выбран 1 уровень")
            case(2)
               LCLICK(150,600)
               LOGWRITE("    выбран 2 уровень")
            case(3)
               LCLICK(155,600)
               LOGWRITE("    выбран 3 уровень")
            case(4)
               LCLICK(160,600)
               LOGWRITE("    выбран 4 уровень")
            case(5)
               LCLICK(165,600)
               LOGWRITE("    выбран 5 уровень")
            case(6)
               LCLICK(170,600)
               LOGWRITE("    выбран 6 уровень")
            case(7)
               LCLICK(175,600)
               LOGWRITE("    выбран 7 уровень")
            case(8)
               LCLICK(180,600)
               LOGWRITE("    выбран 8 уровень")
            case(9)
               LCLICK(185,600)
               LOGWRITE("    выбран 9 уровень")
            case(10)
               LCLICK(285,600)
               LOGWRITE("    выбран 30 уровень")
         end_switch
         
         LCLICK(210,685)
         WAITMS(1500)
//виснет в этом месте по логу
// в логе "выбран 2 уровень"
//далее завис
         атаковать монстра()
      ELSE
         WAITMS(500)
         LOGWRITE("    не вижу меню быстрого поиска")
         come back()
         на карту()
      END_IF
      LOGWRITE("    отрядов отправил:", $monster)
   END_CYC
   LOGWRITE("**END")
END_SUB

11
А если я хочу запустить бот с 3 акка как быть ?))

12
Бот работает в эмуляторе. Имеется к примеру 10 аккаунтов по которым нужно ходить и фармить разного рода ресурсы, плюхи и т.д. Аккаунты гугловский, переход осуществляется по списку плей игр. Суть вопроса встала в том, что при остановке сценария и повторном его запуске он начинается с первого аккаунта. Каким образом можно сделать так, чтобы зайдя на какой либо Акк бот сохранял позицию с номером аккаунта в котором он был в последний раз. Чтобы при остановке сценария и повторном его запуске он продолжил с того же аккаунта.
Не нужно помнить какие он делал действия. Важно именно запомнить на каком аккаунте он остановился.
Пример.

1() // переход Аккаунт 1
Действие()
Действие()
2()// переход Аккаунт 2
Действие()
Действие()
3()
И т.д

Запутанно написал. Но думаю суть понятна)))


Ну и второй вопрос. Не хочется чтобы все хранилось в одной папке. Хочется сделать некую структуру внутри проекта. Хочу всю графику отложить в отдельную папку. Например: Корневая папка бота где хранятся скрипты и текстовые файлы и папка image для графики. Возможно ли такое?


Заранее благодарен всем ответившим!

13
Общие вопросы / Re: LOG и все о нем!!!
« on: January 19, 2019, 07:32:02 PM »
Спасибо. Я чёт даже не подумал)))

14
Общие вопросы / Re: LOG и все о нем!!!
« on: January 19, 2019, 03:35:10 PM »
За приведенный пример буду очень благодарен. Мои попытки были не удачны. Я пробовал #logfileс указанием папки и именем файла. Все это дело прописывал полосе ELSE. Но как показала практика в этот файлик записывались и действия которые происходили до ELSE. Я точно тут что-то не вкурил)))

15
Общие вопросы / LOG и все о нем!!!
« on: January 19, 2019, 08:35:31 AM »
Возник такой вопрос. Чтобы не писать полный лог и не сохранять его, потом выискивая где были допущены ошибки. Могу ли я записывать лог в файл при отдельных условиях
ПРИМЕР:

Code: (clickermann) [Select]
начало
//Действия верны
Иначе
//запись об ошибке в лог файл
//Действия ложны
конец

Всем спасибо за ответ!

Pages: [1] 2