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

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
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
按键精灵自动寻路需要使用图像识别技术,通过识别游戏界面中的特定元素,来确定当前人物所处的位置和行进方向。以下是一个基于按键精灵和Python的自动寻路代码示例: ```python import time import random import win32api, win32con import pyautogui # 定义图片路径和坐标 map_img = 'map.png' start_img = 'start.png' end_img = 'end.png' path_img = 'path.png' map_pos = (0, 0) start_pos = None end_pos = None path_pos = [] # 图像识别函数 def find_image(img, pos, region=None): if region is None: region = (0, 0, pyautogui.size()[0], pyautogui.size()[1]) try: x, y = pyautogui.locateCenterOnScreen(img, region=region) return (x + pos[0], y + pos[1]) except: return None # 开始寻路 while True: # 查找地图和起点 map_pos = find_image(map_img, (0, 0)) start_pos = find_image(start_img, map_pos) # 如果找到了起点 if start_pos: # 查找终点 end_pos = find_image(end_img, map_pos) # 如果找到了终点 if end_pos: # 查找路径 path_pos = pyautogui.locateAllOnScreen(path_img, region=(map_pos[0], map_pos[1], pyautogui.size()[0], pyautogui.size()[1])) # 依次走过路径上的所有点 for pos in path_pos: x, y = pos.left + 5, pos.top + 5 win32api.SetCursorPos((x, y)) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0) time.sleep(random.uniform(0.1, 0.3)) # 路径走完后重新开始寻路 continue # 如果没有找到起点或终点,随机等待一段时间后再次尝试寻路 time.sleep(random.uniform(0.5, 1.5)) ``` 这段代码中,`find_image`函数可以在屏幕上查找指定的图像,并返回其坐标。在主循环中,首先查找地图和起点,如果找到了起点,则继续查找终点和路径。如果找到了路径,则依次走过路径上的所有点,每次移动后随机等待一段时间,以模拟真实的人物行进速度。当路径走完后,重新开始寻路。如果没有找到起点或终点,则随机等待一段时间后再次尝试寻路。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值