Author Topic: Хэээлп  (Read 2852 times)

0 Members and 1 Guest are viewing this topic.

GrandBeer

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Хэээлп
« on: January 26, 2017, 09:55:50 PM »
Я пытаюсь написать алхимический бот
суть такая, Все действия производятся при зажатой клавише "ALT", но так как я нуб в скриптописях, я делаю это путем зажатия клавиши и переподключаю клавиатуру
Далее, бот должен найти пиксель определенного цвета, нажать на него, и нажать по опр. координатам, далее он ждет 5 секунд (уже на этом пункте появляются проблемы, но об этом после), ну так вот, дальше он должен определить цифру в  области экрана и если эта цифра, равна заданной зарание ,то скрипт останавливается, если нет, то возабновляется
Code: [Select]
      getscreen 
 if_pixel_in(0, 0, $_xmax, $_ymax, 15170551)
       print("Öâåò îáíàðóæåí â êîîðäèíàòàõ: ", $_return1, ,":", $_return2)
       lclick($_return1, $_return2)
WAITMS(50)

LCLICK(228,396)
WAIT(5)
       
     
    else

GrandBeer

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Хэээлп
« Reply #1 on: January 26, 2017, 10:39:58 PM »
Нет, там все гораздо проще, цифры появляются в одном и том же месте, нужно всего лишь запустить проверку, что бы по определенным координатам находился пиксель заданного цвета, но я не пойму как сделать Это, при моих попытках это сделать он не останавливает скрипт или останавливается после каждого запуска

CarpeDiem

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Хэээлп
« Reply #2 on: January 26, 2017, 10:51:58 PM »
Code: [Select]
THREAD(name, 1)
KEYPRESS(#ALT)     //всегда зажатый ALT
END_THREAD



GETSCREEN
    IF_PIXEL_IN(0,0, $_xmax,$_ymax, 15170551)  // если условие выполняется
LCLICK($_return1, $_return2)    //кликаем по нему
WAITMS(300)
   LCLICK(228, 396)    //кликаем и ждем
   WAIT(5)
   
   
GETSCREEN
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "cifra.bmp")
                  HALT
            END_IF   
   
   END_IF

Я думаю как то так. Сделай скриншот необходимой цифры. Если ее встретит то выйдет, если нет, все начнется заново

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Хэээлп
« Reply #3 on: January 27, 2017, 08:07:28 AM »
Code: [Select]
THREAD(name, 1)
KEYPRESS(#ALT)     //всегда зажатый ALT
END_THREAD

Это не "всегда зажатый альт", это бесконечно нажимаемый альт без задержек, что приведет к ненужной нагрузке.

Code: (clickermann) [Select]
WAIT(1)

KEYDOWN(#ALT) // зажимаем Alt

GO: // далее бесконечно зацикленный скрипт

GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 15170551)  // если условие выполняется
   LCLICK($_return1, $_return2)    //кликаем по нему
   WAITMS(300)
   LCLICK(228, 396)    //кликаем и ждем
   WAIT(5) 
   
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "cifra.bmp")
      HALT
   END_IF
   
END_IF
WAITMS(50)

GOTO(GO)

GrandBeer

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Хэээлп
« Reply #4 on: January 27, 2017, 10:23:49 PM »
Code: (clickermann) [Select]
MOVE(387,144)// ïåðåâîäèì êóðñîð â äðóãîå ìåñòî äàáû íå ìåøàòü
getscreen // Äåëàåì ñêðèíøîò â ëîã
KEYDOWN(#ALT)

if_pixel_in(0, 0, $_xmax, $_ymax, 15170551)    //ïîèñê ïèêñåëÿ îïðåäåëåííîãî öâåòà ïî îáëàñòè ýêðàíà
lclick($_return1, $_return2)  // Ëåâûé êëèê ïî íàéäåííûì êîîðäèíàòàì
WAITMS(50)            // çàäåðæêà â 50 ÌÑ
LCLICK(228,396)                          //Ëåâûé êëèê ïî êíîïêå
WAIT(5)//Æäåì 5 ñåê
end_if//Êîíåö óñëîâèÿ
LOGCLEAR//î÷èñòêà ëîã
MOVE(437,111)//íàâîäèì íà îðóæèå
WAIT(1)//æäåì 1 ñåê
GETSCREEN//äåëàåì ñêðèí â ëîã
$clr1 = PXL(491,273)// ïðèñâîåíèå ïåðåìåííîé Clr¹ çíà÷åíèÿ öâåòà ïèêñåëÿ ïî êîîðäèíàòàì
$clr2 = PXL(492,272)
$clr3 = PXL(495,272)
$clr4 = PXL(496,273)
$clr5 = PXL(496,275)
$clr6 = PXL(495,276)
$clr7 = PXL(494,277)
$clr8 = PXL(493,277)
$clr9 = PXL(492,278)
$clr10 = PXL(491,279)
$clr11 = PXL(491,280)
$clr12 = PXL(496,280)// äëÿ 2


IF($clr1 = 16777215)   //åñëè  Clr¹ = pfljyyjve wdtne
IF($clr2 = 16777215)
IF($clr3 = 16777215)
IF($clr4 = 16777215)
IF($clr5 = 16777215)
IF($clr6 = 16777215)
IF($clr7 = 16777215)
IF($clr8 = 16777215)
IF($clr9 = 16777215)
IF($clr10 = 16777215)
IF($clr11 = 16777215)
IF($clr12 = 16777215) // òî
Halt                       //îñòàíîâèòü
else//Åñëè íåò òî...
LOGWRITE ("Íå òî")   //âûâîäèì â ëîã ñîîáùåíèå "Íå òî"
end_if         //Êîíåö óñëîâèÿ
С горем-пополам я написал этот скрипт, и решил привязать к окну и он не работает, не могу понять что именно, толи Зажатый альт толи левый клик

GrandBeer

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Хэээлп
« Reply #5 on: January 28, 2017, 07:08:31 AM »
Благодарю, хотя если я понимаю можно еще заменить на IF(PXL(494,277) & PXL(123,123) & PXL(123,123) & PXL(123,123) & PXL(123,123) & PXL(123,123) & PXL(123,123) & PXL(123,123)=123456789)

GrandBeer

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Хэээлп
« Reply #6 on: January 28, 2017, 07:20:48 AM »
Code: (clickermann) [Select]
MOVE(387,144)
WAIT(1)
getscreen
KEYDOWN(#ALT)
 
if_pixel_in(0, 0, $_xmax, $_ymax, 15170551)
   lclick($_return1, $_return2)
   WAITMS(50)
   LCLICK(228,396)
   WAIT(5)
end_if
LOGCLEAR
MOVE(437,111)
WAIT(1)
GETSCREEN
IF(PXL(491,291) & PXL(492,290) & PXL(495,290) & PXL(496,291) & PXL(496,293) & PXL(495,294) & PXL(494,295) & PXL(493,295) & PXL(492,296) & PXL(491,297) & PXL(491,298) & PXL(496,298) = 16777215)
                                    Halt                     
                                 else
                                    LOGWRITE ("Íå òî")   
END_IF //альт отжимать не надо, но можно, это ни на что не влияет       
Вот что у меня получилось

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Хэээлп
« Reply #7 on: January 28, 2017, 08:20:31 AM »
Не верная конструкция условия
Code: (clickermann) [Select]
MOVE(387,144)
WAIT(1)

IF($fiirst = 0)
   $fiirst = 1
   KEYDOWN(#ALT)
END_IF

getscreen
if_pixel_in(0, 0, $_xmax, $_ymax, 15170551)
   lclick($_return1, $_return2)
   WAITMS(50)
   LCLICK(228,396)
   WAIT(5)
end_if

MOVE(437,111)
WAIT(1)

GETSCREEN
IF((PXL(491,291) = 16777215) & (PXL(492,290) = 16777215) & (PXL(495,290) = 16777215) & (PXL(496,291) = 16777215) & (PXL(496,293) = 16777215) & (PXL(495,294) = 16777215) & (PXL(494,295) = 16777215) & (PXL(493,295) = 16777215) & (PXL(492,296) = 16777215) & (PXL(491,297) = 16777215) & (PXL(491,298) = 16777215) & (PXL(496,298) = 16777215))
   Halt
else
   LOGWRITE ("Не то")
END_IF