Какое-то время я играл в игру, где были некоторые очень надоедливые действия, которые нужно было повторять раз за разом. Я нашёл решение этой проблемы при помощи bash. Про название игры я умолчу.
Это не призыв сейчас лепить тучу ботов, а просто небольшой мануал, как автоматизировать действия средствами bash. Обычно юзается на Linux.
Значит, в этом задании нужно было собрать 17 фиговин.
Чтобы их собрать, нужно было сначала нажать на "Enter", затем подождать 6 секунд пока полоса загрузки достигнет конца и снова нажать "Enter". После этого, ждём 11 секунд и можно начинать по новому кругу.
Для отправки нажатия клавиши мы будем использовать xdotool. Для разных систем он ставится по-разному, не буду зацикливать на этом внимание.
Создаём файл с названием, например, autosbor.sh и открываем его редактирование.
У меня Debian, поэтому я использую команду nano:
nano autosbor.sh
Для начала, объявим переменные.
#!/bin/bash
declare -i a=17 #кол-во повторений
declare -i i=1 #счётчик. Не трогаем
declare -i p=1 #порог
Функция declare нужна как раз для объявления переменных. Параметр -i показывает, что эта переменная будет типа integer (числовой).
Счётчик - переменная, которую будем в цикле увеличивать.
Порог - по сколько прибавлять. Был момент, когда мне было необходимо ещё и выводить в консоль числа в процессе выполнения.
Далее я добавлял паузу в скрипте, чтобы успевать переключиться на нужное окно. Можно было сделать смену окна по его ID, но счёл это немного неудобным.
sleep 5
Ну и под конец сам цикл. Перед паузой в цикле главное не забыть поставить увеличение переменной-счётчика, иначе цикл получится бесконечным.
while [ $a != $i ]
do
xdotool key Return
sleep 6
xdotool key Return
i=$(($i+$p))
sleep 11
done
Аргумент key - это нажатие клавиши на клавиатуре. Return - непосредственно сама клавиша Enter.
Собственно всё. Можно давать скрипту права на выполнение:
chmod +x autosbor.sh
И запускать:
./autosbor.sh