快捷搜索: 王者荣耀 脱发

按键精灵大漠插件自动寻路自动打怪代码片段

Call 传送到("兽人古墓")

Function 传送到(mapname)
	//寻路找老兵
	自动寻路 265, 272
	//点击老兵
Call 等字点击("老兵", "49.67.78-10.20.30", 20, 45, 500)
Call 等字点击(mapname, "ffdf00-050505", 24, 6, 500)
Call 等字点击("前往挑战", "ffdf00-050505", 24, 6, 500)

//	Do
//		找到了么 = 找字点击("老兵", "49.67.78-10.20.30", 20, 45)//循环找字 防止字被挡住
//		TracePrint 找到了么
//		Delay 500
//	Loop While 找到了么 = - 1 //找不到继续循环 -1 就是找不到 0 就是找到了 跳出循环
	//上面简化写法
//	Do
//		Delay 500
//	Loop 找字点击("老兵", "49.67.78-10.20.30", 20, 45)=-1
//	Delay 1000
//	Do
//		Delay 1000
//	Loop 找字点击(mapname, "ffdf00-050505", 24, 6)=-1
//	Do
//		Delay 1000
//	Loop 找字点击("前往挑战", "ffdf00-050505", 24, 6)=-1
End Function

Function 等字点击(findtext, colortext, px, py, sleep)
	Do
		Delay sleep
	Loop While 找字点击(findtext,colortext, px, py)=-1
End Function

Function 自动寻路(x, y)
	地图宽度 = 830
	地图高度 = 694
	小地图宽度 = 605
	小地图高度 = 380
	横向比例 = 小地图宽度 / 地图宽度
	纵向比例 = 小地图高度 / 地图高度
	dm.KeyPress 9    //按 tab 按键
	Delay 500
	dm.moveto 94 + (x * 横向比例), 168 + (y * 纵向比例)//94,168是TAB出的小地图左上角起始位置坐标
	dm.LeftClick 
	//定位 orc 区域
	y1 = GameH - 30
	y2 = GameH
	x1 = 10
	x2 = 170
	//取字
	Do
		Text = dm.Orc(x1, y1, x2, y2, "ffffff-000000", 1.0)   //识别文字库文字
		Text = Replace(Text, "土城", "")   //把 土城 这个字换成空
		坐标组 = Split(Text, ":")       // 用 冒号 分割文字 成数组
		If abs(坐标组(0) - x) < 4 Then    //实际坐标与目的地坐标之间差不超过4点距离
			If abs(坐标组(1) - y) < 4 Then 
				Delay 2000
				Exit Do
			End If
		End If
	Loop
	dm.KeyPress 9    //按 tab 按键
End Function

Function 找字点击(findtext, colortext, px, py)		//px,py 是偏移值
	找字点击 = dm.FindStrFast(0, 0, GameW, GameH, findtext, colortext, 1.0, x, y)
	If 找字点击 > - 1  Then //找的返回值是0 找不到返回值是 -1
		dm.moveto x + px, y + py
		Delay 200
		dm.LeftClik
	End If
End Function
TracePrint eval("100+10")   //输出计算结果函数
ExitScript 

Do
	If 找怪() Then 
		dm.Moveto 最近的横, 最近的纵
		dm.LeftClik 
		Delay 3000
	End If
Loop

If 打怪() Then 
	dm.Moveto 最近的横+15, 最近的纵+40
End If

Function 打怪()
	Text=dm.FindStrFastEx(0,0,GameW,GameH-284,"血条","100408-101010",0.9)
	TracePrint Text
	怪物列表 = Split(Text, "|")
	//定义可能的最远距离
	最近的横 = 32767
	最近的纵=32767
	For i = 0 To UBound(怪物列表)
		怪物信息 = Split(怪物列表(i), ",")
		If (怪物信息(1) <> 496 and 怪物信息(2) <> 278) Then 
			//排除自己的坐标位置
			找色横1 = 怪物信息(1) + 10
			找色横2 = 怪物信息(2) + 20
			找色纵1 = 怪物信息(2) + 45
			找色纵2 = 怪物信息(2) + 50
			//是否是怪
			If dm.FindColor(找色横1, 找色纵1, 找色纵1, 找色纵2, "ffffff-000000", 1.0, 0, x, y) = 0 Then 
				距离1 = 两点距离(486, 278, 怪物信息(1), 怪物信息(2))
				距离2 = 两点距离(486, 278, 最近的横, 最近的纵)
				//如果这只更近
				If 距离2 > 距离1 Then 
					最近的横 = 怪物信息(1)
					最近的纵 = 怪物信息(2)
					打怪 = True
				End If
				TracePrint "是怪"
				Else 
					TracePrint "不是怪"
			End If
			x = CLng(怪物信息(1))
			y = CLng(怪物信息(2))
			Call dm.ClientToScreen(hWnd, x, y)   //吧窗口坐标转换为屏幕坐标
			MoveTo x + 16, y + 65
			Delay 50
			//是否是怪 特征码的方案
//			If GetCursorShape(0) = 684280064 Then //获取鼠标特征码
//				距离1 = 两点距离(486, 278, 怪物信息(1), 怪物信息(2))
//				距离2 = 两点距离(486, 278, 最近的横, 最近的纵)
//				//如果这只更近
//				If 距离2 > 距离1 Then 
//					最近的横 = 怪物信息(1)
//					最近的纵 = 怪物信息(2)
//					打怪 = True
//				End If
//			End If
		End If
	Next
End Function

Function 两点距离(x1, y1, x2, y2)
	两点距离=sqr(((x1-x2)^2)+((y1-y2)^2)))
End Function
经验分享 程序员 微信小程序 职场和发展