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 - 4.У.В.@.К

Pages: 1 2 [3] 4 5 ... 8
31
Сравнение строк не работает для строк, содержащих # " '

Не совсем понятно, что подразумевает фраза "Сравнение строк". Например с точки зрения коммунистической пропаганды в СССР - слово "Ленин" приравнивается к слову "Партия".
Строки "123" и "abc", тоже равны, только по длине.

Всё работает, если знать как сравнивать. Обычно делали так:
Code: (clickermann) [Select]
$str_1 = CHAR(34) // "

$str_2 = CHAR(35) // #

IF(STRMD5($str_1) = STRMD5($str_2))
   LOGWRITE ("Равны")
ELSE
   LOGWRITE ("Не равны")
END_IF

HALT

В логе:
Code: [Select]
19:17:56 Не равны

32
Ты об $_xmouse и $_ymouse?

Не, я говорю не про координаты, а про код курсора, который меняется, например при наведении курсора на различные элементы окна приложения (или элементы игрового интерфейса).
В редакторе: Команды ==> Системные переменные ==> $_cursor - Код курсора. Вот я про что.

Code: (clickermann) [Select]
LOGWRITE ($_cursor)

WAITMS(100)

Кстати да, резкое несанкционированное изменение координат курсора, тоже можно наверно анализировать).

33
А код курсора как то меняется в состояниях, когда мышь "захвачена" и "не захвачена" автоматически?
Бывает так, что сами цифровые значения системной переменной $_cursor не важны, достаточно того, что они не равны друг другу, в различные моменты игры.

34
Общие вопросы / Re: Логин из тхт
« on: October 31, 2020, 05:43:21 PM »
Привет.
Code: (clickermann) [Select]
IF(TFCOUNT("LogPass.txt") = 0)
   HALT // Стоп по достижении конца файла
END_IF

$str = TFREAD ("LogPass.txt", 1) // Берем первую строку из файла LogPass.txt
$log = STRCUT2 ($str, 1, STRPOS ($str, ":")-1)
$pass = STRCUT2 ($str, STRPOS ($str, ":")+1, STRLEN ($str))
 
LCLICK(646,278) // клик по полю логина
WAITMS (50)
TOCLIP($log) // скопировать логин в буфер
WAITMS (50)
KEYDOWN (#CTRL) // вставить
WAITMS (50)
KEYPRESS(#V)
WAITMS (50)
KEYUP (#CTRL)
WAITMS (50)
 
LCLICK(650,338) // клик по полю пароля
WAITMS (50)
TOCLIP($pass) // скопировать в пароль в буфер
WAITMS (50)
KEYDOWN (#CTRL) // вставить
WAITMS (50)
KEYPRESS(#V)
WAITMS (50)
KEYUP (#CTRL)
WAITMS (50)

TFDELETE("LogPass.txt", 1) // Удаляем первую строку из файла LogPass.txt

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

Всё у меня правильно написано. Только не хватает одной строки, без которой теряется смысл задуманного. Просто торопился вчера выключить комп на ночь и не мешать людям спать, а откладывать такой простой вопрос на завтра не хотелось. Наспех почистил тестовый скрипт от лишнего и выложил на форум. Оказалось, что удалил нужную последнюю строку. Ну а клавиша A вместо клавиши мыши, это тоже для теста (в Блокноте). Вот и всё.

Смысл моего сценария в паре директив DEFINE/UNDEFINE. Для понимающих - очевидно, что у меня он был заложен во второй строке кода. Если кому непонятно как эта пара работает, но лень читать справку, то могу рассказать.

Вернул удаленную строку и переделал клавишу A на ЛКМ.
Code: (clickermann) [Select]
WHILE(ISKEYDOWN(1))
   DEFINE($t, $_ms + 3950)
   IF($t < $_ms)
      KEYUP(1)
      HALT
   END_IF
END_CYC
UNDEFINE($t)

36
Привет!
Примерно так можно написать:
Code: (clickermann) [Select]
WHILE(ISKEYDOWN(#A))
   DEFINE($t, $_ms + 3950)
   IF($t < $_ms)
      KEYUP(#A)
      HALT
   END_IF
END_CYC

Если клавиша A будет зажата в течение указанного времени, то сработает KEYUP(#A), и скрипт остановится.
Только если клавиша зажата физически, например пальцем, то кликер палец вверх не подбросит)), и клавиша останется зажатой.

37
Общие вопросы / Re: Помогите решить ошибку.
« on: September 30, 2020, 10:05:05 PM »
1. Описание подпрограммы должно быть в корне потока, в котором она будет вызываться. То есть, само описание не должно находиться ни в каких циклах, подпрограммах, или условиях. Короче,)) никаких оберток вокруг SUB ... END_SUB быть не должно. Единственной оберткой может быть поток.

2. Вызов подпрограммы делается ниже (по ходу сценария), чем её описание.

Как смог сформулировал.))

Code: (clickermann) [Select]
THREAD(Атака, 1)

   SUB(Хит)
      LOGWRITE ("Сообщение")
   END_SUB

   Хит() // вызов подпрограммы - в любом месте ТОГО ЖЕ ПОТОКА, в котором эта подпрограмма описана, но после её описания
   
END_THREAD

Вот так можно сделать.
Code: (clickermann) [Select]
THREAD(Атака, 1)

   SUB(Хит)
      LOGWRITE ("Сообщение")
   END_SUB

   IF_PICTURE_IN(0,0, $_xmax, $_ymax,"mob.bmp",-1,100)
      LDOWN($_return1,$_return2)
      Хит()
   ELSE
      Хит()
      KEYDOWN(#A)
      WAITMS(50)
      KEYUP(#A)
   END_IF

   Хит()
   
END_THREAD

HALT

38
Привет!
Присваивать значения можно только существующим переменным. А в данном случае, даже не известно сколько их всего будет. Но нам не нужно их создавать. Будем добавлять скопированный текст в массив. Вместо $a1, $a2, $a3,... будет $ARR_TEXT[0], $ARR_TEXT[1], $ARR_TEXT[2] и так далее. Первая ячейка в массиве имеет индекс 0, а не единицу.

Скрипт я немного переделал. Разберешься короче.))

Code: (clickermann) [Select]
GETSCREEN(362,158,506,733)

SCANPICTURE($ARR_SCAN, 362,158,506,733, "хк.bmp", -1, 70)

FOR($ARR_NUM = 0, $ARR_NUM < ARRSIZE($ARR_SCAN))
   
   $X = $ARR_SCAN [$ARR_NUM]
   
   $Y = $ARR_SCAN [$ARR_NUM + 1]
   
   FOR($a=0,$a<3)
      LCLICK($X+30, $Y+6)
      WAITMS(20)
   END_CYC
   
   WAITMS(100)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#C)
   KEYUP (#CTRL)
   WAITMS(10)
   
   ARRPUSH($ARR_TEXT, FROMCLIP()) // добавляем скопированный текст в массив
   
END_CYC

UNDEFINE($ARR_SCAN)

//=============================================

IF(ARRSIZE($ARR_TEXT)) // если массив с найденным текстом не пустой
   
   FOR($i = 0,  < ARRSIZE($ARR_TEXT)) // выводим найденный текст в лог
      LOGWRITE ($ARR_TEXT[$i])
   END_CYC
   
ELSE
   LOGWRITE ("Не найдено!")
END_IF

UNDEFINE($ARR_TEXT)

39
Использование / Re: Зажатие кнопки
« on: September 28, 2020, 09:17:27 PM »
Code: (clickermann) [Select]
IF(ISKEYDOWN(#SHIFT) = 1)
   IF($s = 0)
      KEYDOWN(#CTRL)
   ELSE
      KEYUP(#CTRL)
   END_IF
   
   $s = $s ^ 1
   
   WHILE(ISKEYDOWN(#SHIFT) = 1)
      WAITMS(30)
   END_CYC
END_IF

WAITMS(50)

//--------------------------------
// Проверка:
//
// IF(ISKEYDOWN(#CTRL) = 1)
//    LOGWRITE ("DOWN")
// ELSE
//    LOGWRITE ("UP")
// END_IF

Вариант без переключателя:
Code: (clickermann) [Select]
IF(ISKEYDOWN(#SHIFT))
   IF(ISKEYDOWN(#CTRL))
      KEYUP(#CTRL)
   ELSE
      KEYDOWN(#CTRL)
   END_IF
   WHILE(ISKEYDOWN(#SHIFT))
      WAITMS(30)
   END_CYC
END_IF
WAITMS(50)

//--------------------------------
// Проверка:
//
// IF(ISKEYDOWN(#CTRL) = 1)
//    LOGWRITE ("DOWN")
// ELSE
//    LOGWRITE ("UP")
// END_IF

40
Так получается при попытке обратиться к несуществующей ячейке массива.

Code: (clickermann) [Select]
strseparate($ar_bmp[0], "_", $nr) // разбиваем строку $ar_bmp[0] на подстроки, в массив "$nr"

LOGWRITE (ARRSIZE($nr)) // размер массива "$nr" (в логе: 1)

Ячейки $nr[1] не существует.
В общем надо смотреть что находится в строке $ar_bmp[0], и есть ли в ней подстрока "_".

41
Привет!
Для актуальной версии Clickermann v4.13
Справка => Анализ экрана => SCANPICTURE

42
Не успел я немного.)) Напишу раз уж сделал.
Неправильно у меня работает. Удалил.
Добавил в переключать пропущенный KEYUP(#4). Заработало.)
Code: (clickermann) [Select]
DEFINE($cond, 2)

IF(ISKEYDOWN(#Z) = 1)
   $cond = $cond ^ 3
   KEYUP(#4)
   SETTHREAD (hread, $cond)
   WHILE(ISKEYDOWN(#Z) = 1)
      WAITMS(30)
   END_CYC
END_IF

THREAD(hread, 0)
   KEYDOWN(#4)
   WAITMS(4000)
   KEYUP(#4)
   WAITMS(9000)
END_THREAD

WAITMS(30)


43
Общие вопросы / Re: Умники и умницы ХЭЭЭЛП
« on: September 09, 2020, 05:34:06 PM »
Ну там как бы да, надо подбирать и разбивать входную строку по разному, страница то динамическая, в ней всё может меняться.
Вот этот кусок скрипта получает код страницы, фильтрует и разбивает его на куски, начинающиеся текстом "RenderervideoId", а сам "RenderervideoId" удаляет. Каждый такой кусок попадает в отдельную ячейку массива $arr_1. При этом, вторая ячейка массива $arr_1[1] и все последующие ячейки, будут начинаться с текста идущего за текстом "RenderervideoId".

Code: (clickermann) [Select]
STRSEPARATE(STRFILTER(HTTPGET ("https://www.youtube.com/channel/UCi_VsjkIy8vPMQnRMhPu9OA/live"), "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_Сейчассмотрят", 1), "RenderervideoId", $arr_1)

TFWRITEARR("out.txt", $arr_1)

HALT

Надо подобрать эту подстроку, вместо "RenderervideoId", по которой лучше разбивать код страницы. Вывод в файл в этом поможет. В нем отфильтрованный текст, без пробелов, кавычек, скобок и прочего мусора, который не содержится в айди и фразе "Сейчассмотрят".

44
Почему тогда оно работало так, а теперь нет?

Может просто не установлены прибамбасы "VMware Tools"?

Вот здесь инструкция на русском:
https://www.white-windows.ru/ustanovka-vmware-tools-na-virtualnye-mashiny-vmware-workstation/
Раздел "Пользовательская установка VMware Tools".

45
Общие вопросы / Re: Умники и умницы ХЭЭЭЛП
« on: September 09, 2020, 08:08:04 AM »
А можно ли как то очищать масив допустим если я два раза этот код использую для двух разных каналов ? потому что когда второй раз этот код проходит то оур код чушь начинает писать

Цитата из Справки Clickermann:
Quote
UNDEFINE

Удаляет переменную из памяти.

Синтаксис
UNDEFINE ($var)

Параметры
$var - символьное имя переменной

Примечания

Если обратиться к удаленной переменной, ее значение представится как 0.
Так же эта процедура может использоваться для удаления массива и всех его элементов.

Pages: 1 2 [3] 4 5 ... 8