Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Neokrium on February 14, 2019, 11:44:28 AM
-
Привет, а если я хочу сделать много разных простых команд к примеру:
1 команда просто нажимает три кнопки и повторяет бесконечно
2 команда нажимает одну кнопку раз в 3 секунды
3 команда нажимает на мышку 1 бесконечно раз
и чтобы все работали одновременно, а то у меня получается только по очереди сначала 3 кнопки, потом одна кнопка и 3 секунды уже не нажимает первые 3 кнопки, чтобы работала как мне надо приходиться запускать 3 кликермена я думаю есть более простой способ. заранее спасибо.
-
Конечно есть, потоки!
THREAD(t1, 1)
KEYPRESS(#A)
WAITMS(500)
KEYPRESS(#B)
WAITMS(500)
KEYPRESS(#C)
WAITMS(500)
END_THREAD
THREAD(t2, 1)
KEYPRESS(#D)
WAIT(3)
END_THREAD
THREAD(t3, 1)
LCLICK(100,500)
WAITMS(50)
END_THREAD
WAIT(1)
-
Конечно есть, потоки!
THREAD(t1, 1)
KEYPRESS(#A)
WAITMS(500)
KEYPRESS(#B)
WAITMS(500)
KEYPRESS(#C)
WAITMS(500)
END_THREAD
THREAD(t2, 1)
KEYPRESS(#D)
WAIT(3)
END_THREAD
THREAD(t3, 1)
LCLICK(100,500)
WAITMS(50)
END_THREAD
WAIT(1)
Спасибо большое, давно я уже хочу это. Если возможно, как сделать чтобы этот скрипт включался по нажатию кнопки, ну чтобы сам кликер не вкл/выкл. как я делаю, а скажем нажал кнопку пусть будет моус 3(ролик) он за работал, нажал еще раз он выключился.
-
THREAD(t1, 0)
KEYPRESS(#A)
WAITMS(500)
KEYPRESS(#B)
WAITMS(500)
KEYPRESS(#C)
WAITMS(500)
END_THREAD
THREAD(t2, 0)
KEYPRESS(#D)
WAIT(3)
END_THREAD
THREAD(t3, 0)
LCLICK(100,500)
WAITMS(50)
END_THREAD
IF(ISKEYDOWN(4)=1)
WHILE(ISKEYDOWN(4)=1)
END_CYC
IF($t1 = 0)
$t1 = $t1^1
// включение
SETTHREAD (t1,1)
SETTHREAD (t2,1)
SETTHREAD (t3,1)
ELSE
$t1 = $t1^1
// выключение
SETTHREAD (t1,2)
SETTHREAD (t2,2)
SETTHREAD (t3,2)
END_IF
ELSE
WAITMS(20)
END_IF
-
Спасибо большое разобрался теперь очень удобно. Если кому интересно это идеально подходит для игры в Диабло 3 за охотника на демонов и можно и другие классы где надо спамить кнопки бесконечно. Моя клавиатура и мышка говорит вам большое спасибо!
THREAD(t1, 0)
KEYPRESS(#q)
waitms(RND(200,300))
END_THREAD
THREAD(t2, 0)
KEYPRESS(#w)
waitms(RND(200,300))
END_THREAD
THREAD(t3, 0)
KEYPRESS(#e)
waitms(RND(200,300))
END_THREAD
THREAD(t4, 0)
KEYPRESS(#r)
waitms(RND(200,300))
END_THREAD
THREAD(t5, 0)
LCLICK($_xmouse,$_ymouse)
waitms(RND(70,120))
END_THREAD
IF(ISKEYDOWN(#0)=1)
WHILE(ISKEYDOWN(#0)=1)
END_CYC
IF($t1 = 0)
$t1 = $t1^1
SETTHREAD (t1,1)
SETTHREAD (t2,1)
SETTHREAD (t3,1)
SETTHREAD (t4,1)
SETTHREAD (t5,1)
ELSE
$t1 = $t1^1
SETTHREAD (t1,2)
SETTHREAD (t2,2)
SETTHREAD (t3,2)
SETTHREAD (t4,2)
SETTHREAD (t5,2)
END_IF
ELSE
WAITMS(20)
END_IF
[code]
-
IF(ISKEYDOWN(#0)=1)
WHILE(ISKEYDOWN(#0)=1)
END_CYC
IF($t1 = 0)
$t1 = $t1^1
SETTHREAD (t1,1)
SETTHREAD (t2,1)
SETTHREAD (t3,1)
SETTHREAD (t4,1)
SETTHREAD (t5,1)
ELSE
$t1 = $t1^1
SETTHREAD (t1,2)
SETTHREAD (t2,2)
SETTHREAD (t3,2)
SETTHREAD (t4,2)
SETTHREAD (t5,2)
END_IF
ELSE
WAITMS(20)
END_IF
Это если кнопка 0 вкл и еще раз 0 выкл. А если нужно держать и они работают т1-т5, а отпустить они перестанут, как это сделать?
-
А если нужно держать и они работают т1-т5, а отпустить они перестанут, как это сделать?
IF(ISKEYDOWN(#0)=1)
SETTHREAD (t1,1)
SETTHREAD (t2,1)
SETTHREAD (t3,1)
SETTHREAD (t4,1)
SETTHREAD (t5,1)
WHILE(ISKEYDOWN(#0)=1)
WAITMS(20)
END_CYC
SETTHREAD (t1,2)
SETTHREAD (t2,2)
SETTHREAD (t3,2)
SETTHREAD (t4,2)
SETTHREAD (t5,2)
ELSE
WAITMS(20)
END_IF
-
Спасибо, я наверно замучил вопросами... я тут на форуме нашел про цвета и смог сделать следующие:
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (342,698,454,802, "shot0003.bmp", -1, 70)
KEYPRESS(#SPACE)
WAIT(200)
END_IF
Скриншот я сделал с помощью этого:
// Получение скриншота с цветокоррекцией (фильтр 6)
// Скриншот появится в папке screens папки скрипта или в папке кликера
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT
Вообщем у меня получилось сделать чтобы хилку ел перс когда хп упало, только ест он ее один раз, потом надо заново запускать кликер выкл/вкл. И еще скриншот каких размеров лучше (сколько пикселей), я его обрезал, только не знаю сколько на сколько для оптимального и можно потом и его в поток добавить, чтобы все работал вместе.
-
... только ест он ее один раз, потом надо заново запускать кликер выкл/вкл.
Так у тебя задержка в 200 секунд стоит!
WAIT(200)
В кликере две команды задержек. В секундах WAIT и миллисекундах WAITMS
И еще скриншот каких размеров лучше (сколько пикселей), я его обрезал, только не знаю сколько на сколько для оптимального и можно потом и его в поток добавить, чтобы все работал вместе.
Чем меньше тем лучше. 50x50 максимум. Но можно например 400x2
В общем чем меньше пикселов в картинке тем быстрее поиск. Оптимально когда кликер находит картинку менее чем за секунду. Процент совпадения также сильно замедляет поиск.
-
Я не много изменил, сейчас вот так выглядит все работает, хотел за место ISKEYDOWN(5) поставить Моус 1 "LCLICK($_return1, $_return2)", он выдает что не понял меня. Думаю удобнее будет когда мышку м1 зажимаешь и он начинает спамить в том месте отпускаешь он перестает, как сделать? и можно ли использовать в скрипте не сколько команд, скажем т1-т4 сделать вкл/выкл. , а т5 сделать м1 зажал работает. отжал перестал работать. Заранее спасибо.
THREAD(t1, 1)
KEYPRESS(#q)
waitms(RND(200,300))
END_THREAD
THREAD(t2, 1)
KEYPRESS(#w)
waitms(RND(200,300))
END_THREAD
THREAD(t3, 1)
KEYPRESS(#e)
waitms(RND(200,300))
END_THREAD
THREAD(t4, 1)
KEYPRESS(#r)
waitms(RND(200,300))
END_THREAD
THREAD(t5, 0)
LCLICK($_xmouse,$_ymouse)
waitms(RND(70,120))
END_THREAD
IF(ISKEYDOWN(5)=1)
SETTHREAD (t5,1)
WHILE(ISKEYDOWN(5)=1)
WAITMS(20)
END_CYC
SETTHREAD (t5,2)
ELSE
WAITMS(20)
END_IF
-
Нельзя кликать и зажимать одну и туже клавишу. Когда кликер пошлет команду клика зажать-отжать твоя зажатая клавиша мыши перестанет действовать пока ты её снова не нажмешь. Так что нужно указать какую то другую клавишу для управления кликами.
THREAD(t1, 0)
KEYPRESS(#q)
waitms(RND(200,300))
END_THREAD
THREAD(t2, 0)
KEYPRESS(#w)
waitms(RND(200,300))
END_THREAD
THREAD(t3, 0)
KEYPRESS(#e)
waitms(RND(200,300))
END_THREAD
THREAD(t4, 0)
KEYPRESS(#r)
waitms(RND(200,300))
END_THREAD
THREAD(t5, 0)
LCLICK($_xmouse,$_ymouse)
waitms(RND(70,120))
END_THREAD
//=============================================
IF(ISKEYDOWN(5)=1)
SETTHREAD (t5,1)
WHILE(ISKEYDOWN(5)=1)
WAITMS(20)
END_CYC
SETTHREAD (t5,2)
END_IF
IF(ISKEYDOWN(4)=1)
WHILE(ISKEYDOWN(4)=1)
END_CYC
IF($t1 = 0)
$t1 = $t1^1
// включение
SETTHREAD (t1,1)
SETTHREAD (t2,1)
SETTHREAD (t3,1)
SETTHREAD (t4,1)
BEEP(1200,100) // сигнал включения
ELSE
$t1 = $t1^1
// выключение
SETTHREAD (t1,2)
SETTHREAD (t2,2)
SETTHREAD (t3,2)
SETTHREAD (t4,2)
BEEP(700,100) // сигнал выключения
END_IF
END_IF
WAITMS(20)
-
Вписал еще хилку, по скрину так и не вышло настроить нашел другой способ. И почему то когда делал скрин на другом компе был полный экран снимка, а сейчас только 2/3 снимает.
THREAD(t1, 0)
KEYPRESS(#q)
waitms(RND(200,300))
END_THREAD
THREAD(t2, 0)
KEYPRESS(#w)
waitms(RND(200,300))
END_THREAD
THREAD(t3, 0)
KEYPRESS(#e)
waitms(RND(200,300))
END_THREAD
THREAD(t4, 0)
KEYPRESS(#r)
waitms(RND(200,300))
END_THREAD
THREAD(t5, 0)
LCLICK($_xmouse,$_ymouse)
waitms(RND(70,120))
END_THREAD
THREAD(t6, 0)
GETSCREEN
IF(PXL (55,125) = 0)
KEYPRESS(#SPACE)
ELSE
waitms(RND(100,200))
END_IF
END_THREAD
//=============================================
IF(ISKEYDOWN(5)=1)
SETTHREAD (t5,1)
WHILE(ISKEYDOWN(5)=1)
WAITMS(20)
END_CYC
SETTHREAD (t5,2)
END_IF
IF(ISKEYDOWN(6)=1)
WHILE(ISKEYDOWN(6)=1)
END_CYC
IF($t1 = 0)
$t1 = $t1^1
// включение
SETTHREAD (t1,1)
SETTHREAD (t2,1)
SETTHREAD (t3,1)
SETTHREAD (t4,1)
SETTHREAD (t6,1)
BEEP(1200,100) // сигнал включения
ELSE
$t1 = $t1^1
// выключение
SETTHREAD (t1,2)
SETTHREAD (t2,2)
SETTHREAD (t3,2)
SETTHREAD (t4,2)
SETTHREAD (t6,2)
BEEP(700,100) // сигнал выключения
END_IF
END_IF
WAITMS(20)
-
Можно немного сократить включение/выключение
IF(ISKEYDOWN(6) = 1)
WHILE(ISKEYDOWN(6) = 1)
WAITMS(5)
END_CYC
SETTHREAD (t1, $state + 1)
SETTHREAD (t2, $state + 1)
SETTHREAD (t3, $state + 1)
SETTHREAD (t4, $state + 1)
SETTHREAD (t6, $state + 1)
$state = $state ^ 1
$signal = $signal ^ 500
BEEP(700 + $signal, 100)
END_IF
-
THREAD(t1, 0)
KEYPRESS(#q)
waitms(RND(200,300))
END_THREAD
THREAD(t2, 0)
KEYPRESS(#w)
waitms(RND(200,300))
END_THREAD
THREAD(t3, 0)
KEYPRESS(#e)
waitms(RND(200,300))
END_THREAD
THREAD(t4, 0)
KEYPRESS(#r)
waitms(RND(200,300))
END_THREAD
THREAD(t5, 0)
LCLICK($_xmouse,$_ymouse)
waitms(RND(70,120))
END_THREAD
THREAD(t6, 0)
GETSCREEN
IF(PXL (51,120) = 0)
KEYPRESS(#SPACE)
ELSE
waitms(RND(100,200))
END_IF
END_THREAD
THREAD(t7, 0)
GETSCREEN
IF_PIXEL_IN(409,886,703,908, 546815)
SOUND("Свежеемясо.wav")
waitms(RND(3000,3500))
END_IF
END_THREAD
//=============================================
IF(ISKEYDOWN(48)=1)
SETTHREAD (t5,1)
WHILE(ISKEYDOWN(48)=1)
WAITMS(20)
END_CYC
SETTHREAD (t5,2)
END_IF
IF(ISKEYDOWN(53)=1)
WHILE(ISKEYDOWN(53)=1)
END_CYC
IF($t1 = 0)
$t1 = $t1^1
// включение
SETTHREAD (t1,1)
SETTHREAD (t2,1)
SETTHREAD (t3,1)
SETTHREAD (t4,1)
SETTHREAD (t6,1)
SETTHREAD (t7,1)
BEEP(1200,100) // сигнал включения
ELSE
$t1 = $t1^1
// выключение
SETTHREAD (t1,2)
SETTHREAD (t2,2)
SETTHREAD (t3,2)
SETTHREAD (t4,2)
SETTHREAD (t6,2)
SETTHREAD (t7,2)
BEEP(700,100) // сигнал выключения
END_IF
END_IF
WAITMS(20)
Привет, хочу сделать разные звуки на оповещение кольца стихий. Один звук запилил из Хотса думаю как сделать больше или папку сразу и чтобы рендомна выбирал.
THREAD(t7, 0)
GETSCREEN
IF_PIXEL_IN(409,886,703,908, 546815)
SOUND("Свежеемясо.wav")
waitms(RND(3000,3500))
END_IF
END_THREAD
-
Ты бы лучше задержки вставлял после действий.
Снимок экрана ресурсоемкая функция если её вызывать часто без задержки. Тем более у тебя там кроме звукового сигнала ничего нет, куда так торопиться? И зачем везде писать рандомные задержки? Их обычно пишут в бот-скриптах чтоб закосить под человека.
Команда SOUND не тормозит скрипт при выполнении, поэтому нужно написать после неё задержку как минимум равную длительности звука.
THREAD(t7, 0)
GETSCREEN
IF_PIXEL_IN(409,886,703,908, 546815)
SOUND("Свежеемясо.wav")
waitms(RND(3000,3500))
END_IF
WAITMS(100)
END_THREAD
На счет рандомного воспроизведения, это возможно. Создай рядом со скриптом папку "Sound", в нее закинь wav файлы. Кликер сам прочтет в массив имена файлов в папке и случайно выберет одно из них на воспроизведение.
THREAD(t7, 0)
GETSCREEN
IF_PIXEL_IN(409,886,703,908, 546815)
GETFILELIST($a_waw, "Sound\*.wav")
IF(ARRSIZE($a_waw) > 0)
SOUND(STRCONCAT("Sound\", $a_waw[RND(0,ARRSIZE($a_waw)-1)]))
WAITMS(3000)
END_IF
UNDEFINE($a_waw)
END_IF
WAITMS(100)
END_THREAD
-
Подскажите как сделать так чтобы сам клик был смещен. то есть к примеру нашел цвет в координате и кликнул со смещением по Х на 100 по Y на 100, причем координаты могут быть разными то есть нашел пиксель верху экрана или в низу экрана, но кликал со смещением от координат.
THREAD(t1, 0)
GETSCREEN
IF_PIXEL_IN(200,200,1600,730, 89778)
LCLICK($_return1, $_return2)
WAITMS(20)
KEYPRESS(#5)
ELSE
WAITMS(20)
END_IF
WAITMS(50)
END_THREAD
//=============================================
IF(ISKEYDOWN(#SPACE)=1)
SETTHREAD (t1,1)
WHILE(ISKEYDOWN(#SPACE)=1)
WAITMS(20)
END_CYC
SETTHREAD (t1,2)
END_IF
-
Вычисления доступны прямо внутри функции
LCLICK($_return1+100, $_return2-100)
На счет сверху снизу видимо придется писать дополнительные условия, чтобы в одном случаи прибавлялось, в другом отнималось.
-
Супер протестировал работает, а вот можно сделать чтобы поиск цвета был возле курсора, то есть я вот мышку навел рядом с цветом и он его нашел. сейчас у меня поиск по центру экрана. хотел бы сделать чтобы поиск шел скажем 100-200 пикселей в радиусе или квадрате в центре курсора, чтобы фокус был лучше.
-
GETSCREEN($_xmouse-100, $_ymouse-100, $_xmouse+100, $_ymouse+100)
IF_PIXEL_IN($_xmouse-100, $_ymouse-100, $_xmouse+100, $_ymouse+100, 89778)
-
Ага спасибо.. все работает.)