Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: roomusic on April 22, 2019, 08:27:53 PM
-
В игре есть линейка специфического оружия, для совершения одного выстрела из которого необходимо удерживать левую мышь в течении 1.2 секунд (типа накапливать заряд), а повторный выстрел можно совершить только по прошествии 0.5 секунд (типа остывания).
Нужен скрипт, чтобы постоянно спамить выстрелы из этого оружия, просто зажав клавишу (желательно левую мышь, если возможно, а если нет, то правую клавишу мыши)
Т.к. макросы в игре палят, нужно чтобы значения промежутков "удерживания" были рандомными (1.2-1.5 сек), а также и промежутки остывания когда "удерживания" не происходит тоже имели рандом (0.5-0.8 сек). (время примерное, точные тайминги нужно будет подправить после опробования скрипта).
Скрипт выполняется только пока зажата клавиша мыши, т.е. если я посередине выполнения скрипта отпускаю мышь, то он останавливается. И при следующем нажатии, начинается сначала, а не с середины
--
Примерно я так представляю в своем гуманитарном мозгу:
Если зажата лев мышь
Выполнять:
1.Зажать лев мышь на время (рандом 1.2-1.5 сек)
2.Пауза (рандом 0.5-0.8 сек)
Зациклить 1-2
Если клавиша не зажата - остановить скрипт
Конец
---
У кого есть немного времени, буду благодарен за помощь :)
-
Естественно нельзя зажимать и кликать одной и той же клавишей.
Зажатие правой кнопки активирует клики левой. Скрипт должен быть запущен.
THREAD(t,0)
LDOWN($_xmouse,$_ymouse)
WAITMS(RND(1200,1500))
LUP($_xmouse,$_ymouse)
WAITMS(RND(500,800))
END_THREAD
IF(ISKEYDOWN(2)=1) // если зажата правая кнопка мыши
SETTHREAD (t, 1) // запускаем поток кликов
WHILE(ISKEYDOWN(2)=1) // ждем пока кнопку отпустят
WAITMS(20)
END_CYC
SETTHREAD (t, 2) // останавливаем поток кликов
IF(ISKEYDOWN(1)=1) // если левая кнопка осталась зажатой
LUP($_xmouse,$_ymouse) // отпускаем её
END_IF
ELSE
WAITMS(20)
END_IF
-
Оперативно! Благодарю за ваше время и знания.
Проверил внутри игры, ситуация следующая.
При зажатой клавише, активирующей поток кликов, если вести курсор в любом направлении, после завершения каждого цикла "1зажатия-2остывания" курсор совершает скачок в том же направлении примерно на то же расстояние, что было пройдено при зажатой клавише. Проверил с клавишей на клавиатуре - та же ситуация.
---
Возможно, дело в самой игре.
-
---
Возможно, дело в самой игре.
Скорее всего так и есть. Самый верный вариант - переназначить кнопку стрельбы, либо добавить дополнительную (если это возможно). К примеру на ctrl, как это бывает в многих играх. В этом случае не будет привязки к координатам нажатия и отпускания кнопки лкм/пкм.
THREAD(t,0)
keydown(#ctrl) //стреляем
WAITMS(RND(1200,1500))
keyup(#ctrl) //не стреляем
WAITMS(RND(500,800)) //отдыхаем
END_THREAD
IF(ISKEYDOWN(2)=1) // если зажата правая кнопка мыши
SETTHREAD (t, 1) // запускаем поток кликов
WHILE(ISKEYDOWN(2)=1) // ждем пока кнопку отпустят
WAITMS(20)
END_CYC
SETTHREAD (t, 2) // останавливаем поток кликов
IF(ISKEYDOWN(#CTRL)=1) // если кнопка осталась зажатой
keyup(#ctrl) // отпускаем её
END_IF
ELSE
WAITMS(20)
END_IF
-
---
Возможно, дело в самой игре.
Скорее всего так и есть. Самый верный вариант - переназначить кнопку стрельбы, либо добавить дополнительную (если это возможно). К примеру на ctrl, как это бывает в многих играх. В этом случае не будет привязки к координатам нажатия и отпускания кнопки лкм/пкм.
Да, так и есть, вторым алгоритмом всё получилось. Сердечно благодарю, вы классные ::)
-
Тоже пытался сделать, но так и не доделал до конца. Но зато мой отжимает нажатую кнопку =) Отключается кнопкой "R". Может кто сможет допилить
THREAD(R, 1)
IF(ISKEYDOWN(#R)=1)
$time = $_ms +2000
waitms(50)
END_IF
END_THREAD
IF ( iskeydown(1)=1)
WHILE ( $time < $_ms)
GETSCREEN(832,944,920,950)
IF (PXLCOUNT(832,944,920,950, 16777215)>5)
LDOWN(960,458)
waitms(rnd(790,810))
LUP(960,458)
waitms(RND(390,460)) // 380
else
LUP(960,458)
END_IF
waitms(20)
END_CYC
ELSE
$time = $_ms +900 // Не запускать скрипт от случайного нажатия
END_IF
WAITms(10)
-
ППЦ. Куда столько кода? Ну вот же простейший скрипт! :o
IF ( ISKEYDOWN(2)=1 )
KEYDOWN(#1)
WAITMS(1000)
KEYUP(#1)
WAITMS(300)
KEYPRESS(#1)
END_IF
Стреляем при зажатии правой кнопки. Сами синтезы ставим на кнопку 1 или смените на свою.
ТО ЖЕ САМОЕ, но менее эффективное т.к. имеются рандомные интервалы ожидания.
IF ( ISKEYDOWN(2)=1 )
KEYDOWN(#1)
WAITMS(RND(1000,1200))
KEYUP(#1)
WAITMS(RND(300,500))
KEYPRESS(#1)
END_IF