【脚本】《最终幻想14》自动钓鱼脚本
游戏脚本制作的软件不是很多,大部分都要收费,所以我就用的按键精灵9,因为它封装了不少图像匹配的功能,可以从界面来进行自动化操作。下面附上原理:1.界面识别需要标志物,这里我是用鱼竿顶端的绿灯作为标志(游戏中是使用技能点亮的)【误差:绿灯颜色会随位置、光线、角度的不同而有偏差,例:某地区不同光线颜色范围由20FFFF~5EFFFF】2.当标志位置几乎不变的时候判断为没有鱼上钩,当标志位置移动较大时判断为有鱼咬饵【误差:鱼竿会随风摇摆,不同视角看到的偏移是不同的】3.收杆动作有多种,耗时不同,所以多次延时尝试抛饵【误差:脱钩4s收回,普通鱼8s收回,优品鱼可能到11s】 代码结构如下:1.寻找游戏句柄2.在游戏窗口中寻找鱼竿顶端绿灯3.等待玩家收杆,并开始自动钓鱼For 次数{ 4.抛竿 5.寻找绿灯标志 6.找到标志后,进入标志位移判断阶段 7.标志位移超过常数,表明有鱼咬钩,拉杆 8.延时等待 } 功能扩展:1.由于绿灯颜色根据游戏中光线明亮会有变化,增加颜色偏差指数2.由于可能存在步骤5的无限循环,所以加入第二个线程。在进入步骤5时开启线程2,若5秒后尝试再次抛饵,10秒后报警提示 可扩展功能:步骤2中加入标志位移测算鱼饵用尽后自动更换钓鱼一定时间后自动位移,防鱼洞枯竭 源码: UserVar precision=0.9 "颜色匹配精度0.75-1" UserVar range = 13 "鱼鳔浮动范围10-30" UserVar times = 100 "钓鱼次数" Global watch DimEnv GameTable GameTable = 0 dim MyArray Dim x Dim y x = – 1 y = – 1 Dim XX Dim YY XX = – 1 YY = – 1 Dim z z = 0 //进程查找 Call Plugin.Msg.Tips("查找游戏进程中") While GameTable = 0 GameTable = Plugin.Window.Find(0, "最终幻想XIV") Delay 500 Wend Call Plugin.Msg.Tips("进城找到,句柄=" & GameTable)