[Script]
SetSimMode 2//设置为硬件模拟
窗口句柄 = Lib.API.查找窗口句柄("地下城与勇士", "地下城与勇士")
If 窗口句柄 =0 Then
MsgBox "找不到DNF游戏窗口,请打开游戏后在运行脚本!",48,"警告"
ExitScript
Else
Plugin.Window.Move 窗口句柄, 0, 0
End If
//上面的代码用处:寻找DNF窗口句柄,如果找到了则移动DNF窗口到坐标 0,0 找不到DNF窗口句柄则提示游戏没有运行,并且终止脚本
//分割线===以上代码尽量不要修改
Rem A
Call 判断角色()
If 位置 = 1 Then
Call 购买腰带()
Else
If 位置 = 0 Then
Call 到塞莉亚房间()
Call 购买腰带()
End If
End If
Call 架设分解机()
Call 分解背包()
Call 修理分解()
Goto A
//分割线===以下代码尽量不要修改
Sub 判断角色
Call 点击确定()
//通过找图判断角色位置。1为塞莉亚房间,0为非塞莉亚房间
FindPic 0, 0, 640, 480, "Attachment:\塞莉亚房间.bmp", 0.9, intX, intY
If intX >= 0 and intY >= 0 Then
位置 = 1
Else
位置 = 0
End If
End Sub
Sub 点击确定
//作用:利用循环点击确定按钮,直到没有确定按钮为止
FindPic 0,0,640,480,"Attachment:\确认按钮.bmp",0.9,intX,intY
While intX > 0 and intY > 0
MoveTo intX+10, intY+10
LeftClick 1
FindPic 0,0,640,480,"Attachment:\确认按钮.bmp",0.9,intX,intY
Wend
End Sub
Sub 购买腰带
//往下翻页坐标302,370
//首先单击塞莉亚,打开物品店。这里不需要找图,直接用固定的坐标即可
Delay 500
MoveTo 307, 183
LeftClick 1
Delay 500
MoveTo 345, 233
LeftClick 1
//打开物品店了。现在开始找腰带。用循环操作
FindPic 0, 0, 316, 480, "Attachment:\赛利亚腰带.bmp", 0.9, X, Y
While X = - 1 and Y = - 1
//如果找不到腰带则往下翻页
MoveTo 302, 370
LeftClick 1
FindPic 0, 0, 316, 480, "Attachment:\赛利亚腰带.bmp", 0.9, X, Y
Wend
//找得到就跳出循环。接着用另一个循环来买到不能购买为止
FindPic 0, 0, 640, 480, "Attachment:\公告.bmp", 0.9, intX, intY
While intX < 0 and intY < 0
//利用公告图片判断。如果找到则说明不能继续购买,反之则继续买
MoveTo X+50, Y+10
LeftClick 1
FindPic 0, 0, 640, 480, "Attachment:\公告.bmp", 0.9, intX, intY
LeftClick 1
Wend
Call 点击确定()
//调用点击确定来关掉公告框,然后关闭购买的物品框
KeyPress "Esc", 1
//购买腰带步骤结束。如果需要买别的可以自己改坐标或者图片
End Sub
Sub 到塞莉亚房间
//250,180
//到塞莉亚房间思路:首先判断地图是否打开。如果没有打开则打开地图,反之直接根据坐标移动
FindPic 0, 0, 640, 480, "Attachment:\地图判断.bmp", 0.9, intX, intY
If intX < 0 and intY < 0 Then
MoveTo 288, 458
Delay 100
LeftClick 1
MoveTo 299, 419
Delay 100
LeftClick 1
End If
//打开地图完成。接下来右键点击坐标移动到塞莉亚房间前(DNF不能用寻路直接到塞莉亚房间)
MoveTo 252, 182
RightClick 1
MoveTo 640, 480
//接下来不停的找点判断是否到了塞莉亚房间前
颜色 = GetPixelColor(251, 180)
While 颜色 <> "FFCF09" and 颜色<>"FFA118"
//如果颜色不等于就说明没有移动到塞莉亚房间前,那么延迟一会儿继续判断
Delay 500
颜色 = GetPixelColor(251, 180)
MoveTo 252, 182
RightClick 1
MoveTo 0, 0
Wend
//到这里则说明角色移动到了塞莉亚房前了。那么只要模拟↑就能进去了
KeyPress "Up", 10
MoveTo 626, 15
Delay 100
LeftClick 1
End Sub
Sub 架设分解机
//架设前让角色移动位置...
FindPic 0, 0, 640, 480, "Attachment:\地图判断.bmp", 0.9, intX, intY
If intX < 0 and intY < 0 Then
MoveTo 288, 458
Delay 100
LeftClick 1
MoveTo 299, 419
Delay 100
LeftClick 1
End If
KeyPress "Down", 10
MoveTo 237, 197
RightClick 1
MoveTo 0, 0
颜色 = GetPixelColor(236, 192)
While 颜色 <> "FFCF09" and 颜色 <> "FFCE12" and 颜色 <> "FFC50C"
//如果颜色不等于就说明没有移动到指定位置
Delay 500
颜色 = GetPixelColor(236, 192)
MoveTo 237, 197
RightClick 1
MoveTo 0, 0
Wend
MoveTo 626, 15
Delay 100
LeftClick 1
X2=-1
While X2 = - 1
KeyPress "Esc", 1
KeyPress "Left", 4
//如果无法开启分解向左走。目测可以一直走到雪域...
FindPic 0, 0, 640, 480, "Attachment:\分解店.bmp", 0.9, intX, intY
MoveTo 288, 458
Delay 100
LeftClick 1
MoveTo 309, 401
Delay 100
LeftClick 1
MoveTo 259, 188
LeftClick 1
MoveTo 0,0
KeyPress "Num 9", 4
Call 点击确定()
//架设这一步比较烦。毕竟你的分解机可能和人家的重叠,所以要判断分解机是否架设成功很蛋疼
//我决定用随机数的方式来写。
X1 = Int((473 - 49 + 1) * Rnd + 49)
Y1 = Int((416 - 340 + 1) * Rnd + 340)
//生成一个随机的坐标,用来架设分解机
MoveTo X1, Y1
LeftClick 1
Delay 1000
MoveTo 430,240
LeftClick 1
MoveTo 390,240
LeftClick 1
MoveTo 350,240