Author Topic: Помогите неумехе  (Read 16967 times)

0 Members and 1 Guest are viewing this topic.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите неумехе
« Reply #15 on: October 26, 2017, 07:46:09 AM »
Что значит "останавливается"? В скрипте нет ни одной остановки.
Выпадает с ошибкой, если да, то так и нужно писать и указывать что за ошибка.

В файле не должно быть пустых строк.


MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #16 on: October 26, 2017, 10:33:14 PM »
Нет, не останавливается. В начале вводит логин и пароль, входит в игру, кликает по "моя гильдия.bmp" и после нажатия PageDown, курсор отправляется вводить логин и пароль, а не ищет картинку  "снабжение.bmp". Хотя, как я писал ранее, в отдельности  Clickermann видит каждую картинку, а в скрипте не хочет. Вот такая ошибка :(

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите неумехе
« Reply #17 on: October 27, 2017, 08:29:42 AM »
Тебе нужно использовать циклы поиска картинок, в этом случаи скрипт не пойдет дальше пока не найдет заданную картинку

Code: (clickermann) [Select]
$file_akk = "LogPass1.txt"

SUB(paste) //========== Вставить ===============================================
   KEYDOWN(#CTRL) // Ctrl+V
   WAITMS(50)
   KEYPRESS(#V)
   WAITMS(50)
   KEYUP(#CTRL)
   WAITMS(150)
END_SUB
//------------------------------------------------------------------------------

$count = TFCOUNT($file_akk)
LOGWRITE("Всего аккаунтов: ", $count)

FOR($akkaunt_line = 1, $akkaunt_line < $count+1)
   UNDEFINE($akkaunt)
   STRSEPARATE(TFREAD($file_akk, $akkaunt_line), ":", $akkaunt)
   LOGWRITE("login: ", $akkaunt[0], "  pass: ", $akkaunt[1])
   
   LCLICK(960, 120)  // окно логина
   WAIT(2)
   TOCLIP($akkaunt[0])
   paste()
   LCLICK(960, 150)  // окно пароля
   WAIT(2)
   TOCLIP($akkaunt[1])
   paste()
   
   KEYPRESS(#Enter)// войти
   WAIT(2)
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (900,380, 1100,620, "моя гильдия.bmp")
         LOGWRITE ("моя гильдия")
         LCLICK($_return1+5, $_return2+10)
         WAIT(2)
         $check = 1
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   KEYPRESS(#PAGEDOWN)
   WAIT(2)
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (900,448, 980,665, "снабжение.bmp")
         LOGWRITE ("снабжение")
         LCLICK($_return1+4, $_return2+10)
         $check = 1
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   KEYPRESS(#PAGEDOWN)
   WAIT(2)
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (890,170, 1050,490, "забрать.bmp")
         LOGWRITE ("забрать")
         LCLICK($_return1+2, $_return2+9)
         WAIT(2)
         $check = 1
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (890,170, 1050,490, "забрать.bmp")
         LOGWRITE ("забрать")
         LCLICK($_return1+2, $_return2+9)
         WAIT(2)
         $check = 1
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (250,580, 320,950, "выход.bmp")
         LOGWRITE ("выход")
         LCLICK($_return1+4, $_return2+7)
         WAIT(1)
         $check = 1
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_CYC

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #18 on: October 27, 2017, 10:30:10 PM »
Oraven! Спасибо  за помощь:)  Заработал скриптик:)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите неумехе
« Reply #19 on: October 28, 2017, 08:26:11 AM »
Не, я не ожидание картинки просил. Это то понятно было, как сделать..

Ну раз тебе понятно то вот тот самый пример из шаблонов, ничего не напоминает?
Code: (clickermann) [Select]
$time = $_time_t + 10 // таймер на 10 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
// действие если время истекло, картинка не найдена
END_IF

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #20 on: October 31, 2017, 10:11:57 PM »
Quote
попытайтесь написать скрипт самостоятельно
я пишу скрипт, но там пока все просто. Я просто знаю, что когда подойду к тому месту, о котором я просил помощи, будет загвоздка. Знаний пока мало :'( Думал заранее прозондировать.
А под если я подразумевал,  что при выпадении кнопки, какие действия нужно производить дальше
« Last Edit: October 31, 2017, 10:16:15 PM by MaxKot »

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #21 on: October 31, 2017, 11:02:03 PM »
Да не, там  простая логика. После клика на кнопку, может выпасть одна определенная кнопка, указанная  мною выше и дальнейшие действия будут зависеть от выпавшей кнопки.  Ну вот, разговор нуба с программистами не получился :'(

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #22 on: November 04, 2017, 04:44:52 PM »
Ну вот и дошел я до тупика:( Как и предполагал. Нужна помощь.  Я пробовал писать, но скрипт не работает:
Code: (clickermann) [Select]
WAIT(1)

//уход в цикл
$count = 0
WHILE($count < 22)
   //поиск одного изображения
   GETSCREEN (125,200, 380,400)
   IF_PICTURE_IN (125,200, 380,400, "Идти вперед.bmp")  //если нашел клик
      waitms(1000)
      LCLICK($_return1, $_return2)
      waitms(1000)
   else //если не нашел в этой области то переход к поиску другого изображения
      waitms(1000)
      IF_PICTURE_IN (125,200, 380,400, "Вперед.bmp") // клик по нахождению
         waitms(1000)
         LCLICK($_return1, $_return2)
         waitms(1000)
      else // переход если кнопка не будет найдена
         waitms(1000)
         IF_PICTURE_IN (125,200, 380,400, "проскользнуть.bmp") // клик по нахождению
            waitms(1000)
            LCLICK($_return1, $_return2)
            waitms(1000)
         else // переход если кнопка не будет найдена
            waitms(1000)
            IF_PICTURE_IN (125,200, 380,400, "Идти назад.bmp") // клик по нахождению
               waitms(1000)
               LCLICK($_return1, $_return2)
               waitms(1000)
            else // переход если кнопка не будет найдена
               waitms(1000)
               IF_PICTURE_IN (125,200, 380,400, "Вперед1.bmp") // клик по нахождению
                  waitms(1000)
                  LCLICK($_return1, $_return2)
                  waitms(1000)
               else // переход если кнопка не будет найдена
                  waitms(1000)
                  IF_PICTURE_IN (125,200, 380,400, "Вперед2.bmp") // клик по нахождению
                     waitms(1000)
                     LCLICK($_return1, $_return2)
                     waitms(1000)
                     $check = 1
                  end_if
               end_if
            end_if
         end_if
      end_if
   end_if
   INC($count,1)
end_cyc
Явно не правильно. Может кто помочь? Если что то не понятно - я на связи 8) Да еще маленькое дополнение. Этот цикл должен проходить большое количество раз. На каком месте закончился, с того места в следующий раз должен и продолжаться. Спасибо!
« Last Edit: November 05, 2017, 12:58:32 PM by MaxKot »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите неумехе
« Reply #23 on: November 04, 2017, 05:41:19 PM »
Зачем там не нужные задержки между анализами? И INC($count,1) нужно писать в условии поиска а не в конце.

Code: (clickermann) [Select]
WAIT(1)

//уход в цикл
$count = 0
WHILE($count < 22)
   //поиск одного изображения
   GETSCREEN (125,200, 380,400)
   IF_PICTURE_IN (125,200, 380,400, "Идти вперед.bmp")  //если нашел клик
      LCLICK($_return1, $_return2)
      INC($count,1)
      waitms(1000)
   else //если не нашел в этой области то переход к поиску другого изображения
      IF_PICTURE_IN (125,200, 380,400, "Вперед.bmp") // клик по нахождению
         LCLICK($_return1, $_return2)
         INC($count,1)
         waitms(1000)
      else // переход если кнопка не будет найдена
         IF_PICTURE_IN (125,200, 380,400, "проскользнуть.bmp") // клик по нахождению
            LCLICK($_return1, $_return2)
            INC($count,1)
            waitms(1000)
         else // переход если кнопка не будет найдена
            IF_PICTURE_IN (125,200, 380,400, "Идти назад.bmp") // клик по нахождению
               LCLICK($_return1, $_return2)
               INC($count,1)
               waitms(1000)
            else // переход если кнопка не будет найдена
               IF_PICTURE_IN (125,200, 380,400, "Вперед1.bmp") // клик по нахождению
                  LCLICK($_return1, $_return2)
                  INC($count,1)
                  waitms(1000)
               else // переход если кнопка не будет найдена
                  IF_PICTURE_IN (125,200, 380,400, "Вперед2.bmp") // клик по нахождению
                     LCLICK($_return1, $_return2)
                     INC($count,1)
                     waitms(1000)
                  ELSE
                     waitms(100)
                  end_if
               end_if
            end_if
         end_if
      end_if
   end_if
end_cyc

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #24 on: November 04, 2017, 07:38:36 PM »
Все отлично работает:) Спасибо. Маленький вопрос. Чтобы этот цикл повторялся бесконечно, какие параметры нужно задать? И чуть позже у меня будет еще один вопрос...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите неумехе
« Reply #25 on: November 05, 2017, 08:23:04 AM »
Маленький вопрос. Чтобы этот цикл повторялся бесконечно, какие параметры нужно задать?

Зачем тебе вообще тогда INC($count,1) ?
Пиши
Code: (clickermann) [Select]
WHILE(1) // бесконечный цикл

END_CYC

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #26 on: November 05, 2017, 02:45:28 PM »
Еще один вопрос. Как  циклы объединить в цепочку. Например:
Code: (clickermann) [Select]
$check = 0
WHILE($check < 3)
   //поиск одного изображения
   GETSCREEN (140,200, 380,900)
   COLORMODE(6)
   IF_PICTURE_IN (140,200, 380,900, "В город.bmp")  //если нашел клик
      LCLICK($_return1, $_return2)
      INC($check,1)
      waitms(1000)
   else
      IF_PICTURE_IN (140,200, 380,900, "В поле.bmp")  //если нашел клик
         LCLICK($_return1, $_return2)
         INC($check,1)
         waitms(1000)
      else
         IF_PICTURE_IN (140,200, 380,900, "К дороге.bmp") // клик по нахождению
            LCLICK($_return1, $_return2)
            INC($check,1)
            waitms(1000)
         else
            waitms(100)
         end_if
      end_if
   end_if
end_cyc//необходимо, чтобы после того, как найдется одна из кнопок, этот цикл остановился и заработал следующий, нижний и  т. д.  По отдельности работают.

$count = 0
WHILE($count < 22)
   //поиск одного изображения
   GETSCREEN (125,200, 380,400)
   IF_PICTURE_IN (125,200, 380,400, "Идти вперед.bmp")  //если нашел клик
      LCLICK($_return1, $_return2)
      INC($count,1)
      waitms(1000)
   else //если не нашел в этой области то переход к поиску другого изображения
      IF_PICTURE_IN (125,200, 380,400, "Вперед.bmp") // клик по нахождению
         LCLICK($_return1, $_return2)
         INC($count,1)
         waitms(1000)
      else // переход если кнопка не будет найдена
         IF_PICTURE_IN (125,200, 380,400, "проскользнуть.bmp") // клик по нахождению
            LCLICK($_return1, $_return2)
            INC($count,1)
            waitms(1000)
         else // переход если кнопка не будет найдена
            IF_PICTURE_IN (125,200, 380,400, "Идти назад.bmp") // клик по нахождению
               LCLICK($_return1, $_return2)
               INC($count,1)
               waitms(1000)
            else // переход если кнопка не будет найдена
               IF_PICTURE_IN (125,200, 380,400, "Вперед1.bmp") // клик по нахождению
                  LCLICK($_return1, $_return2)
                  INC($count,1)
                  waitms(1000)
               else // переход если кнопка не будет найдена
                  IF_PICTURE_IN (125,200, 380,400, "Вперед2.bmp") // клик по нахождению
                     LCLICK($_return1, $_return2)
                     INC($count,1)
                     waitms(1000)
                  ELSE
                     waitms(100)
                  end_if
               end_if
            end_if
         end_if
      end_if
   end_if
end_cyc
Как я понял, пока не выполнится условие, цикл остается работающим. Даже если кнопки отсутствуют.

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #27 on: November 05, 2017, 08:53:28 PM »
Уважаемый kiril,  наверное еще не подошло время осваивать подпрограммы, так как я еще не освоил циклы. Прыгать через ступеньки не очень хочется :-\  С нахождением картинки и остановкой цикла мне понятно. А если картинки появляются рандомно(все их надо кликать) и остановить цикл необходимо при появлении определенной картинки. Количество проходов тоже рандомно. Максимально 22 прохода по циклу. Картинка, останавливающая цикл, может появиться  и на  16 проходе, и на 20 :-\
Code: (clickermann) [Select]
$check = 0
   WHILE($check < 22)
      GETSCREEN (140,200, 380,600)
      COLORMODE(6)
      IF_PICTURE_IN (140,200, 380,600, "Задание выполнено.bmp")  //при появлении этой картинки необходимо остановить цикл и пойдет работать следующий.
         LCLICK($_return1, $_return2)
         INC($check,1)
         waitms(1000)
      else
         IF_PICTURE_IN (140,200, 380,600, "Идти вперед.bmp")  //если нашел клик
            LCLICK($_return1, $_return2)
            INC($check,1)
            waitms(1000)
         else
            IF_PICTURE_IN (140,200, 380,600, "Идти назад.bmp") // клик по нахождению
               LCLICK($_return1, $_return2)
               INC($check,1)
               waitms(1000)
            else
               IF_PICTURE_IN (140,200, 380,600, "Вперед.bmp") // клик по нахождению
                  LCLICK($_return1, $_return2)
                  INC($check,1)
                  waitms(1000)
               else // переход если кнопка не будет найдена
                  IF_PICTURE_IN (140,200, 380,600, "проскользнуть.bmp") // клик по нахождению
                     LCLICK($_return1, $_return2)
                     INC($check,1)
                     waitms(1000)
                  else // переход если кнопка не будет найдена
                     IF_PICTURE_IN (140,200, 380,600, "Взять бонус.bmp") // клик по нахождению
                        LCLICK($_return1, $_return2)
                        INC($check,1)
                        waitms(1000)
                     else
                        IF_PICTURE_IN (140,200, 380,600, "Бить.bmp") // клик по нахождению
                           LCLICK($_return1, $_return2)
                           INC($check,1)
                           waitms(1000)
                        else // переход если кнопка не будет найдена
                           IF_PICTURE_IN (140,200, 380,600, "Вперед2.bmp") // клик по нахождению
                              LCLICK($_return1, $_return2)
                              INC($check,1)
                              waitms(1000)
                           ELSE
                              waitms(100)
                           end_if
                        end_if
                     end_if
                  end_if
               end_if
            end_if
         end_if
      end_if
   end_cyc

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #28 on: November 06, 2017, 12:00:36 PM »
Спасибо огромнейшее kiril, Вам респект. Да и всем кто помогал ;)  Надеюсь в дальнейшем  не откажете в совете ???

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #29 on: November 06, 2017, 10:37:48 PM »
Нужна помощь. Необходимо вставлять строки из текстового документа Gildiy.txt на двух страничках одного браузера. Лучше на примере покажу:
Code: (clickermann) [Select]
$file_akk = "LogPass.txt"

SUB(paste) //========== Вставить ===============================================
   KEYDOWN(#CTRL) // Ctrl+V
   WAITMS(50)
   KEYPRESS(#V)
   WAITMS(50)
   KEYUP(#CTRL)
   WAITMS(150)
END_SUB
//------------------------------------------------------------------------------

$count = TFCOUNT($file_akk)
LOGWRITE("Всего аккаунтов: ", $count)

FOR($akkaunt_line = 1, $akkaunt_line < $count+1)
   UNDEFINE($akkaunt)
   STRSEPARATE(TFREAD($file_akk, $akkaunt_line), ":", $akkaunt)
   LOGWRITE("login: ", $akkaunt[0], "  pass: ", $akkaunt[1])
   
   LCLICK(960, 120)  // окно логина
   WAIT(1)
   TOCLIP($akkaunt[0])
   paste()
   LCLICK(960, 150)  // окно пароля
   WAIT(1)
   TOCLIP($akkaunt[1])
   paste()
//дальше идет мой код, он очень громоздкий, не буду его писать
LCLICK(160,180)//клик по полю ввода названия - это первая страничка
   WAITMS(500)// здесь нужно ввести ПЕРВУЮ строку из файла "Gildiy.txt" Строка может состоять из 2-х слов
//опять мой код
LCLICK(160,180)//клик по полю ввода названия - это вторая страничка
   WAITMS(500) // и здесь нужно ввести ПЕРВУЮ строку из файла "Gildiy.txt"
//и дальше мой скрипт

И так по кругу, вводим второй лог и пароль из файла "LogPass.txt" и вторую строку из файла "Gildiy.txt" 2 раза и т. д.   Это осуществимо?

« Last Edit: November 06, 2017, 11:06:28 PM by MaxKot »