首页 > 其他分享 >按键精灵,魔兽世界自动寻路实现脚本及思路

按键精灵,魔兽世界自动寻路实现脚本及思路

时间:2024-07-15 09:21:49浏览次数:15  
标签:魔兽 End x1 json SmHTTP 按键精灵 x2 文本 寻路

软件

umi截图插件,excel,按键精灵,神梦dll

思路

先移动一段距离通过计算斜率,换算成角度,判断最终转向

脚本

Function 对接umiocr(图片路径)
    Dim URL,JsonData,json,username,password,base64
    URL = "http://192.168.1.40:1224/api/ocr"
    Import "SmHTTP.dll"  
    Set SmHTTP = CreateObject("SMWH.SmHTTP")
    base64=Plugin.SMWH.Base64_File(图片路径)
    JsonData = SmHTTP.JsonData( _   
    "base64",base64 , _
    "Content-Type", "application/json" _
    )   
    json = SmHTTP.HTTP_POST(URL, JsonData)
    //TracePrint json
    If SmHTTP.GetStatus() = 200 Then 
        If SmHTTP.GetJSON(json, "code")=100 Then 
            Dim 文本左上x, 文本左上y, 文本右上x, 文本右上y, 识别的文本
            文本左上x=SmHTTP.GetJSON(json, "data[0]['box'][0][0]")
            文本左上y=SmHTTP.GetJSON(json, "data[0]['box'][0][1]")
            文本右上x=SmHTTP.GetJSON(json, "data[0]['box'][2][0]")
            文本右上y=SmHTTP.GetJSON(json, "data[0]['box'][2][1]")
            识别的文本 = SmHTTP.GetJSON(json, "data[0]['text']")
            //对接umiocr="识别的文本:" & 识别的文本 & ",文本范围:" & 文本左上x & "," & 文本左上y & "," & 文本右上x & "," & 文本右上y
            对接umiocr= 识别的文本 
        Else 
            对接umiocr=-1
        End If
    Else 
        对接umiocr=-1
    End If
End Function

Function 判断方向(x1,y1,x2,y2)
Dim pi
pi = 3.14159265359
If x2 <> x1 Then 
斜率 = (y2 - y1) / (x2 - x1)
End If
a = Atn(斜率) / pi * 180
//TracePrint x1&"  "&y1&"  "&x2&"  "&y2
If y2 - y1 < 0 Then 
    If x2 - x1 > 0 Then 
        // 此时目的地在角色的东北方
        a = a + 270
    ElseIf x2 - x1 < 0 Then 
        // 此时目的地在角色的西北方
        a = a + 90
    ElseIf x2 - x1 = 0 Then
        // 此时目的地在角色的上方
        a = 180
    End If
ElseIf y2 - y1 > 0 Then 
    If x2 - x1 > 0 Then 
        // 此时目的地在角色的东南方
        a = a + 270
    ElseIf x2 - x1 < 0 Then 
        // 此时目的地在角色的西南方
        a = a + 90
    ElseIf x2 - x1 = 0 Then
        // 此时目的地在角色的下方
        a = 0
    End If
ElseIf y2 - y1 = 0 Then
    If x2 - x1 > 0 Then 
        // 此时目的地在角色的右方
        a = 270
    ElseIf x2 - x1 < 0 Then 
        // 此时目的地在角色的左方
        a= 90
    End If
End If
判断方向=a
End Function


//转一圈2秒,转一度需要2000/360
旋转一度用时 =2000/360
Sub 调整人物角度(目标方向, 移动方向)
角度 = abs(目标方向 - 移动方向)
If 角度 > 10 Then 
If 目标方向>移动方向 Then
    KeyDown "Right", 1
    Delay 角度 * 旋转一度用时
    KeyUp "Right", 1
Else 
    KeyDown "left", 1
    Delay 角度 * 旋转一度用时
    KeyUp "left", 1
End If
End If
End sub

//获取所有目的坐标数据
Call Plugin.Office.OpenXls("C:\Users\wxp\Desktop\test1.xlsx")
Dim line
line=1
Do
data = Plugin.Office.ReadXls(1, line, 1)
If data <>"" Then 
    line = line + 1
    Else 
    Exit Do
End If
Loop
ReDim array_x(line-2), array_y(line-2)
For i=0 to line-2
array_x(i) = Plugin.Office.ReadXls(1, i+1, 1)
array_y(i) = Plugin.Office.ReadXls(1, i+1, 2)
Next
Call Plugin.Office.CloseXls()


//移动坐标x_x,m_y  初始坐标i_x,i_y  目标坐标t_x,t_y  
Dim m_x, m_y, i_x, i_y, t_x, t_y, count
count = 0
t_x=array_x(count)
t_y=array_y(count)


//获取初始坐标
Call Plugin.Pic.PrintScreen(9, 27, 108, 53, "D:\按键精灵\temp\jt.bmp")
坐标 = 对接umiocr("D:\按键精灵\temp\jt.bmp")
i_x=left(坐标,4) 
i_y=right(坐标,4) 

//初始距离
Dim d
//判断移动后距离
d=Sqr((i_x-t_x)*(i_x-t_x)+(i_y-t_y)*(i_y-t_y))
Do
If (d > 0.25) Then 
dim 目标方向
目标方向 = 判断方向(t_x,t_y,i_x,i_y)
KeyDown "up", 1
Delay 1200
KeyUp "up", 1
Call Plugin.Pic.PrintScreen(9, 27, 108, 53, "D:\按键精灵\temp\jt.bmp")
坐标 = 对接umiocr("D:\按键精灵\temp\jt.bmp")
m_x = left(坐标, 4)
m_y = right(坐标, 4)
d=Sqr((m_x-t_x)*(m_x-t_x)+(m_y-t_y)*(m_y-t_y))
dim 移动方向
移动方向 = 判断方向(m_x,m_y,i_x,i_y)
//TracePrint "目标方向:" & 目标方向 & "移动方向:" & 移动方向
call 调整人物角度 (目标方向,移动方向)
i_x = m_x
i_y = m_y

ElseIf (d < 0.25)
TracePrint "距离:"&d&"目标移动到位"
If count < line-2 Then 
count=count+1
t_x = array_x(count)
t_y = array_y(count)
i_x = m_x
i_y = m_y
d=Sqr((i_x-t_x)*(i_x-t_x)+(i_y-t_y)*(i_y-t_y))
TracePrint "移动坐标次数:" & count
Else 
Exit Do
End If
End If
loop

ps:

  • 坐标截图:“D:\按键精灵\temp\jt.bmp”
  • 坐标移动位置记录:“C:\Users\wxp\Desktop\test1.xlsx“

 

标签:魔兽,End,x1,json,SmHTTP,按键精灵,x2,文本,寻路
From: https://www.cnblogs.com/wxp100/p/18302435

相关文章

  • 苹果电脑可以玩魔兽世界吗 魔兽世界有mac版本么 macbook 可以玩魔兽世界吗
    在苹果电脑(Mac)上玩魔兽世界(WorldofWarcraft)是许多玩家的愿望。虽然魔兽世界本身是跨平台的游戏,支持Windows和Mac系统,由于官方版本更新不同步等情况,有些玩家可能会考虑在虚拟机中运行游戏,本文将探讨如何在Mac上玩魔兽世界。一、直接在Mac上玩魔兽世界魔兽世界是暴雪娱乐(Bl......
  • 打卡信奥刷题(208)用Scratch图形化工具信奥P8605 [普及组][蓝桥杯 2013 国 AC] 网络寻路
    [蓝桥杯2013国AC]网络寻路题目描述XXX国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地......
  • 修复《魔兽世界》更新后api-ms-win-core-com-l1-1-0.dll丢失问题的实战指南
    《魔兽世界》更新后api-ms-win-core-com-l1-1-0.dll丢失的快速修复,通过系统扫描、游戏重装与文件恢复,轻松解决dll缺失难题,重回艾泽拉斯大陆的冒险旅程。如果你在《魔兽世界》更新后遇到“api-ms-win-core-com-l1-1-0.dll”文件丢失的问题,可以尝试以下步骤来解决:1.系统文......
  • 《魔兽世界》游戏emp.dll文件丢失解决方案:快速修复指南
    《魔兽世界》是暴雪娱乐开发的一款大型多人在线角色扮演游戏(MMORPG),玩家在一个广阔而奇幻的世界中冒险,参与联盟与部落的冲突,探索丰富故事线,完成任务,征服怪物,体验深度角色扮演与社交互动。若你在游玩《魔兽世界》时遇到emp.dll文件丢失的问题,可以按照以下步骤尝试修复:1.运行......
  • 游戏中的寻路算法以及动态避障算法
    参考:即时战略游戏中实用的寻路算法都有哪些,比较如何?-知乎(zhihu.com) 寻路算法1.深度/广度优先搜索比较简单,略过  2.Dijkstra最短路径算法图文详解Dijkstra最短路径算法(freecodecamp.org) 3.A*寻路算法比较常见,略过  4.流场 FlowField该算法可以解决R......
  • 按键精灵的每隔10秒点击屏幕中央的代码
    要在按键精灵中设置每隔10秒点击屏幕中央的代码,你可以参考以下步骤和代码: 步骤确定坐标:首先,你需要确定屏幕中央大门的精确坐标。你可以使用按键精灵的“抓抓”工具来获取这些坐标。编写脚本:在按键精灵中创建一个新的脚本,并编写以下代码。代码plaintext//设置循环,每隔1......
  • 魔兽世界 包括巫妖王之怒 一键更改字体脚本
    3个游戏版本的路径是WorldofWarcraft_classic_\FontsWorldofWarcraft_classic_era_\FontsWorldofWarcraft_retail_\Fonts使用方法:拖动字体文件到脚本上就可以自动建立硬链接.另存为xxx.bat@echooffrem[教程][小玩意儿]字型、字体,与8.1的客户端结构变化remhtt......
  • 寻路算法---基于AutoCAD二次开发
    在CAD中绘制首尾相连的直线,并据此构件点与点之间的连接关系,考虑到可能会有线连接的地方有一定的距离delta 点的信息,用于最开始情况下的点的信息集合///<summary>///点对应的信息///</summary>publicclassQjPointInfo{///<summary>......
  • 游戏AI寻路——八叉树+A*寻路
    利用八叉树的空中寻路你有思考过在空中如何进行寻“路”吗?来想象一个的场景:飞机从空中基地出发,要避开许多空中建筑,最终到达目的地。这种情况下的寻路是没有路面的,寻路物体的移动方向也比较自由,这该怎么寻呢?如果我们只是在一个平面进行寻路,我们可以直接用A*寻路,铺好一个地面网......
  • Unity A*寻路算法
    前言:为什么要使用A*寻路算法,不直接使用unity自带的Navigation组件呢?灵活性高:A*算法允许开发者根据具体游戏需求调整和优化算法实现,比如通过改变启发式函数来适应不同的地图和寻路条件。Unity的Navigation组件虽然强大,但在一些特殊场景或需要高度定制的路径计算中可能不够灵......