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

0 Members and 1 Guest are viewing this topic.

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #30 on: November 08, 2017, 12:07:30 AM »
Написал код, вписывает первую строку из файла Gildiy.txt,  При втором вводе уже вторую строку из файла Gildiy.txt. Поменял название файла на Gildiy2.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-х слов
   IF(TFCOUNT("Gildiy.txt") > $count)
      INC($count,1)
   END_IF
   $str = TFREAD ("Gildiy.txt", $count)
   LCLICK(160,180)
   WAITMS (50)
   TOCLIP($str) //
   WAITMS (50)
   KEYDOWN (#CTRL) // вставить
   WAITMS (50)
   KEYPRESS(#V)
   WAITMS (50)
   KEYUP (#CTRL)
   WAITMS (50)
   WAIT(1)//вводит первую строку, все как мне надо
   //опять мой код
   LCLICK(160,180)//клик по полю ввода названия - это вторая страничка
   WAITMS(500) // и здесь нужно ввести ПЕРВУЮ строку из файла "Gildiy2.txt"
   IF(TFCOUNT("Gildiy2.txt") > $count)
      INC($count,1)
   END_IF
   $str = TFREAD ("Gildiy2.txt", $count)
   LCLICK(160,180)
   WAITMS (50)
   TOCLIP($str)
   WAITMS (50)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS(#V)
   WAITMS (50)
   KEYUP (#CTRL)
   WAITMS (50)
   WAIT(1)// здесь вводит вторую строку файла Gildiy2.txt, а мне нужна первая строка
   //и дальше мой скрипт

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите неумехе
« Reply #31 on: November 08, 2017, 08:32:18 AM »
Написал код, вписывает первую строку из файла Gildiy.txt,  При втором вводе уже вторую строку из файла Gildiy.txt. Поменял название файла на Gildiy2.txt - все равно вводит вторую строку. Что делать???

У тебя уже есть переменная $count в которою записывается количество строк файла LogPass.txt а ты приписал еще два файла и продолжаешь туже переменную увеличивать. Ты должен использовать разные имена счетчиков чтоб они не пересекались!

у тебя есть подпрограмма paste зачем ты пишешь вместо вызова код Ctrl+V ?

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

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

FOR($akkaunt_line = 1, $akkaunt_line < $count1+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-х слов
   
   IF(TFCOUNT("Gildiy.txt") > $count2)
      INC($count2,1)
   ELSE
      $count2 = 1 // Снова начинаем с первой строки по достижении конца файла
   END_IF
   $str = TFREAD ("Gildiy.txt", $count2)
   
   LCLICK(160,180)
   WAITMS (50)
   
   TOCLIP($str) //
   WAITMS (50)
   paste() // Вставить
   WAIT(1)//вводит первую строку, все как мне надо
   
   //опять мой код
   LCLICK(160,180)//клик по полю ввода названия - это вторая страничка
   WAITMS(500) // и здесь нужно ввести ПЕРВУЮ строку из файла "Gildiy2.txt"
   
   IF(TFCOUNT("Gildiy2.txt") > $count3)
      INC($count3,1)
   ELSE
      $count3 = 1 // Снова начинаем с первой строки по достижении конца файла
   END_IF
   $str = TFREAD ("Gildiy2.txt", $count3)
   
   LCLICK(160,180)
   WAITMS (50)
   
   TOCLIP($str)
   WAITMS (50)
   paste() // Вставить
   WAIT(1)// здесь вводит вторую строку файла Gildiy2.txt, а мне нужна первая строка
   //и дальше мой скрипт
   
   
   
   
   
   
   
   
   
END_CYC // Конец цикла FOR


MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #32 on: November 19, 2017, 02:19:45 PM »
Спасибо. Все работает. Хочу немного доработать код, потому что возникают ошибки, не связанные с Clickermann, а с подвисаниями в самой игре. Суть такая: есть примерно 120 скринов картинок (в дальнейшем думаю еще добавить). Необходимо за проход выполнить клик по одной из картинок.
Code: (clickermann) [Select]
$img[0]="img1.bmp"
$img[1]="img2.bmp"
$img[2]="img3.bmp"
==============
$img[119]="img119.bmp"
for($i=0,$i<120)// для переменной i=0 пока  i<120
if_picture_in(0,0,$_xmax,$_ymax,$img[i])// если картинка из списка есть
MOVE($_return1+5,$_return2+2)
WAITMS(10)
 LCLICK($_return1+5,$_return2+2)
END_IF
END_CYC// конец цикла
Возможно ли не вписывать весь список скринов(120шт.!!) в скрипт, а прописать путь к нему и как это лучше сделать. И второе - если игра подвисает, то чтобы клик по картинке произошел после появления картинки из списка.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите неумехе
« Reply #33 on: November 19, 2017, 05:52:24 PM »
Code: (clickermann) [Select]
for($i=1, $i<120)
if_picture_in(0,0,$_xmax,$_ymax, STRCONCAT("img", $i, ".bmp"))
...


MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #34 on: November 20, 2017, 12:57:44 AM »
В общем получилось у меня вот так
Code: (clickermann) [Select]
for($i=1, $i<120)
   GETSCREEN (140,150, 380,225)
   COLORMODE(6)
   IF_PICTURE_IN (140,150, 380,225, STRCONCAT("img", $i, ".bmp"))
      LCLICK($_return1+5, $_return2+3)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
Работает: находит, кликает, но что то не так. Сам не пойму что :o ну да ладно

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите неумехе
« Reply #35 on: November 20, 2017, 09:11:34 AM »
Необходимо за проход выполнить клик по одной из картинок.
Эта фраза подрозумевает, что достаточно найти "одну из". Значит после нахождения, нужно прерывать цикл и на остальные не тратить время.

И так же в этом случае не нужно каждый раз делать снимок. GETSCREEN и цветокоррекцию вынести за цикл.
Code: (clickermann) [Select]
GETSCREEN(140,150, 380,225)
COLORMODE(6)
FOR($i=1, $i<120)
   IF_PICTURE_IN (140,150, 380,225, STRCONCAT("img", $i, ".bmp"))
      LCLICK($_return1+5, $_return2+3)
      WAITMS(100)
      $i = 500
   ELSE
      WAITMS(50)
   END_IF
END_CYC


MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #36 on: November 21, 2017, 03:01:26 PM »
Опять появился вопрос. Могут ли команды STRCONCAT  и  STRSEPARATE  конфликтовать в одном скрипте?
Code: (clickermann) [Select]
$file_akk = "LogPass.txt" //625,50

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

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

FOR($akkaunt_line = 1, $akkaunt_line < $count1+1)
   UNDEFINE($akkaunt)
   STRSEPARATE(TFREAD($file_akk, $akkaunt_line), ":", $akkaunt)
   LOGWRITE("login: ", $akkaunt[0], "  pass: ", $akkaunt[1])
   
   LCLICK(760, 112)  // окно логина
   WAITMS(1000)
   TOCLIP($akkaunt[0])
   paste()
   LCLICK(760, 139)  // окно пароля
   WAITMS(1000)
   TOCLIP($akkaunt[1])
   paste()
   
   KEYPRESS(#Enter)// войти
   WAIT(1)
и
Code: (clickermann) [Select]
GETSCREEN(140,150, 380,225)
COLORMODE(6)
FOR($i=1, $i<120)
   IF_PICTURE_IN (140,150, 380,225, STRCONCAT("img", $i, ".bmp"))
      LCLICK($_return1+5, $_return2+3)
      WAITMS(100)
      $i = 500
   ELSE
      WAITMS(50)
   END_IF
END_CYC
Без цикла по объединению строки ввод логина и пароля  проходит нормально, только вписал в скрипт  цикл STRCONCAT логин и пароль пишется в одной строке :o Подскажите?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите неумехе
« Reply #37 on: November 21, 2017, 03:34:29 PM »
Опять появился вопрос. Могут ли команды STRCONCAT  и  STRSEPARATE  конфликтовать в одном скрипте?
Никакой связи.

Где END_CYC в первом цикле?

Во втором цикле WAITMS(50) - много для холостого хода. Минимум выходит 120*50 = 6000 мс. непонятно зачем.
« Last Edit: November 21, 2017, 03:36:06 PM by Vint »


MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #38 on: November 21, 2017, 04:49:27 PM »
Code: (clickermann) [Select]
$file_akk = "LogPass.txt" //625,50
 
SUB(paste) //========== Вставить ===============================================
   KEYDOWN(#CTRL) // Ctrl+V
   WAITMS(50)
   KEYPRESS(#V)
   WAITMS(50)
   KEYUP(#CTRL)
   WAITMS(150)
END_SUB
//------------------------------------------------------------------------------
 
$count1 = TFCOUNT($file_akk)
LOGWRITE("Всего аккаунтов: ", $count1)
 
FOR($akkaunt_line = 1, $akkaunt_line < $count1+1)
   UNDEFINE($akkaunt)
   STRSEPARATE(TFREAD($file_akk, $akkaunt_line), ":", $akkaunt)
   LOGWRITE("login: ", $akkaunt[0], "  pass: ", $akkaunt[1])
 
   LCLICK(760, 112)  // окно логина
   WAITMS(1000)
   TOCLIP($akkaunt[0])
   paste()
   LCLICK(760, 139)  // окно пароля
   WAITMS(1000)
   TOCLIP($akkaunt[1])
   paste()
 
   KEYPRESS(#Enter)// войти
   WAIT(1)

   // дальше идет мой код - порядка 500 строк

GETSCREEN(140,150, 380,225)
COLORMODE(6)
FOR($i=1, $i<120)
   IF_PICTURE_IN (140,150, 380,225, STRCONCAT("img", $i, ".bmp"))
      LCLICK($_return1+5, $_return2+3)
      WAITMS(100)
      $i = 500
   ELSE
      WAITMS(5)
   END_IF
END_CYC
// и опять мой код
GETSCREEN(140,150, 380,225)
COLORMODE(6)
FOR($i=1, $i<120)
   IF_PICTURE_IN (140,150, 380,225, STRCONCAT("img", $i, ".bmp"))
      LCLICK($_return1+5, $_return2+3)
      WAITMS(100)
      $i = 500
   ELSE
      WAITMS(5)
   END_IF
END_CYC
// мой код
END_CYC//заканчивается цикл,   

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите неумехе
« Reply #39 on: November 21, 2017, 05:02:40 PM »
Всё нормально. Остальной код не имеет отношения к вводу логина/пароля.


только вписал в скрипт  цикл STRCONCAT логин и пароль пишется в одной строке
Где пишется? Как пишется? Вопросов море. Ну надо же искать последовательно проблему, одних общих фраз недостаточно.

Посмотри не изменил ли в файле.
В поле ввода пишет слитно? В каком из них, логина или пароля?.
В скрипте делит по разделителю? Что пишет в лог на строке 19.

Надеюсь ты не тестируешь версию 4.13


MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #40 on: November 21, 2017, 05:20:10 PM »
Отвечаю по порядку:
Quote
Посмотри не изменил ли в файле.
В файле ничего не менял( отдельно , без всего скрипта, вводит и логин и пароль по своим поля)
Quote
В поле ввода пишет слитно? В каком из них, логина или пароля?
В поле ввода логина, пишет слитно
Quote
Надеюсь ты не тестируешь версию 4.13
Нет, не тестирую ..... пока :D
Quote
В скрипте делит по разделителю?
Как это определить?
Quote
Что пишет в лог на строке 19.
Всего 2 строки в логе:
16:29:39 Всего аккаунтов: 110
16:29:39 login: Карабас  pass: ****** (пароль пишет мой :D он же никому не нужен)
« Last Edit: November 21, 2017, 05:51:07 PM by MaxKot »

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #41 on: November 21, 2017, 06:13:51 PM »
Поменял раскладку языка в кликере на En, в окне Ru - в поле ввода логина ввел абракадабру, НО пароль ввел в поле пароля :'( Ницего ни пАнятно. Ладно, пойду домой, еще голову поломаю

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите неумехе
« Reply #42 on: November 21, 2017, 06:29:24 PM »
Расставь правильно паузы.
Не так
Code: (clickermann) [Select]
   LCLICK(760, 112)  // окно логина
   WAITMS(1000)
   TOCLIP($akkaunt[0])
   paste()
   LCLICK(760, 139)  // окно пароля
   WAITMS(1000)
   TOCLIP($akkaunt[1])
   paste()
 
   KEYPRESS(#Enter)// войти
   WAIT(1)

а так
Code: (clickermann) [Select]
   LCLICK(760, 112)  // окно логина
   WAITMS(50)
   TOCLIP($akkaunt[0])
   WAITMS(100)
   paste()
   WAITMS(500)
   LCLICK(760, 139)  // окно пароля
   WAITMS(50)
   TOCLIP($akkaunt[1])
   WAITMS(100)
   paste()
   WAITMS(500)
 
   KEYPRESS(#Enter)// войти
   WAIT(1)

Можно не ставить задержку после  paste(), а лучше увеличить в подпрограмме
Code: (clickermann) [Select]
SUB(paste) //========== Вставить ===============================================
   KEYDOWN(#CTRL) // Ctrl+V
   WAITMS(50)
   KEYPRESS(#V)
   WAITMS(50)
   KEYUP(#CTRL)
   WAITMS(500)
END_SUB
« Last Edit: November 21, 2017, 06:31:20 PM by Vint »


MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #43 on: November 21, 2017, 08:53:33 PM »
О результате отпишусь завтра. Сегодня немного не могу

MaxKot

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: Помогите неумехе
« Reply #44 on: November 22, 2017, 01:08:04 PM »
Поменял я паузы, ничего не поменялось. Разбирался дальше и получается, что в поле ввода логина кликер пишет не правильно  только 2 аккаунта (все еще не проверил, хотя до этого все аккаунты прописывались правильно) Убрал из списка эти аккаунты, вроде заработал. И еще вопрос: может ли мышка влиять на работу кликера? Она изредка подглючивает.  :'(
« Last Edit: November 22, 2017, 04:51:17 PM by MaxKot »