Author Topic: Кликер в Кроссаут  (Read 4386 times)

0 Members and 1 Guest are viewing this topic.

roomusic

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Кликер в Кроссаут
« 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
Если клавиша не зажата - остановить скрипт
Конец

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

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Кликер в Кроссаут
« Reply #1 on: April 22, 2019, 09:59:52 PM »
Естественно нельзя зажимать и кликать одной и той же клавишей.

Зажатие правой кнопки активирует клики левой. Скрипт должен быть запущен.
Code: (clickermann) [Select]
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

roomusic

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Кликер в Кроссаут
« Reply #2 on: April 22, 2019, 10:33:33 PM »
Оперативно! Благодарю за ваше время и знания.
Проверил внутри игры, ситуация следующая.
При зажатой клавише, активирующей поток кликов, если вести курсор в любом направлении, после завершения каждого цикла "1зажатия-2остывания" курсор совершает скачок в том же направлении примерно на то же расстояние, что было пройдено при зажатой клавише. Проверил с клавишей на клавиатуре - та же ситуация.
---
Возможно, дело в самой игре.
« Last Edit: April 22, 2019, 10:40:25 PM by roomusic »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Кликер в Кроссаут
« Reply #3 on: April 22, 2019, 11:43:16 PM »
---
Возможно, дело в самой игре.

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

Code: (clickermann) [Select]
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


roomusic

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Кликер в Кроссаут
« Reply #4 on: April 23, 2019, 11:32:59 AM »
---
Возможно, дело в самой игре.

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


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

BiG

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Кликер в Кроссаут
« Reply #5 on: April 23, 2019, 01:48:38 PM »
Тоже пытался сделать, но так и не доделал до конца. Но зато мой отжимает нажатую кнопку =) Отключается кнопкой "R". Может кто сможет допилить
Code: (clickermann) [Select]
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)
« Last Edit: April 23, 2019, 01:50:44 PM by BiG »

Nemilost

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Re: Кликер в Кроссаут
« Reply #6 on: June 22, 2019, 11:34:09 PM »
ППЦ. Куда столько кода? Ну вот же простейший скрипт!  :o

Code: (clickermann) [Select]
IF ( ISKEYDOWN(2)=1 )
 KEYDOWN(#1)
 WAITMS(1000)
 KEYUP(#1)
 WAITMS(300)
 KEYPRESS(#1)
END_IF


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

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

Code: (clickermann) [Select]
IF ( ISKEYDOWN(2)=1 )
 KEYDOWN(#1)
 WAITMS(RND(1000,1200))
 KEYUP(#1)
 WAITMS(RND(300,500))
 KEYPRESS(#1)
END_IF
« Last Edit: June 22, 2019, 11:45:41 PM by Nemilost »