2024年1月10日发(作者:)

DNF扫拍卖源代码

UserVar 设置价格="7000" "输入购买价格"//自定义价格

设置价格=CLng(设置价格)//函数转换

Set dm = createobject("")//生成大漠对象

//TracePrint ()

Hwnd = ("地下城与勇士", "地下城与勇士")//获取句柄

ndow hwnd,-50,-50 //绑定前移出屏幕一定范围

大漠窗口绑定 hwnd, "dx2", "normal", "normal", 0//大漠窗口绑定

大漠环境优化 //大漠环境优化

Delay 500

ndow hwnd, 150, 40//将窗口移回来

Delay 100

//LockMouse

Do

s = (366, 26, 438, 50, "ffffff-000000", 1.0)//判断拍卖行是否打开 如果没打开则按B键打开

TracePrint s

If Instr(s, "卖") = 0 Then

ss 66

Delay 10

End If

s = (376, 235, 431, 270, "ffffff-000000", 1.0)//打开之后看看是否存在"公告",如果存在则按下回车

TracePrint s

If Instr(s, "公告") > 0 Then

ss 13

Delay 10

End If

220,88//打开则激活文本,删除原文本,然后发送文本消息

Delay 10

ick

Delay 10

For 10

ss 8//删除文本

1 / 18

Next

Delay 20

ss 86//搜狗短语快捷键

ss 32//空格打下字符

595, 87//移动过去搜索

Delay 50

ick

Delay 100

s = (305, 262, 493, 338, "ffffff-000000", 1.0)

TracePrint s

If Instr(s, "不存在") > 0 Then //判断玩家是否提前在拍卖里设置了不符的搜索

MsgBox "搜索物品出错,请点击拍卖行右上角类似←图标初始化拍卖行后再试"

ExitScript

End If

For 8

595, 87

Delay 50

ick //点击搜索

Delay 1000

//然后计算出物品单价,如果单击低于设置的价格则移动过去点击一口价,按下回车2次 延时一定时间在按回车一次

s = (536, 163, 602, 198, "ffffff-000000|ff3232-000000|ffb400-000000", 0.9)

TracePrint s

If s <> "" Then

物价 = CLng(s)

TracePrint 物价

Else

物价=""//为了防止网速造成图片没显示所以加上这判断以防出错误秒

End If

Delay 100

s = (169,165,198,179,"ffffff-000000|ff3232-000000|ffb400-000000",1.0)//物品个数

TracePrint s

If s <> "" Then

个数= CLng(s)

差价 = 物价 / 个数

TracePrint 差价-设置价格

TracePrint 差价

Else

差价=""

End If

If 差价 < 设置价格 and 差价<>"" Then //符合条件拍下

2 / 18

TracePrint "可以秒了"

543, 167

Delay 50

ick

Delay 50

595, 198

Delay 50

ick

Delay 50

ss 13

Delay 50

ss 13

Delay 3500

s = (310,262,486,330,"ffffff-000000",1.0)

If Instr(s, "不存在") > 0 Then

Exit For

End If

ss 13

Delay 50

s = (376, 235, 431, 270, "ffffff-000000", 1.0)

If Instr(s, "公告") > 0 Then

Delay 20

ss 13

Delay 20

End If

End If

Next

Delay 100

Loop

Sub 大漠注册()

// 首先打包和到附件,当然如果你还有其它资源(字库,图片等)也可以一并打包

need_ver = "3.1233" // 这个need_ver作为本脚本需要使用的插件版本. 如果要换插件时,记得更改这个值.

PutAttachment "C:WindowsSystem32","" //将按键附件里的atl系统库释放在WIN系统中,以免某用户机器上没有或删除

set ws=createobject("")

"regsvr32 /s"

set ws=nothing

// 这里选择c盘的test-_game作为插件的基本目录 也就是SetPath对应的目录。所以所有资源都释放在此目录.

PutAttachment "c:大漠注册文件夹","" //这里修改了路径,即把按键附件里的3 / 18

释放在新文件夹中(如果没有文件夹脚本会自动创建)

// 这里要用到RegDll来注册插件,所以必须释放到Plugin. 但是切记不能把释放到Plugin.那会导致插件失效.

PutAttachment ".Plugin" ,""

// 插件注册开始>>>>>>>>>>>>>>>>>>>

// 下面开始注册插件,先尝试用RegDll来注册.这里必须使用绝对路径。以免有别人把释放在系统目录.造成版本错误.

Call ("c:大漠注册文件夹") //这里注册插件所在的路径,由于上面改了默认,所以这里要跟着改成上面释放的路径

// 这里判断是否注册成功

set dm = createobject("")//创建一个对象以便以后对对象操作

ver = () //得到当前大漠版本

if ver <> need_ver then //如果版本号不等于原版本号的变量

// 先释放先前创建的dm

set dm = nothing //让创建的对象设置为空

// 再尝试用regsvr32 来注册. 这里必须使用绝对路径。以免有别人把释放在系统目录.造成版本错误.

set ws=createobject("")

"regsvr32 c:大漠注册文件夹 /s"//这里在粘贴大漠例子里的默认路径也要改成我们更改过的插件释放路径

set ws=nothing

Delay 1500

// 再判断插件是否注册成功

set dm = createobject("")

ver = () //得到版本

If ver <> need_ver Then

If ype() = 3 Then //这里是自我加入的判断,判断是不是win 7系统(具体看大漠接口说明的"系统")

if AC() = 1 then// 这里判断是否有开启UAC(用户账户控制),(具体看大漠接口说明的"系统")

弹出窗返回值 = MsgBox("Windsw 7系统需要关闭UAC后脚本才能生效,是否现在关闭?", vbYesNo, "温馨提示")

//这里让MsgBox弹出相关提示,然后用vbYesNo参数,最后面是标题,MsgBox有返回值(具体看直接按键查看)

If 弹出窗返回值 = 6 Then //如果返回值等于6(即用户点击了"是"按钮)

If (0) = 1 Then //判断是否关闭成功,=0是失败=1是成功(具体看大漠接口说明的"系统")

//关闭成功后填出是否重启,如果用户点"是"则执行下面的语句

If MsgBox("关闭成功,重启机器后生效,是否现在重启机器", vbYesNo, "提示") = 6 Then

dm_ret = (2)//重启机器(具体看大漠接口说明的"系统")

End If

End If

End If

End If

4 / 18

Else

messagebox "插件版本错误,当前使用的版本是:"&ver&",插件所在目录是:"&ePath()// 这时,已经确认插件注册失败了。 弹出一些调试信息,以供分析.

messagebox "请关闭程序,重新打开本程序再尝试"

endscript

End If

end if

End If

TracePrint () // 调试是否注册成功 And 插件注册结束

End Sub

Sub OnScriptExit()//解除大漠窗口绑定

Window

End Sub

Sub 大漠窗口绑定(句柄,屏幕,鼠标,键盘,模式)

dm_ret = ndow(句柄,屏幕,鼠标,键盘,模式)// 例子默认绑定模式,后期用大漠绑定测试工具来讲解绑定类型

If dm_ret = 0 then// 检测绑定返回值

last_error = tError()

if ype() = 3 then // 如果是WIN7 VISTA WIN2008系统,检测当前系统是否有开启UAC

if AC() = 1 then

if (0) = 1 then

messagebox "已经关闭系统UAC设置,必须重启系统才可以生效。点击确定重启系统"

2

Delay 2000

endscript

end if

end if

end if

messagebox "绑定失败,错误码是:"&last_error

messagebox "如果确定关闭了UAC,很可能是系统的防火墙拦截插件,请暂时关闭360等安全防火墙再尝试"

endscript

End If

End Sub

Sub 大漠环境优化()

//u 50 //设置CPU降低等级

dm_ret = h(ePath()) //设置基本路径

dm_ret = t(0,"DNF字库.txt") //设置0号字库

//dm_ret = t(1,"") //设置1号字库

//dm_ret = t(2, "") //设置2号字库

//dm_ret = Pwd("123") //设置图片密码

//dm_ret = tPwd("123") //设置字库密码

5 / 18

End Sub

Event

大漠注册

End Event

1:由于DNF隐蔽文字发送,所以本次采用的是搜狗短语方式(当然你也可以用输入法插件)

2:本节当然也包括了大漠插件,以上代码参考用,等下会发百度网盘下载完整代码插件等。

3:由于只是草草下了一下,自动登录以及防掉线没写。

4:本次搜拍是单扫,在你理解上面的代码情况下,你可以轻松自己弄多扫

5:搜狗短语设置方式我等下会上图

6:以上所有代码缺陷很多,主要是给新手参考,楼主有时间的话会写完整版,包括多扫,包括直接放弃搜狗输入,包括自动登录防掉线处理等等,一个完整的全脱机的脚本。

7:重点,本节没有写直接关闭DNF右边喇叭的那个窗口,启动先记得将DNF右边的显示框关掉哦,而且游戏分辨率必须是800*600

8:恩,暂时想到就这么多,楼主还在实习期间,大神可多来指教,哈哈。

UserVar sj=0 "设置扫描时间(请输入整数或小数点后一位的小数)"

UserVar Vard=300 "请设置搜索物品延迟时间(建议为400≤延迟时间≤800)"

UserVar vara="★★★★★★★★★" "★★★★★★★★主流商品价格设置★★★★★★★★"

UserVar Var1=0 "戮蛊的眼睛"

UserVar Var2=0 "波罗丁的印章"

UserVar Var3=0 "王之石像碎块"

UserVar Var4=0 "泰拉石"

UserVar Var5=0 "使徒的气息"

UserVar Var6=0 "矛盾的结晶体"

UserVar Var7=0 "浓缩的异界精髓"

UserVar Var8=0 "强烈之痕迹"

UserVar Var9=0 "浓缩的纯洁之骸"

UserVar Var10=0 "卡勒特首领的徽章"

UserVar Var11=0 "虚空魔石"

UserVar Var12=0 "灵魂晶石"

UserVar Var13=0 "灾难的征兆"

UserVar Var14=0 "服务器喇叭"

UserVar Var15=0 "混沌魔石碎片"

UserVar Var16=0 "破旧的皮革"

UserVar Var17=0 "风化的碎骨"

UserVar Var18=0 "生锈的铁片"

6 / 18

UserVar Var19=0 "最下级砥石"

UserVar Var20=0 "最下级硬化剂"

UserVar Var21=0 "特级硬化剂"

UserVar Var22=0 "无色小晶块"

UserVar Var23=0 "黑色小晶块"

UserVar Var24=0 "白色小晶块"

UserVar Var25=0 "红色小晶块"

UserVar Var26=0 "金色小晶块"

UserVar Var27=0 "蓝色小晶块"

UserVar Var28=0 "无色大晶体"

UserVar Var29=0 "黑色大晶体"

UserVar Var30=0 "白色大晶体"

UserVar Var31=0 "红色大晶体"

UserVar Var32=0 "金色大晶体"

UserVar Var33=0 "蓝色大晶体"

UserVar Var34=0 "无重力碎片"

UserVar Var35=0 "龙人之眼"

UserVar Var36=0 "虚空魔石碎片"

UserVar Var37=0 "燃烧的心脏"

UserVar Var38=0 "狄瑞吉之血"

UserVar Var39=0 "污秽之血"

UserVar Var40=0 "天界珍珠"

UserVar Var41=0 "天界徽章"

UserVar Var42=0 "疯狂盗贼的口罩"

UserVar Var43=0 "副船长的戒指"

UserVar Var44=0 "深渊派对挑战书"

UserVar Var45=0 "华丽的曲玉"

UserVar Var46=0 "普通的曲玉"

UserVar Var47=0 "***晶石"

UserVar Var48=0 "无尽的永恒"

UserVar Var49=0 "淬炼的冒险家灵魂"

UserVar Var50=0 "强韧的冒险家灵魂"

UserVar Var51=0 "干燥的水仙花"

UserVar Var52=0 "海龟壳"

UserVar Var53=0 "厚实的肉块"

UserVar Var54=0 "黄金粉末"

UserVar Var55=0 "金色小晶块"

UserVar Var56=0 "辣椒"

UserVar Var57=0 "神之印章"

UserVar Var58=0 "生命之息"

UserVar Var59=0 "龙之心"

UserVar Var60=0 "魔法珍珠"

UserVar Var61=0 "蜘蛛蘑菇"

UserVar Var62=0 "白萝卜"

7 / 18

UserVar Var63=0 "百年野参"

UserVar Var64=0 "粗蒜"

UserVar Var65=0 "璀璨玫瑰"

UserVar Var66=0 "蜂蜜"

UserVar Var67=0 "野山参"

Dim ai(67)

ai(0)=var1

ai(1)=Var2

ai(2)=Var3

ai(3)=Var4

ai(4)=Var5

ai(5)=Var6

ai(6)=Var7

ai(7)=Var8

ai(8)=Var9

ai(9)=Var10

ai(10)=Var11

ai(11)=Var12

ai(12)=Var13

ai(13)=Var14

ai(14)=Var15

ai(15)=Var16

ai(16)=Var17

ai(17)=Var18

ai(18)=var19

ai(19)=Var20

ai(20)=Var21

ai(21)=var22

ai(22)=Var23

ai(23)=Var24

ai(24)=Var25

ai(25)=Var26

ai(26)=Var27

ai(27)=Var28

ai(28)=Var29

ai(29)=Var30

ai(30)=Var31

ai(31)=Var32

ai(32)=Var33

ai(33)=Var34

ai(34)=Var35

ai(35)=Var36

ai(36)=Var37

ai(37)=Var38

8 / 18

ai(38)=Var39

ai(39)=Var40

ai(40)=Var41

ai(41)=Var42

ai(42)=Var43

ai(43)=Var44

ai(44)=Var45

ai(45)=Var46

ai(46)=Var47

ai(47)=Var48

ai(48)=Var49

ai(49)=Var50

ai(50)=Var51

ai(51)=Var52

ai(52)=Var53

ai(53)=Var54

ai(54)=Var55

ai(55)=Var56

ai(56)=Var57

ai(57)=Var58

ai(58)=Var59

ai(59)=Var60

ai(60)=Var61

ai(61)=Var62

ai(62)=Var63

ai(63)=Var64

ai(64)=Var65

ai(65)=Var66

ai(66) = Var67

nowtime = now

xs = hour(nowtime)

fen = Minute(nowtime)

miao = Second(nowtime)

ts = sj * 3600 + xs * 3600 + fen * 60 + miao

If ts > 86400 Then

ts=ts-86400

End If

Hwnd = (0, "地下城与勇士")

Call (Hwnd, 0, 0)

Delay 1000

MoveTo 452, 381

LeftClick 1

KeyPress "B", 1

MoveTo 132, 90

9 / 18

LeftClick 1

KeyPress "BackSpace", 8

a6 = 0

jq = 0 //价钱

a2=0

a1 = 65

b1= 65

f1 = 0

s=0

While a1< 91

While b1 < 91

If ai(jq) = 0 Then

Goto 标记a

End If

rem 标记9

KeyPress a1, 1

KeyPress b1, 1

KeyPress "1", 1

Delay 10

Rem 标记8

KeyPress "Enter", 1

Delay vard //延迟时间设置

Call 单价

If s = 0 and a2=0 Then

a2 = a2 + 1

Goto 标记8

End If

If s = 0 and a2 = 1 Then

KeyPress "Delete", 8

KeyPress "BackSpace", 8

Goto 标记9

End If

a2 = 0

Call 金币

If s <= ai(jq) and c3 < c Then

If c3 > s Then

MoveTo 507, 137

LeftClick 1

Delay 500

MoveTo 557, 168

Delay 100

LeftClick 1

a6 = Fix(c3 / s)

f1=a6

/ 18 10

Delay 300

KeyPress "BackSpace", 4

Call 购买数量

KeyPress "Enter", 2

Delay 100

KeyPress "Enter", 1

MoveTo 132, 90

LeftClick 1

End If

End If

If s <= ai(jq) and c3 > c Then

f1 = c

MoveTo 507, 137

LeftClick 1

Delay 500

MoveTo 557, 168

Delay 100

LeftClick 1

Delay 100

KeyPress "Enter", 2

Delay 100

KeyPress "Enter", 1

MoveTo 132, 90

LeftClick 1

End If

KeyPress "BackSpace", 8

Rem 标记a

b1 = b1 + 1

jq = jq + 1

s=0

f1 = 0

If a1= 67 and b1 = 80 Then

a1 = 65

b1 = 65

jq=0

End If

nowtime1 = now

xs1 = hour(nowtime1)

fen1 = minute(nowtime1)

miao1 = second(nowtime1)

ts1 = xs1 * 3600 + fen1*60+miao1

If ts <= ts1 Then

Goto 标记5

End If

/ 18 11

Wend

b1 = 65

a1 = a1+ 1

Wend

Rem 标记5

Delay 100

KeyPress "Esc", 1

Sub 单价()

//已用变量x,y,sz(),m,codea,c,b,d,code1,j1,sz1(),m1,s

//********************************判断物品个数***********************************

x=193

y = 138

Dim sz1(3)

m1=0

For j1=1 to 4

For i=1 To 7

GetColor=GetPixelColor(x,y)

If GetColor ="FFFFFF"or GetColor="B2B2F3" Then

B="1"

Else

B="0"

End If

code1 = code1 & B

y = y - 1

Next

y = 138

Select Case code1

Case "0111110"

IfColor x - 1, y - 3, "FFFFFF", 0 Then

d = 9

Else

IfColor x-1,y-3,"B2B2F3",0 Then

d = 9

Else

d=0

End If

End If

Case "1111111"

d = 1

x = x + 2

Case "1000110"

d=2

Case "0110110"

IfColor x - 2, y - 3, "FFFFFF", 0 Then

12 / 18

d = 8

Else

IfColor x-2,y-3,"B2B2F3",0 Then

d = 8

Else

d = 3

End If

End If

Case "0010000"

d=4

Case "0111001"

d=5

Case "0110010"

d=6

Case "0000011"

d = 7

Case "0000000"

Goto 标记2

Case Else

Goto 标记2

End Select

sz1(m1) = d

m1=m1+1

x = x - 6

code1=""

Next

Rem 标记2

code1=""

//sz1(0)个

//sz1(1)十

//sz1(2)百

//sz1(3)千

c1=sz1(0)+10*sz1(1)+100*sz1(2)+1000*sz1(3)

If c1 = 0 Then

c1=1

End If

//***********************************判断价钱************************************

codeA = ""

x = 597

y = 139

Dim sz(8)

m = 0

For n=1 to 3

for j=1 to 3

13 / 18

For i=1 To 8

GetColor=GetPixelColor(x,y)

If GetColor ="00B1FF"or GetColor="3232FF" Then

B="1"

Else

B="0"

End If

codeA = codeA & B

y = y - 1

Next //得到特征码

y = 139 //y点返回初始点

Select Case codea

Case "01111110" //由于8和3的特征码一样,在这里进行判断

IfColor x - 1, y - 3, "00B1FF", 0 Then

a = 9

Else

IfColor x-1,y-3,"3232FF",0 Then

a = 9

Else

a=0

End If

End If

Case "10000000"

a = 1

x = x + 2

Case "10000110"

a=2

Case "01110110" //由于8和3的特征码一样,在这里进行判断

IfColor x - 4, y - 2, "00B1FF", 0 Then

a = 8

Else

IfColor x-4,y-2,"3232FF",0 Then

a = 8

Else

a = 3

End If

End If

Case "10100000"

a=4

Case "01110001"

a=5

case "01110000"

a=6

Case "00000001"

14 / 18

a=7

Case "00000000"

Goto 标记1

End Select

sz(m)=a

m = m + 1

x = x - 6

codea=""

Next

x = x - 3

Next

Rem 标记1

//sz(0)个

//sz(1)十

//sz(2)百

//sz(3)千

//sz(4)万

//sz(5)十万

//sz(6)百万

//sz(7)千万

c=sz(0)+10*sz(1)+100*sz(2)+1000*sz(3)+10000*sz(4)+100000*sz(5)+1000000*sz(6)+10000000*sz(7)

s = c / c1

If s <> Fix(s) Then

c1=c1-sz1(j1-1)*10^(j1-1)

End If

s = c / c1

End Sub

Sub 金币()

//***********************************判断金币************************************

codejb = ""

x = 766

y = 553

Dim jb(8)

m3 = 0

For n=1 to 3

for j=1 to 3

For i=1 To 8

GetColor=GetPixelColor(x,y)

If GetColor ="93C5DD" Then

B3="1"

15 / 18

Else

B3="0"

End If

codejb = codejb & B3

y = y - 1

Next //得到特征码

y = 553 //y点返回初始点

Select Case codejb

Case "01111110" //由于8和3的特征码一样,在这里进行判断

IfColor x - 1, y - 3, "93C5DD", 0 Then

a3 = 9

Else

a3=0

End If

Case "10000000"

a3 = 1

x = x + 2

Case "10000110"

a3=2

Case "01110110" //由于8和3的特征码一样,在这里进行判断

IfColor x - 4, y - 2, "93C5DD", 0 Then

a3 = 8

Else

a3 = 3

End If

Case "10100000"

a3=4

Case "01110001"

a3=5

case "01110000"

a3=6

Case "00000001"

a3=7

Case "00000000"

Goto 标记10

End Select

jb(m3)=a3

m3 = m3 + 1

x = x - 6

codejb=""

Next

x = x - 3

Next

Rem 标记10

16 / 18

c3=jb(0)+10*jb(1)+100*jb(2)+1000*jb(3)+10000*jb(4)+100000*jb(5)+1000000*jb(6)+10000000*jb(7)

End Sub

Sub 购买数量

ri=0

Dim sz3(3)

sz3(0)=Fix(a6/(10^3))

sz3(1) = fix((a6 - sz3(0) * 10 ^ 3) / (10 ^ 2))

sz3(2)=fix((a6-sz3(0)*10^3-sz3(1)*10^2)/10)

sz3(3) = a6 - sz3(0) * 10 ^ 3 - sz3(1) * 10 ^ 2 - sz3(2) * 10

While ri < 4

Rem 标记11

Select case sz3(ri)

Case 0

If ri = 0 Then

ri = ri + 1

Goto 标记11

End If

If ri = 1 and sz3(0)>0 Then

KeyPress "0", 1

ElseIf ri = 1 and sz3(0) < 0 Then

ri = ri + 1

Goto 标记11

End If

If ri = 2 and sz3(0) + sz3(1) > 0 Then

KeyPress "0", 1

ElseIf ri = 2 and sz3(0)+sz3(1) < 0 Then

ri = ri + 1

Goto 标记11

End If

If ri = 3 Then

KeyPress "0", 1

End If

Case 1

KeyPress "1", 1

Case 2

KeyPress "2", 1

Case 3

KeyPress "3", 1

Case 4

KeyPress "4", 1

Case 5

KeyPress "5", 1

17 / 18

Case 6

KeyPress "6", 1

Case 7

KeyPress "7", 1

Case 8

KeyPress "8", 1

Case 9

KeyPress "9", 1

End Select

ri = ri + 1

Wend

End sub

此程序存在一个BUG,不过仍然能用,并且搜狗输入法要设置短语,依次为aa,ba,bb,bc,......ca,。我是在xp系统的1024x768分辨率下编写的,不知道别的系统或分辨率能不能用。供新手互相参考学习。

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]

18 / 18