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


发布评论