1 背景

最近偶尔在玩一款网页游戏,发现上面大量步骤都是重复类似的,点击boss,主角移动到boss位置,开始打boss,然后需要打一段时间,boss死亡,然后可以点击另外一个boss,重复类似工作,需要花较多的时间,才能将一个页面的boss清除干净。

这个时候我们考虑是否可以通过编写脚本让刷boss这件事情变成自动化,等boss复活之后又可以自动刷。 这个就是我们今天的主题,怎样去编写一个游戏脚本取刷页面网页游戏的boss。同样其他的一些操作也是一样。

2 环境

本机环境为ubuntu12.14,非windows环境,windows环境可能又一些更成熟的产品可以使用,我们只讲ubuntu环境下怎样取操作,由于本人对linux环境还在熟悉阶段,所以可能有些地方操作的并不对。

3 步骤

3.1 准备知识

首先我们要有能力操作我们的鼠标,包括鼠标移动到固定位置、鼠标的操作 其次在刷boss期间我们需要等待boss刷完 再次我们要循环我们的操作

3.2 实际操作

3.2.1 鼠标移动

linux中我们的鼠标移动操作 这里我们使用到的工具是:xdotool 安装方式

sudo apt-get install xdotool

整个安装过程很简单 这个时候我们尝试移动鼠标并点击

xdotool mousemove 100 100 click 1

发现生效。 这边简单说一下xdotool工具的使用方式

The xdotool is a utility used from the terminal or in a script to manually perform keyboard and mouse input (see the Xdotool – Keyboard article). The commands can also be used to make a script of many xdotool commands to create large tasks. Later articles will cover the xdotool ability to control window and desktop manipulation.

简单来说就是通过终端模拟鼠标和键盘的操作的工具。 这边说两个常用的方法:

xdotool mousemove 0 0 鼠标移动到0,0位置
xdotool click 1 鼠标点击左键
xdotool getmouselocation 获取鼠标位置,包括在哪个sceen和window上面

通过上面的工具类我们已经可以编写脚本在电脑上面移动了。

3.2.2 等待时间

sleep为将后续的动作延迟一段时间执行 如 date;sleep 1m;date 打印时间,等待1分钟之后,再次打印时间,sleep后面跟数字和时间标识,默认时间标识为秒

sleep number[smhd]
number : 时间长度,后面可接 s、m、h 或 d
其中 s 为秒,m 为 分钟,h 为小时,d 为日数

至此,简单的页面操作已经完成,这个时候我们要循环点击页面的一些按钮。

3.2.3 循环执行

循环执行,需要用到while和for都可以。

while  CONDITION; do
statement
...
done

如果是死循环

while ((1)); do
done

3.2.4 整合脚本

vi gamescript.sh
#!/bin/bash
#version 1.0
#author jeffrey
#program: game simple script
#date : 2023-02-13
while ((1));do
    	xdotool mousemove 600 740 click 1;
    	sleep 60;
    	xdotool mousemove 600 760 click 1;
   	 	sleep 60;
    	xdotool mousemove 600 780 click 1;
    	sleep 60;
        xdotool mousemove 600 800 click 1;
        sleep 60;
        xdotool mousemove 600 820 click 1;
        sleep 60;
        echo "done";
        sleep 1800;
done;

执行脚本:

bash gamescript.sh

效果就出来了。

4 参考资料

https://www.linux.org/threads/xdotool-mouse.10556/ https://www.runoob.com/linux/linux-comm-sleep.html