前几天写了个魔域自动喊话,今天再给大家讲讲BOSS自动报警
首先打开VB2008新项目,保存,把大漠插件和字库放在项目保存目录的Debug目录下,
在窗体上建2个命令按钮和1个时钟、一个标签
双击打开
在CLASS FORM1里声明变量
Public dm As New Object ‘ 创建大漠插件对象
Public 魔域主窗口 As Integer
Public 魔域第1子窗口 As String
Public 发送窗口 As String
Public 聊天窗口 As String
在FORM1_LOAD里
Shell("regsvr32 /s dm.dll") ‘’ 注册大漠插件
dm = CreateObject("dm.dmsoft") ‘ 实例化大漠对象
dm.SetDict(0, " 魔域字库.txt") ‘调用字库
魔域主窗口 = dm.FindWindow("", "【魔域】") ‘查找魔域主窗口
魔域第1子窗口 = dm.EnumWindow(hwnd1, "", "#32770", 2 + 4 + 16) ‘查找魔域下第一个子窗口,可以用按键抓抓观看魔域所有窗口句柄
在Button1里
Dim 后台绑定返回值 As Integer
dm.movewindow(hwnd1, -2, -2) ‘移动魔域窗口到左边,使之窗口有一小点在外面,如果是WIN7不是外面也可以后台绑定
后台绑定返回值 = dm.BindWindow(CInt(hwnd2), "dx2", "windows", "normal", 0) ‘后台绑定,这个不能使用小号,只有开2个魔域
If 后台绑定返回值 = 0 Then ‘判断绑定是否成功,成功在按钮1上显示“绑定成功”
Button1.Text = " 绑定失败"
End
End If
Button1.Text = " 绑定成功"
Timer1.Enabled = True ‘把时钟设为真
Timer1.Interval = 300 ‘300毫秒调用一次时钟程序
Timer1.Start() ‘时钟开始作用
在TIMEER1里面
Dim S As String
Dim INTX As String = Nothing
Dim INTY As String = Nothing
S = dm.Ocr(0, 0, 966, 686, "ffffff-000000", 1) ‘这是查找BOSS,你要先在字库建立魔域0到9的数字和1个“级” 字库,查找后“S”的值显示为16级或 “XX级”的BOSS
If (dm.FindStr(0, 0, 966, 686, " 级", "ffffff-000000", 1, INTX, INTY)) = 0 Then ‘魔域窗体里查找“级”的字,如果找到返回值为0,没找到为-1
Label4.Text = S & “BOSS ” ‘找到后在标签上显示XX级BOSS
BF.SoundLocation = "jin.wav" ‘调用音乐,音乐也要放在Debug目录下
BF.Play() ‘播放音乐
如果想要人物自己打BOSS那么,要看你是用F1,还是F2,或是人物右键,在后面加上
INTX = CInt(INTX) + 3 ‘将找到BOSS的X坐标转整数后延X轴加3,因为找到的“级”太靠边了
INTY = CInt(INTY) + 98 ‘将找到BOSS的Y坐标转整数后延Y轴加98,因为找到的“级”在怪物头顶,加98后就到了怪腰间的样子
PostMessage(hwnd2, 516, 2, INTX + INTY * 65536) ' 右键按下
PostMessage(hwnd2, 517, 2, INTX + INTY * 65536) ' 右键放开
上面2个函数的意思是用右键那个技能攻JBOSS
End If
在Button2里
Timer1.Enabled = False ‘设时钟为假
Timer1.Stop() ‘停止时钟调用
以上是后台绑定窗口后查找BOSS,并在找到BOSS后自动打BOSS,因为魔域不能后台发送键盘按键(据个人了解,如果哪个发现能的话,请告知方法为谢),所以只能用右键技能
如果想在前台的话把绑定模式全部改成“normal”
找到怪后
PostMessage(hwnd2, 512, 2, INTX + INTY * 65536) ‘鼠标移动到怪的位置
keybd_event(112, 0, 0, 0) ‘按下F1键,打怪物
或 ‘ keybd_event(113, 0, 0, 0) ‘或者按下F2打怪物
对了要新建个模块声明API
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Public Function PostMessage(ByVal hWnd As Integer, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Boolean
End Function
今天就写到这吧,请各位高手指点