Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: moreman on July 17, 2014, 08:34:38 PM

Title: помогите
Post by: moreman on July 17, 2014, 08:34:38 PM
пытаюсь написать скриптик небольшой, вроде делаю все по инструкции но первых два куска отрабатывает нормально а на третьем останавливается и ничего не делает дальше подскажите что можно с этим сделать?
Title: Re: помогите
Post by: Oraven on July 17, 2014, 08:38:55 PM
Что не видишь что там задержка на 25 секунд?

Title: Re: помогите
Post by: moreman on July 17, 2014, 08:55:28 PM
заднржку я сам поставил, что бы оно ждало перед следующим действием, оно не работало и тогда когда задержка была 100милисекунд)
Title: Re: помогите
Post by: moreman on July 17, 2014, 09:47:28 PM
проблема была в некоректном скриншоте)
немного подправил скрипт, потому что последнее действие нужно выполнить не сразу а точный промежуток времени неизвестен (из-за нестабильности интернет соединения), он меняется время от времени, и так как я переписал последний промежуток не отрабатывается, подскажите как можно доработать?
Title: Re: помогите
Post by: moreman on July 17, 2014, 10:21:32 PM
спасибо за помощь, я сел мальца подумал, снова переделал немного по другому и все вышло) вот конечный вид скриптика)
Title: Re: помогите
Post by: moreman on July 17, 2014, 10:44:54 PM
теперь я хочу мальца усложнить задачку, это были статичные действия, теперь я хочу попробовать написать скриптик для вещи где рандомно выскакивают возможные для выполнения действия, возьмем за основу те же даные что есть в предыдущем скрипте, подскажите пожалуйста что можно добавить что бы кликер думал какое из 4 задач выполнить в даный момент ну или проверял что вылезло в даный момент, подскажите как осуществить это? у меня была задумка использовать команду ELSE, прописать допустим
если написать так как в скрине, для каждого действия это сработает или что то другое нужно?
Title: Re: помогите
Post by: Oraven on July 18, 2014, 12:57:08 AM
Последний вариант неправильный. Каждое условие начинается с IF_ и заканчивается своим END_IF. В условии может быть одна альтернатива ELSE. Зачем ты используешь подпрограмму? Смысл подпрограмм в сокращении часто повторяемого кода. В редакторе есть волшебная палочка, не пробовал нажимать? И завязывай со скирншотами, что неужели вставить текст сложнее чем делать скрины?

Вот рандомный выбор действий. В каждое условие вставь свой код.

Code: (clickermann) [Select]
$random = RND(1,4) // генерация случайного числа 1-4
IF($random = 1)
   // выполнние
END_IF


IF($random = 2)
   // выполнние
END_IF


IF($random = 3)
   // выполнние
END_IF


IF($random = 4)
   // выполнние
END_IF
Title: Re: помогите
Post by: moreman on July 18, 2014, 04:19:53 AM
спасибо за совет, попробую так)
Title: Re: помогите
Post by: moreman on July 18, 2014, 04:41:21 PM
а если будет такая запись, норм или что то по другому сделать?
$random = RND(1,15)
IF(PXL(680,477) = 5031076($random = 1)
LCLICK(680,477)
LCLICK(583,485)
WAIT(2)
LCLICK(681,551)
WAITMS(100)
END_IF
Title: Re: помогите
Post by: moreman on July 18, 2014, 04:56:25 PM
и можно еще как то дописать что если ничего из описаного в рандоме не произошло то сделать то то и то то?
Title: Re: помогите
Post by: moreman on July 18, 2014, 05:01:49 PM
и еще если вещи из рандома будут идти сразу друг за другом они же будут отрабатыватся при такой записи программы?
Title: Re: помогите
Post by: moreman on July 18, 2014, 05:25:07 PM
появилась идея, что если в каждом из условий в конце дописать ELSE примерно так:
$random = RND(1,15)
IF(PXL(680,477) = 5031076($random = 1)
LCLICK(680,477)
LCLICK(583,485)
WAIT(2)
LCLICK(681,551)
WAITMS(100)
ELSE
LCLICK(929,592)
WAITMS(100)

END_IF
так будет нормально отробатывать програму?
Title: Re: помогите
Post by: moreman on July 18, 2014, 06:25:30 PM
проблема с завершением скрипта, кидается игральная кость все время, но в тот момент когда нужно закончить скрипт оно не дает бросить кость, тоесть мне нужно нажать на выход тогда когда оно перестанет бросать кость но вот не знаю как это описать в програме(
Title: Re: помогите
Post by: Oraven on July 18, 2014, 06:47:45 PM
Правильно  писать так

Code: (clickermann) [Select]
$random = RND(1,15)
IF($random = 1)
   GETSCREEN
   IF(PXL(680,477) = 5031076)
      LCLICK(680,477)
      LCLICK(583,485)
      WAIT(2)
      LCLICK(681,551)
      WAITMS(100)
   ELSE
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF
Title: Re: помогите
Post by: moreman on July 18, 2014, 09:02:14 PM
странно, хрень какая то выходит, он тупит жестко)
Code: (clickermann) [Select]
// RECORDED SCRIPT 18.07.2014
// BEGIN AT 13:22:29
mysub()
SUB(mysub)
   
   
   
   LCLICK(840,215)
   WAIT(1)
   LCLICK(453,414)
   WAIT(1)
   LCLICK(427,393)
   LCLICK(571,570)
   WAIT(1)
   LCLICK(566,257)
   WAIT(1)
   LCLICK(588,493)
   WAIT(1)
   LCLICK(929,592)
END_SUB




$random = RND(1,4)
IF($random = 1)
   GETSCREEN
   IF(PXL(680,442) = 16770879
      LCLICK(680,477)
      LCLICK(583,485)
      WAIT(1)
      LCLICK(681,551)
      WAITMS(100)
   ELSE
      WAIT(5)
     
      LCLICK(929,592)
      WAITMS(100)
     
   END_IF
END_IF



IF($random = 2)
   GETSCREEN
   IF_PICTURE_IN (620,517, 742,609, "1w.bmp", -1, 80)
      LCLICK($_return1, $_return2)
      LCLICK(656,587)
      LCLICK(674,616)
      WAITMS(100)
   ELSE
      WAIT(5)
     
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF


IF($random = 3)
   GETSCREEN
   IF(PXL(402,469) = 9954544
      LCLICK(493,512)
      WAIT(1)
      LCLICK(776,496)
   ELSE
      WAIT(5)
     
      LCLICK(929,592)
      WAITMS(100)
     
   END_IF
END_IF

IF($random = 4)
   GETSCREEN
   IF(PXL(668,404) = 9886924
      LCLICK(770,483)
      WAITMS(50)
   ELSE
      WAIT(5)
     
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF
// FINISH AT 13:22:36
что не так?
Title: Re: помогите
Post by: Oraven on July 18, 2014, 09:29:58 PM
Code: (clickermann) [Select]
LCLICK(840,215)
WAIT(1)
LCLICK(453,414)
WAIT(1)
LCLICK(427,393)
WAITMS(50)
LCLICK(571,570)
WAIT(1)
LCLICK(566,257)
WAIT(1)
LCLICK(588,493)
WAIT(1)
LCLICK(929,592)
WAITMS(50)

$random = RND(1,4)
IF($random = 1)
   GETSCREEN
   IF(PXL(680,442) = 16770879)
      LCLICK(680,477)
      WAITMS(50)
      LCLICK(583,485)
      WAIT(1)
      LCLICK(681,551)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 2)
   GETSCREEN
   IF_PICTURE_IN (620,517, 742,609, "1w.bmp", -1, 80)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK(656,587)
      WAITMS(50)
      LCLICK(674,616)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 3)
   GETSCREEN
   IF(PXL(402,469) = 9954544)
      LCLICK(493,512)
      WAIT(1)
      LCLICK(776,496)
      WAITMS(50)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 4)
   GETSCREEN
   IF(PXL(668,404) = 9886924)
      LCLICK(770,483)
      WAITMS(50)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF
Title: Re: помогите
Post by: moreman on July 19, 2014, 04:38:48 PM
на последок, помогите пожалуйста, как можно записать подобное выражение:
если PXL(х,у) определенный промежуток времени t не будет менять свой цвет то сделать например LCLICK(х,у)?
Title: Re: помогите
Post by: moreman on July 19, 2014, 04:50:34 PM
и кстати, а как сделать так что бы вот этот кусок програмы отработался один раз и перестал до того как цикл с рандомом не дойдет до логичного конца
LCLICK(840,215)
WAIT(1)
LCLICK(453,414)
WAIT(1)
LCLICK(427,393)
WAITMS(50)
LCLICK(571,570)
WAIT(1)
LCLICK(566,257)
WAIT(1)
LCLICK(588,493)
WAIT(1)
LCLICK(929,592)
WAITMS(50)
Title: Re: помогите
Post by: Oraven on July 19, 2014, 06:02:09 PM
Как понять
Quote
цикл с рандомом не дойдет до логичного конца

Code: (clickermann) [Select]
GETSCREEN
$color1 = PXL(315,540)
IF($color1 = $color2)
   DEFINE($tim, $_ms+5000)
   IF($tim < $_ms)
      UNDEFINE($tim)
      LCLICK(10,10)
      WAITMS(100)
   END_IF
ELSE
   UNDEFINE($tim)
   $color2 = $color1
END_IF

WAITMS(50)
Title: Re: помогите
Post by: moreman on July 19, 2014, 06:10:25 PM
а если сделать вот так:
// RECORDED SCRIPT 18.07.2014
// BEGIN AT 13:22:29
SUB(mysub)
LCLICK(840,215)
WAIT(1)
LCLICK(453,414)
WAIT(1)
LCLICK(427,393)
LCLICK(571,570)
WAIT(1)
LCLICK(566,257)
WAIT(1)
LCLICK(588,493)
WAIT(1)
LCLICK(929,592)
WAITMS(50)
HALT
END_SUB

$random = RND(1,5)
IF($random = 1)
   GETSCREEN
   IF(PXL(680,442) = 16770879
      LCLICK(680,477)
      WAITMS(50)
      LCLICK(583,485)
      WAIT(1)
      LCLICK(681,551)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 2)
   GETSCREEN
   IF(PXL(741,683) = 13040127
      WAIT(1)
      LCLICK(741,683)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
     
   END_IF
END_IF

IF($random = 3)
   GETSCREEN
   IF_PICTURE_IN (620,517, 742,609, "1w.bmp", -1, 80)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK(656,587)
      WAITMS(50)
      LCLICK(674,616)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF


IF($random = 4)
   GETSCREEN
   IF(PXL(402,469) = 9954544
      LCLICK(493,512)
      WAIT(1)
      LCLICK(776,496)
      WAITMS(50)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 5)
   GETSCREEN
   IF(PXL(668,404) = 9886924
      LCLICK(770,483)
      WAITMS(50)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

GETSCREEN
$color1 = PXL(315,540)
IF($color1 = $color2)
   DEFINE($tim, $_ms+5000)
   IF($tim < $_ms)
      UNDEFINE($tim)
      LCLICK(10,10)
      WAITMS(100)
   END_IF
ELSE
   UNDEFINE($tim)
   $color2 = $color1
END_IF
 
WAITMS(50)

WAIT(30)
mysub()

// FINISH AT 13:22:36
так будет работать? или как нибудь по другому, просто нужно что бы
LCLICK(840,215)
WAIT(1)
LCLICK(453,414)
WAIT(1)
LCLICK(427,393)
WAITMS(50)
LCLICK(571,570)
WAIT(1)
LCLICK(566,257)
WAIT(1)
LCLICK(588,493)
WAIT(1)
LCLICK(929,592)
WAITMS(50)
эта связка отыграла один раз и в процес работы рандома не вмешивалась, а так она продолжает проигрыватся в процесе работы  и сбивает все остальные процесы своим кликанием, эта связка команд идет просто как открытие того где уже будет рандом, более 1 раза она не требуется) как поступить?
Title: Re: помогите
Post by: Vint on July 19, 2014, 07:59:28 PM
и кстати, а как сделать так что бы вот этот кусок програмы отработался один раз и перестал до того как цикл с рандомом не дойдет до логичного конца
LCLICK(840,215)
WAIT(1)
LCLICK(453,414)
WAIT(1)
LCLICK(427,393)
WAITMS(50)
LCLICK(571,570)
WAIT(1)
LCLICK(566,257)
WAIT(1)
LCLICK(588,493)
WAIT(1)
LCLICK(929,592)
WAITMS(50)

Ну вложи в простое условие.
Code: (clickermann) [Select]
DEFINE($$one, 0)
IF($one = 0)
   LCLICK(840,215)
   WAIT(1)
   LCLICK(453,414)
   WAIT(1)
   LCLICK(427,393)
   WAITMS(50)
   LCLICK(571,570)
   WAIT(1)
   LCLICK(566,257)
   WAIT(1)
   LCLICK(588,493)
   WAIT(1)
   LCLICK(929,592)
   WAITMS(50)
   $one = 1
END_IF
Title: Re: помогите
Post by: Oraven on July 19, 2014, 08:19:06 PM
Можно и такой вариант, с зацикливанием через ГОТО.

Code: (clickermann) [Select]
LCLICK(840,215)
WAIT(1)
LCLICK(453,414)
WAIT(1)
LCLICK(427,393)
WAIT(1)
LCLICK(571,570)
WAIT(1)
LCLICK(566,257)
WAIT(1)
LCLICK(588,493)
WAIT(1)
LCLICK(929,592)
WAITMS(50)

go:

$random = RND(1,5)
IF($random = 1)
   GETSCREEN
   IF(PXL(680,442) = 16770879)
      LCLICK(680,477)
      WAITMS(50)
      LCLICK(583,485)
      WAIT(1)
      LCLICK(681,551)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 2)
   GETSCREEN
   IF(PXL(741,683) = 13040127)
      WAIT(1)
      LCLICK(741,683)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
     
   END_IF
END_IF

IF($random = 3)
   GETSCREEN
   IF_PICTURE_IN (620,517, 742,609, "1w.bmp", -1, 80)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK(656,587)
      WAITMS(50)
      LCLICK(674,616)
      WAITMS(100)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 4)
   GETSCREEN
   IF(PXL(402,469) = 9954544)
      LCLICK(493,512)
      WAIT(1)
      LCLICK(776,496)
      WAITMS(50)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

IF($random = 5)
   GETSCREEN
   IF(PXL(668,404) = 9886924)
      LCLICK(770,483)
      WAITMS(50)
   ELSE
      WAIT(5)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF

GETSCREEN
$color1 = PXL(315,540)
IF($color1 = $color2)
   DEFINE($tim, $_ms+5000)
   IF($tim < $_ms)
      UNDEFINE($tim)
      LCLICK(10,10)
      WAITMS(100)
   END_IF
ELSE
   UNDEFINE($tim)
   $color2 = $color1
END_IF

WAIT(30)

GOTO(go)
Title: Re: помогите
Post by: moreman on July 21, 2014, 01:18:38 PM
получилась вот такая штука:
http://screencast.com/t/l4799cBjsn
http://screencast.com/t/QjTx1tIZ
http://screencast.com/t/MhQAGeUCjqb
но все еще есть проблема, конкретно с этой частью:
IF($random = 3)
   GETSCREEN
   IF_PICTURE_IN (638,600, 718,633, "1w.bmp", -1, 80)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAIT(3)
      LCLICK(929,592)
      WAITMS(100)
   END_IF
END_IF
поидее оно должно кликать на найденую картинку но оно этого не делает а сразу отрабатывает команду ELSE, что то не так? и как можно заставить его все таки это делать?
Title: Re: помогите
Post by: Vint on July 21, 2014, 01:41:04 PM
Попробуй добавить задержку перед GETSCREEN, может картинка не успевает появиться после предыдущего действия.
Title: Re: помогите
Post by: moreman on July 21, 2014, 05:57:41 PM
недождался вашего ответа так и начал пробывать действительно проблема была в задержке, просто отписыватся уже не стал)
Title: Re: помогите
Post by: moreman on July 22, 2014, 01:56:31 PM
Ребята, биде, затупил от недосыпа и другой скрипт сохранил на место нужного, есть какая то возможность вернуть его или тупо по новой делать нужно?
Title: Re: помогите
Post by: Vint on July 22, 2014, 03:41:35 PM
если не нажимал "применить" посмотри backup.cms  в корне
Title: Re: помогите
Post by: moreman on July 29, 2014, 03:20:19 AM
появился новый глупый вопрос, можно сделать как нибудь что бы кликер выполнял цикл со свернутым окном и при этом можно было бы делать еще какой то процес не связаный с кликером, например фильм смотреть?
Title: Re: помогите
Post by: aden on July 29, 2014, 09:11:44 AM
можно если включишь режим привязки к окну
Title: Re: помогите
Post by: moreman on July 29, 2014, 12:44:51 PM
а по подробней о том как его врубить можно?
Title: Re: помогите
Post by: aden on July 29, 2014, 01:00:18 PM
alt+w
Title: Re: помогите
Post by: moreman on July 29, 2014, 03:37:29 PM
что то нифига не работает, нажимаю альт в и ничего, если свернуть окно кликер ничего не делает в том окне а пытается натыкать в новом открытом окне
Title: Re: помогите
Post by: Skomopox on August 11, 2014, 03:22:04 PM
Потому что тема - "Помогите!" :)
Может кто поможет с такой бедой: есть клиент, кликер, без привязки, видит его на отлично, НО есть такая беда, - вылазиет иногда одно окошко типа ошибки и кликер ни в какую не хочет его видеть. Он видит пиксили сквозь него. Может кто уже сталкивался с такой проблемой, и подскажет, что такое может быть?! Спасибо!
Title: Re: помогите
Post by: Skomopox on August 12, 2014, 05:27:21 AM
Что, никто даже не догадывается почему кликер не может видеть вылезающее окно?!
Title: Re: помогите
Post by: aden on August 12, 2014, 07:22:01 AM
Что, никто даже не догадывается почему кликер не может видеть вылезающее окно?!
только изза привязки к другому окну