Author Topic: Доработка скрипта B&S  (Read 3495 times)

0 Members and 2 Guests are viewing this topic.

slokky

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Доработка скрипта B&S
« on: December 20, 2016, 04:20:51 PM »
Добрый день, имеется скрипт:
Code: [Select]
$gamex1 = 0
$gamey1 = 0
$gamex2 = $_xmax
$gamey2 = $_ymax
$midx = INT(($gamex2 - $gamex1) / 2)
$midy = INT(($game?2 - $gamey1) / 2)
$dx1 = $midx + 103
$dy1 = $midy + 31
$dx2 = $midx + 157
$dy2 = $midy + 88ff
WHILE (1 = 1)
IF(iskeydown(6) = 1)
LCLICK(-1,-1)
waitms(20)
RCLICK(-1,-1)
GETSCREEN
PIXEL_IN($dx1, $dy1, $dx2, $dy2, 15653164)
WAITMS(20)
KEYPRESS(#F)
END_IF                           
END_IF
END_CYC
Вкратце он чередует два скила и ждет появления третего в  определённой области и прожимает его. Скрипт работает только когда зажата определённая кнопка на мышке.   


Интересует такой вопрос, можно ли как-то разделить скрипт на две части, так чтобы вот это:
Code: [Select]
LCLICK(-1,-1)
waitms(20)
RCLICK(-1,-1)

продолжало постоянно молотить

и вторая часть с анализом экрана и ожиданием скила.
Code: [Select]
GETSCREEN
PIXEL_IN($dx1, $dy1, $dx2, $dy2, 15653164)
WAITMS(20)
KEYPRESS(#F)
Ибо если тут начинаю выставлять задержки то первая часть сильно замедляется.

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

Code: [Select]
$gamex1 = 0
$gamey1 = 0
$gamex2 = $_xmax
$gamey2 = $_ymax
$midx = INT(($gamex2 - $gamex1) / 2)
$midy = INT(($game?2 - $gamey1) / 2)
$dx1 = $midx + 103
$dy1 = $midy + 31
$dx2 = $midx + 157
$dy2 = $midy + 88ff
WHILE (1 = 1)
IF(iskeydown(6) = 1)
KEYPRESS(#T)
GETSCREEN
PIXEL_IN($dx1, $dy1, $dx2, $dy2, COLOUR)
WAITMS(20)
KEYPRESS(#F)
PIXEL_IN(другие координаты, COLOUR)
KEYPRESS#4
END_IF
END_IF                           
END_IF
END_CYC
Тут тоже самое  T-F должно шарашить постоянно а 4 прожиматся при перvой же возможности тоеть по откату.

за русский не пинайте всё писалось через  translit.ru

Пример работы скрипта первой ротации https://youtu.be/HF0whwNWu2E



« Last Edit: December 20, 2016, 04:34:10 PM by slokky »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Доработка скрипта B&S
« Reply #1 on: December 20, 2016, 04:33:45 PM »
Можно написать поток. Он начнет работать когда зажмешь клавишу.

Code: (clickermann) [Select]
$gamex1 = 0
$gamey1 = 0
$gamex2 = $_xmax
$gamey2 = $_ymax
$midx = INT(($gamex2 - $gamex1) / 2)
$midy = INT(($gamey2 - $gamey1) / 2)
$dx1 = $midx + 103
$dy1 = $midy + 31
$dx2 = $midx + 157
$dy2 = $midy + 88

WHILE (1) // бесконечный цикл
   IF(iskeydown(6) = 1) // что за код 6?
      SETTHREAD(t1,1)
      GETSCREEN($dx1,$dy1, $dx2,$dy2)
      IF_PIXEL_IN($dx1, $dy1, $dx2, $dy2, 15653164)
         WAITMS(20)
         KEYPRESS(#F)
      END_IF
   ELSE
      SETTHREAD(t1,0)
   END_IF
   WAITMS(10)
END_CYC

THREAD(t1,0)
   LCLICK(-1,-1)
   waitms(20)
   RCLICK(-1,-1)
   waitms(20)
END_THREAD

slokky

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Доработка скрипта B&S
« Reply #2 on: December 20, 2016, 04:49:34 PM »
Можно написать поток. Он начнет работать когда зажмешь клавишу.


F прожимает толко если заменяю IF_PIXEL_IN ....END_IF на PIXEL_IN.
 "6" это боковая клавиша на мышке.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Доработка скрипта B&S
« Reply #3 on: December 20, 2016, 05:31:39 PM »
Можно написать поток. Он начнет работать когда зажмешь клавишу.


F прожимает толко если заменяю IF_PIXEL_IN ....END_IF на PIXEL_IN.
 "6" это боковая клавиша на мышке.

Нет такой команды в кликере PIXEL_IN соответственно кликер строку пропускает и по любому выполняет твою F


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Доработка скрипта B&S
« Reply #4 on: December 20, 2016, 05:31:58 PM »
F прожимает толко если заменяю IF_PIXEL_IN ....END_IF на PIXEL_IN.
PIXEL_IN нормально  ;)
С таким же успехом можно заменить на что угодно
HEXEL_IN, MEXEL_IN, VEXEL_IN... и даже АБРАКАДАБРА
один чёрт не работает.

А не прожимает, потому что нет там такого цвета.

А здесь опечатки
Code: (clickermann) [Select]
$dy2 = $midy + 88ff"88ff" - это строка
Code: (clickermann) [Select]
$midy = INT(($game?2 - $gamey1) / 2)y -->> ?


slokky

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Доработка скрипта B&S
« Reply #5 on: December 20, 2016, 05:44:01 PM »
Спасибо за подсказки, как до жирафа но дошло!

slokky

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Доработка скрипта B&S
« Reply #6 on: December 22, 2016, 12:36:46 PM »
это снова я, а можно во время прожима Ф на секунду останавливать поток?
 Пиксель совпал, остановил это:
 LCLICK(-1,-1)
 waitms(20)
 RCLICK(-1,-1)
 waitms(20)
прожал Ф запустил обратно


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Доработка скрипта B&S
« Reply #7 on: December 22, 2016, 01:53:37 PM »
Можно конечно.
Code: (clickermann) [Select]
$gamex1 = 0
$gamey1 = 0
$gamex2 = $_xmax
$gamey2 = $_ymax
$midx = INT(($gamex2 - $gamex1) / 2)
$midy = INT(($gamey2 - $gamey1) / 2)
$dx1 = $midx + 103
$dy1 = $midy + 31
$dx2 = $midx + 157
$dy2 = $midy + 88

WHILE (1) // бесконечный цикл
   IF(iskeydown(6) = 1)
      GETSCREEN($dx1,$dy1, $dx2,$dy2)
      IF_PIXEL_IN($dx1, $dy1, $dx2, $dy2, 15653164)
         SETTHREAD(t1,2) // останавливаем поток
         IF((ISKEYDOWN(1)=1)|(ISKEYDOWN(2)=1)) // проверяем не зажаты ли клавиши мыши
            LUP(-1,-1) // отпускаем
            RUP(-1,-1)
         END_IF
         WAITMS(20)
         KEYPRESS(#F)
      ELSE
         SETTHREAD(t1,1) // если пиксел не найден запускаем поток
         WAITMS(20)
      END_IF
   ELSE
      SETTHREAD(t1,2)
   END_IF
   WAITMS(10)
END_CYC

THREAD(t1,0)
   waitms(1)
   LCLICK(-1,-1)
   waitms(20)
   RCLICK(-1,-1)
   waitms(20)
END_THREAD

В 4.12 версии присутствует баг потока. Если поток остановить SETTHREAD(t1,2) а потом запустить SETTHREAD(t1,1) то у него перестает воспроизводиться первая строка. Поэтому я там написал задержку waitms(1). Иначе у тебя    LCLICK(-1,-1) перестанет работать.

slokky

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Доработка скрипта B&S
« Reply #8 on: December 22, 2016, 04:28:09 PM »
это божесвенно!

У меня тут проблемка нарисовалась. Програма не видет пиксели в синих/голубых  цветов.  А вот на желтые сразу срабатывает. Может попробывать поиск по картинке?  Так же ногу разобратся с alt+q  как я понял в буфер идут координаты точки и цвет но по ctrl+v не встаvляется ничего. Так нет должно само в код вставлять но у меня не срабатывает..... или это только при записи?
« Last Edit: December 22, 2016, 04:57:13 PM by slokky »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Доработка скрипта B&S
« Reply #9 on: December 22, 2016, 05:21:00 PM »
У меня тут проблемка нарисовалась. Програма не видет пиксели в синих/голубых  цветов.  А вот на желтые сразу срабатывает. Может попробывать поиск по картинке?
Попробуй использовать цветокоррекцию!

  Так же ногу разобратся с alt+q  как я понял в буфер идут координаты точки и цвет но по ctrl+v не встаvляется ничего
 Так нет должно само в код вставлять но у меня не срабатывает..... или это только при записи?

В открытом редакторе Alt+Q вставляет клик с координатой курсора и закомментированным цветом.
Сверху на панельке есть кнопка "Планшет" если включить то в буфер будет вставляться координата в скрипт ничего.

slokky

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Доработка скрипта B&S
« Reply #10 on: December 22, 2016, 05:27:27 PM »
Colormode 7 помог, alt+q  не  работает, хз