Автор Тема: Кликер в Кроссаут  (Прочитано 454 раз)

0 Пользователей и 1 Гость просматривают эту тему.

roomusic

  • Зашел в гости
  • *
  • Сообщений: 3
    • Просмотр профиля
Кликер в Кроссаут
« : Апрель 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
Если клавиша не зажата - остановить скрипт
Конец

---
У кого есть немного времени, буду благодарен за помощь :)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3610
  • Котэ
    • Просмотр профиля
Re: Кликер в Кроссаут
« Ответ #1 : Апрель 22, 2019, 09:59:52 pm »
Естественно нельзя зажимать и кликать одной и той же клавишей.

Зажатие правой кнопки активирует клики левой. Скрипт должен быть запущен.
Код: Clickermann
  1. THREAD(t,0)
  2.   LDOWN($_xmouse,$_ymouse)
  3.   WAITMS(RND(1200,1500))
  4.   LUP($_xmouse,$_ymouse)
  5.   WAITMS(RND(500,800))
  6. END_THREAD
  7.  
  8. IF(ISKEYDOWN(2)=1) // если зажата правая кнопка мыши
  9.   SETTHREAD (t, 1) // запускаем поток кликов
  10.   WHILE(ISKEYDOWN(2)=1) // ждем пока кнопку отпустят
  11.      WAITMS(20)
  12.   END_CYC
  13.   SETTHREAD (t, 2) // останавливаем поток кликов
  14.   IF(ISKEYDOWN(1)=1) // если левая кнопка осталась зажатой
  15.      LUP($_xmouse,$_ymouse) // отпускаем её
  16.   END_IF
  17. ELSE
  18.   WAITMS(20)
  19. END_IF

roomusic

  • Зашел в гости
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Кликер в Кроссаут
« Ответ #2 : Апрель 22, 2019, 10:33:33 pm »
Оперативно! Благодарю за ваше время и знания.
Проверил внутри игры, ситуация следующая.
При зажатой клавише, активирующей поток кликов, если вести курсор в любом направлении, после завершения каждого цикла "1зажатия-2остывания" курсор совершает скачок в том же направлении примерно на то же расстояние, что было пройдено при зажатой клавише. Проверил с клавишей на клавиатуре - та же ситуация.
---
Возможно, дело в самой игре.
« Последнее редактирование: Апрель 22, 2019, 10:40:25 pm от roomusic »

dramster

  • Герой форума
  • *****
  • Сообщений: 957
    • Просмотр профиля
Re: Кликер в Кроссаут
« Ответ #3 : Апрель 22, 2019, 11:43:16 pm »
---
Возможно, дело в самой игре.

Скорее всего так и есть. Самый верный вариант - переназначить кнопку стрельбы, либо добавить дополнительную (если это возможно). К примеру на ctrl, как это бывает в многих играх. В этом случае не будет привязки к координатам нажатия и отпускания кнопки лкм/пкм.

Код: Clickermann
  1. THREAD(t,0)
  2.   keydown(#ctrl) //стреляем
  3.   WAITMS(RND(1200,1500))
  4.   keyup(#ctrl)  //не  стреляем
  5.   WAITMS(RND(500,800)) //отдыхаем
  6. END_THREAD
  7.  
  8. IF(ISKEYDOWN(2)=1) // если зажата правая кнопка мыши
  9.   SETTHREAD (t, 1) // запускаем поток кликов
  10.   WHILE(ISKEYDOWN(2)=1) // ждем пока кнопку отпустят
  11.      WAITMS(20)
  12.   END_CYC
  13.   SETTHREAD (t, 2) // останавливаем поток кликов
  14.   IF(ISKEYDOWN(#CTRL)=1) // если кнопка осталась зажатой
  15.      keyup(#ctrl) // отпускаем её
  16.   END_IF
  17. ELSE
  18.   WAITMS(20)
  19. END_IF


roomusic

  • Зашел в гости
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Кликер в Кроссаут
« Ответ #4 : Апрель 23, 2019, 11:32:59 am »
---
Возможно, дело в самой игре.

Скорее всего так и есть. Самый верный вариант - переназначить кнопку стрельбы, либо добавить дополнительную (если это возможно). К примеру на ctrl, как это бывает в многих играх. В этом случае не будет привязки к координатам нажатия и отпускания кнопки лкм/пкм.


Да, так и есть, вторым алгоритмом всё получилось. Сердечно благодарю, вы классные ::)

BiG

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Кликер в Кроссаут
« Ответ #5 : Апрель 23, 2019, 01:48:38 pm »
Тоже пытался сделать, но так и не доделал до конца. Но зато мой отжимает нажатую кнопку =) Отключается кнопкой "R". Может кто сможет допилить
Код: Clickermann
  1. THREAD(R, 1)
  2.   IF(ISKEYDOWN(#R)=1)
  3.      $time = $_ms +2000
  4.      waitms(50)
  5.   END_IF
  6. END_THREAD
  7.  
  8.  
  9. IF ( iskeydown(1)=1)
  10. WHILE ( $time < $_ms)
  11.   GETSCREEN(832,944,920,950)
  12.   IF  (PXLCOUNT(832,944,920,950, 16777215)>5)
  13.      LDOWN(960,458)
  14.      waitms(rnd(790,810))
  15.      LUP(960,458)
  16.      waitms(RND(390,460))  // 380
  17.   else
  18.      LUP(960,458)
  19.   END_IF
  20.   waitms(20)
  21. END_CYC  
  22. ELSE
  23.   $time = $_ms +900 // Не запускать скрипт от случайного нажатия
  24. END_IF
  25. WAITms(10)
« Последнее редактирование: Апрель 23, 2019, 01:50:44 pm от BiG »

Nemilost

  • Зашел в гости
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Кликер в Кроссаут
« Ответ #6 : Июнь 22, 2019, 11:34:09 pm »
ППЦ. Куда столько кода? Ну вот же простейший скрипт!  :o

Код: Clickermann
  1. IF ( ISKEYDOWN(2)=1 )
  2. KEYDOWN(#1)
  3. WAITMS(1000)
  4. KEYUP(#1)
  5. WAITMS(300)
  6. KEYPRESS(#1)
  7. END_IF


Стреляем при зажатии правой кнопки. Сами синтезы ставим на кнопку 1 или смените на свою.

ТО ЖЕ САМОЕ, но менее эффективное т.к. имеются рандомные интервалы ожидания.

Код: Clickermann
  1. IF ( ISKEYDOWN(2)=1 )
  2. KEYDOWN(#1)
  3. WAITMS(RND(1000,1200))
  4. KEYUP(#1)
  5. WAITMS(RND(300,500))
  6. KEYPRESS(#1)
  7. END_IF
« Последнее редактирование: Июнь 22, 2019, 11:45:41 pm от Nemilost »