按键精灵大漠插件自动寻路自动打怪代码片段
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
上一篇:
通过多线程提高代码的执行效率例子