TC官方合作论坛

 找回密码
 立即注册
查看: 35066|回复: 124

[游戏] 魔兽世界自动钓鱼

[复制链接]
发表于 2011-7-13 13:55:01 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
魔兽世界自动钓鱼脚本

【脚本介绍】:该脚本巧妙的利用鼠标特征码的性质实现钓鱼功能以及鼠标扫描的方式,让一个我们觉得很难做到的事情轻松的实现了!脚本中涉及到了算法的使用,让TC使用更加的灵活。若你对TC掌握很熟练了,可以尝试下面的代码,自己写一个扫描NPC自动接任务的脚本出来。

【原理】:让用户学会特征码的使用。获取窗口名称---还原窗口再进行最大化窗口---在屏幕中寻找鱼漂---进行鼠标全屏扫描获取鼠标特征码---微调鼠标获取正确的坐标点---开始钓鱼---等鱼上钩。

【使用方法】:
1、该自动钓鱼的脚本不支持后台操作,使用的是前台鼠标操作,需要桌面的分辨率必须改为:1024*768
2、为了让钓鱼脚本达到最好的效果,在游戏中,角色须事先跑到可以钓鱼的区域并且正面面向该区域。然后滚动鼠标中键,让角色视角最大化,让角色视角覆盖到鱼漂出现的区域。

【源码如下】:

空间 我的程序

整型 xx
整型 yy
整型 窗口
整型 屏蔽分解

//4、首先程序调用了寻找鱼漂()这个函数,这个函数涉及到了一个算法,主要是利用鼠标移动和特征码这个特性完成的

//具体的表示为:鼠标首先横坐标以增量的形式移动,纵坐标保持不变,当移动到游戏窗口末端的时候跳出,这时纵坐标增加一个量,之后横坐标又继续以增量的形式移动
//这样就达到了扫描游戏窗口的作用,当在扫描的时候遇到一个手特性的鼠标变成了鱼钩时就停止下来(利用特征码进行比较实现),然后就进入鼠标微调函数
功能 整型 寻找鱼漂()
整型 鼠标1
整型 鼠标2
整型 x
整型 y
屏蔽分解=0
xx=0
yy=0
y=100
x=0
鼠标1=0
鼠标2=0
鼠标.移动(20,80)
辅助.等待(1000)
鼠标1=鼠标.鼠标句柄()
鼠标2=鼠标1
窗口.提交按键(窗口,49)
辅助.等待(2000)
循环(y<=500)
x=200
循环(x<=800)
x=x+4
如果(屏蔽分解==1)
辅助.等待(3)
否则
辅助.等待(2)
如果结束
鼠标.移动(x,y)
鼠标2=鼠标.鼠标句柄()
如果(鼠标2!=鼠标1)
循环(鼠标2==0)
鼠标2=鼠标.鼠标句柄()
循环结束
如果(鼠标2!=鼠标1)
xx=x
yy=y
返回 0
如果结束
如果结束
循环结束

如果(y<240)
屏蔽分解=1
y=y+20
否则
y=y+40
如果结束
循环结束
返回 0
//函数返回语句
功能结束

//5、下面进入微调鼠标()函数,这个函数主要实现的是让鼠标放在鱼漂的位置更加精确
功能 整型 微调鼠标()
整型 a
整型 b
整型 鼠标1
整型 鼠标2
整型 x
整型 y
整型 xx坐标
整型 yy坐标
整型 x坐标
整型 y坐标
整型 鼠标特征
a=0
b=0
x坐标=0
y坐标=0
鼠标1=0
鼠标2=0
x=0
y=0
xx坐标=xx
yy坐标=yy
鼠标1=鼠标.鼠标句柄()
鼠标2=鼠标1
//鼠标先右移动
循环(xx坐标<(xx坐标+50))
xx坐标=xx坐标+1
鼠标.移动(xx坐标,yy坐标)
鼠标2=鼠标.鼠标句柄()
辅助.等待(10)
如果(鼠标2!=鼠标1)
x坐标=xx坐标
跳出
如果结束
循环结束
xx坐标=x坐标-15
鼠标.移动(xx坐标,yy坐标)
鼠标1=鼠标.鼠标句柄()
鼠标2=鼠标1
//鼠标左移动
循环(xx坐标>(xx坐标-100))
b=b+1
辅助.等待(5)
xx坐标=xx坐标-1
鼠标.移动(xx坐标,yy坐标)
鼠标2=鼠标.鼠标句柄()
如果(鼠标2!=鼠标1)

如果(a==0)
a=a+1
鼠标1=鼠标2
否则
x=xx坐标
跳出
如果结束
如果结束

如果(b==80)
返回 0
如果结束
循环结束
//如果还没找到,鼠标移动到浮漂的中间
辅助.等待(100)
xx坐标=(x+x坐标)/2
鼠标.移动(xx坐标,yy坐标)
辅助.等待(100)
鼠标1=鼠标.鼠标句柄()
鼠标2=鼠标.鼠标句柄()
//鼠标先上移动
循环(yy坐标>(yy坐标-100))
yy坐标=yy坐标-1
鼠标.移动(xx坐标,yy坐标)
辅助.等待(5)
鼠标2=鼠标.鼠标句柄()
如果(鼠标2!=鼠标1)
y=yy坐标
鼠标.移动(xx坐标,yy坐标+10)
辅助.等待(100)
鼠标.移动(xx坐标,yy坐标+3)
辅助.等待(500)
鼠标特征=鼠标.获取特征码()
如果(鼠标特征==10420065)
鼠标.移动(xx坐标,yy坐标+4)
辅助.等待(500)
鼠标特征=鼠标.获取特征码()
如果(鼠标特征==10420065)
鼠标.移动(xx坐标,yy坐标+5)
辅助.等待(500)
鼠标特征=鼠标.获取特征码()
如果(鼠标特征==10420065)
鼠标.移动(xx坐标,yy坐标+6)
如果结束
如果结束
如果结束
yy=yy坐标
返回 1
如果结束
循环结束
返回 0
功能结束

//6、这一步主要实现了等于上钩当找到鱼漂后就开始计时差不多了就掉起鱼来,这样就完成了钓鱼
功能 整型 等鱼上钩()
整型 时间
整型 时间1
整型 时间2
整型 时间3
整型 鼠标1
整型 鼠标2
整型 鼠标特征
鼠标特征=鼠标.获取特征码()
时间=系统.获取毫秒()
循环()
时间1=系统.获取毫秒()
如果((时间1-时间)>13)
返回 0
如果结束
辅助.等待(200)
鼠标特征=鼠标.获取特征码()
如果(鼠标特征==10420065)
//鱼上钩了
辅助.等待(2000)
鼠标.右键单击(1)
辅助.等待(200)
鼠标.右键单击(1)
辅助.等待(200)
鼠标.右键单击(1)
辅助.等待(2000)
返回 0
如果结束
循环结束
返回 0
功能结束

//3、线程开启后程序跳转到该处执行,这个函数分别循环调用了寻找鱼漂()、微调鼠标()和等鱼上钩()
功能 整型 循环钓鱼()
循环()
我的程序.寻找鱼漂()

我的程序.微调鼠标()

我的程序.等鱼上钩()
循环结束
返回 0
功能结束

//1、程序从这里开始执行
功能 整型 开始_点击()
//这里添加你要执行的代码,这里是你点击开始按钮执行的代码
字符型 游戏窗口名
游戏窗口名=编辑框.获得文本("编辑框0")
如果(字符串.长度(游戏窗口名)==0)
辅助.消息框("请输入魔兽世界的窗口名!")
返回 0
如果结束
窗口=窗口.找到窗口(游戏窗口名)
窗口.还原(窗口)
辅助.等待(1000)
窗口.最大化(窗口)
//2、线程开启循环钓鱼这个线程
线程.开启("我的程序.循环钓鱼","")
返回 0
//函数返回语句
功能结束

功能 整型 退出_点击()
//这里是你退出的时候要执行的代码,这里是你点击退出按钮执行的代码
辅助.退出()
返回 0
//函数返回语句
功能结束

空间结束
//命名空间结束语句






回复

使用道具 举报

发表于 2011-7-13 18:08:22 | 显示全部楼层
路过,看看!
回复 支持 反对

使用道具 举报

发表于 2011-7-13 18:58:59 | 显示全部楼层
好东西
回复 支持 反对

使用道具 举报

发表于 2011-7-20 09:16:18 | 显示全部楼层
强大,给力,有实用价值
回复 支持 反对

使用道具 举报

发表于 2011-7-28 14:39:36 | 显示全部楼层
路过,学习中!
回复 支持 反对

使用道具 举报

发表于 2011-8-23 17:06:49 | 显示全部楼层
想问一下第一次循环那里,前面x=0,后面为什么x=200,那样x的初始值不是200了吗?前面赋值0有什么意义?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-8-27 10:22:05 | 显示全部楼层
回复 6楼liu664183272的帖子

主要实现了赋一个初始值过程,后面的就是赋值的含义了。
回复 支持 反对

使用道具 举报

发表于 2011-9-18 10:43:28 | 显示全部楼层
版主你好,有2个问题!

1, 鼠标句柄和鼠标特征有什么本质的区别?
2, 一直看不懂 屏蔽分解 的作用。

多谢帮助
回复 支持 反对

使用道具 举报

发表于 2011-10-4 19:19:30 | 显示全部楼层
多谢帮助
回复 支持 反对

使用道具 举报

发表于 2011-10-4 21:05:46 | 显示全部楼层
看不懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-19 08:03 , Processed in 0.055250 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表