//===================================
set dm = createobject("dm.dmsoft")
TracePrint dm.Ver()
dm_ret = dm.SetPath ("C:\Documents and Settings\Administrator\桌面\按键\天龙实验") //自行修改,不明白看了大漠你就懂了
dm_ret = dm.SetDict(0, "C:\Documents and Settings\Administrator\桌面\按键\天龙实验\ziku_song9.txt") //自行修改,不明白看了大漠你就懂了
hwnd = dm.EnumWindow(0, "《天龙八部3》", "", 1 + 4 + 8 + 16)
dm_ret = dm.SetWindowState(hwnd,12)
dm_ret = dm.SetWindowSize(hwnd,1030,728)
dm_ret = dm.BindWindow(hwnd, "dx", "dx.mouse.state.api", "dx",0) //这个地方是遇到纠结的最多的地方,新手可能会有感触哈。
Delay 1000
If dm_ret = 0 Then
MessageBox "绑定失败"
EndScript
End If
i = 0
Dim fw, HP, MP, CHP
Do
//================找怪========================
Rem 继续找怪
dm.keypress 123
Rem A
dm_ret = dm.CmpColor(441,20,"760c07-000000|0f",0.9) //只打绿色和红色名的怪
If dm_ret = 0 Then
Call F1技能
Else
Goto 继续找怪
End If
Loop
//===============================F1===============
Sub F1技能
dm.keypress 112
dm.keypress 113
Call 杀死再换
Call 防卡
Call 人物加血
Call 人物加蓝
Call 宠物加血
Call 捡包
Call 挂机检测
Call 返回挂机点
goto 继续找怪
End Sub
//======================人物加血======================
Sub 人物加血
HP=Form1.HP.Text //输入框相关
dm_ret = dm.CmpColor(67+139*(HP/100),35,"37",0.9)
If dm_ret = 0 Then
dm.KeyDown 118
Delay 100
dm.KeyUp 118
Delay 500
End If
End Sub
//========================人物加蓝=====================
Sub 人物加蓝
MP=Form1.MP.Text
dm_ret = dm.CmpColor(67+139*(MP/100),44,"37",0.9) //百分百加血使用的是论坛某位前辈的例子,真是超级简单加好用
If dm_ret = 0 Then
dm.KeyDown 119
Delay 500
dm.KeyUp 119
Delay 500
End If
End Sub
//========================宠物加血=====================
Sub 宠物加血
//========自动出战==============
If Form1.CheckBox6.V alue = 1 Then
dm_ret = dm.CmpColor(115,84,"d90a00-000000",0.9) //判断宠物死亡,死亡自动出战
If dm_ret = 1 Then
Call 召唤暂停
End If
End If
CHP=Form1.CHP.Text
dm_ret = dm.CmpColor(115+94*(CHP/100),84,"24",0.9)
If dm_ret = 0 Then
dm.KeyDown 120
Delay 500
dm.KeyUp 120
Delay 1000
End If
End Sub
//=====================效率太低,没测试==================== Sub 捡包
//例子:Call lib.网游.方形渐开线(400,300,20,20)
Dim x,y,v,i,j,k
x=513: y=337
//设置2点间距离
v=10
i=1
For 30
j=0:k=v
For 2
For i
x=x+j:y=y+k
dm.MoveTo x,y
Delay 40
//LeftClick 1
mouse_tz = dm.GetCursorShape()
If mouse_tz = "6ea90254" Then
dm.MoveTo x, y
Delay 300
dm.RightDown
Delay 200
dm.RightDown
Delay 2000
Exit sub
End If
Next
j=v:k=0
Next
i=i+1:v=v*(-1)
Next
End Sub
Sub 杀死再换//杀死一个换一个···比较实用,去掉这段就是快速杀怪,打一下换一个
If Form1.CheckBox5.V alue = 1 Then
dm_ret = dm.CmpColor(277,36,"d90a00-000000",0.9) //判断怪有没有死亡,死亡继续找怪
If dm_ret = 1 Then
Exit Sub
Else
Goto A
End If
End If
End Sub
//===================================================================== ==
Sub 召唤暂停//这个子程序的目的其实可以不要,但是为了提高BB出战的准确率,我加了个这个东西,必须召唤出来了才继续杀怪,不然切怪得速度太快,召唤不出来
Do
dm.keypress 121 //BB出战快捷键
Delay 1000
dm_ret = dm.CmpColor(115,84,"d90a00-000000",0.9) //判断召唤是否成功
If dm_ret = 0 Then
Exit Sub
End If
loop
End Sub
//=================================防卡===================================
Sub 防卡//这个防卡其实是为了在特殊地形远程人物攻击会卡,无效等情况,攻击之后不减血,立即换怪
If Form1.CheckBox1.V alue = 1 Then
Delay 500
i=i+1
If i > 2 Then
dm_ret = dm.CmpColor(451,36,"d90a00-000000",0.9)
If dm_ret = 0 Then
Goto 继续找怪
End If
End If
End If
End Sub
//===============================捡包====================================
Sub 捡包//说实话3D找色来找包,成功率真的很低。不建议使用dm_ret = dm.FindColor(0,0,2000,2000,"a3955f-000000",1.0,0,x,y)
If x >= 0 and y >= 0 Then
dm.moveto x, y
Delay 100
dm.RightClick
Else
Exit Sub
End If
End Sub
//=============================验证检测=====================================
Sub 挂机检测
If Form1.CheckBox3.V alue = 1 Then
dm_ret = dm.FindStrFast(0,0,2000,2000,"图片","fff",1.0,x,y)
If x >= 0 and y >= 0 Then
Call Plugin.Media.Play("C:\Documents and Settings\Administrator\桌面\按键\天龙实验\死了都要爱.mp3")
EndScript
End If
End If
End Sub
//===========================回挂机点===============================
Sub 返回挂机点//这么个玩意真是倾注了我大多的时间··虽然是很简单的玩意··
If Form1.CheckBox4.V alue = 1 Then //单选
//==================下拉列
========================
Rem A
select case Form1.ComboBox1.Listindex
Case 0
fw = 5
Case 1
fw = 10
Case 2
fw = 15
Case Else
End Select
//==================上面是下拉列表界面============================
a = dm.Ocr(952,3,973,18, "fdff73-000000", 1.0) //小范围区域内获取X坐标
b = dm.Ocr(973, 3, 1002, 17, "fdff73-000000", 1.0) //小范围区域内获取Y坐标
x0 = Form1.InputBox1.Text
y0 = Form1.InputBox2.Text
If x0 - a > fw or a - x0 > fw or y0 - b > fw or b - y0 > fw Then //FW 是定义的变量,用来决定挂机范围
dm.MoveTo 927, 182
dm.Leftclick
Delay 500
dm_ret = dm.FindStrFast(0, 0, 2000, 2000, "坐标", "fff", 1.0, x, y)
If intX >= 0 and intY >= 0 Then
dm.MoveTo x + 35, y + 4
dm.LeftClick
Delay 200
dm.SendString hwnd, x0
Delay 200
dm.MoveTo x + 70, y + 1
dm.LeftClick
Delay 200
dm.SendString hwnd, y0
dm_ret = dm.FindStrFast(0,0,2000,2000,"移动","fdeb78-000000",1.0,x,y)
If intX >= 0 and intY >= 0 Then
dm.MoveTo x + 2, y + 2
dm.LeftClick
Delay 200
Rem 检测是否关闭了寻路
dm_ret = dm.FindPic(0,0,2000,2000,"关闭自动寻路.bmp","000000",1.0,3,q,w)
If q >= 0 and w >= 0 Then
dm.MoveTo q + 4, w + 4
dm.LeftClick
Delay 200
dm_ret = dm.FindPic(0,0,2000,2000,"关闭自动寻路.bmp","000000",1.0,3,q,w)
If q >= 0 and w >= 0 Then
Goto 检测是否关闭了寻路
End If
End If
Delay 5000
Goto A
End If
End If
Goto A
Else
Exit Sub
End If
End If
end sub
dm_ret = dm.UnBindwindow()