TC官方合作论坛
标题:
【高级篇】4、2013地下城与勇士自动拾取物品
[打印本页]
作者:
T_暗乄殇灬
时间:
2013-3-4 21:28
标题:
【高级篇】4、2013地下城与勇士自动拾取物品
功能 拾取方法(所在房间,模式)
dm暗殇 = T_暗乄殇灬.dm暗殇
Plug365_龍吟 = com("网络验证.Plug365")
数据 = 数组[5]
Lv坐标x,Lv坐标y,标记1=0,标记2=0,物品坐标x,物品坐标y,识别次数=0,卡住次数=0,卡住标记=0,跑动判断=0,跑动次数=0,是否进入下个房间=0
坐标x,坐标y,当前所在房间
对比坐标x1,对比坐标y1,对比坐标x2,对比坐标y2
循环(真)
//[判断人物是否还在所传入的房间]
标记1=0
循环(真)
如果(通用方法.检测网络中断(dm暗殇))
返回 "网络连接中断"
如果结束
如果(!窗口.是否存在(窗口句柄))
返回 "游戏消失"
如果结束
数据[0]=-1
数据 = 通用方法.找字方法(736,26,795,212,"副本人物","06cfde-101010|15c0ed-101010|06c0de-101010|06c0ed-101010|03bdea-101010",dm暗殇)
如果(数据[0]==2)
坐标x = 数据[1]
坐标y = 数据[2]
跳出
如果结束
标记1 +=1
如果(标记1==200)
如果(字符串.比较(Plug365_龍吟.IsWindowDead(窗口句柄,20),"无响应")==0)
返回 "游戏卡死"
否则
标记1 = 0
如果结束
如果结束
循环结束
当前所在房间=0
如果(坐标x>756&&坐标x<774&&坐标y>192&&坐标y<209) //[第一个房间]756,192,774,209
当前所在房间=1
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>174&&坐标y<192)//[第二个房间]756,174,774,192
当前所在房间=2
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>156&&坐标y<173)//[第三个房间]756,156,774,173
当前所在房间=3
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>138&&坐标y<155)//[第四个房间]756,138,774,155
当前所在房间=4
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>120&&坐标y<137)//[第五个房间]757,120,775,137
当前所在房间=5
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>101&&坐标y<119)//[第六个房间]757,101,775,119
当前所在房间=6
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>83&&坐标y<102)//[第七个房间]757,83,775,102
当前所在房间=7
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>66&&坐标y<82)//[第八个房间]757,66,775,82
当前所在房间=8
如果结束
如果(坐标x>756&&坐标x<774&&坐标y>47&&坐标y<65)//[boss房间] 757,47,774,65
当前所在房间=9
返回 "已经进入BOSS房间"
如果结束
如果(当前所在房间!=所在房间)
如果(当前所在房间>所在房间)
返回 "进入下一房间"
否则 //[进入上一房间]
返回 "进入上一房间"
如果结束
如果结束
标记1=0
如果(通用方法.检测网络中断(dm暗殇))
返回 "网络连接中断"
如果结束
如果(!窗口.是否存在(窗口句柄))
返回 "游戏消失"
如果结束
//[判断脚下是否有物品,有则拾取一次]
遍历(标记1=0;标记1<3;标记1++)
数据[0]=-1
数据 = 通用方法.找字方法(0,355,800,600,"物品左上框|物品右上框","F5F60C-141414",dm暗殇)
如果(数据[0]==2)
dm暗殇.KeyPress(88)
辅助.等待(辅助.随机数(300,350))
否则
跳出
如果结束
遍历结束
//[得到人物的位置]
标记1=0
循环(真)
如果(通用方法.检测网络中断(dm暗殇))
返回 "网络连接中断"
如果结束
如果(!窗口.是否存在(窗口句柄))
返回 "游戏消失"
如果结束
数据[0]=-1
数据 = 通用方法.找字方法(0,0,800,600,标签.获得文本("等级"),"00e7ff-000000|fadc64-000000",dm暗殇)
如果(数据[0]==2)
Lv坐标x = 数据[1]
Lv坐标y = 数据[2]
数据[0]=-1
数据 = 通用方法.找色方法(Lv坐标x,Lv坐标y,Lv坐标x+95,Lv坐标y+8,"00e7ff-000000",2,dm暗殇)
如果(数据[0]==2)
跳出
如果结束
如果结束
标记2 +=1
如果(标记2==3) //[左走一点]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(37) //[左键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(37)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(标记2==6) //[右走一点]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(39) //[右键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(39)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(标记2==9) //[右走一点]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(39) //[右键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(39)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(标记2==12) //[左走一点]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(37) //[左键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(37)
辅助.等待(辅助.随机数(20,30))
标记2=0
如果结束
标记1 +=1
如果(标记1==200)
如果(字符串.比较(Plug365_龍吟.IsWindowDead(窗口句柄,20),"无响应")==0)
返回 "游戏卡死"
否则
标记1 = 0
如果结束
如果结束
循环结束
//[计算人物脚的位置]
Lv坐标x = 数学.绝对值(Lv坐标x+(数据[1]-Lv坐标x)/2)
Lv坐标y = Lv坐标y + 104
//[扫描是否有物品]
数据[0]=-1
数据 = 通用方法.找字方法(0,355,800,600,"物品左上框|物品右上框","B8BE82-3C2832",dm暗殇)
如果(数据[0]==2)
//help.messagebox("有物品")
如果(数据[3]==0) //[物品左上框]
物品坐标x = 数据[1] +29
物品坐标y = 数据[2] + 8
否则 //[物品右上框]
物品坐标x = 数据[1] -29
物品坐标y = 数据[2] + 8
如果结束
如果(识别次数==0)
对比坐标x1 = 物品坐标x
对比坐标y1 = 物品坐标y
识别次数 = 1
否则
对比坐标x2 = 物品坐标x
对比坐标y2 = 物品坐标y
识别次数 = 0
如果结束
如果(对比坐标x1 == 对比坐标x2&&对比坐标y1 == 对比坐标y2) //[标志人物未移动或许被卡住了]
卡住次数+=1
如果(卡住次数==5)
返回 "物品无法拾取"
如果结束
如果(卡住次数>2)
如果(卡住标记==0)
dm暗殇.KeyDown(40) //[下键]
辅助.等待(500)
dm暗殇.KeyUp(40)
辅助.等待(辅助.随机数(20,30))
如果(Lv坐标x>物品坐标x) //[左走]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(37) //[左键]
辅助.等待(30*(数学.绝对值(Lv坐标x-物品坐标x)/8))
dm暗殇.KeyUp(37)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(Lv坐标x<物品坐标x) //[右走]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(39) //[右键]
辅助.等待(30*(数学.绝对值(物品坐标x-Lv坐标x)/8))
dm暗殇.KeyUp(39)
辅助.等待(辅助.随机数(20,30))
如果结束
卡住标记 = 1
继续 //[继续寻找物品拾取]
否则
dm暗殇.KeyDown(38) //[上键]
辅助.等待(500)
dm暗殇.KeyUp(38)
辅助.等待(辅助.随机数(20,30))
如果(Lv坐标x>物品坐标x) //[左走]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(37) //[左键]
辅助.等待(30*(数学.绝对值(Lv坐标x-物品坐标x)/8))
dm暗殇.KeyUp(37)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(Lv坐标x<物品坐标x) //[右走]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(39) //[右键]
辅助.等待(30*(数学.绝对值(物品坐标x-Lv坐标x)/8))
dm暗殇.KeyUp(39)
辅助.等待(辅助.随机数(20,30))
如果结束
卡住标记 = 0
继续 //[继续寻找物品拾取]
如果结束
如果结束
如果结束
如果(Lv坐标y>物品坐标y) //[上走]
dm暗殇.KeyDown(38) //[上键]
辅助.等待(50*(数学.绝对值(Lv坐标y-物品坐标y)/8))
dm暗殇.KeyUp(38)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(Lv坐标y<物品坐标y) //[下走]
dm暗殇.KeyDown(40) //[下键]
辅助.等待(50*(数学.绝对值(物品坐标y-Lv坐标y)/5))
dm暗殇.KeyUp(40)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(Lv坐标x>物品坐标x) //[左走]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(37) //[左键]
辅助.等待(30*(数学.绝对值(Lv坐标x-物品坐标x)/8))
dm暗殇.KeyUp(37)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(Lv坐标x<物品坐标x) //[右走]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(39) //[右键]
辅助.等待(30*(数学.绝对值(物品坐标x-Lv坐标x)/8))
dm暗殇.KeyUp(39)
辅助.等待(辅助.随机数(20,30))
如果结束
遍历(标记1=0;标记1<3;标记1++)
数据[0]=-1
数据 = 通用方法.找字方法(0,355,800,600,"物品左上框|物品右上框","F5F60C-141414",dm暗殇)
如果(数据[0]==2)
dm暗殇.KeyPress(88)
辅助.等待(辅助.随机数(300,350))
否则
//[判断是左还是右,然后慢慢一个单位一个单位移动3次]
如果(Lv坐标x>物品坐标x) //[左走]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(Lv坐标x<物品坐标x) //[右走]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
如果结束
如果结束
遍历结束
否则
//[根据模式判断是否需要左右跑寻找物品]
如果(模式==0)
跳出
否则
循环(真)
如果(通用方法.检测网络中断(dm暗殇))
返回 "网络连接中断"
如果结束
如果(!窗口.是否存在(窗口句柄))
返回 "游戏消失"
如果结束
数据[0]=-1
数据 = 通用方法.找字方法(0,0,800,600,标签.获得文本("等级"),"00e7ff-000000",dm暗殇)
如果(数据[0]==2)
Lv坐标x = 数据[1]
Lv坐标y = 数据[2]
数据[0]=-1
数据 = 通用方法.找色方法(Lv坐标x,Lv坐标y,Lv坐标x+95,Lv坐标y+8,"00e7ff-000000",2,dm暗殇)
如果(数据[0]==2)
跳出
如果结束
如果结束
标记2 +=1
如果(标记2==3) //[左走一点]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(37) //[左键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(37)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(标记2==6) //[右走一点]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(39) //[右键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(39)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(标记2==9) //[右走一点]
dm暗殇.KeyPress(39)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(39) //[右键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(39)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(标记2==12) //[左走一点]
dm暗殇.KeyPress(37)
辅助.等待(辅助.随机数(20,30))
dm暗殇.KeyDown(37) //[左键]
辅助.等待(辅助.随机数(200,250))
dm暗殇.KeyUp(37)
辅助.等待(辅助.随机数(20,30))
标记2=0
如果结束
标记1 +=1
如果(标记1==200)
如果(字符串.比较(Plug365_龍吟.IsWindowDead(窗口句柄,20),"无响应")==0)
返回 "游戏卡死"
否则
标记1 = 0
如果结束
如果结束
循环结束
//[计算人物脚的位置]
Lv坐标x = 数学.绝对值(Lv坐标x+(数据[1]-Lv坐标x)/2)
Lv坐标y = Lv坐标y + 104
//[判断人物位置是否处于最底或者最上面,若是则将人物移动到中间位置]
//下端:420 上端:275 相距:145
如果(Lv坐标y<469) //[下走] 横向50毫秒移动8个坐标 纵向50毫秒移动5个坐标
dm暗殇.KeyDown(40) //[下键]
辅助.等待(50*((469-Lv坐标y)/5))
dm暗殇.KeyUp(40)
辅助.等待(辅助.随机数(20,30))
如果结束
如果(Lv坐标y>469) //[上走]
dm暗殇.KeyDown(38) //[上键]
辅助.等待(50*((Lv坐标y-469)/5))
dm暗殇.KeyUp(38)
辅助.等待(辅助.随机数(20,30))
如果结束
//如果(跑动判断==0)
//dm暗殇.KeyPress(37)
//辅助.等待(辅助.随机数(20,30))
//dm暗殇.KeyDown(37) //[左键]
//辅助.等待(辅助.随机数(300,310))
//dm暗殇.KeyUp(37)
//辅助.等待(辅助.随机数(20,30))
//跑动判断=1
//否则
//dm暗殇.KeyPress(39)
//辅助.等待(辅助.随机数(20,30))
//dm暗殇.KeyDown(39) //[右键]
//辅助.等待(辅助.随机数(900,950))
//dm暗殇.KeyUp(39)
//辅助.等待(辅助.随机数(20,30))
//跑动判断=0
//如果结束
//跑动次数 +=1
//如果(跑动次数==3)
//跳出
//如果结束
如果结束
数据[0]=-1
数据 = 通用方法.找图方法(447,9,800,233,"过图标志1.bmp|过图标志2.bmp",dm暗殇)
如果(数据[0]==2)
跳出
如果结束
如果(字符串.比较(dm暗殇.GetColor(765,129),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,148),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,166),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,184),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,202),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,112),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,94),"66bbbb")==0)
跳出
如果结束
如果结束
辅助.等待(辅助.随机数(20,30))
循环结束
功能结束
复制代码
作者:
906559111
时间:
2013-3-4 23:36
真是大神啊!!!你是怎么做到的
作者:
七影
时间:
2013-3-5 14:56
大神,请讲下思路嘛!
作者:
kun0507
时间:
2013-3-11 21:50
这明显看不懂哦。
作者:
msyycb
时间:
2013-3-25 08:38
貌似很好,可惜看不懂。。。。
作者:
101
时间:
2013-4-14 10:19
哇 还有没有关于地下城其他的脚本
作者:
q77416214
时间:
2013-5-6 20:01
能不能讲下
作者:
tc6070
时间:
2013-12-31 23:38
不明觉厉
作者:
jungle886
时间:
2014-2-4 16:54
是用天使的吗?
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1