Author Topic: Помогите со скриптом! Распознавание текста.  (Read 5526 times)

0 Members and 2 Guests are viewing this topic.

Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Здравствуйте, тут на одном сайте, пользователи кидают промокодики, типа ХХХХХХХ либо ХХХХ-ХХХХ-ХХХХ-ХХХХ надо сделать много шаблонов, количество символов бывает разное. Текст сайта прекрасно копируется, дело в том, что чат русскоязычный, в промокоды латиницей, и цифры.

Ошибки мне не важны, главное чтобы все подряд не копировало :)



Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Я имею виду распознавать а не брутить, тоисть кликер нашел текст, который написан на латинице, и вставил его в нужное поле.
То же самое с цифрами, но буквы и цифры там все смешано

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
читаем справку - строки и файлы.

STRFILTER ("str", "set", mode) - строковая функция; возвращает отфильтрованную строку.

Параметры:
str - входная строка
set - набор символов маски
mode - режим фильтрации

Если режим будет задан как 0, то из входной строки будут вырезаны все символы, указанные в маске.
Если режим будет задан как 1, то из входной строки будут вырезаны все символы, кроме указанных в маске.

пример:
Code: (clickermann) [Select]
$str = "Здравствуйте, тут на одном сайте, пользователи кидают промокодики, типа AFB3-M7HJ6-CV5D-01HT, надо сделать много шаблонов, количество символов бывает разное. Текст сайта прекрасно копируется, дело в том, что чат русскоязычный, в промокоды латиницей, и цифры."

print( strfilter($str, "ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789-", 1 ) ) //в логе будет AFB3-M7HJ6-CV5D-01HT
HALT


Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Да спасибо большое!  :D

Но столкнулся с проблемами, справку читал, голова не варит, сам не в этом направлении..

Допустим бот скопировал весь текст который нужно анализировать, куда его потом вставлять?
И еще, когда бот анализировал текст, выделил нужный материал, как сделать чтобы скрипт его автоматически скопировал, без моего участия?

Помогите пожалуйста кто может, буду благодарен ;)
 



dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Да спасибо большое!  :D

Но столкнулся с проблемами, справку читал, голова не варит, сам не в этом направлении..

Допустим бот скопировал весь текст который нужно анализировать, куда его потом вставлять?
И еще, когда бот анализировал текст, выделил нужный материал, как сделать чтобы скрипт его автоматически скопировал, без моего участия?

Помогите пожалуйста кто может, буду благодарен ;)

как выделить нужный материал, это тебе виднее. можно с помощью ctrl+a, можно нажатием лкм и move. вот пример с тройным кликом по тексту:

Code: (clickermann) [Select]
//triple click
DBLCLICK($x,$y) //координаты свои
waitms(50)
LCLICK($x,$y)
waitms(150)


//ctrl+c
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#C)
WAITMS (50)
KEYUP (#C)
KEYUP (#CTRL)
waitms(150)

$promo = strfilter(FROMCLIP (), "ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789-", 1 )

IF(STRLEN ($promo) > 1)   // проверка на длину строки промокода, я поставил 1 символ, можешь сменить на нужное
   
   //тут уж сам думай что с этим промокодом делать, можно записывать в тхт, или просто в лог.
   
   print($promo) //смотрим в логе
   
   TFWRITE ("promo.txt",$promo) //запись в файл  "promo.txt"
   
   
END_IF


halt

Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Да спасибо большое!  :D

Но столкнулся с проблемами, справку читал, голова не варит, сам не в этом направлении..

Допустим бот скопировал весь текст который нужно анализировать, куда его потом вставлять?
И еще, когда бот анализировал текст, выделил нужный материал, как сделать чтобы скрипт его автоматически скопировал, без моего участия?

Помогите пожалуйста кто может, буду благодарен ;)

как выделить нужный материал, это тебе виднее. можно с помощью ctrl+a, можно нажатием лкм и move. вот пример с тройным кликом по тексту:

Code: (clickermann) [Select]
//triple click
DBLCLICK($x,$y) //координаты свои
waitms(50)
LCLICK($x,$y)
waitms(150)


//ctrl+c
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#C)
WAITMS (50)
KEYUP (#C)
KEYUP (#CTRL)
waitms(150)

$promo = strfilter(FROMCLIP (), "ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789-", 1 )

IF(STRLEN ($promo) > 1)   // проверка на длину строки промокода, я поставил 1 символ, можешь сменить на нужное
   
   //тут уж сам думай что с этим промокодом делать, можно записывать в тхт, или просто в лог.
   
   print($promo) //смотрим в логе
   
   TFWRITE ("promo.txt",$promo) //запись в файл  "promo.txt"
   
   
END_IF


halt


Очень благодарен.

Просто, на сайте есть система и игрок, и они кидают текст немного в разных координатах, нужно сделать так, чтобы 2 датчика работали параллельно или последовательно, но никак не останавливались на 1, и в случае если будет N пиксель, то определенно чтобы тыкал по N координатам

GETSCREEN

IF_PIXEL_IN(1185,639, 1187,641, 5618559)   // ПИКСЕЛЬ СИСТЕМЫ

IF_PIXEL_IN(1259,666, 1261,668, 2400715)      // ПИКСЕЛЬ ИГРОКА

LCLICK(1205,650)
LCLICK(1205,650)  //КЛИКНУТЬ 3 РАЗА В СЛУЧАЕ ЕСЛИ БУДЕТ СИСТЕМА
LCLICK(1205,650)


LCLICK(1205,619)
LCLICK(1205,619)  //КЛИКНУТЬ 3 РАЗА В СЛУЧАЕ ЕСЛИ БУДЕТ ИГРОК
LCLICK(1205,619)



dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Code: (clickermann) [Select]
SUB(filter) // подпрограмма
   // тело выполняется только после вызова
   //ctrl+c
   waitms(100)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYDOWN (#C)
   WAITMS (50)
   KEYUP (#C)
   KEYUP (#CTRL)
   waitms(150)
   
   $promo = strfilter(FROMCLIP (), "ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789-", 1 )
   
   IF(STRLEN ($promo) > 1)   // проверка на длину строки промокода, я поставил 1 символ, можешь сменить на нужное
     
      //тут уж сам думай что с этим промокодом делать, можно записывать в тхт, или просто в лог.     
      print($promo) //смотрим в логе     
      TFWRITE ("promo.txt",$promo) //запись в файл  "promo.txt"
 
   END_IF
END_SUB



GETSCREEN
IF_PIXEL_IN(1185,639, 1187,641, 5618559)   // ПИКСЕЛЬ СИСТЕМЫ
   
   LCLICK(1205,650)
   waitms(30)
   LCLICK(1205,650)  //КЛИКНУТЬ 3 РАЗА В СЛУЧАЕ ЕСЛИ БУДЕТ СИСТЕМА
   waitms(30)
   LCLICK(1205,650)
   waitms(30)
   filter() // вызов подпрограммы (обязательно ниже подпрограммы)
   
else
   IF_PIXEL_IN(1259,666, 1261,668, 2400715)      // ПИКСЕЛЬ ИГРОКА
     
      LCLICK(1205,619)
      waitms(30)
      LCLICK(1205,619)  //КЛИКНУТЬ 3 РАЗА В СЛУЧАЕ ЕСЛИ БУДЕТ ИГРОК
      waitms(30)
      LCLICK(1205,619)
      waitms(30)
      filter() // вызов подпрограммы (обязательно ниже подпрограммы)
     
   end_if
   
end_if

halt    //завершение работы

Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Наконец-то спасибо все заработало, реально спасибо!  :)

Только хочу спросить, реально ли сделать так, чтобы этот код:

   $promo = strfilter(FROMCLIP (), "ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789-", 1 )
 
   IF(STRLEN ($promo) > 5) 

Нужно сделать так, чтобы он просто брал в анализ слова где больше 5 символов, если нельзя, то обойдусь, или как-то выкручусь)

------------------------------

Ибо получаеться вот так:
Система: Промокод на 4 монеты ХХХХ-ХХХ..
Выходит: 4ХХХХ-ХХХ...




« Last Edit: February 04, 2018, 03:37:19 PM by Welier »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
конечно можно

Code: (clickermann) [Select]
SUB(filter) // подпрограмма
   waitms(100)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYDOWN (#C)
   WAITMS (50)
   KEYUP (#C)
   KEYUP (#CTRL)
   waitms(150)
   
   UNDEFINE($arr)
   STRSEPARATE(FROMCLIP (), " ", $arr)
   FOR($i=0,$i<ARRSIZE($arr))
      $promo = strfilter($arr[$i], "ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789-",1)
     
      IF(STRLEN ($promo) > 5)
         
         print($promo) //смотрим в логе
         TFWRITE ("promo.txt",$promo) //запись в файл  "promo.txt"
         
      END_IF
     
   END_CYC
   
END_SUB

GETSCREEN
IF_PIXEL_IN(1185,639, 1187,641, 5618559)   // ПИКСЕЛЬ СИСТЕМЫ
   
   LCLICK(1205,650)
   waitms(30)
   LCLICK(1205,650)  //КЛИКНУТЬ 3 РАЗА В СЛУЧАЕ ЕСЛИ БУДЕТ СИСТЕМА
   waitms(30)
   LCLICK(1205,650)
   waitms(30)
   filter() // вызов подпрограммы (обязательно ниже подпрограммы)
   
else
   IF_PIXEL_IN(1259,666, 1261,668, 2400715)      // ПИКСЕЛЬ ИГРОКА
     
      LCLICK(1205,619)
      waitms(30)
      LCLICK(1205,619)  //КЛИКНУТЬ 3 РАЗА В СЛУЧАЕ ЕСЛИ БУДЕТ ИГРОК
      waitms(30)
      LCLICK(1205,619)
      waitms(30)
      filter() // вызов подпрограммы (обязательно ниже подпрограммы)
     
   end_if
   
end_if

halt    //завершение работы

Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Спасибо, все работает отлично! Буду как-то запускать
« Last Edit: February 04, 2018, 04:30:08 PM by Welier »

Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Как автоматически скопировать текст с блокнота в который сохраняется промокод? А потом его удалить

Точнее когда скрипт нашел нужный текст, чтобы его автоматически вставить в нужное поле
« Last Edit: February 04, 2018, 06:02:04 PM by Welier »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Как автоматически скопировать текст с блокнота в который сохраняется промокод? А потом его удалить
а теперь попробуй сам  ;)

подсказки:

TFREAD ("file", str_n) - строковая функция; считывает строку из файла.

Параметры:
file - имя файла.
str_n - номер строки в файле.


TOCLIP ("str") - помещает текст сообщения в буфер обмена.

Параметры:
str - строка, содержащая текст сообщения.


TFDELETE ("file", str_n) - удаляет строку из файла.

Параметры:
file - имя файла.
str_n - номер строки в файле.



если нужно скопировать весь текст, не построчно, то ответ тут - http://crapware.aidf.org/forum/index.php?topic=3784.0

« Last Edit: February 04, 2018, 06:05:47 PM by dramster »

Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Все равно чет не пашет(

end_if

TFREAD ("promo.txt", 1))

TOCLIP ("1")

TFCLEAR ("promo.txt")

LCLICK(262,312)
                   
KEYDOWN (#CTRL)
WAITMS (15)
KEYDOWN (#V)
WAITMS (15)
KEYUP (#V)
KEYUP (#CTRL)

LCLICK(262,312)
LCLICK(262,312)
LCLICK(262,312)
KEYDOWN(#DELETE)

  end_if

Вставляет в нужное поле "1"

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Все равно чет не пашет(

end_if

TFREAD ("promo.txt", 1))

TOCLIP ("1")

TFCLEAR ("promo.txt")

LCLICK(262,312)
                   
KEYDOWN (#CTRL)
WAITMS (15)
KEYDOWN (#V)
WAITMS (15)
KEYUP (#V)
KEYUP (#CTRL)

LCLICK(262,312)
LCLICK(262,312)
LCLICK(262,312)
KEYDOWN(#DELETE)

  end_if

Вставляет в нужное поле "1"

к чему эти  end_if -ы? TFREAD ("promo.txt", 1)) это функция, она возвращает первую строку(в твоем случае),то ее нужно к чему нибудь присвоить, присваеваем ее к какой нибудь переменной например $str . $str = TFREAD ("promo.txt", 1))
далее нужно отправить в буфер обмена эту строку. TOCLIP ("1") ты отправляешь в буфер единицу, а потом удивляешься. отправка нашей переменной  $str с нашей строкой из файла - TOCLIP ($str)

у меня есть подозрения, что сохранение в файл твоих промокодов - это лишнее. и тебе требуется при появлении промокода сразу использовать его. так?

Welier

  • Зашел в гости
  • *
  • Posts: 17
  • Какой-то левый..
    • View Profile
Все верно) Мне надо его сразу вставить в строку для ввода промокода активировать его, и ждать появление нового