Author Topic: помогите разобраться как писать скрипты  (Read 12927 times)

0 Members and 4 Guests are viewing this topic.

AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
пытаюсь написать скрипт кликер с определением цвета и кликом по точке, но так как занялась этим в первые то все из рук вон плохо ппыталась читать но все равно не понятно например что значит $check = 0
надо ли изменять *0* на свое значение или это постоянная величина?
// Ждем появления цвета 255 по координате 100,100
GETSCREEN
WHILE(PXL (278,519) !206) // цикл задерживает скрипт пока не появится заданный цвет
WAITMS (100)
LCLICK(286,518) // 249
GETSCREEN
END_CYC
по идее он должен нажать а потом ждать цвет а вместо этого жмет бесперебойно (
я поняла что неверно сформулировала вопрос
и так есть точка определенного цвета когда она появляется на нее надо нажать когда ее нет просто ждать появления не мог бы кто нибудь показать любой пример дальше я сама разберусь, а то у меня либо жмет постоянно либо вообще не жмет
этот вариант не жмет хотя писала чуть ли не сверяя с форумом каждую букву
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(279,518, $_xmax,$_ymax, 249)
      $check = 1
      LCLICK($_return1)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
и еще язык из скриптов UPiliоt  подойдет для написания просто там тоже попадаются примеры можно ли брать интересные куски от туда?
« Last Edit: February 22, 2015, 01:02:35 PM by AKroshka »

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #1 on: February 22, 2015, 01:08:59 PM »
Второй вариант подойдет, хотя в нем ошибок куча
Code: (clickermann) [Select]
$check = 0
GETSCREEN
WHILE($check = 0)
   IF_PIXEL_IN(279,518, 279,518, 249) //цвет 249
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

как то так должно быть

Olegreus

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #2 on: February 22, 2015, 01:11:10 PM »
И это будет работать если данный цвет должен появиться только в данной точке - 279,518

AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #3 on: February 22, 2015, 01:14:49 PM »
спасибо большое

AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #4 on: February 22, 2015, 01:44:20 PM »
Еще вопрос все работает но нужно подводить курсор мыши на цвет хотя координаты введены и пока не наведешь на цвет кнопка не срабатывает почему то , надо доп команду какую то прописывать чтоб она сама наводилась?

AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #5 on: February 22, 2015, 03:44:14 PM »
$check = 0
GETSCREEN
WHILE($check = 0)
MOVE(279,518)
$check = 1
IF_PIXEL_IN(279,518, 279,518, 249) //цвет 249
$check = 2
LCLICK($_return1, $_return2)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC

ну вот теперь жмет сам но нет цикличности, тоесть мышку слегка двинула он повторно жмет а если ее не трогать то стоит(
я понимаю что нужно что то вписать но найти что именно не могу уже всю сеть облазила
« Last Edit: February 22, 2015, 03:57:36 PM by AKroshka »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #6 on: February 22, 2015, 04:08:33 PM »
$check - это переменная, ячейка памяти содержащая какую то информацию, например цифру 0
WHILE($check = 0) - это цикл с условием, если значение $check равно 0 то повторяем цикл
когда условие с поиском сработает и его внутренность выполнится переменной $check будет присвоено другое значение (цифра не важна главное не 0). Цикл прервется и скрипт пойдет дальше (прервется он когда дойдет до END_CYC конечно.).

Вот верный скрипт

Code: (clickermann) [Select]
$check = 0
MOVE(0,400) // предварительно убираем курсор в сторону, чтобы не мешал.
WHILE($check = 0)
   GETSCREEN
   IF(PXL(279,518) = 249)
      $check = 1
      LCLICK(279,518)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Предположительно у тебя не находит цвет потому что при наведении цвет кнопки меняется и ты ищешь цвет кнопки с наведенным курсором. Тебе нужно сделать скриншот и взять цвет с него или вот таки отдельным скриптом узнать код цвета
Code: (clickermann) [Select]
GETSCREEN
LOGWRITE ("Цвет: ", PXL(279,518))
LOGSHOW (1)
HALT



Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #7 on: February 22, 2015, 04:11:17 PM »
Если это весь скрипт то в WHILE($check = 0) нет смысла. Это имеет смысл если нужно поэтапно находить пикселы и выполнять некоторые действия.

AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #8 on: February 22, 2015, 04:18:18 PM »
спасибо большое :)
а 2 скрипта можно друг за другом ставить? ну например один нажимает одну кнопку а второй скрипт другую? или по какому принципу их можно обьеденить если цвет второй кнопки меняется?
примерно все действие выглядит так:
нажать кнопку 1
если цвет кнопки 2 красный нажать кнопку о1
если цвет зеленый нажать кнопку о2
если синий нажать кнопку о3
повтор цикла
« Last Edit: February 22, 2015, 04:23:15 PM by AKroshka »

AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #9 on: February 22, 2015, 05:12:04 PM »
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(342,418, $_342,$_481, 10897227)    синий
      $check = 1
      LCLICK(247,476)
      WAITMS(100)
   ELSE
   IF_PIXEL_IN(342,418, $_342,$_481, 389451)  зеленый
          $check = 1
      LCLICK(424,471)
      WAITMS(50)
   ELSE
   IF_PIXEL_IN(342,418, $_342,$_481, 343806)  красный
          $check = 1
      LCLICK(424,471)
      WAITMS(50)   
   END_IF
END_CYC
вот написала) осталось только как то соеденить в одно оба скрипта все работает) блин не совсем работает пошла дальше ломать
« Last Edit: February 22, 2015, 05:14:30 PM by AKroshka »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #10 on: February 22, 2015, 05:51:15 PM »
Функция "IF_PIXEL_IN" ищет пиксел в зоне, конечно она может искать и в пределах 1 пиксела но для этого есть другая функция "PXL".

342,418, $_342,$_481 - что за ерунда? Первые два числа это верхний левый угол области поиска, вторые два нижний правый.
В кликере есть особые системные переменные возвращающие определенные параметры. $_xmax,$_ymax - эти две системные переменные возвращают размер твоего экрана.
$_342,$_481 - вот это фактически обозначает 0,0  :o Функция не будет так правильно работать.

Вот верный скрипт
Code: (clickermann) [Select]
LCLICK(10,10) // нажать кнопку 1
WAITMS(500)

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(342,418, 342,481, 10897227) // синий
      $check = 1
      LCLICK(247,476)
      WAITMS(50)
   ELSE
      IF_PIXEL_IN(342,418, 342,481, 389451)  // зеленый
         $check = 1
         LCLICK(424,471)
         WAITMS(50)
      ELSE
         IF_PIXEL_IN(342,418, 342,481, 343806)  // красный
            $check = 1
            LCLICK(424,471) // те же координаты что и зеленый?
            WAITMS(50)
         ELSE
            WAITMS(50)
         END_IF
      END_IF
   END_IF
END_CYC
WAITMS(500)


AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #11 on: February 22, 2015, 06:00:17 PM »
$check = 0
MOVE(0,400) // предварительно убираем курсор в сторону, чтобы не мешал.
WHILE($check = 0)
   GETSCREEN
   IF(PXL(351,420) = 389451)
      $check = 1
      LCLICK(427,474)
      WAITMS(50)
   ELSE
   GETSCREEN
   IF(PXL(351,420) = 11156299)
      $check = 1
      LCLICK(252,472)
      WAITMS(50)
       ELSE
   GETSCREEN
   IF(PXL(351,420) = 407038)
      $check = 1
      LCLICK(337,470)
      WAITMS(50)
   END_IF
END_CYC   
вот я исправила

AKroshka

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #12 on: February 22, 2015, 06:23:47 PM »
вот теперь точно работает) урааа мой первый бот по сбору ресурсов!!!мальчики огромное спасибо за помощь) :)
$check = 0
MOVE(0,400)
WHILE($check = 0)
   GETSCREEN
   IF(PXL(279,518) = 166)
      $check = 1
      LCLICK(279,518)
      WAITMS(100)
   ELSE
   GETSCREEN
   IF_PIXEL_IN(351,420, 351,420, 389451)
      $check = 1
      LCLICK(427,474)
      WAITMS(50)
   ELSE
      IF_PIXEL_IN(351,420, 351,420, 11156299)
         $check = 1
         LCLICK(252,472)
         WAITMS(50)
      ELSE
         IF_PIXEL_IN(351,420, 351,420, 407038) 
            $check = 1
            LCLICK(337,470)
            WAITMS(50)
         ELSE
            WAITMS(50)
         END_IF
      END_IF
   END_IF
END_CYC

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #13 on: February 22, 2015, 08:50:13 PM »
Нет, есть ошибка, в конце недостает одного END_IF. Надеюсь ты понимаешь что все условия, у тебя, вложенные. до последнего очередь дойдет только если все предыдущие были не верны. Вообще скрипт странный, не понятно зачем тебе тут WHILE($check = 0)

Code: (clickermann) [Select]
$check = 0
MOVE(0,400)
WHILE($check = 0)
   GETSCREEN
   IF(PXL(279,518) = 166)
      $check = 1
      LCLICK(279,518)
      WAITMS(100)
   ELSE
      IF(PXL(351,420) = 389451)
         $check = 1
         LCLICK(427,474)
         WAITMS(50)
      ELSE
         IF(PXL(351,420) = 11156299)
            $check = 1
            LCLICK(252,472)
            WAITMS(50)
         ELSE
            IF(PXL(351,420) = 407038)
               $check = 1
               LCLICK(337,470)
               WAITMS(50)
            ELSE
               WAITMS(50)
            END_IF
         END_IF
      END_IF
   END_IF
END_CYC

psyzum

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Re: помогите разобраться как писать скрипты
« Reply #14 on: September 27, 2017, 12:00:19 AM »
если хочешь что бы работало в фоне  ;)
Code: [Select]
$hwnd = HGET(60,95)
hset($hwnd, 1)
print($hwnd)

start:
GETSCREEN
WAITMS(100)
COLORMODE(7)
WAITMS(100)
$xm = 55
$ym = rnd(22,23)
postmessage($hwnd, 0x0200, 0, $xm + ($ym*65536))
 print("\x-"$xm,  "\y-"$ym, "  передвижение мышки")
 WAITMS(rnd(100,200))
$p = pxl(55, 22)
$p2 = pxl(55, 23)
//print("$p:", $p,".","$p2:", $p2 )
IF($p & $p2 = 8388479 & 16777087)
 print("++",$p,":",$p2)
//SOUND("xp.wav")
// halt
 GOTO(start1)
  ELSE
   print("\","22-",$p,":","23-",$p2)
   GOTO(start)
END_IF

start1:
print("поехали кликать")
WAIT(rnd(1,4))
GETSCREEN
WAITMS(rnd(50,60))
COLORMODE(6)
WAITMS(rnd(50,60))
IF_PICTURE_IN(0,0, $_xmax,$_ymax, "poisk6.bmp",-1,70)
$x = $_return1+rnd(2,4)
$y = $_return2+2
print("\x-"$x,  "\y-"$y, "  +++++++++")
//postmessage($hwnd, 0x0200, 0, $xp + ($yp*65536));
WAITMS(rnd(100,200))
postmessage($hwnd, 0x0201, 0x0001, $x + ($y*65536));
WAITMS(rnd(1000,2000))
postmessage($hwnd, 0x0202, 0x0000, $x + ($y*65536));
WAITMS(rnd(800,1200))
//halt
GOTO(start)
ELSE
print("\x-"$x,  "\y-"$y, "-------")
//halt
GOTO(start1)