2014年12月1日

【脚本】《最终幻想14》自动钓鱼脚本

游戏脚本制作的软件不是很多,大部分都要收费,所以我就用的按键精灵9,因为它封装了不少图像匹配的功能,可以从界面来进行自动化操作。
temp.jpg
下面附上原理:
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)

20141201144557703.jpg

Share

You may also like...

发表评论

您的电子邮箱地址不会被公开。