按键精灵语法

本文最后更新于:2022年10月6日 晚上

windows或者Android(需要root权限)下按键精灵有时候写一些简单的脚本还是挺好用的。没有最好的语言,只有最适合的工具。在此记录下常用的基本语法。

一:句柄及后台运行

句柄可以获取后台窗口的类名或者标题,以达到获取坐标或后台运行脚本的目的。
后台只支持部分窗口,以实际测试为准。

句柄的类名或者标题,可以用按键精灵自带的抓抓工具抓取。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//声明窗口句柄变量,窗口大小变量
Dim Hwnd, sRect
//声明数组
Dim Array

//Plugin.Window.Find()--命令功能-查找窗口类名或者标题
//下面这句是查找窗口类名("Notepad")或者标题(0),返回找到的句柄Hwnd
Hwnd = Plugin.Window.Find("Notepad","0")

//调试输出句柄-功能-在调试窗口打印文字
TracePrint Hwnd

//该函数返回窗口大小
sRect = Plugin.Window.GetWindowRect(Hwnd)

//窗口大小转为数组,可以获得窗口左上角的坐标
//语法 Split(expression[, delimiter[, count[, start]]])
//字符串为sRect,分割方式‘|’
Array = Split(sRect, "|")

//左上角坐标的X,Y轴坐标
TracePrint Array(0)
TracePrint Array(1)

//下拉型自定义变量
//格式: UserVar 变量名=DropList{选项0:值0|选项1:值1|选项2:值2}=默认显示的选项编号 {注释}
//解释:这个命令预先设定多个变量值,用户可在基面通过下拉方式进行选择
//示例
UserVar Var1=DropList{"低于10%时补血":0.1|"低于20%时补血":0.2|"低于30%时补血":0.3}=2 "自动补血设置"

//左键点击5
LeftClick 5

//Function函数
Function increase(x,y)
If v = 1 Then
//键盘输入enter
KeyPress "Enter", 1
Else
//鼠标移动到指定坐标
MoveTo Array(0)+406, Array(1)+342
End If
End Function

//调用函数或子程序
call Function_name

//LeftClick 左键单击
//命令功能 向后台窗口句柄送一个鼠标左键单击 (注意:只支持部分窗口,以实际测试为准。)
Call Plugin.Bkgnd.LeftClick(Hwnd, 550, 262)
//后台输入按键enter,13是按键码,可以在按键精灵中与实际按键互相转换
Call Plugin.Bkgnd.KeyPress(Hwnd, 13)

//添加延迟,单位毫秒ms
Delay 500

//For循环
For i=0 To 5
For j=0 TO 7
Call increase(x, y)
x = x + 30
Next
x = 488
y = y + 30
Next

二:带GUI的脚本

先要在界面画出窗体(form)及各种输入框,下拉框,标签,按钮等。。。

下面是QQ后台刷屏脚本,先画4个标签,4个输入框,1个下拉框,1个按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//事件:form是窗体,load是加载,定义下拉框属性
Event Form1.Load
//窗体1中的ComboBox1下拉框1有是和否2个选择
Form1.ComboBox1.List = "是|否"
//窗体下拉框初始选项
Form1.ComboBox1.ListIndex = 0
End Event

//定义窗体1的按钮1的点击触发事件
Event Form1.Button1.Click
//窗体1的输入框1的文本赋予变量title
title = Form1.InputBox1.Text
//找到QQ窗口句柄
Hwnd=Plugin.Window.Find("TXGuiFoundation",title)
t = 1
//窗体1的输入框4的文本转化为int赋予变量times
times = Int(Form1.InputBox4.Text)
//数组真假赋予subfix
subfix=Array(true,false)
text = Form1.InputBox2.Text
rate = Form1.InputBox3.Text
//while循环
While t <= times OR times = 0
If subfix(Form1.ComboBox1.ListIndex) Then
//后台发送文本加自增计数变量
Call Plugin.Bkgnd.SendString(Hwnd,text & t)
Else
//后台发送文本text
Call Plugin.Bkgnd.SendString(Hwnd,text)
End If
//输入enter
Call Plugin.Bkgnd.KeyPress(Hwnd, 13)
t = t + 1
//发送事件间隔为变量rate
Delay rate
Wend
End Event

三:多线程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
DimEnv T1
DimEnv T2
Call start_1
Sub start_1
//线程1
T1 = BeginThread(thread1)
T2 = BeginThread(thread2)
BeginThread Stop
End Sub
Sub thread1
name_1 = "测试1"
t_1 = 0
rate_1 = 1000
times_1 = 100
subfix_1=true
test_1 = "测试"
//while循环
Hwnd_1 = Plugin.Window.Find(0, name_1)
//当输入t=-1时则循环发送消息至按终止键为止
While t_1 <= times_1 OR times_1 = 0
If subfix_1 Then
//后台发送文本加自增计数变量
Call Plugin.Bkgnd.SendString(Hwnd_1,test_1 & t_1)
Else
//后台发送文本test_1
Call Plugin.Bkgnd.SendString(Hwnd_1,test_1)
End If
Call Plugin.Bkgnd.KeyPress(Hwnd_1, 13)
t_1 = t_1 + 1
//发送事件间隔为变量rate_1
Delay rate_1
Wend
End Sub
Sub thread2
name_2 = "测试2"
t_2 = 0
rate_2 = 1000
times_2 = 100
subfix_2=true
test_2 = "测试"
//while循环
Hwnd_2 = Plugin.Window.Find(0,name_2)
While t_2 <= times_2 OR times_2 = 0
If subfix_2 Then
//后台发送文本加自增计数变量
Call Plugin.Bkgnd.SendString(Hwnd_2,test_2 & t_2)
Else
//后台发送文本test_2
Call Plugin.Bkgnd.SendString(Hwnd_2,test_2)
End If
Call Plugin.Bkgnd.KeyPress(Hwnd_2, 13)
t_2 = t_2 + 1
//发送事件间隔为变量rate_2
Delay rate_2
Wend
End Sub
Sub stop
s_1 = "A"
s_2 = "Z"
running = True
While True
//监听按键
s = Waitkey
If s = Asc(s_1) and running Then
PauseThread T1
running = False
ElseIf s = Asc(s_1) and not running Then
PauseThread T1
running = True
ElseIf s = Asc(s_2) Then
StopThread T2
End If
Wend
End Sub

四:带界面的前台的脚本示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
//声明窗口句柄变量
Dim Hwnd, sRect
Dim Array
//下面这句是查找窗口类名("Notepad")或者标题(0),返回找到的句柄Hwnd
Hwnd = Plugin.Window.Find("DNF Taiwan","DNF Taiwan")
//调试输出
TracePrint Hwnd
//返回窗口大小
sRect = Plugin.Window.GetWindowRect(Hwnd)
//窗口大小转为数组
Array = Split(sRect, "|")
TracePrint Array(0)
TracePrint Array(1)

//功能选择
UserVar Var0 = DropList{"自动增幅":"1"|"娃娃机":"2"|"先娃娃机再增幅":"3"|"鼠标左键连点":"4"|"自动锻造":"5"}=3 "功能选择"

//选择窗口,选择力量还是智力
UserVar Var1 = DropList{"增幅力量":"1"|"增幅智力":"2"}=0 "选择增幅力量还是智力"
//选择窗口,选择15还是13增幅券
UserVar Var2 = DropList{"13":13|"15":15}=1 "选择13还是15增幅券"
//设置鼠标点击延迟
UserVar Yanshi=50 "两次点击的时间间隔(毫秒)"

//强打增幅1件装备
Function increase(x,y)
//使用强打书
KeyPress "1", 1
//延迟
Delay 200
//点击力量增幅
If var1 = 1 Then
MoveTo Array(0)+406, Array(1)+300
LeftClick 1
//点击智力增幅
Else
MoveTo Array(0)+406, Array(1)+342
LeftClick 1
End If
Delay 200
//点击使用
MoveTo Array(0)+374, Array(1)+391
LeftClick 1
Delay 200
//点击第一格装备
MoveTo Array(0)+x, Array(1)+y
LeftClick 1
Delay 200
//确定
KeyPress "Enter", 1
Delay 200
KeyPress "Enter", 1
Delay 200
//使用增幅书
KeyPress "2", 1
Delay 200
//点击第一格装备
MoveTo Array(0)+x, Array(1)+y
LeftClick 1
Delay 200
//确定
KeyPress "Enter", 1
Delay 200
If var2 = 13 Then
KeyPress "Enter", 1
Delay 200
End If
//一格装备完成
End Function

//增幅装备栏
Function zengfu()
//主程序
x = 488
y = 288
For i=0 To 5
For j=0 TO 7
Call increase(x, y)
x = x + 30
Next
x = 488
y = y + 30
Next
End Function

//抽娃娃机
Function wawaji()
For temp=0 TO 46
//投币
MoveTo Array(0)+152, Array(1)+402
LeftClick 1
Delay 200
//确认
MoveTo Array(0)+358, Array(1)+345
LeftClick 1
Delay 200
//停止
MoveTo Array(0)+200, Array(1)+402
LeftClick 1
Delay 5500
//确定
KeyPress "Enter", 1
Delay 200
Next
End Function

//抽娃娃机和增幅装备栏
Function wawajiandzengfu()
Call wawaji()
KeyPress "Esc", 1
Delay 200
KeyPress "i", 1
Delay 200
Call zengfu()
End Function

//鼠标左击
Function autoLeftClick()
While True
//说明:按照一定频率反复点击鼠标左键
//1秒 = 1000毫秒
LeftClick 1
Delay Yanshi
Wend
End Function


//自动锻造
Function autoDuanZao()
SetSimMode 0
While True
//拖拽第一格装备到锻造炉
MoveTo Array(0) + 488, Array(1) + 288
LeftDownS 1
Delay 200
MoveTo Array(0) + 331, Array(1) + 295
Delay 200
LeftUpS 1
//确定
MoveTo Array(0) + 336, Array(1) + 375
Delay 200
LeftClick 1
//延迟
Delay 6500
//确定
KeyPress "Enter", 1
Delay 200
Wend
End Function

//主程序
If Var0 = 1 Then
Call zengfu()
ElseIf Var0 = 2 Then
Call wawaji()
ElseIf Var0 = 3 Then
Call wawajiandzengfu()
ElseIf Var0 = 4 Then
Call autoLeftClick()
ElseIf Var0 = 5 Then
Call autoDuanZao()
End If

五:大漠插件后台

先下载大漠插件(免费版即可),将dm.dllRegDll.dll两个文件添加到附件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//解压大漠插件, 释放附件
PutAttachment "C:\test_game\","dm.dll"

//插件注册开始
Call Plugin.RegDll.Reg("C:\test_game\dm.dll")

//声明大漠对象
Set dm = createobject("dm.dmsoft")

//判断插件是否成功
ver = dm.Ver()
If len(ver) = 0 Then
//如果返回值"ver"的长度为0,则插件注册失败
MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
//结束脚本
EndScript
Else
//否则,注册成功
TracePrint "插件注册成功"
End If

//这里设置插件基本目录
dm.SetPath("G:\code\C#\dmAll\dm")

//声明句柄变量
Dim Hwnd, sRect

//获取句柄
Hwnd = dm.FindWindow("SDL_app", "Jin Shu QunXia")
TracePrint Hwnd

//声明后台模式
dm_ret = dm.BindWindow(Hwnd, "normal", "normal", "windows", 0)


Function XiuLianDian()
//KeyPress "Space", 1
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 3600

dm.KeyPress 67
//KeyPress "C", 1
Delay 50
dm.KeyPress 39
//KeyPressS 39, 1
Delay 50
dm.KeyPress 32
//KeyPress "Space", 1
Delay 50
dm.KeyPress 32
//KeyPress "Space", 1
Delay 1600
End Function

Function JiWuGong()
//KeyPress "Space", 1
dm.KeyPress 65
Delay 50
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 5*1000
dm.KeyPress 17
Delay 50
dm.KeyPress 17
Delay 50
End Function

For i=1 To 125
Call XiuLianDian()
//Call JiWuGong()
Next

//释放句柄
dm_ret = dm.UnBindWindow()

//脚本停止运行
EndScript

六: 图片识别

先用大漠综合工具把图片处理下,图片四个角的像素点染成同一种颜色(默认为背景色),稍微把背景色染成相同的颜色,处理一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
long FindPic(x1, y1, x2, y2, pic_name, delta_color,sim, dir,intX, intY)

//参数定义:

//x1 整形数:区域的左上X坐标
//y1 整形数:区域的左上Y坐标
//x2 整形数:区域的右下X坐标
//y2 整形数:区域的右下Y坐标
//pic_name 字符串:图片名,可以是多个图片,比如"test.bmp|test2.bmp|test3.bmp"
//delta_color 字符串:颜色色偏比如"203040" 表示RGB的色偏分别是20 30 40 (这里是16进制表示)
//sim 双精度浮点数:相似度,取值范围0.1-1.0
//dir 整形数:查找方向 0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左, 从下到上
//intX 变参指针:返回图片左上角的X坐标
//intY 变参指针:返回图片左上角的Y坐标

//整形数:返回找到的图片的序号,从0开始索引.如果没找到返回-1

//示例:
dm_ret = dm.FindPic(0,0,2000,2000,"1.bmp|2.bmp|3.bmp","000000",0.9,0,intX,intY)
If intX >= 0 and intY >= 0 Then
MessageBox "找到"
End If

简单源码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
Dim 索引, 次数, 索引2, 第n列
索引 = Array(5,7,10,12,15) //设置下拉框选项
次数 = 索引(Form1.ComboBox1.ListIndex)//得到下拉框内的数值

索引2 = Array(1,2,3,4,5,6,7) //设置下拉框选项
第n列 = 索引2(Form1.ComboBox2.ListIndex) //得到下拉框内的数值

Event Form1.Load //界面初始值设置
Form1.ComboBox1.List="5|7|10|12|15"
Form1.ComboBox1.ListIndex = 0
Form1.ComboBox2.List="1|2|3|4|5|6|7"
Form1.ComboBox2.ListIndex = 1
End Event


//释放“附件”中自己添加的文件到C:\test_game目录中,释放Regdll.dll到plugin目录中
//PutAttachment "C:\test_game", "*.*"
//PutAttachment ".\plugin","RegDll.dll"

//调用regdll.dll,注册大漠插件
//Call Plugin.RegDll.Reg("C:\test_game\dm.dll")

//创建一个大漠对象
Set dm = createobject("dm.dmsoft")

//判断插件是否成功
ver = dm.Ver()
If len(ver) = 0 Then
//如果返回值"ver"的长度为0,则插件注册失败
MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
//结束脚本
EndScript
Else
//否则,注册成功
TracePrint "插件注册成功,当前使用的版本是:"&ver
End If

//这里设置插件基本目录为注册的目录
Call dm.SetPath(dm.GetBasePath())

//声明句柄变量
Dim Hwnd, sRect

//获取句柄
Hwnd = dm.FindWindow("SDL_app", "Jin Shu QunXia")
TracePrint Hwnd

//声明后台模式
dm_ret = dm.BindWindow(Hwnd, "normal", "normal", "windows", 0)


Function XiuLianDian()
//KeyPress "Space", 1
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 3600

dm.KeyPress 67
//KeyPress "C", 1
Delay 50
dm.KeyPress 39
//KeyPressS 39, 1
Delay 50
dm.KeyPress 32
//KeyPress "Space", 1
Delay 500
dm.KeyPress 32
//KeyPress "Space", 1
Delay 1600
End Function

Function QunXiu()
//KeyPress "Space", 1
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 100
dm.KeyPress 38
Delay 100
dm.KeyPress 32
Delay 50
dm.KeyPress 38
Delay 50
dm.KeyPress 32
//进入战斗等待时间
Delay 3*1000

dm.KeyPress 67
//KeyPress "C", 1
Delay 50
dm.KeyPress 39
//KeyPressS 39, 1
Delay 50
dm.KeyPress 32
//KeyPress "Space", 1
Delay 1500
dm.KeyPress 32
//KeyPress "Space", 1
Delay 1600
End Function

Function JiWuGong()
//KeyPress "Space", 1
dm.KeyPress 65
Delay 50
dm.KeyPress 32
Delay 50
dm.KeyPress 32
Delay 5*1000
dm.KeyPress 17
Delay 50
dm.KeyPress 17
Delay 50
End Function

Function WaBaoZang()
dm.KeyPress 17
Delay 200
dm.KeyPress 32
Delay 400
dm.KeyPress 32
Delay 400
dm.KeyPress 40
Delay 400
dm.KeyPress 32
Delay 400
dm.KeyPress 32
Delay 400
dm.KeyPress 40
Delay 400
dm.KeyPress 32
Delay 400
dm.KeyPress 32
Delay 400
For 第n列-1
dm.KeyPress 39
Delay 100
Next
For 次数-1
dm.KeyPress 32
Delay 400
dm.KeyPress 40
Delay 400
Next
//获取宝藏个数,若为0则读档,若不为0,则存档
dm_ret = dm.FindPic(0, 0, 1920, 1080, "Attachment:\0.bmp", "000000", 0.9, 0, intX, intY)
If intX >= 0 and intY >= 0 Then
TracePrint "没找到"
dm.KeyPress 32
Delay 400
For i=1 To 20
dm.Keypress 17
Delay 100
Next
//读档
dm.KeyPress 76
Delay 400
dm.KeyPress 32
Delay 1000
Else
TracePrint "找到"
dm.KeyPress 32
Delay 400
For i=1 To 20
dm.Keypress 17
Delay 100
Next
//存档
dm.KeyPress 83
Delay 400
dm.KeyPress 32
Delay 1000
End If
End Function

For i=1 To 125
//Call XiuLianDian()
//Call JiWuGong()
//Call QunXiu()
Call WaBaoZang()
Next

//释放句柄
dm_ret = dm.UnBindWindow()

//脚本停止运行
EndScript

七、PC、安卓通用封装

1、PC通用封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//请在下面写上您的子程序或函数
//写完保存后,在任一命令库上点击右键并选择“刷新”即可

Function 判断时间是否介于(s1,s2) '时间格式为小数
If hour(Now())+ minute(Now()) / 60 >= s1 and hour(Now())+ minute(Now()) / 60 <= s2 Then
判断时间是否介于 = True
Else
判断时间是否介于 = False
End If
Delay 500
End Function

Function 当前时间()
当前时间 = time() * 100000
End Function

//Call 点击(100,100,2)
Function 点击(x, y, 次数)
次数 = 次数 or 1
Delay 50
MoveTo x, y
LeftClick 次数
Delay 150
End Function

//Call 滑动(643,561,642,347,500)
Function 滑动(x1, y1, x2, y2, 滑动间隔)
Delay 100
MoveTo x1, y1
Delay 50
LeftDown 1
Delay 滑动间隔 + 200
MoveTo x2, y2
Delay 50
LeftUp 1
Delay 100
End Function

//Call 找色(0, 0, 614, 1037, "00dcff", 1)
Function 找色(x1, y1, x2, y2,颜色,是否点击)
找色 = False
FindColorEx x1, y1, x2, y2, 颜色, 1, 0.8, X, Y
If X>0 and Y>0 Then
'TracePrint "找到"
If 是否点击 = True or 是否点击 = 1 or 是否点击 = "是" Then
Call 点击(X, Y, 1)
End If
找色 = True
Else
'TracePrint "没找到"
End If
End Function

//Call 找色(0, 0, 614, 1037, "00dcff", 1, 3)
Function 等待找色(x1, y1, x2, y2, 颜色, 是否点击, 等待时间_秒)
等待找色 = False
开始时间 = Plugin.Sys.GetTime()

Do
FindColorEx x1, y1, x2, y2, 颜色, 1, 0.8, X, Y
If X>0 and Y>0 Then
'TracePrint "找到"
If 是否点击 = True or 是否点击 = 1 or 是否点击 = "是" Then
Call 点击(X, Y, 1)
End If
等待找色 = True
Exit Function
Else
'TracePrint "没找到"
End If
Loop While 等待时间_秒 * 1000 > Plugin.Sys.GetTime() - 开始时间
End Function

Function 找图点击(x1, y1, x2, y2, 图片, 是否点击, X偏移, Y偏移) '支持多图,用|分割
图片组 = split(图片, "|")
找图点击 = False

For i = 0 To UBound(图片组)
FindPic x1, y1, x2, y2, 图片组(i) , 0.9, intX,intY
If intX>0 and intY>0 Then
'TracePrint "找到"
If 是否点击 = True or 是否点击 = 1 or 是否点击 = "是" Then
Call 点击(intX + X偏移, intY + Y偏移, 1)
End If
找图点击 = True
Exit Function
Else
'TracePrint "没找到"
End If
Next
End Function

Function 等待找图点击(x1, y1, x2, y2, 图片, 是否点击, 等待时间_秒, X偏移, Y偏移) '支持多图,用|分割
图片组 = split(图片, "|")
等待找图点击 = False
开始时间 = Plugin.Sys.GetTime()

Do
For i = 0 To UBound(图片组)
FindPic x1, y1, x2, y2, 图片组(i) , 0.9, intX,intY
If intX>0 and intY>0 Then
'TracePrint "找到"
If 是否点击 = True or 是否点击 = 1 or 是否点击 = "是" Then
Call 点击(intX + X偏移, intY + Y偏移, 1)
End If
等待找图点击 = True
Exit Function
Else
'TracePrint "没找到"
End If
Next
Delay 100
Loop While 等待时间_秒 * 1000 > Plugin.Sys.GetTime() - 开始时间
End Function

2、手机通用封装(未更改)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'随机(1,10)
Function 随机(最小值,最大值)
随机 = Int((最大值 - 最小值 + 1) * Rnd() + 最小值)
End Function
'延迟(1000)
Function 延迟(时间)
Delay 时间 + 随机(100, 200)
End Function
'点击延迟(281,596,1000)
Function 点击延迟(x, y, z)
Tap x + 随机(-5, 5), y + 随机(-5, 5)
延迟 (z)
End Function
'找色(0,0,0,0,"563AF6-202020",1)
Function 找色(x1,y1,x2,y2,颜色,点击)
Dim X,Y
找色 = False
FindColor x1,y1,x2,y2,颜色,0,0.9,X,Y
If X > -1 And Y > -1 Then
TracePrint X,Y
If 点击 = 1 Then
点击延迟 x, y, 1000
End If
找色 = true
End If
End Function
'多点找色(0,0,0,0,"F7AC40-202020","-279|-19|1707BC-202020",1)
Function 找色多点(x1,y1,x2,y2,颜色1,颜色2,点击)
Dim X,Y
找色多点 = False
FindMultiColor x1,y1,x2,y2,颜色1,颜色2,0,0.9,X,Y
If X > -1 And Y > -1 Then
TracePrint X,Y
If 点击 = 1 Then
点击延迟 x, y, 1000
End If
找色多点 = true
End If
End Function
'比色("422|587|F7AC40-202020,143|568|1707BC-202020")
Function 比色(颜色)
比色 =False
If CmpColorEx(颜色,0.9) = 1 Then
比色 = True
End If
End Function
'找图(0,0,0,0,"文件浏览器",1)
Function 找图(x1,y1,x2,y2,图片,点击)
Dim X,Y
找图 = False
FindPic x1,y1,x2,y2,"Attachment:"&图片&".png","101010",0,0.9,X,Y
If X > -1 And Y > -1 Then
TracePrint X,Y
If 点击 = 1 Then
点击延迟 x, y, 1000
End If
找图 = True
End If
End Function
'找图多图(0,0,0,0,"Attachment:翻牌.png|Attachment:浏览器.png|Attachment:怒火.png",1)
Function 找图多图(x1,y1,x2,y2,图片,点击)
Dim X,Y
找图多图 = False
FindPic x1,y1,x2,y2,图片,"101010",0,0.9,X,Y
If X > -1 And Y > -1 Then
TracePrint X,Y
If 点击 = 1 Then
点击延迟 x, y, 1000
End If
找图多图 = True
End If
End Function
'滑动(641, 728, 87, 565, 2000)
Function 滑动(x1, y1, x2, y2,滑动时间)
Swipe x1 + 随机(-5, 5), y1 + 随机(-5, 5), x2 + 随机(-5, 5), y2 + 随机(-5, 5), 滑动时间
End Function

八、实战小项目

1、PC传奇挂机脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
Sub 获取句柄()
hwnd = dm.FindWindowEx(0, "Game_client", "血饮龙纹-双线59服")
dm.MoveWindow hwnd, 0, 0//移动窗口到左上角
hwnd = dm.FindWindowEx(hwnd, "", "")
hwnd = dm.FindWindowEx(hwnd, "", "")
hwnd = dm.FindWindowEx(hwnd, "", "")
TracePrint "句柄: " & hwnd
dm.SetPath "d:\pic"
//dm_ret = dm.BindWindowEx(hwnd,"dx2","dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.clip.lock.api|dx.mouse.input.lock.api|dx.mouse.state.api|dx.mouse.api|dx.mouse.cursor","dx.keypad.input.lock.api|dx.keypad.state.api|dx.keypad.api|dx.keypad.raw.input","dx.public.active.api|dx.public.active.message",0)
dm_ret = dm.BindWindowEx(hwnd, "gdi", "dx2", "windows", "", 0)
//dm_ret = dm.BindWindowEx(hwnd,"dx2","dx.mouse.state.api|dx.mouse.api|dx.mouse.cursor","dx.keypad.state.api|dx.keypad.api","dx.public.active.api|dx.public.active.message",0)
Delay 1500
End Sub

Sub Tap(x,y)
dm.MoveTo x,y
Delay 50
dm.LeftClick
Delay 150
End Sub

Sub TapR(x,y)
dm.MoveTo x,y
Delay 50
dm.RightClick
Delay 150
End Sub

Function 多点比色(array)
Dim intX, intY
多点比色 = False
多点比色 = dm.FindMultiColor(0,0,1464,854,array(0),array(1),0.9,0,intX,intY)
End Function

Function 等待多点比色(array, time)
Dim intX, intY
等待多点比色 = False
Do
If dm.FindMultiColor(0, 0, 1464,854, array(0), array(1), 0.9, 0, intX, intY) Then
等待多点比色 = True
Exit Do
Else
Delay time * 100
End If
Loop
End Function

Function 自动攻击()
Dim 检测未在攻击
检测未在攻击 = 0
For 10
If 多点比色(比色_攻击) Then
//TracePrint "自动攻击中"
自动攻击 = true
Exit For
Else
检测未在攻击 = 检测未在攻击 + 1
If 检测未在攻击 = 10 Then
TracePrint "检测未在攻击,准备开启自动攻击"&检测未在攻击
自动攻击 = False
End If
End If
Delay 100
Next
End Function

Function 开启自动攻击()
//If 多点比色(比色_危险区) Then
If 自动攻击() Then
Else
TracePrint "开启自动攻击"
Tap 1111,641 //dm.KeyPressChar "z"
Delay 1000
End If
//Else
//TracePrint "安全区,无需自动攻击"
//End If
End Function

Dim 无怪随机间隔,无怪随机开始时间
无怪随机间隔 = 50
无怪随机开始时间 = 当前时间()
Function 无怪随机()
If 多点比色(比色_危险区) Then
If 多点比色(比色_有怪) Then
TracePrint "随机->有怪"
无怪随机开始时间 = 当前时间()
Else
TracePrint "随机->持续无怪时间" & int(当前时间() - 无怪随机开始时间) & "秒"
If 当前时间() - 无怪随机开始时间 > 无怪随机间隔 * 1 Then
点击随机
无怪随机开始时间 = 当前时间()
End If
End If
End If
End Function

Dim 无怪回城间隔,无怪回城开始时间
无怪回城间隔 = 3*60
无怪回城开始时间 = 当前时间()
Function 无怪回城()
If 多点比色(比色_危险区) Then
If 多点比色(比色_有怪) Then
TracePrint "回城->有怪"
无怪回城开始时间 = 当前时间()
Else
TracePrint "回城->持续无怪时间" & int(当前时间() - 无怪回城开始时间) & "秒"
If 当前时间() - 无怪回城开始时间 > 无怪回城间隔 * 1 Then
点击回城
无怪回城开始时间 = 当前时间()
End If
End If
End If
End Function

Sub 点击回城()
Dim intX,intY
dm_ret = dm.FindMultiColor(588, 640, 878, 695, 比色_回城(0), 比色_回城(1), 0.9, 0, intX, intY)
If intX >= 0 and intY >= 0 Then
//TapR intX, intY
dm.keypresschar "q"
TracePrint "点击回城"
Delay 1000
Tap 750, 450
Delay 2000
Else
TracePrint "未找到回城"
End If
End Sub

Sub 点击随机()
Dim intX,intY
dm_ret = dm.FindMultiColor(588, 640, 878, 695, 比色_随机(0), 比色_随机(1), 0.8, 0, intX, intY)
If intX >= 0 and intY >= 0 Then
//TapR intX, intY
dm.keypresschar "w"
TracePrint "点击随机"
Delay 2000
Else
TracePrint "未找到随机"
End If
End Sub

Function 自动购买随机()
Tap 1157,778
TracePrint "点击商城"
Delay 500
If 等待多点比色(Array("E7AE1C","0|-5|710602,3|0|510503,-4|1|000000"), 3) Then
Tap 841, 428
Delay 500
For 13
dm.WheelDown
Delay 50
Next
Tap 508,579
TracePrint "点击随机"
Delay 500
If 等待多点比色(Array("BBAE96","-1|0|111111,2|3|4D4840,4|2|D2C3A8,4|0|F8E6C6"), 3) Then
Tap 965,568
TracePrint "点击确定"
Delay 500
Tap 1118,221
TracePrint "关闭商城"
Delay 1000
End If
End If
End Function

Function 自动购买回城()
Tap 1157,778
TracePrint "点击商城"
Delay 500
If 等待多点比色(Array("E7AE1C","0|-5|710602,3|0|510503,-4|1|000000"), 3) Then
Tap 841, 428
Delay 500
For 13
dm.WheelDown
Delay 50
Next
Tap 992,426
TracePrint "点击回城"
Delay 500
If 等待多点比色(Array("BBAE96","-1|0|111111,2|3|4D4840,4|2|D2C3A8,4|0|F8E6C6"), 3) Then
Tap 965,568
TracePrint "点击确定"
Delay 500
Tap 1118,221
TracePrint "关闭商城"
Delay 1000
End If
End If
End Function

Dim 副本数组, 顺序副本下标, 选择条件
副本数组 = Array()
顺序副本下标 = 0
Function 自动副本()
If 多点比色(比色_安全区) Then
If 顺序副本下标 = UBound(副本数组) Then
选择条件 = 副本数组(顺序副本下标)
顺序副本下标 = 0
Else
选择条件 = 副本数组(顺序副本下标)
顺序副本下标 = 顺序副本下标 + 1
End If
TracePrint 选择条件
If 选择条件 = null Then
TracePrint "未选择副本"
Delay 1000
End If

UserVar 选择条件=0 "输入(0~9)数字"
Select Case 选择条件
Case 神之领域六层
Msgbox "你输入的数字为:0"
Case 封号神殿六层
Msgbox "你输入的数字为:1"
Case Else
Msgbox "你输入的数字不正确,请输入(0~9)数字!"
End Select
'检查副本前准备动作
'重置无怪时间
无怪回城开始时间 = 当前时间()
无怪随机开始时间 = 当前时间()
End If
End Function


Randomize '初始化随机数生成器。
Function 自动下本()
'检测到在盟重或在安全区
If 多点比色(比色_安全区) And dm.FindMultiColor(1349, 30, 1465, 58, "D9D9D9", "-2|-1|5A5A59,-4|2|636363,-7|4|636363,-8|4|D9D9D9,-8|2|9A9A9A", 0.9, 1, intX, intY) Then
MyValue = Int((2 * Rnd) + 1)' 产生 1 到 3 之间的随机数。
//MyValue = 3
Select Case MyValue
Case 1
Tap 1261, 69
TracePrint "点击首领挑战"
Delay 1500
Tap 445, 670
TracePrint "点击鸿蒙"
Delay 1000
TracePrint "随机到封号神殿"
'去封号神殿六层
Tap 808,447
TracePrint "点击封号神殿六层"
Delay 1000
Tap 187, 175
TracePrint "点击神殿卷轴"
Delay 1000
Tap 795, 453
TracePrint "购买神殿卷轴"
Delay 1000
Tap 246,438
TracePrint "点击点击封号神殿"
Delay 1000
Case 2
TracePrint "随机到冰雪森林"
Delay 500
'检测迷失之地是否隐藏
If dm.FindMultiColor(911,32,1346,194,"C39F57","0|5|1E0906,5|5|F8EA68,-2|6|885B22,-2|8|1E0906,2|11|3B2F1B", 0.9, 1, x, y) Then
TracePrint "准备点击迷失之地"
Tap x, y
Delay 1000
Else
TracePrint "未检测到迷失之地"
Tap 1324, 73
Delay 1000
If dm.FindMultiColor(911,32,1346,194,"C39F57","0|5|1E0906,5|5|F8EA68,-2|6|885B22,-2|8|1E0906,2|11|3B2F1B", 0.9, 1, x, y) Then
TracePrint "准备点击迷失之地"
Tap x, y
Delay 1000
End If
End If
'点击冰霜大陆
If dm.FindMultiColor(289, 150, 1137, 735, "6C6861","0|1|111111,0|2|6C6861,0|3|111111,0|4|615E58,-15|5|3E3C39,-15|6|2F2D2B", 0.9, 1, x, y) Then
TracePrint "点击冰霜大陆"
Tap x, y
Delay 1000
If dm.FindMultiColor(289, 150, 1137, 735, "28EF01","0|-1|111111,3|-2|25CE03,1|2|28EF01,1|3|209E07,6|2|25CE03", 0.9, 1, x, y) Then
TracePrint "点击立即前往"
Tap x, y
Delay 1000
End If
Do
If dm.FindMultiColor(0, 0, 1920, 1080,"087F02","1|0|0AD300,9|0|09B000,7|3|0CFE00,10|3|0BDF00,2|3|0CFE00,5|5|08A400", 0.9, 1, intX, intY) Then
Tap intX,intY
TracePrint "点击冰雪森林跨服"
Delay 4000
If 多点比色(array("FFE400","0|1|685E0B,0|2|FFE400,2|2|FFE400,2|1|8A7D08,2|0|FFE400,1|7|111111")) Then
Tap 87,179
TracePrint "点击冰雪森林"
Delay 1000
Tap 755,265
Exit Do
End If
End If
Loop
End If
Case Else
Tap 1261, 69
TracePrint "点击首领挑战"
Delay 1500
Tap 445, 670
TracePrint "点击鸿蒙"
Delay 1000
TracePrint "随机到神铸遗迹"
'去神铸遗迹
Tap 617, 447
TracePrint "点击神之领域六层"
Delay 1000
Tap 561, 53
TracePrint "关闭窗口"
Delay 500
Do
If dm.FindMultiColor(0, 0, 1920, 1080, "0CFA00", "6|-4|0ADE00,1|-2|08B000,2|-2|08B000,6|-6|FDCD2E,6|2|044F00,7|2|011F00,2|4|020100", 0.9, 1, intX, intY) Then
Tap intX,intY
TracePrint "点击神铸遗迹"
Delay 3000
If 多点比色(array("ECDBBD", "2|0|655F53,2|4|F8E6C6,-1|4|F8E6C6,-1|2|111111")) Then
Tap 90, 288
TracePrint "点击神铸遗迹一层"
Delay 1000
Exit Do
End If
End If
Loop
End Select

无怪回城开始时间 = 当前时间()
无怪随机开始时间 = 当前时间()
End If
End Function

Function 自动协助()
If 判断时间是否介于(12, 12) or 判断时间是否介于(21, 21) Then
If 多点比色(比色_协助) Then
Tap 1295,335
TracePrint "前往协助"
Delay 500
开启自动攻击
Delay 500
'检测是否在恶魔祭坛
If dm.FindMultiColor(1346, 32, 1466, 56, "838383", "1|0|ECECEC,1|3|838383,4|5|B6B6B6,5|5|9A9A9A,6|3|202021,10|2|838383,9|1|111111", 0.9,1, x, y) Then
TracePrint "检测到在恶魔祭坛"
Delay 2000
Do
If 多点比色(比色_有怪) Then
TracePrint "恶魔祭坛->有怪"
Delay 2000
Else
TracePrint "恶魔祭坛->无怪,准备回城"
Delay 500
Tap 300, 230
Delay 500
Tap 840, 510
Delay 500
Exit Do
End If
Loop
End If
Else
TracePrint "未检测到协助"
End If
Else
'TracePrint "当前不是协助时间"
End If
End Function


Function 自动攻城()
'检测到攻城感叹号和在石原,如果在开启自动攻击,如果不在去石原
If 多点比色(比色_攻城) Then
Tap 539, 638
TracePrint "检测到攻城,点击感叹号"
Delay 1000
Tap 629, 510
TracePrint "点击石原攻城"
Delay 1000

'检测是否在石原,如果在
If dm.FindMultiColor(1346, 32, 1466, 56, "F1F1F1", "0|1|B6B6B6,1|1|111111,2|2|E6E6E6,4|1|B6B6B6,-2|2|232223", 0.9, 1, x, y) Then
If 多点比色(比色_攻击) Then
TracePrint "未开启自动攻击,准备开启自动攻击"
dm.keypresschar "z"
Delay 1000
Else
TracePrint "已开启自动攻击"
End If
Do
If 多点比色(比色_攻城) Then
开启自动攻击
TracePrint "自动攻城中..."
自动回收
Delay 1000*60
Else
TracePrint "攻城结束"
Exit Do
End If

Loop
Else
TracePrint "不在石原,准备回城"
dm.keypresschar "q"
Delay 1000
End If
无怪回城开始时间 = 当前时间()
无怪随机开始时间 = 当前时间()
End If
End Function

Function 异常处理()
'安全复活
If dm.FindMultiColor(0,0,2000,2000, 比色_复活(0), 比色_复活(1), 0.9, 1, x, y) Then
TracePrint "检测到死亡,点击安全复活"
Tap x, y
Delay 2000
End If

'行会祭坛
If dm.FindMultiColor(513,369,960,545, "D3D3D3","2|1|CCCCCC,1|4|838383,0|4|D3D3D3,-1|4|4B4B4B,-1|7|CCCCCC,-2|7|ECECEC,4|7|111111,6|7|9A9A9A,8|7|636363,8|13|151413", 0.9, 1, x, y) Then
TracePrint "检测到行会祭坛,点击进入"
Tap 839,510
Delay 2000
开启自动攻击
Delay 2000
Do
If 多点比色(比色_有怪) Then
TracePrint "行会祭坛中"
Delay 2000
Else
Delay 1000
Exit Do
End If
Loop
End If

'装备更新
If dm.FindMultiColor(1245,502,1321,536, "ECDBBD","0|-2|111111,-3|-2|5E5850,-2|0|111111,-1|0|9E9380,1|1|655F53,-1|9|BBAE96,-2|11|4D4840", 0.9, 1, x, y) Then
TracePrint "检测到有装备更新"
Tap x,y
Delay 1500
'快速传承
If dm.FindMultiColor(511,371,960,546,"E6E6E6","-1|0|646463,-2|3|9A9A9A,2|3|B6B6B6,1|4|CCCCCC,5|2|838383", 0.9, 1, x, y) Then
TracePrint "检测到装备可快速传承"
Tap 840, 510
Delay 1000
End If
End If

'冰霜大陆回盟重
If 多点比色(比色_冰霜大陆) Then
Tap 1261, 70
Delay 1000
Tap 446, 435
Delay 1000
Tap 615, 449
Delay 1000
End If

'无攻城回城
If 多点比色(比色_攻城) Then
Else
'如果在石原
If dm.FindMultiColor(1346, 32, 1466, 56, "F1F1F1", "0|1|B6B6B6,1|1|111111,2|2|E6E6E6,4|1|B6B6B6,-2|2|232223", 0.9, 1, x, y) Then
TracePrint "在石原未攻城,准备回城"
dm.keypresschar "q"
Delay 1000
End If
End If

End Function


Dim 自动回收间隔,自动回收开始时间,intX,intY
自动回收间隔 = 60
自动回收开始时间 = 当前时间()
Function 自动回收()
TracePrint "自动回收倒计时" & - int((当前时间() - 自动回收开始时间 - 自动回收间隔)) & "秒"
If 当前时间() - 自动回收开始时间 > 自动回收间隔 * 1 Then
Tap 83, 295//激活窗口
Delay 500

dm.KeyPressChar "esc"
TracePrint "回到主界面"
Delay 500

If 多点比色(array("F5DE44", "2|-1|1A191A,0|-5|263A5F")) Then
Tap 1116,695
TracePrint "打开背包"
Delay 1000
If 等待多点比色(array("FFE400", "0|3|0E5197,4|1|102D4B"),5) Then
dm_ret = dm.FindPic(0, 0, 1464, 854, "D:\pic\回收.bmp", "000000", 0.9, 0, intX, intY)
If intX >= 0 and intY >= 0 Then
Tap intX,intY
//Tap 645,633 //点击回收
Delay 500
TracePrint "点击回收"
Tap 935,609//点击快速回收
TracePrint "回收成功"
Delay 500
Else
TracePrint "回收失败"
End If
End If
Tap 727, 231//关闭背包
TracePrint "关闭背包"
Delay 3000
End If
自动回收开始时间 = 当前时间()
End If
End Function


'通用传奇脚本需更改变量
Dim 比色_危险区, 比色_安全区,比色_有怪 ,比色_协助 ,比色_随机, 比色_回城
比色_危险区 = Array("FF0500","-2|-3|6C0C0A,-1|3|4C0E0D,-1|-1|111111")
比色_安全区 = Array("28EF01","0|-2|23BC05,-1|2|25D703,1|2|312A22,1|1|111111")
比色_有怪 = Array("F1F1F1","0|1|111111,1|1|636363,7|4|E6E6E6,12|-10|FF0000")
比色_协助 = Array("D8C103","-1|1|111111,1|2|765F3C,-2|2|C0AD04,-3|-2|8A7D08")
比色_随机 = Array("D9CE51","3|0|8E5F0E,2|-5|C7C3B0,-3|2|2E1F08,-4|7|413D3A")
比色_回城 = Array("A70ED9", "5|-1|9606CF,8|1|E30AF4,-2|5|A70ED9,5|5|513F57")
比色_攻击 = Array("F47C0E","4|-2|EA6A08,2|0|FFFFFF,-1|0|FDCB53,-1|1|F47C0E")
比色_攻城 = Array("FCF7DA", "2|16|C09D4A,1|24|C09D4A,1|26|201C18,1|29|9B7B39,1|30|C97F26")
比色_复活 = Array("B7AF9C", "0|3|F2E7CE,0|5|EDE2CA,3|4|5D4B27,0|8|F2E7CE,0|9|58462E,-4|6|111111,-4|5|68532A,17|4|725C3A,17|1|F2E7CE,17|0|9B9485,12|1|5C4727")
比色_冰霜大陆 = Array("111111","0|-1|C5C5C5,-1|-1|F1F1F1,-1|-2|111111,0|-2|636363,1|-2|D9D9D9,2|-2|636363,12|2|636363,12|3|CCCCCC")
'主程序

大漠注册()
获取句柄

'功能区
Do
异常处理
自动回收
开启自动攻击
Delay 1000 * 2
无怪随机
无怪回城
自动协助
自动攻城
自动下本
Loop

Sub OnScriptExit()
dm.UnBindWindow
set dm = nothing
End Sub

Function 当前时间()
当前时间 = time() * 100000
End Function

Sub 大漠注册()
//[把dm.dll和RegDll.dll放到附件]
PutAttachment "C:\test_game", "dm.dll"'是否大漠插件到到"C:\test_game"文件夹内
PutAttachment ".\Plugin" ,"RegDll.dll"'释放RegDll插件到按键精灵安装目录下的Plugin[即插件]文件夹内
Call Plugin.RegDll.Reg("c:\test_game\dm.dll") '采用RegDll插件的Reg命令进行大漠插件注册
Set dm = createobject("dm.dmsoft")'创建大漠对象
TracePrint dm.Ver()'输出大漠版本号
// dm_ret = dm.Reg("testhlee1e7a5cf173317f0618377c923b09bc","wNLupvlKgcbjykac") // abcdefg是您的注册码. 在大漠插件网站后台可以直接获取.
// if dm_ret <> 1 then
// messagebox "注册失败,返回值是:"& dm_ret
// EndScript
// Else
// TracePrint "注册成功,返回值是:"& dm_ret
// End If
End Sub

Function 判断时间是否介于(s1,s2)
If hour(Now()) >= s1 and hour(Now()) <= s2 Then
判断时间是否介于 = True
Else
判断时间是否介于 = False
End If
Delay 500
End Function

参考视频

https://space.bilibili.com/3196036/channel/detail?cid=100704


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!