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