按键精灵网游脚本编写教程
一、 键盘命令(2~5页) 二、鼠标命令(5~13页) 三、控制命令(13~22页) 四、颜色/图像命令(22~28页) 五、其他命令(28~355页)
五、网游脚本实例(35~最后)
一、 键盘命令
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
GetLastKey 检测上次按键
检测上次按键
参数1 整数型,可选:变量名 无 复制代码
1. //脚本运行到这一行不会暂停,调用的时候立即返回,得到调用之前最后一次按下的按键码保存在变量Key
里。
2. Key=GetLastKey() 3. If Key = 13 Then
4. Msgbox \"你上次按下了回车键\" 5. End If
脚本例子: (7.x语法)
复制代码
1. //脚本运行到这一行不会暂停,调用的时候立即返回,得到调用之前最后一次按下的按键码保存在变量Key
里。
2. GetLastKey Key 3. If Key = 13
4. Msgbox \"你上次按下了回车键\" 5. EndIf
命令名称: 命令功能: 命令参数:
KeyDown 按住
键盘按住
参数1 整数型,键盘虚拟码(8.X支持 按键字符) 参数2 整数型,次数
返 回 值: 脚本例子: (8.x语法)
无 复制代码
1. //KeyDown、KeyDownS、KeyDownH
2. //KeyDownS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的键盘都
可以使用
3. //KeyDownH: 硬件模拟方式,仅支持PS(圆口)的键盘 点击查看使用硬件模拟方式的注意事项 4. KeyDown 65,1
5. //65是A键的按键码,上面的语句表示按住A键1次 6.
7. KeyDown \"A\
8. //上面的支持按键字符,语句表示按住A键1次
脚本例子: (7.x语法)
复制代码
1. //KeyDown、KeyDownS、KeyDownH
2. //KeyDownS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的键盘都
可以使用
3. //KeyDownH: 硬件模拟方式,仅支持PS(圆口)的键盘 点击查看使用硬件模拟方式的注意事项 4. KeyDown 65,1
5. //65是A键的按键码,上面的语句表示按住A键1次
命令名称: 命令功能: 命令参数:
KeyPress 按键
键盘按键
参数1 整数型,键盘虚拟码(8.X支持 按键字符) 参数2 整数型,次数
返 回 值: 脚本例子: (8.x语法)
无 复制代码
1. //KeyPress、KeyPressS、KeyPressH
2. //KeyPressS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的键盘都
可以使用
3. //KeyPressH: 硬件模拟方式,仅支持PS(圆口)的键盘 点击查看使用硬件模拟方式的注意事项 4. KeyPress 65,1
5. //65是A键的按键码,上面的语句表示按A键1次 6.
7. KeyPress \"A\
8. //上面的支持按键字符,语句表示按A键1次
脚本例子: (7.x语法)
复制代码
1. //KeyPress、KeyPressS、KeyPressH
2. //KeyPressS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的键盘都
可以使用
3. //KeyPressH: 硬件模拟方式,仅支持PS(圆口)的键盘 点击查看使用硬件模拟方式的注意事项 4. KeyPress 65,1
5. //65是A键的按键码,上面的语句表示按A键1次
命令名称: 命令功能: 命令参数: KeyUp 弹起 键盘弹起 参数1 整数型,键盘虚拟码(8.X支持 按键字符) 参数2 整数型,次数
返 回 值: 脚本例子: (8.x语法)
无 复制代码
1. //KeyUp、KeyUpS、KeyUpH
2. //KeyUpS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的键盘都可
以使用
3. //KeyUpH: 硬件模拟方式,仅支持PS(圆口)的键盘 点击查看使用硬件模拟方式的注意事项 4. KeyUp 65,1
5. //65是A键的按键码,上面的语句表示松开A键1次 6.
7. KeyUp \"A\
8. //上面的支持按键字符,语句表示松开A键1次
脚本例子: (7.x语法)
复制代码
1. //KeyUp、KeyUpS、KeyUpH
2. //KeyUpS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的键盘都可
以使用
3. //KeyUpH: 硬件模拟方式,仅支持PS(圆口)的键盘 点击查看使用硬件模拟方式的注意事项 4. KeyUp 65,1
5. //65是A键的按键码,上面的语句表示松开A键1次
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
WaitKey 等待按任意键
等待按任意键
参数1 整数型,可选:变量名 无
复制代码
1. Key=WaitKey()
2. //脚本运行到这一行会暂停,当用户按下键盘后继续执行,并且把用户的按键码保存在变量Key里 3. If Key = 13 Then
4. MessageBox \"恭喜你按下了回车键\" 5. End If
脚本例子: (7.x语法)
复制代码
1. WaitKey Key
2. //脚本运行到这一行会暂停,当用户按下键盘后继续执行,并且把用户的按键码保存在变量Key里 3. If Key = 13
4. Msgbox \"恭喜你按下了回车键\" 5. EndIf
二、鼠标命令
命令名称: 命令功能: 命令参数:
GetCursorPos 得到鼠标位置坐标
得到当前鼠标所在的位置坐标 参数1 整数型,返回x坐标 参数2 整数型,返回y坐标
返 回 值: 脚本例子: (8.x语法)
无
复制代码
1. GetCursorPos mx,my
2. //把当前鼠标位置的x和y坐标放在变量mx和my中
脚本例子: (7.x语法)
复制代码
1. VBSCall GetCursorPos(mx,my)
2. //把当前鼠标位置的x和y坐标放在变量mx和my中
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
GetCursorShape 得到鼠标形状
得到当前鼠标的形状特征 参数1 整数型,参数 整数型,鼠标的形状值 复制代码
1. //参数: 0 是6.83之前的版本默认的参数
2. //参数: 1 可用于一些在参数0下无法区分鼠标形状代码的情况 3. //下面是我们普通的WINDOWS鼠标形状特征
4. //不同电脑上鼠标形状特征也许不同,请使用\"抓点抓色\"功能抓取正确的鼠标形状特征 5. Shape1 = 1593350287
6. //下面是我们访问网页超链接时候的手型鼠标形状 7. Shape2 = 1055991329 8. shape=GetCursorShape(0) 9. If shape = shape1 Then
10. MessageBox \"当前鼠标形状是普通的WINDOWS鼠标\" 11. ElseIf shape = shape2 Then
12. MessageBox \"当前鼠标形状是手型鼠标\" 13. Else
14. MessageBox \"不认识当前鼠标形状!\"
15. End If
脚本例子: (7.x语法)
复制代码
1. //参数: 0 是6.83之前的版本默认的参数
2. //参数: 1 可用于一些在参数0下无法区分鼠标形状代码的情况 3. //下面是我们普通的WINDOWS鼠标形状特征
4. //不同电脑上鼠标形状特征也许不同,请使用\"抓点抓色\"功能抓取正确的鼠标形状特征 5. Shape1 = 1593350287
6. //下面是我们访问网页超链接时候的手型鼠标形状 7. Shape2 = 1055991329
8. VBSCall Shape=GetCursorShape(0) 9. If shape = shape1
10. MessageBox 当前鼠标形状是普通的WINDOWS鼠标 11. ElseIf shape = shape2
12. MessageBox 当前鼠标形状是手型鼠标 13. Else
14. MessageBox 不认识当前鼠标形状! 15. EndIf
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
GetLastClick 检测上次按过的鼠标键
检测上一次按下的鼠标代码 参数1 整数型,可选:变量名 无
复制代码
1. Mouse=GetLastClick()
2. If Mouse =32770 Or Mouse =32769 Then 3. Msgbox \"你按下了鼠标左键\" 4. End If
脚本例子: (7.x语法)
复制代码
1. GetLastClick Mouse
2. If Mouse =32770 Or Mouse =32769 3. Msgbox \"你按下了鼠标左键\" 4. EndIf
命令名称: 命令功能: 命令参数: 返 回 值:
LeftClick 左键单击
模拟点击鼠标左键 参数1 整数型,次数 无
脚本例子: (8.x语法)
复制代码
1. //LeftClick、LeftClickS、LeftClickH
2. //LeftClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠标
都可以使用
3. //LeftClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. LeftClick 5
5. //在当前鼠标的位置单击鼠标左键5次
脚本例子: (7.x语法)
复制代码
1. //LeftClick、LeftClickS、LeftClickH
2. //LeftClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠标
都可以使用
3. //LeftClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. LeftClick 5
5. //在当前鼠标的位置单击鼠标左键5次
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
LeftDoubleClick 左键双击
模拟双击鼠标左键 参数1 整数型,次数 无 复制代码
1. //LeftDoubleClick、LeftDoubleClickS、LeftDoubleClickH]
2. //LeftDoubleClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接
口的鼠标都可以使用
3. //LeftDoubleClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事
项
4. LeftDoubleClick 5
5. //在当前鼠标的位置双击鼠标左键5次
脚本例子: (7.x语法)
复制代码
1. //LeftDoubleClick、LeftDoubleClickS、LeftDoubleClickH]
2. //LeftDoubleClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接
口的鼠标都可以使用
3. //LeftDoubleClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事
项
4. LeftDoubleClick 5
5. //在当前鼠标的位置双击鼠标左键5次
命令名称: LockMouse 锁定鼠标位置
命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
锁定鼠标位置,用户将不能通过移动鼠标而改变鼠标位置,而脚本仍可以改变鼠标位置 无 无 复制代码
1. //在脚本开始的时候使用这个命令,可以有效防止用户误触鼠标引起脚本执行出错 2. LockMouse 3. Do
4. Delay 1000 5. Loop
脚本例子: (7.x语法)
复制代码
1. //在脚本开始的时候使用这个命令,可以有效防止用户误触鼠标引起脚本执行出错 2. LockMouse 3. While True 4. Delay 1000 5. EndWhile
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
MiddleClick 中键单击
模拟点击鼠标中键 参数1 整数型,次数 无 复制代码
1. //MiddleClick、MiddleClickS、MiddleClickH
2. //MiddleClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠
标都可以使用
3. //MiddleClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. MiddleClick 5
5. //在当前鼠标的位置单击鼠标中键5次
脚本例子: (7.x语法)
复制代码
1. //MiddleClick、MiddleClickS、MiddleClickH
2. //MiddleClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠
标都可以使用
3. //MiddleClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. MiddleClick 5
5. //在当前鼠标的位置单击鼠标中键5次
命令名称: 命令功能:
MouseWheel 鼠标滚轮
滚动鼠标滚轮
命令参数: 返 回 值: 脚本例子: (8.x语法)
参数1 整数型,滚动量 无 复制代码
1. //如果滚动量为正,向上滚动;否则向下滚动. 2. //仅支持Windows 2000以上的操作系统. 3. MouseWheel 1
4. //把鼠标滚轮向上滚动1格
脚本例子: (7.x语法)
复制代码
1. //如果滚动量为正,向上滚动;否则向下滚动. 2. //仅支持Windows 2000以上的操作系统. 3. MouseWheel 1
4. //把鼠标滚轮向上滚动1格
命令名称: 命令功能: 命令参数:
MoveR 鼠标相对移动
鼠标相对移动到 参数1 整数型,X距离 参数2 整数型,Y距离
返 回 值: 脚本例子: (8.x语法)
无 复制代码
1. //MoveR、MoveRS、MoveRH
2. //MoveRS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠标都可
以使用
3. //MoveRH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. //当前鼠标在(100,100)点,使用下面语句 5. MoveR 200,300
6. //之后,鼠标就被移到了(100+200,100+300)处,也就是坐标(300,400)处 7. //提示:使用硬件模拟方式不能碰键盘鼠标,否则会导致出错
脚本例子: (7.x语法)
复制代码
1. //MoveR、MoveRS、MoveRH
2. //MoveRS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠标都可
以使用
3. //MoveRH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. //当前鼠标在(100,100)点,使用下面语句 5. MoveR 200,300
6. //之后,鼠标就被移到了(100+200,100+300)处,也就是坐标(300,400)处 7. //提示:使用硬件模拟方式不能碰键盘鼠标,否则会导致出错
命令名称: 命令功能: 命令参数:
MoveTo 鼠标移动
移动鼠标到
参数1 整数型,X坐标 参数2 整数型,Y坐标
返 回 值: 脚本例子: (8.x语法)
无 复制代码
1. //MoveTo、MoveToS、MoveToH
2. //MoveToS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠标都可
以使用
3. //MoveToH: 硬件模拟方式,仅支持PS(圆口)的鼠标 4. MoveTo 100,200
5. //把鼠标移动到(100,200)这个点上 6. intX=50 7. intY=150
8. MoveTo intX,intY
9. //把鼠标移动到(intX,intY)这个点上,需要5.50以上版本支持.
脚本例子: (7.x语法)
复制代码
1. //MoveTo、MoveToS、MoveToH
2. //MoveToS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠标都可
以使用
3. //MoveToH: 硬件模拟方式,仅支持PS(圆口)的鼠标 4. MoveTo 100,200
5. //把鼠标移动到(100,200)这个点上 6. intX=50 7. intY=150
8. MoveTo intX,intY
9. //把鼠标移动到(intX,intY)这个点上,需要5.50以上版本支持.
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
RestoreMousePos 恢复上次保存的鼠标位置
保存当前鼠标位置 无 无
复制代码
1. SaveMousePos
2. //保存当前鼠标位置 3. Delay 100 4. MoveTo 500,20 5. Delay 100 6. RestoreMousePos
7. //将鼠标移动到上一次保存的鼠标位置
8. //保存/恢复鼠标位置常用于制作网络游戏练功脚本,脚本开始时保存鼠标位置,脚本结束时恢复鼠标位
置,
9. //这样脚本执行后鼠标的位置就不会变化
脚本例子: (7.x语法)
复制代码
1. SaveMousePos
2. //保存当前鼠标位置 3. Delay 100 4. MoveTo 500,20 5. Delay 100 6. RestoreMousePos
7. //将鼠标移动到上一次保存的鼠标位置
8. //保存/恢复鼠标位置常用于制作网络游戏练功脚本,脚本开始时保存鼠标位置,脚本结束时恢复鼠标位
置,
9. 这样脚本执行后鼠标的位置就不会变化
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
RightClick 右键单击
模拟点击鼠标右键 参数1 整数型,次数 无 复制代码
1. //RightClick、RightClickS、RightClickH
2. //RightClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠
标都可以使用
3. //RightClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. RightClick 5
5. //在当前鼠标的位置单击鼠标右键5次
脚本例子: (7.x语法)
复制代码
1. //RightClick、RightClickS、RightClickH
2. //RightClickS: 超级模拟方式,兼容性更强,对键盘和鼠标没有特别的要求,PS2(圆口)和USB接口的鼠
标都可以使用
3. //RightClickH: 硬件模拟方式,仅支持PS(圆口)的鼠标 点击查看使用硬件模拟方式的注意事项 4. RightClick 5
5. //在当前鼠标的位置单击鼠标右键5次
命令名称: 命令功能: SaveMousePos 保存当前鼠标所在位置
保存当前鼠标位置
命令参数: 返 回 值: 脚本例子: (8.x语法)
无 无
复制代码
1. SaveMousePos
2. //保存当前鼠标位置 3. Delay 100 4. MoveTo 500,20 5. Delay 100 6. RestoreMousePos
7. //将鼠标移动到上一次保存的鼠标位置
8. //保存/恢复鼠标位置常用于制作网络游戏练功脚本,脚本开始时保存鼠标位置,脚本结束时恢复鼠标位
置,
9. //这样脚本执行后鼠标的位置就不会变化
脚本例子: (7.x语法)
复制代码
1. SaveMousePos
2. //保存当前鼠标位置 3. Delay 100 4. MoveTo 500,20 5. Delay 100 6. RestoreMousePos
7. //将鼠标移动到上一次保存的鼠标位置
8. //保存/恢复鼠标位置常用于制作网络游戏练功脚本,脚本开始时保存鼠标位置,脚本结束时恢复鼠标位
置,
9. 这样脚本执行后鼠标的位置就不会变化
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法) 脚本例子: (7.x语法)
UnlockMouse 解除锁定鼠标位置
解除LockMouse命令对鼠标位置的锁定 无 无
复制代码
1. 复制代码
1. //如果用户使用了LockMouse命令而没有使用UnlockMouse命令,按键精灵会在脚本结束时自动解除锁
定
2. UnlockMouse
命令名称: WaitClick 按任意鼠标键继续
命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
脚本执行到这一句暂停,按下任意鼠标键之后继续 参数1 整数型,可选:变量名 无
复制代码
1. last_click=WaitClick()
2. MessageBox \"您按下了\" & last_click
脚本例子: (7.x语法)
复制代码
1. WaitClick last_click
2. MessageBox \"您按下了\" & last_click
三、控制命令
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Call 调用过程
调用过程
参数1 字符串型,过程名 无 复制代码
1. Call 子程序(\"我是子程序,被你调用了\") 2. EndScript 3. //支持中文名变量 4. Sub 子程序(啊) 5. Msgbox 啊 6. End Sub
7. //定义一个过程,可以在脚本中调用这个过程
脚本例子:
复制代码
(7.x语法)
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Do 循环
条件循环
参数1 条件型,循环条件 无 复制代码
1. 例子1:
2. //支持Exit Do 命令退出循环
3. i=0
4. Do While i=0
5. Msgbox \"我停不下来啦!!快住手\" 6. Loop
7. //当循环条件成立的时候,反复执行循环体 8. 9.
10. 例子2: 11. i=0
12. Do Until i=0
13. Msgbox \"为什么没有循环到我呢?\" 14. Loop
15. Msgbox \"循环结束\"
16. //当循环条件成立的时候,离开循环体 17. 18.
19. 例子3: 20. i=0
21. Do Until i=1
22. Msgbox \"我停不下来啦!!快住手\" 23. Loop
24. //当循环条件不成立的时候,反复执行循环体 25. 26.
27. 例子4: 28. n=0
29. Do While true
30. Msgbox \"我将循环10次停下来!!\" 31. If n>=10 Then
32. //当循环条件成立的时候,离开循环体 33. Exit do 34. End if 35. n=n+1 36. Loop
37. Msgbox n & \"次\" 38. 39.
40. 例子5: 41. i = 0 42. Do
43. MessageBox \"ok\" 44. Loop While i <> 0
45. //条件放后面,前面的循环内容可以执行一次!
脚本例子: (7.x语法)
复制代码
1. 无
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
For 循环
循环一定次数
参数1 整数型,循环次数 无 复制代码
1. 例子1:
2. //支持Exit For 命令退出循环 3. For i=0 To 9 4. Delay 100 5. Next
6. //循环10次 7.
8. 例子2:
9. //支持Exit For 命令退出循环 10. For 10
11. Delay 100 12. Next
13. //循环10次 14. 15.
16. 例子3:
17. //支持Exit For 命令退出循环 18. For i=0 to 19 step 2 19. Delay 100 20. Next
21. //循环10次 22.
23. 例子4:
24. //支持Exit For 命令退出循环 25. For i=0 to 19 step 2 26. Delay 100 27. If i>9 Then 28. Exit For 29. End If 30. Next 31. //循环5次
脚本例子: (7.x语法)
复制代码
1. For 10
2. Delay 100 3. EndFor 4. //循环10次
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Function 函数
函数
多类型,多参数 多类型 复制代码
1. //支持Exit Function 命令退出函数过程 2. Msgbox 函数过程(\"我是函数,被你调用了\") 3. EndScript
4. Function 函数过程(a) 5. 函数过程=a 6. End Function
7. //定义一个函数过程,可以在脚本中调用这个函数
脚本例子: (7.x语法)
复制代码
1. 无
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Gosub 调用子程序
调用过程
参数1 字符串型,过程名 无 复制代码
1. //可带参数传递
2. Call 子程序(\"我是子程序,被你调用了\") 3. EndScript 4. Sub 子程序(a) 5. Msgbox a 6. End Sub
7. //定义一个过程,可以在脚本中调用这个过程
脚本例子: (7.x语法)
复制代码
1. Gosub 子程序 2. EndScript 3. Sub 子程序
4. Msgbox \"我是子程序,被你调用了\" 5. Return 子程序
6. //定义一个过程,可以在脚本中调用这个过程
命令名称: Goto 跳转到标记
命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
跳转到Rem标记处 参数1 字符串型,标号 无 复制代码
1. Goto 标记 2. Delay 100 3. Rem 标记
4. Msgbox \"你直接跳到这里了!!,上面的延迟没有被执行!!\" 5. //跳转语句,可以跳转到rem标记过的标记处继续执行
脚本例子: (7.x语法)
复制代码
1. Goto 标记 2. Delay 100 3. Rem 标记
4. Msgbox \"你直接跳到这里了!!,上面的延迟没有被执行!!\" 5. //跳转语句,可以跳转到rem标记过的标记处继续执行
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
If 如果..则
判断表达式
参数1 条件型,表达式 无 复制代码
1. 例子1: 2. i=0
3. If i=0 Then
4. Msgbox \"条件判断符合被通过!!\" 5. End If
6. //通过判断表达式的取值,来执行后面的动作或控制 7.
8. 例子2: 9. i=1
10. If i=0 Then
11. Msgbox \"条件判断符合被通过!!\" 12. ElseIf i=1 Then
13. Msgbox \"否则条件判断符合被通过!!\" 14. Else
15. Msgbox \"否则!!\" 16. End If
17. //通过判断表达式的取值,来执行后面的动作或控制
脚本例子: (7.x语法)
复制代码
1. i=0
2. If i=0
3. Msgbox \"条件判断符合被通过!!\" 4. EndIf
5. //通过判断表达式的取值,来执行后面的动作或控
命令名称: 命令功能: 命令参数:
IfColor 颜色判断
判断屏幕某点的颜色 参数1 整数型,屏幕X坐标 参数2 整数型,屏幕Y坐标 参数3 字符串型,颜色16进制值 参数4 整数型,判断条件
返 回 值: 脚本例子: (8.x语法)
无 复制代码
1. 例子1:
2. //判断条件(0:等于 1:不等于 2:近似等于) 3. IfColor 860,27,\"e1b072\Then 4. Msgbox \"颜色等于\" 5. Else
6. Msgbox \"颜色不等于\" 7. End If
8. //判断坐标点(860,27)的颜色是否等于e1b072 9. 10.
11. 例子2: 12. a=1:b=1
13. IfColor 650,118,\"78F0E8\Then 14. MessageBox \"a\" 15. ElseIf b=a Then 16. MessageBox \"b\" 17. End if
脚本例子: (7.x语法)
复制代码
1. //判断条件(0:等于 1:不等于 2:近似等于) 2. IfColor 860,27,e1b072,0 3. Msgbox \"颜色等于\" 4. Else
5. Msgbox \"颜色不等于\" 6. EndIf
7. //判断坐标点(860,27)的颜色是否等于e1b072
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Rem 标记/注释
标记命令可当注释 参数1 字符串型,文字 无 复制代码
1. //不支持数字开头的和符号作为标记名
2. //标记命令.即可当注释,也可以为Goto跳转指令作标记 3. Rem 脚本开始
脚本例子: (7.x语法)
复制代码
1. //标记命令.即可当注释,也可以为Goto跳转指令作标记 2. Rem 脚本开始
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
RestartScript 重新启动脚本运行
重新启动脚本运行 无 无
复制代码
1. For i=0 to 2
2. Delay 1000
3. Call Plugin.Msg.ShowScrTXT(0, 0, 1024, 768, \"屏幕内容填写\" & i, \"0000FF\") 4. Next
5. RestartScript //重新启动脚本运行
脚本例子: (7.x语法)
复制代码
1. 无
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Select 情况条件选择
根据情况选择条件判断 参数1 条件型,情况 无 复制代码
1. //不支持判断语句 如:Case a>0 2. UserVar 变量=0 \"输入(0~9)数字\"
3. //<>---------------------------------------------以下是选择条件结结构判断 4. Select Case 变量 5. Case 0
6. Msgbox \"你输入的数字为:0\" 7. Case 1
8. Msgbox \"你输入的数字为:1\" 9. Case 2
10. Msgbox \"你输入的数字为:2\" 11. Case 3
12. Msgbox \"你输入的数字为:3\" 13. Case 4
14. Msgbox \"你输入的数字为:4\" 15. Case 5
16. Msgbox \"你输入的数字为:5\" 17. Case 6
18. Msgbox \"你输入的数字为:6\" 19. Case 7
20. Msgbox \"你输入的数字为:7\" 21. Case 8
22. Msgbox \"你输入的数字为:8\" 23. Case 9
24. Msgbox \"你输入的数字为:9\" 25. Case Else
26. Msgbox \"你输入的数字不正确,请输入(0~9)数字!\" 27. End Select
脚本例子: (7.x语法)
复制代码
1. 无
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Sub 子程序
定义一个过程
参数1 字符串型,过程名 无 复制代码
1. //支持Exit Sub 命令退出子程序过程 2. Call 子程序() 3. EndScript 4. Sub 子程序()
5. Msgbox \"我是子程序,被你调用了\" 6. End Sub
7. //定义一个过程,可以在脚本中调用这个过程
脚本例子: (7.x语法)
复制代码
1. Gosub 子程序 2. EndScript 3. Sub 子程序
4. Msgbox \"我是子程序,被你调用了\" 5. Return 子程序
6. //定义一个过程,可以在脚本中调用这个过程
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
While 如果..则循环
条件循环
参数1 条件型,循环条件 无
复制代码
1. i=0
2. While i=0
3. Msgbox \"我停不下来啦!!快住手\" 4. Wend
5. //当循环条件成立的时候,反复执行循环体
脚本例子: (7.x语法)
复制代码
1. i=0
2. While i=0
3. Msgbox \"我停不下来啦!!快住手\" 4. EndWhile
5. //当循环条件成立的时候,反复执行循环体
四、颜色/图像命令
命令名称: 命令功能: 命令参数: FindCenterColor 中心找色 在屏幕区域从中心开始查找指定的颜色 参数1 整数型,屏幕左上角x坐标 参数2 整数型,屏幕左上角y坐标 参数3 整数型,屏幕右下角x坐标 参数4 整数型,屏幕右下角y坐标 参数5 字符串型,16进制颜色值
参数6 整数型,返回x坐标 参数7 整数型,返回y坐标
返 回 值: 脚本例子: (8.x语法)
无
复制代码
1. //FindCenterColor left,top,right,bottom,c,x,y
2. //在区域内从中心到外围找颜色为c的点,把坐标保存在变量x和y中
3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //颜色是类似于\"0000FF\"的字符串,如果不取变量,别忘了加双引号 5. //如果没有找到这个颜色,则x和y的值都被置为-1 6. FindCenterColor 0,0,800,600,\"0000FF\7. If x>0 and y>0 Then 8. MoveTo x,y 9. End If
10. //在区域(0,0,800,600)中找红色(\"0000FF\")的点,如果找到,则把鼠标移动到这个点
脚本例子: (7.x语法)
复制代码
1. //VBSCall FindCenterColor(left,top,right,bottom,c,x,y)
2. //在区域内从中心到外围找颜色为c的点,把坐标保存在变量x和y中
3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //颜色是类似于\"0000FF\"的字符串,如果不取变量,别忘了加双引号 5. //如果没有找到这个颜色,则x和y的值都被置为-1
6. VBSCall FindCenterColor(0,0,800,600,\"0000FF\7. If x>0 and y>0 8. MoveTo x,y 9. EndIf
10. //在区域(0,0,800,600)中找红色(\"0000FF\")的点,如果找到,则把鼠标移动到这个点
命令名称: 命令功能: 命令参数: FindColor 找色 在屏幕区域从左到右、从上到下的查找指定的颜色 参数1 整数型,屏幕左上角x坐标 参数2 整数型,屏幕左上角y坐标 参数3 整数型,屏幕右下角x坐标 参数4 整数型,屏幕右下角y坐标 参数5 字符串型,16进制颜色值 参数6 整数型,返回x坐标 参数7 整数型,返回y坐标 返 回 值: 脚本例子: 无 复制代码
(8.x语法)
1. //FindColor left,top,right,bottom,c,x,y
2. //在区域内从左到右,从上到下找颜色为c的点,把坐标保存在变量x和y中
3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //颜色是类似于\"0000FF\"的字符串,如果不取变量,别忘了加双引号 5. //如果没有找到这个颜色,则x和y的值都被置为-1 6. FindColor 0,0,800,600,\"0000FF\7. If x>0 and y>0 Then 8. MoveTo x,y 9. End If
10. //在区域(0,0,800,600)中找红色(\"0000FF\")的点,如果找到,则把鼠标移动到这个点
脚本例子: (7.x语法)
复制代码
1. //VBSCall FindColor(left,top,right,bottom,c,x,y)
2. //在区域内从左到右,从上到下找颜色为c的点,把坐标保存在变量x和y中
3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //颜色是类似于\"0000FF\"的字符串,如果不取变量,别忘了加双引号 5. //如果没有找到这个颜色,则x和y的值都被置为-1 6. VBSCall FindColor(0,0,800,600,\"0000FF\7. If x>0 and y>0 8. MoveTo x,y 9. EndIf
10. //在区域(0,0,800,600)中找红色(\"0000FF\")的点,如果找到,则把鼠标移动到这个点
命令名称: 命令功能: 命令参数:
FindColorEx 模糊找色
在屏幕区域模糊查找指定的颜色 参数1 整数型,屏幕左上角x坐标 参数2 整数型,屏幕左上角y坐标 参数3 整数型,屏幕右下角x坐标 参数4 整数型,屏幕右下角y坐标 参数5 字符串型,16进制颜色值 参数6 整数型,查找方式 参数7 整数型,相似度 参数8 整数型,返回x坐标 参数9 整数型,返回y坐标
返 回 值: 脚本例子: (8.x语法)
无
复制代码
1. //FindColorEx left,top,right,bottom,c,type,similar,x,y
2. //在区域内找颜色为c的点,把坐标保存在变量x和y中
3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //颜色是类似于\"0000FF\"的字符串,如果不取变量,别忘了加双引号 5. //type表示查找方式。0为从上往下,从左往右找;1为从中心往外围找
6. //similar为相似度,取0.3到1之间的小数。数值越大,对相似度要求越严格。推荐取0.8 7. //如果没有找到这个颜色,则x和y的值都被置为-1 8. FindColorEx 0,0,800,600,\"0000FF\9. If x>0 and y>0 Then 10. MoveTo x,y 11. End If
12. //在区域(0,0,800,600)中,从中间开始找接近红色(\"0000FF\")的点,如果找到,则把鼠标移动到这个
点
脚本例子: (7.x语法)
复制代码
1. //VBSCall FindColorEx(left,top,right,bottom,c,type,similar,x,y)
2. //在区域内找颜色为c的点,把坐标保存在变量x和y中
3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //颜色是类似于\"0000FF\"的字符串,如果不取变量,别忘了加双引号 5. //type表示查找方式。0为从上往下,从左往右找;1为从中心往外围找
6. //similar为相似度,取0.3到1之间的小数。数值越大,对相似度要求越严格。推荐取0.8 7. //如果没有找到这个颜色,则x和y的值都被置为-1
8. VBSCall FindColorEx(0,0,800,600,\"0000FF\9. If x>0 and y>0 10. MoveTo x,y 11. EndIf
12. //在区域(0,0,800,600)中,从中间开始找接近红色(\"0000FF\")的点,如果找到,则把鼠标移动到这个
点
命令名称: 命令功能: 命令参数:
FindPic 找图
在屏幕区域查找指定相似度的图片 参数1 整数型,屏幕左上角x坐标 参数2 整数型,屏幕左上角y坐标 参数3 整数型,屏幕右下角x坐标 参数4 整数型,屏幕右下角y坐标 参数5 字符串型,bmp格式图片路径 参数6 整数型,相似度 参数7 整数型,返回x坐标 参数8 整数型,返回y坐标
返 回 值: 脚本例子: (8.x语法)
无
复制代码
1. //FindPic left,top,right,bottom,filename,similar,x,y
2. //在区域内从左到右,从上到下找文件名为filename的bmp文件,把找到的坐标保存在变量x和y中 3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //filename是一个bmp格式的图片,需要您自己抓取,最好是24位,把边缘都设为单一的颜色
5. //similar为相似度,取0.5到1之间的小数。数值越大,对图片的相似度要求越严格,速度也越快。推荐
取0.9
6. //如果没有找到图片,则x和y的值都被置为-1 7. //推荐使用周围颜色单一的图片
8. MessageBox \"这个例子会启动一个Windows自带的扫雷程序,然后查找扫雷程序里的笑脸图形\" 9. RunApp \"winmine.exe\"
10. //加入一点延时,让扫雷程序顺利启动 11. Delay 2000
12. FindPic 0,50,1023,767,\"winmine.bmp\13. If intX>0 and intY>0 Then 14. MoveTo intX,intY
15. MessageBox \"找到图形,鼠标已经移到图形上面\" 16. Else
17. MessageBox \"没找到!请确认扫雷程序已经打开,并且您用的是WinXP系统\" 18. End If
19. //在区域(0,50,1023,767)中找与文件winmine.bmp中的图形比较接近的地方,如果找到,则把鼠标移
动到这个地方
20. //6.30版之后,找图的文件路径可以直接引用附件中的图片,不需要释放,例子 21. MessageBox \"下面把鼠标先移到0,0点,再用附件找图的方式继续查找笑脸\" 22. FindPic 0,50,1023,767,\"Attachment:\\winmine.bmp\23. If intX>0 and intY>0 Then 24. MoveTo intX,intY
25. MessageBox \"找到图形,鼠标已经移到图形上面\" 26. Else
27. MessageBox \"没找到!请确认扫雷程序已经打开,并且您用的是WinXP系统\" 28. End If
29. MessageBox \"脚本演示结束,最好的脚本永远是您自己制作的。 :-)\" 30. EndScript
脚本例子: (7.x语法)
复制代码
1. //VBSCall FindPic(left,top,right,bottom,filename,similar,x,y)
2. //在区域内从左到右,从上到下找文件名为filename的bmp文件,把找到的坐标保存在变量x和y中 3. //left,top,right,bottom都是整数或者整数型变量,说明了区域的左,上,右,下界限 4. //filename是一个bmp格式的图片,需要您自己抓取,最好是24位,把边缘都设为单一的颜色 5. //similar为相似度,取0.5到1之间的小数。数值越大,对图片的相似度要求越严格,速度也越快。推荐
取0.9
6. //如果没有找到图片,则x和y的值都被置为-1 7. //推荐使用周围颜色单一的图片
8. MessageBox \"这个例子会启动一个Windows自带的扫雷程序,然后查找扫雷程序里的笑脸图形\" 9. VBSCall RunApp(\"winmine.exe\") 10. //加入一点延时,让扫雷程序顺利启动 11. Delay 2000
12. VBSCall FindPic(0,50,1023,767,\"winmine.bmp\13. If intX>0 and intY>0 14. MoveTo intX,intY
15. MessageBox \"找到图形,鼠标已经移到图形上面\" 16. Else
17. MessageBox \"没找到!请确认扫雷程序已经打开,并且您用的是WinXP系统\" 18. EndIf
19. //在区域(0,50,1023,767)中找与文件winmine.bmp中的图形比较接近的地方,如果找到,则把鼠标移
动到这个地方
20. //6.30版之后,找图的文件路径可以直接引用附件中的图片,不需要释放,例子 21. MessageBox \"下面把鼠标先移到0,0点,再用附件找图的方式继续查找笑脸\"
22. VBSCall FindPic(0,50,1023,767,\"Attachment:\\winmine.bmp\23. If intX>0 and intY>0 24. MoveTo intX,intY
25. MessageBox \"找到图形,鼠标已经移到图形上面\" 26. Else
27. MessageBox \"没找到!请确认扫雷程序已经打开,并且您用的是WinXP系统\" 28. EndIf
29. MessageBox \"脚本演示结束,最好的脚本永远是您自己制作的。 :-)\" 30. EndScript
命令名称: 命令功能: 命令参数:
GetPixelColor 得到指定点颜色
得到指定位置的点的颜色 参数1 整数型,屏幕X坐标 参数2 整数型,屏幕Y坐标
返 回 值: 脚本例子: (8.x语法)
字符串型,得到的颜色16进制值 复制代码
1. GetCursorPos x,y
2. cr1=GetPixelColor(x,y) 3. MessageBox cr1
4. //得到当前点的颜色,并弹出对话框显示出来
脚本例子: (7.x语法)
复制代码
1. VBSCall GetCursorPos(x,y)
2. VBSCall color1=GetPixelColor(x,y) 3. MessageBox color1
4. //得到当前点的颜色,并弹出对话框显示出来
五、其他命令
命令名称:
Delay 延时
命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
脚本暂停执行一段时间 参数1 整数型,延时时间 无 复制代码
1. //{延时}里面填写”毫秒”数
2. //1秒=1000毫秒, 1分钟=60000毫秒, 1小时=3600000毫秒 3. Delay 6000 4. //延迟6秒 5. x = 5000 6. Delay x
7. //延时x秒,这里x是5秒
脚本例子: (7.x语法)
复制代码
1. //{延时}里面填写”毫秒”数
2. //1秒=1000毫秒, 1分钟=60000毫秒, 1小时=3600000毫秒 3. Delay 6000 4. //延迟6秒 5. x = 5000 6. Delay x
7. //延时x秒,这里x是5秒
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
Import 导入命令
导入一个vbs文件或者插件dll文件 参数1 字符串型,vbs文件或插件dll文件 无 复制代码
1. //当文件被导入后,里面的函数可以直接被调用,不需要使用VBSCall或Plugin命令
2. //在VBScript块中需要调用vbs文件或者插件中的函数时,必须采用这种方式,不能再冠以VBSCall或
Plugin关键字
3. Import \"Memory.dll\" 4. //导入Memory插件命令
脚本例子: (7.x语法)
复制代码
1. //当文件被导入后,里面的函数可以直接被调用,不需要使用VBSCall或Plugin命令
2. //在VBScript块中需要调用vbs文件或者插件中的函数时,必须采用这种方式,不能再冠以VBSCall或
Plugin关键字 3. Import Memory.dll 4. //导入Memory插件命令
命令名称: 命令功能: 命令参数:
InputBox 用户输入对话框
在对话框中显示提示,等待用户输入文本或单击按钮,并返回文本框内容。 参数1 字符串型,消息字符串 参数2 字符串型[可选],标题
参数3 字符串型[可选],提示框默认内容 参数4 整数型[可选],对话框X坐标位置 参数5 整数型[可选],对话框Y坐标位置
返 回 值: 脚本例子: (8.x语法)
字符串型,返回文本框内容 复制代码
1. Dim Input
2. Input = InputBox(\"请输入名字:\提示:\张三\3. MsgBox \"输入: \" & Input 4. 5.
6. //[可选]意思是,也可以不需要填参数 7. //如下: 8. Dim Input
9. Input = InputBox(\"请输入名字:\") 10. MsgBox \"输入: \" & Input
脚本例子: (7.x语法)
复制代码
1. Dim Input
2. Input = InputBox(\"请输入名字:\提示:\张三\3. MsgBox \"输入: \" & Input 4. 5.
6. //[可选]意思是,也可以不需要填参数 7. //如下: 8. Dim Input
9. Input = InputBox(\"请输入名字:\") 10. MsgBox \"输入: \" & Input
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: LogStart 开始记录日志 记录日志 字符串型:文件名 无 复制代码
(8.x语法)
1. LogStart \"C:\\a.log\" //记录日志 2. For i = 0 To 3
3. TracePrint \"保存次数:\" & i
4. Call Plugin.Msg.ShowScrTXT(0, 0, 1024, 768, \"屏幕内容填写:\" & i, \"0000FF\") 5. Next
6. LogStop //记录日志停止
7. TracePrint \"这句不会输出到日志里!\"
脚本例子: (7.x语法)
复制代码
1. 无
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
LogStop 停止日志记录
停止日志记录 无 无 复制代码
1. LogStart \"C:\\a.log\" //记录日志 2. For i = 0 To 3
3. TracePrint \"保存次数:\" & i
4. Call Plugin.Msg.ShowScrTXT(0, 0, 1024, 768, \"屏幕内容填写:\" & i, \"0000FF\") 5. Next
6. LogStop //记录日志停止
7. TracePrint \"这句不会输出到日志里!\"
脚本例子: (7.x语法)
复制代码
1. 无
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
MessageBox 弹出对话框
弹出一个窗口
参数1 字符串型,提示内容文字 无 复制代码
1. MessageBox \"弹出窗口\"
2. //提醒: 按键VBS语句中也提供了MessageBox命令,可以支持变量,因此MessageBox命令也可以直接
写成支持变量的方式 3. x = \"提醒窗口\" 4. MessageBox x
脚本例子: (7.x语法)
复制代码
1. MessageBox \"弹出窗口\"
2. //提醒: 按键VBS语句中也提供了MessageBox命令,可以支持变量,因此MessageBox命令也可以直接
写成支持变量的方式 3. x = \"提醒窗口\" 4. MessageBox x
命令名称: 命令功能: 命令参数:
PutAttachment 释放附件
把当前脚本包含的附件展开到指定的路径下 参数1 字符串型,可选:路径 参数2 字符串型,可选:要释放的文件
返 回 值: 脚本例子: (8.x语法)
无 复制代码
1. //[路径]是指定的相对路径或者绝对路径。
2. //如果省略[路径]或者[路径]为 . ,则默认展开到按键精灵所在的文件夹中
3. //可以指定要释放的文件,允许使用通配符,如 *.bmp。如果不指定要释放的文件,则默认释放所有文件 4. PutAttachment \"c:\\\
5. //将附件中所有后缀是bmp的文件释放到c盘 6. PutAttachment \".\\plugin\
7. //将附件中所有后缀是dll的文件释放到当前文件夹的plugin目录下
脚本例子: (7.x语法)
复制代码
1. //[路径]是指定的相对路径或者绝对路径。
2. //如果省略[路径]或者[路径]为 . ,则默认展开到按键精灵所在的文件夹中
3. //可以指定要释放的文件,允许使用通配符,如 *.bmp。如果不指定要释放的文件,则默认释放所有文件 4. PutAttachment c:\\ *.bmp
5. //将附件中所有后缀是bmp的文件释放到c盘 6. PutAttachment .\\plugin *.dll
7. //将附件中所有后缀是dll的文件释放到当前文件夹的plugin目录下
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法) RunApp 运行 启动一个程序或者打开一个文件 参数1 字符串型,要运行的程序或者文件 无 复制代码 1. //如果程序路径不是变量,别忘了加双引号 2. RunApp \"notepad.exe\"
3. //启动Windows记事本程序
脚本例子: (7.x语法)
复制代码
1. //如果程序路径不是变量,别忘了加双引号 2. VBSCall RunApp(\"notepad.exe\") 3. //启动Windows记事本程序
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
SayString 输入文本
在当前窗口输入文字 参数1 字符串型,表达式 无 复制代码
1. SayString \"你好啊\" 2. x = \"我很好\" 3. SayString x
脚本例子: (7.x语法)
复制代码
1. SayString \"你好啊\" 2. x = \"我很好\" 3. SayString x
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
SetSimMode 设置模拟方式
设置模拟方式
参数1 整数型,设置模拟方式 无 复制代码
1. //模拟方式(0普通|1硬件|2超级)
2. MessageBox \"这个例子会演示 普通/硬件/超级 这三种模拟方式的效果,点击确定后3秒钟开始模拟,会
用普通模拟按3下a,硬件模拟按3下b,超级模拟按3下c\" 3. Delay 3000 4. SetSimMode 0 5. KeyPress 65,3 6. MoveTo 0,0 7. Delay 1000 8. SetSimMode 1 9. KeyPress 66,3 10. MoveTo 100,100 11. Delay 1000
12. SetSimMode 2 13. KeyPress 67,3 14. MoveTo 200,200 15. MessageBox \"演示结束\"
脚本例子: (7.x语法)
复制代码
1. //模拟方式(0普通|1硬件|2超级)
2. MessageBox \"这个例子会演示 普通/硬件/超级 这三种模拟方式的效果,点击确定后3秒钟开始模拟,会
用普通模拟按3下a,硬件模拟按3下b,超级模拟按3下c\" 3. Delay 3000 4. SetSimMode 0 5. KeyPress 65,3 6. MoveTo 0,0 7. Delay 1000 8. SetSimMode 1 9. KeyPress 66,3 10. MoveTo 100,100 11. Delay 1000 12. SetSimMode 2 13. KeyPress 67,3 14. MoveTo 200,200 15. MessageBox \"演示结束\" 16.
命令名称: 命令功能: 命令参数: 返 回 值: 脚本例子: (8.x语法)
TracePrint 调试输出
在调试窗口打印文字 参数1 字符串型,变量名 无
复制代码
1. x=100
2. //可用于输出变量的值 3. TracePrint x
4. //在调试窗口输出变量x的值
脚本例子: (7.x语法)
复制代码
1. //可用于输出变量的值 2. TracePrint x
3. //在调试窗口输出变量x的值
命令名称: 命令功能: 命令参数:
UserVar 用户定义变量
用于支持用户设置脚本参数 参数1 字符串型,变量 参数2 字符串型,默认值
返 回 值: 脚本例子: (8.x语法)
字符串型,设置的值 复制代码
1. //标准型自定义变量
2. //格式: UserVar {变量}={默认值} {注释} 3. //解释:这个命令主要用于用户自定义的设置功能 4. UserVar var1=30 \"当HP<多少%时,使用红药\" 5. UserVar var2=30 \"当MP<多少%时,使用蓝药\"
6. //当用户使用这个脚本的时候,可以对这var1和var2这两个变量的取值进行设置 7. //下拉型自定义变量
8. //格式: UserVar 变量=DropList{选项0:值0|选项1:值1|选项2:值2}=默认显示的选项编号 {注
释}
9. //解释:这个命令预先设定多个变量值,用户可在基面通过下拉方式进行选择
10. UserVar Var1=DropList{\"低于10%时补血\":0.1|\"低于20%时补血\":0.2|\"低于30%时补血
\":0.3}=2 \"自动补血设置\"
11. //特别提醒:默认显示的选项编号从0开始
脚本例子: (7.x语法)
复制代码
1. //标准型自定义变量
2. //格式: UserVar {变量}={默认值} {注释} 3. //解释:这个命令主要用于用户自定义的设置功能 4. UserVar var1=30 当HP<多少%时,使用红药 5. UserVar var2=30 当MP<多少%时,使用蓝药
6. //当用户使用这个脚本的时候,可以对这var1和var2这两个变量的取值进行设置 7. //下拉型自定义变量
8. //格式: UserVar 变量=DropList{选项0:值0|选项1:值1|选项2:值2}=默认显示的选项编号 {注
释}
9. //解释:这个命令预先设定多个变量值,用户可在基面通过下拉方式进行选择
10. UserVar Var1=DropList{低于10%时补血:0.1|低于20%时补血:0.2|低于30%时补血:0.3}=2 自动
补血设置
11. //特别提醒:默认显示的选项编号从0开始
命令名称: 命令功能: 命令参数: 返 回 值:
VBSBegin..VBSEnd VBS执行块
构成一个VBScript块 无 无
脚本例子: (8.x语法)
复制代码
1. VBSBegin
2. For i=0 to 5
3. Msgbox \"我在循环运行VBScript块哦!!\" 4. '这是注释 5. Next 6. VBSEnd
7. //在VBScript块中可以使用任何VBScript语句(包括VBScript的条件判断、子程序调用等等),也可
以使用大多数的按键精灵命令。 8. 例子2:
9. //定义过程必须放在脚本开头! 10. VBSBegin 11. '这是一个注释
12. Function name(list) 13. msgbox list+1 14. End Function 15. VBSEnd
16. //下面是使用过程函数 17. name 10 18.
脚本例子: (7.x语法)
复制代码
1. VBSBegin
2. For i=0 to 5
3. Msgbox \"我在循环运行VBScript块哦!!\" 4. '这是注释 5. Next 6. VBSEnd
7. //在VBScript块中可以使用任何VBScript语句(包括VBScript的条件判断、子程序调用等等),也可
以使用大多数的按键精灵命令。 8. 例子2:
9. //定义过程必须放在脚本开头! 10. VBSBegin 11. '这是一个注释
12. Function name(list) 13. msgbox list+1 14. End Function 15. VBSEnd
16. //下面是使用过程函数 17. name 10 18.
Windowns扫雷游戏脚本实例:
Rem Start LockMouse
//查找扫雷窗口,句柄存为hd
Plugin hd=Window.Find(\"扫雷\扫雷\") If hd=0
MessageBox \"你应该没有打开扫雷游戏吧?\" Else
//获得窗口四个角的坐标
Plugin WRect=Window.GetWindowRect(hd) VBS Dim x(4) VBS i=1 While i<=4
VBS WL=Len(WRect) VBS LL=InStr(WRect,\"|\") If LL<>0
VBS x(i)=left(WRect,LL-1)
VBS WRect=right(WRect,Wl-LL) Else
VBS x(i)=WRect EndIf VBS i=i+1 EndWhile VBS Dim hg,sg //计算横格数
VBS hg=int((x(3)-x(1)-20)/16) //计算竖格数
VBS sg=Int((x(4)-x(2)-100)/16) MoveTo x(3)+1,x(4)+1 LeftClick 1 Delay 10
Plugin Window.SendKeyPress(hd,88) Delay 10
Plugin Window.SendKeyPress(hd,89) Delay 10
Plugin Window.SendKeyPress(hd,90) Delay 10
Plugin Window.SendKeyPress(hd,90) Delay 10
Plugin Window.SendKeyPress(hd,89) Delay 10
Plugin Window.SendKeyPress(hd,16) Delay 10
Plugin Window.Active(hd) //雷区最左上角一格的坐标 VBS x0=x(1)+21:y0=x(2)+100 VBS i=0
//用鼠标扫描整个雷区 While i IfColor 0,0,ffffff,0 LeftClick 1 Else IfColor 0,0,0,0 Else KeyPress 116,1 Goto Start EndIf EndIf VBS j=j+1 EndWhile VBS i=i+1 EndWhile EndIf UnlockMouse EndScript 按键插件《扫雷》系列一【读取内存】 内存读取插件,用于读取某窗体句柄所在进程内存。与按键精灵本身提供的“VBSCall ReadMemory()”功能几乎相同。 不同点在于: 1、VBSCall ReadMemory()读取最前台窗口内存。Plugin Memory.Read()读取某窗体的内存。 2、Memory插件,提供更多更丰富的功能。 在给出Memory插件例子之前,先说说windows如何管理进程内存的,知其然要知其所以然,避免概念上的错误理解。 在说内存之前,我们要知道windows是多进程的操作系统,CPU时间片根据进程优先级的不同在各个进程中切换,从而实现了多进程的管理机制。要详细解释“进程-内存”的关系比较复杂,一两篇文章也说不清楚。这里我就简要说明几个与本文有关联的系统知识。 绝大多数学过计算机编程的同学,应该都清楚,在编写程序的时候,根本就没有多进程的概念,也不会向这方面想。但一到涉及到内存的时候就会犯迷糊,windows这么多进程,到底应该读取哪个地方的内存呢?其实不是这样的,windows只是模拟出多进程的环境,实际的运算都在CPU上完成,而一个CPU在一个时间只能处理一条指令,也就是说,对于cpu而言,只是单进程操作(请允许我提到CPU、指令这些与汇编有关系的内容,我想不到如何能把这个概念简单的描述出来,这些是概念,看懂意思就没问题了)。windows模拟多进程的操作,大概是这样的:把进程A送到CPU中处理20微秒->保存进程A环境->进程B送到CPU中处理20微秒->保存进程B环境……一直循环这个过程。CPU的速度很快,系统在多进程切换,我们基本上感觉不到。所以实现了“多进程”。 现在轮到内存了:_) 内存这里是个比较卡人的地方,当初我也卡在这里过,其实当初也是因为概念不明而已,我在这里详细说说。windows有一套自己的内存管理方案,每个进程都独享独立的4G虚拟地址空间(注意这里,是虚拟地址内存,非物理内存,当初我就卡在这里了)。这个4G,在每个进程中都是真实存在的,但因为是虚拟内存(注意这里,这里所说的虚拟内存和调节windows的虚拟内存不是一个东西),程序用到的内存部分,加载到物理内存,供给cpu读取,用不到的,依然还是硬盘上的文件。所以实际的物理内存占用并不高。明白这个概念,之后的东西就好办了。我们在读取内存的时候,读出来的都在虚拟里,windows是不允许用户直接操作物理内存的(这里涉及到ring0/3环的问题,与本文无关,略过,只要记住,我们不要考虑物理内存就可以了)。举个例子,我们读取进程A中的50000地址,再读取进程B中的50000地址,读的地址,完全不同,因为他们放到两快虚拟内存中。至于它到底在物理内存中哪个位置,只有 windows知道(其实对程序员来说,也没有必要知道)。 我反复强调了“进程-内存”,是因为我当初卡在这里过,如果看到这里,你还是云里雾里,那么建议你回头再看一遍。 讲完了概念,进入正题: 我们要做的,正是读取windows自带的经典游戏《扫雷》中的“雷”所在的位置,旨在用代码描述内存插件的使用方法。我始终坚信,代码是最好的老师,比任何教程都强。所以我直接给出注释全面的代码,以供分析。 //********************************** //* 以下例子只支持xp操作系统中扫雷 * //********************************** // //hwnd中保存扫雷游戏的窗体句柄 Dim hwnd //查找《扫雷》的窗体句柄 Plugin hwnd=Window.Find(\"扫雷\扫雷\") If hwnd=0 MessageBox \"扫雷游戏没有打开哟!\" EndScript EndIf //x, y中分别保存当前扫雷的长与宽的格子数量 Dim x, y Plugin x=Memory.Read32Bit(hwnd,&h1005334) Plugin y=Memory.Read32Bit(hwnd,&h1005338) //建个双重循环,循环所有格子,这里用VBScript的循环会很方便,所以加入vbsbegin块 Import Memory.dll VBSBegin Dim i, j, value, strview strview=\"说明:@代表安全,*代表雷\" & vbcrlf For i=0 to x-1 For j=0 to y-1 value=Memory.Read8Bit(hwnd,&h1005360+(j+i*32+1)) '注意:VBSBegin中的注释是“'” '//8A=显示出的雷 '//8F=未显示出的雷 If value=&h8A& or value=&h8F& then strview=strview & \" *\" Else strview=strview & \" @\" End If Next strview=strview & vbcrlf Next MessageBox strview VBSEnd 相信大家都可以通过插件的函数名称判断函数的作用,以上代码很简单,我不做过多讲解了哈 下部分,轮到windows插件,我会详细讲解“窗体位置”的概念 按键插件《扫雷》系列二【窗口位置】 按照惯例,首先介绍下“窗口坐标系”、“窗口工作区”和“窗口客户区”的概念,最后给出自动扫雷脚本。 “窗口坐标系”是我自创的描述词,术语叫什么我还真不清楚。这个概念很容易理解,我们都知道桌面分辨率,分辨率越高,显示的 桌面内容就越多。我们也知道,窗口是“摆放”在桌面上的,甚至可以超出桌面范围(比如随意把一个窗口拖到桌面之外)。而窗口坐标系就 是窗口摆放在桌面的位置。假设桌面是1024×768,那么桌面左上角坐标就是0,0。桌面右下角坐标就是1023×767(因为是从0开始)。这样, 窗口所在桌面的坐标就是“窗口坐标系”了。 “窗体工作区”和“窗体客户区”,这两个词从字面上很难理解,微软的官方文档就是这么叫的。我用一张图来表示工作区和客户区 有什么不同。 从上图可以看出,工作区包含了窗体的四条边框,上面的边框最宽,叫做标题栏,其他的边框只有窄窄的一条。为什么要区分工作区 和客户区呢?大家会议下XP系统默认的标题栏高度和98/2000系统默认的标题栏高度就明白了。也就是说,我们编写按键脚本的时候,直接从客 户区入手,这样就不用考虑标题栏高度和四条窗体边框的问题了。 下面的脚本例子,建议大家输出看看结果,对理解工作区和客户区有帮助: //************************** //*窗体工作区 与 窗体客户区* //************************** // //启动扫雷 VBSCall RunApp(\"winmine.exe\") //等待扫雷启动完毕 Delay 500 dim hwnd Plugin hwnd=Window.Find(\"扫雷\扫雷\") //移动扫雷窗口到0,0位置 Plugin Window.Move(hwnd,0,0) dim winrect, clirect //获得windows区域 Plugin winrect=Window.GetWindowRect(hwnd) //获得client区域 Plugin clirect=Window.GetClientRect(hwnd) MessageBox \"窗体工作区:\" & winrect & vbcrlf & \"窗体客户区:\" & clirect 明白了基本概念之后,下面给出扫雷脚本的鼠标控制例子: //********************************** //* 以下例子只支持xp操作系统中扫雷 * //********************************** // //hwnd中保存扫雷游戏的窗体句柄 Dim hwnd //查找《扫雷》的窗体句柄 Plugin hwnd=Window.Find(\"扫雷\扫雷\") If hwnd=0 MessageBox \"扫雷游戏没有打开哟!\" EndScript EndIf //获取扫雷窗口位置 dim cliectRect Plugin cliectRect=Window.GetClientRect(hwnd) //rx, ry保存雷区左上角第一个雷的坐标 dim rx, ry //按“|”分割字符串 dim tmp tmp=split(cliectRect,\"|\") //:是VB里的一种多行语句写成一行的用法,同样试用于按键脚本 rx=cint(tmp(0))+20 : ry=cint(tmp(1))+60 //x, y中分别保存当前扫雷的长与宽的格子数量 Dim x, y Plugin x=Memory.Read32Bit(hwnd,&h1005334) Plugin y=Memory.Read32Bit(hwnd,&h1005338) //建个双重循环,循环所有格子,这里用VB的循环会很方便,所以加入vbsbegin块 Import Memory.dll VBSBegin Dim i, j, value For i=0 to x-1 For j=0 to y-1 value=Memory.Read8Bit(hwnd,&h1005360+(j+i*32+1)) '//F==非雷 If value<>&hF&then MoveTo rx+j*16,ry+i*16 Delay 100 RightClick 1 Delay 100 End If Next Next VBSEnd 如果上一章的内容弄懂了,这篇还是真容易理解的。 下章,准备说一下“消息循环”机制,和用消息控制扫雷 按键插件《扫雷》系列二【窗口消息】 新人总会在论坛里看到后台挂机,后台消息,到底消息是什么,为什么可以实现后台,是本章描述的重点。同样最后会给出消息的扫 雷例子。 消息,在windows里占有至关重要的位置,可以说windows就是由消息驱动的。消息,顾名思义,就是通知、告知某个窗体或某个控件 现在应该接到了什么命令。windows的消息非常的多,有鼠标移动的,键盘按下弹起的,有窗口位置移动的,改变窗体大小,最小化,最大化等 。可以说,所能看到的桌面窗体变化、鼠标键盘操控,最终体现在windows里的都是消息。 windows掌管一个大的消息循环,为理解方面,我用一张草图描述这个流程: 由上图可知,消息最终发送到每个窗体,每个窗体接到这个消息命令后,怎么处理那都是各个窗体自己的活了。但是前面的部分确是 由windows掌管的。 明确了以上的内容,大家应该知道为什么有些游戏用消息不好使,有些游戏游戏用消息好使了。如果游戏自己做了某种判断,或者有 些反外挂的程序在运行(比如NP),那么消息对其无效,可以简单理解,游戏对消息做了过滤(这么描述不准确,但我们只要知道了这点,就 足够了,如想了解更多消息的内容,百度上有很多文章)。所以,消息不是所有游戏都通用的。 接下来说另外一个概念,窗口的组成。我们可以看到一个窗口,并且拖拉,最小化它。但是这个窗口,不一定由一个窗体组成。比如 IE浏览器,IE浏览器就好比一个房子,里面有很多房间,每个房间就是一个窗体,这些房间共同组成了房子。用过VB的朋友,应该很容易理解 。每拖的一个控件,都有独立的窗口句柄(句柄的概念在后面会讲到),只有table除外。只有游戏不同,一般的游戏,通常只有一个窗体,因 为是DX成像,反到不需要这许多控件。什么是DX成像?就是用DX把要显示的画面,画到窗体上。 以上内容说的非常混乱,简单理解就是,普通应用程序有很多个窗口组成一个大的窗口。而游戏,一般只有一个窗口。 这么多窗口,windows怎么知道哪个是哪个呢?聪明的windows引入了“窗体句柄”的概念。一个窗口对应一个数字,这个数字在文档 中就叫做句柄了。注意,没有一个句柄是相同的,好像门牌号一样,这样就可以顺利区分到底在给哪个窗口发送消息了。还有一点也非常重要 ,这个句柄是windows随机分配的,有效期只在这个窗口销毁前。换句话说,窗口A只要存在,那么他的句柄就是固定的,如果关闭、再启动窗 口A,那么窗口A的句柄就会变化。假如连续启动了3个窗口A,那么3个窗口A的句柄也不一样。 罗里八梭的说了这么多,也不知道大家是否有看明白。如果没看明白,就回头再看一遍,还看不明白,跟帖留言。 总结一下我前面所说的东西: 1、windows掌管消息分发,发到窗口后,由窗口自行处理 2、一个窗口,可能由1-N个窗口组成 3、每个窗体句柄,标识一个窗体或控件 4、窗体句柄的生存周期,就是窗体的生存周期 5、同窗体每次启动,其句柄并不相同 我使用了361的后台消息插件,不多废话,直接上例子: //********************************** //* 以下例子只支持xp操作系统中扫雷 * //********************************** // //hwnd中保存扫雷游戏的窗体句柄 Dim hwnd //查找《扫雷》的窗体句柄 Plugin hwnd=Window.Find(\"扫雷\扫雷\") If hwnd=0 MessageBox \"扫雷游戏没有打开哟!\" EndScript EndIf //x, y中分别保存当前扫雷的长与宽的格子数量 Dim x, y Plugin x=Memory.Read32Bit(hwnd,&h1005334) Plugin y=Memory.Read32Bit(hwnd,&h1005338) //建个双重循环,循环所有格子,这里用VB的循环会很方便,所以加入vbsbegin块 Import Memory.dll Import BGKM5.dll VBSBegin Dim i, j, value For i=0 to x-1 For j=0 to y-1 value=Memory.Read8Bit(hwnd,&h1005360+(j+i*32+1)) '//小于&h80的,都不是雷 If value<&h80& then //这里的20和60大家体会一下,16是雷格式的间距:) BGKM5.LClick hwnd,20+j*16,60+i*16 Else BGKM5.RClick hwnd,20+j*16,60+i*16 End If Next Next VBSEnd 有没有发现代码居然比上一章的简单,没错,对消息来说,只需要知道给出这个控件偏移的x,y然后点击就可以了。 最后说一下,扫雷只有一个窗口,而且带有游戏性,这也是为什么我拿扫雷做例子的原因:) 网络游戏循环找图找坐标详细教程(供新手学习) 拜读了LZ的贴以后深感LZ的无私奉献把这么核心的能发出来,我总结上贴把LZ的所发的精简写成源码发出来!图的部 分大家自己抓 [General] Description=我的脚本 BeginHotkey=121 BeginHotkeyMod=0 PauseHotkey=0 PauseHotkeyMod=0 StopHotkey=123 StopHotkeyMod=0 RunOnce=1 EnableWindow= Enable=1 AutoRun=0 [Repeat] Type=0 Number=1 [Relative] SetupOCXFile= [Comment] Content= 图片自己加好了 [Script] VBS dim s(4),t, x1, y1 VBS s(0)=\"0\":s(1)=\"1\":s(2)=\"2\":s(3)=\"3\":s(4)=\"k\" VBS t=0 Rem 1 If t>4 Else VBSCall FindPic(0,0,650,502,\"Attachment:\\\"&s(t)&\".bmp\ If x1>0 and y1>0 Else [url=file://\\\\MessageBox]\\\\MessageBox[/url] t VBS t=t+1 Goto 1 EndIf EndIf 《蜀门》辅助脚本源码 //现在发一个目前很红的游戏《蜀门》辅助脚本源码,纯颜色版无封号危险,功能很简单,不过简单游上跟这个差不多的也要5块一星期。 //使用时到按键精灵官方网下载个按键精灵安装,打开,新建个脚本,选源文件,把源码帖在里面就好了。在右边下方有设置选项。 Delay 64 Plugin ckjb=Window.Foreground() Plugin ckbk=Window.GetWindowRect(ckjb) VBS ckbka=split(ckbk,\"|\") bkx1=ckbka(0): bky1=ckbka(1): bkx2=ckbka(2): bky2=ckbka(3) Delay 64 VBS xxts=\"脚本初始化,请稍后............................................................\" Gosub 写信息 Delay 256 UserVar Hong=50 补血百分比 UserVar lan=50 补蓝百分比 UserVar DZ=DropList{打坐:0|吃药:1}=0 低血选项 UserVar ADZ=6 打坐按键(0--9) VBS ADZ=ADZ+48 UserVar HP=4 加血按键(0--9) VBS HP=HP+48 UserVar MP=5 加蓝按键(0--9) VBS MP=MP+48 UserVar JN=1 技能按键(0--9) VBS JN=JN+48 UserVar wpgq=20e72e 怪物光圈颜色(找物品用,光圈特征色) UserVar nzsz=DropList{随机选择:0|手动选择:1}=0 验证码处理方法 Delay 256 VBSCall FindColorEx(bkx1,bky1+32,bkx1+100,bky1+100,\"0300df\VBS hppx=Cint(hprx+hong*1.56): mppx=Cint(hprx+lan*1.56) Delay 256 Gosub HPMP Delay 64 Rem 开始主程序 Delay 100 VBSCall FindColorEx(hprX+280,hprY-4,hprX+283,hprY+4,\"0300df\Delay 16 If intX>0 VBS xxx=1 VBS xxts=\"锁定怪物,开始攻击......................................................................................\" Gosub 写信息 Delay 100 KeyPress JN,1 Delay 1000 Else Gosub 捡查验证 Delay 32 Gosub 找物 Delay 32 Gosub HPMP Delay 32 VBS xxx=0 KeyPress 9,1 Delay 128 EndIf Delay 64 Goto 开始主程序 Sub 打坐 Delay 1000 Rem g VBSCall FindColorEx(hprx+154,hpry,hprx+156,hpry+18,\"0100df\ Delay 16 VBSCall FindColorEx(hprx+154,hpry,hprx+156,hpry+18,\"e08901\ Delay 16 If hpuX>0 and hptx>0 Delay 200 Goto r Else Delay 800 Goto g EndIf EndIf Rem r Return 打坐 Sub 找物 VBS dim jwx(5), jwy(5) Delay 64 For 2 VBSCall FindColorEx(bkx1+100,bky1+100,bkx2-100,bky2-100,wpgq,0,0.6,WX,WY) Delay 64 EndFor If WX>0 VBS jwx(0)=0: jwy(0)=0: jwx(1)=30: jwy(1)=0: jwx(2)=-30: jwy(2)=5: jwx(3)=0: jwy(3)=30: jwx(4)=0: jwy(4)=-30 VBS cci=0 For 5 Delay 64 MoveTo jwx(cci)+WX,jwy(cci)+WY Delay 32 VBSCall vas=GetCursorShape(0) Delay 32 If vas=876372781 VBS xxts=\"发现物品.....................................................................................\" Gosub 写信息 Delay 64 RightDown 1 Delay 16 RightUp 1 Delay 64 Goto 捡 EndIf VBS cci=cci+1 EndFor EndIf Rem 捡 Delay 512 Plugin XY = Color.FindShape(bkx1+300,bky1+300,bkx2-200,bky2-200, \"-5|0|0,-3|0|0,-1|0|0,1|0|0,3|0|0,5|0|0,7|0|0,9|0|0,11|0|0,13|0|0,15|0|0,17|0|0,19|0|0,21|0|1,23|0|0,25|0|0,27|0|0,29|0|0,31|0|1,33|0|1,35|0|1,37|0|0,39|0|0,41|0|0,43|0|0,-5|2|0,-3|2|0,-1|2|0,1|2|0,3|2|0,5|2|0,7|2|0,9|2|0,11|2|0,13|2|0,15|2|0,17|2|1,19|2|1,21|2|1,23|2|0,25|2|1,27|2|1,29|2|0,31|2|0,33|2|0,35|2|1,37|2|1,39|2|0,41|2|0,43|2|0,-5|4|1,-3|4|0,-1|4|1,1|4|1,3|4|0,5|4|1,7|4|1,9|4|1,11|4|1,13|4|1,15|4|0,17|4|0,19|4|0,21|4|1,23|4|1,25|4|1,27|4|1,29|4|1,31|4|0,33|4|0,35|4|1,37|4|1,39|4|0,41|4|0,43|4|0,-5|6|0,-3|6|0,-1|6|0,1|6|0,3|6|0,5|6|0,7|6|0,9|6|1,11|6|1,13|6|0,15|6|0,17|6|1,19|6|1,21|6|1,23|6|0,25|6|1,27|6|1,29|6|0,31|6|0,33|6|0,35|6|1,37|6|1,39|6|1,41|6|0,43|6|0,-5|8|0,-3|8|0,-1|8|0,1|8|0,3|8|0,5|8|0,7|8|0,9|8|0,11|8|0,13|8|0,15|8|1,17|8|1,19|8|0,21|8|1,23|8|0,25|8|0,27|8|0,17|10|0,19|10|1,21|10|1,23|10|0,25|10|1,27|10|1,29|10|0,31|10|0,33|10|0,35|10|1,37|10|0,39|10|0,41|10|1,43|10|0\ MyArray = Split(XY, \"|\") OKX = Clng(MyArray(0)): OKY = Clng(MyArray(1)) Delay 64 If OKX>0 Delay 64 MoveTo OKX,OKY Delay 64 LeftClick 1 EndIf Delay 64 Return 找物 Sub HPMP VBSCall FindColorEx(hppx,hpry,hppx+1,hpry+8,\"01006e\ If hpcX>0 Delay 128 Else If DZ=0 VBS xxts=\"血太少,打坐吧..........................................................................................................\" Gosub 写信息 Delay 512 KeyPress ADZ,1 Gosub 打坐 Else KeyPress HP,1 Delay 128 EndIf EndIf VBSCall FindColorEx(hppx,hpry+10,hppx+1,hpry+18,\"6d4100\ If mpcX>0 Delay 128 Else If DZ=0 VBS xxts=\"蓝太少,打坐......................................................................................................\" Gosub 写信息 Delay 512 KeyPress ADZ,1 Gosub 打坐 Else KeyPress MP,1 Delay 128 EndIf EndIf Return HPMP Sub 写信息 Delay 64 Plugin Msg.ShowScrTXT(bkx1+300,bky1+4,bkx1+800,bky1+22,xxts,\"0000ff\") Delay 64 Return 写信息 Sub 移动一下 MoveTo (bkx2-bkx1)/2+100,(bky2-bky1)/2+100 Delay 128 LeftClick 1 Delay 128 Return 移动一下 Sub 捡查验证 Delay 16 Plugin XY = Color.FindShape(bkx1, bky1+150, bkx2, bky2-150, \"0|0|1,2|0|1,4|0|1,6|0|1,8|0|1,10|0|0,12|0|0,14|0|0,16|0|1,18|0|0,20|0|0,22|0|0,24|0|0,26|0|0,28|0|0,30|0|1,32|0|0,34|0|0,36|0|0,38|0|1,40|0|1,42|0|1,44|0|0,0|2|1,2|2|1,4|2|1,6|2|1,8|2|0,10|2|0,12|2|1,14|2|1,16|2|1,18|2|1,20|2|1,22|2|0,24|2|0,26|2|1,28|2|1,30|2|0,32|2|0,34|2|0,36|2|0,38|2|1,40|2|0,42|2|1,44|2|0,0|4|1,2|4|0,4|4|1,6|4|0,8|4|0,10|4|0,12|4|1,14|4|0,16|4|1,18|4|0,20|4|1,22|4|0,24|4|0,26|4|0,28|4|1,30|4|0,32|4|1,34|4|0,36|4|0,38|4|1,40|4|0,42|4|1,44|4|0,0|6|1,2|6|1,4|6|1,6|6|1,8|6|0,10|6|0,12|6|1,14|6|1,16|6|1,18|6|1,20|6|1,22|6|0,24|6|1,26|6|0,28|6|1,30|6|0,32|6|0,34|6|0,36|6|0,38|6|1,40|6|0,42|6|1,44|6|0,0|8|1,2|8|0,4|8|1,6|8|0,8|8|0,10|8|0,12|8|0,14|8|0,16|8|1,18|8|0,20|8|0,22|8|0,24|8|0,26|8|1,28|8|1,30|8|0,32|8|0,34|8|0,36|8|0,38|8|0,40|8|0,42|8|1,44|8|0,0|10|1,2|10|1,4|10|1,6|10|1,8|10|1,10|10|0,12|10|0,14|10|0,16|10|1,18|10|0,20|10|0,22|10|0,24|10|1,26|10|0,28|10|1,30|10|0,32|10|0,34|10|0,36|10|0,38|10|0,40|10|0,42|10|1,44|10|1\ VBS ccca = Split(XY, \"|\") VBS nzco = Clng(ccca(0)): nzcv = Clng(ccca(1)) Delay 16 If nzco>0 If nzsz=0 VBS xxts=\"出现验证码,你定义了随机选择,选择失败请等10分钟....................................\" Gosub 写信息 Delay 16 Gosub 随机选择 ElseIf nzsz=1 VBS xxts=\"出现验证码,你定义了手动处理,15秒后按任意键继续........................\" Gosub 写信息 Delay 16 For 7 KeyPress JN,1 Delay 1000 KeyPress JN,1 Delay 1000 EndFor WaitKey EndIf EndIf Return 捡查验证 Sub 随机选择 Delay 32 Randomize VBS szmjg = Int((999 * Rnd) + 1) Delay 32 Plugin XY = Color.FindShape(bkx1, bky1+150, bkx2, bky2-150, \"0|0|1,2|0|1,4|0|1,6|0|1,8|0|1,10|0|0,12|0|0,14|0|0,16|0|1,18|0|0,20|0|0,22|0|0,24|0|0,26|0|0,28|0|0,30|0|1,32|0|0,34|0|0,36|0|0,38|0|1,40|0|1,42|0|1,44|0|0,0|2|1,2|2|1,4|2|1,6|2|1,8|2|0,10|2|0,12|2|1,14|2|1,16|2|1,18|2|1,20|2|1,22|2|0,24|2|0,26|2|1,28|2|1,30|2|0,32|2|0,34|2|0,36|2|0,38|2|1,40|2|0,42|2|1,44|2|0,0|4|1,2|4|0,4|4|1,6|4|0,8|4|0,10|4|0,12|4|1,14|4|0,16|4|1,18|4|0,20|4|1,22|4|0,24|4|0,26|4|0,28|4|1,30|4|0,32|4|1,34|4|0,36|4|0,38|4|1,40|4|0,42|4|1,44|4|0,0|6|1,2|6|1,4|6|1,6|6|1,8|6|0,10|6|0,12|6|1,14|6|1,16|6|1,18|6|1,20|6|1,22|6|0,24|6|1,26|6|0,28|6|1,30|6|0,32|6|0,34|6|0,36|6|0,38|6|1,40|6|0,42|6|1,44|6|0,0|8|1,2|8|0,4|8|1,6|8|0,8|8|0,10|8|0,12|8|0,14|8|0,16|8|1,18|8|0,20|8|0,22|8|0,24|8|0,26|8|1,28|8|1,30|8|0,32|8|0,34|8|0,36|8|0,38|8|0,40|8|0,42|8|1,44|8|0,0|10|1,2|10|1,4|10|1,6|10|1,8|10|1,10|10|0,12|10|0,14|10|0,16|10|1,18|10|0,20|10|0,22|10|0,24|10|1,26|10|0,28|10|1,30|10|0,32|10|0,34|10|0,36|10|0,38|10|0,40|10|0,42|10|1,44|10|1\ VBS MyArray = Split(XY, \"|\") VBS Xznm = Clng(MyArray(0)): Yznm = Clng(MyArray(1)) Delay 32 If Xznm>0 If szmjg>0 and szmjg<250 VBS abcx=Xznm+10: abcy=Yznm+75 ElseIf szmjg>=250 and szmjg<500 VBS abcx=Xznm+10: abcy=Yznm+101 ElseIf szmjg>=500 and szmjg<750 VBS abcx=Xznm+10: abcy=Yznm+127 ElseIf szmjg>750 VBS abcx=Xznm+10: Yznm+153 EndIf Delay 256 MoveTo abcx,abcy Delay 32 LeftClick 1 Delay 256 MoveTo Xznm+154,Yznm+180 Delay 32 LeftClick 1 Delay 512 Plugin XY = Color.FindShape(bkx1, bky1+100, bkx2, bky2-100, \"0|0|1,2|0|1,4|0|1,6|0|1,8|0|1,10|0|0,12|0|0,14|0|0,16|0|1,18|0|0,20|0|0,22|0|0,24|0|1,26|0|1,28|0|1,30|0|1,32|0|0,34|0|0,36|0|0,38|0|0,40|0|1,42|0|0,44|0|1,46|0|0,48|0|1,50|0|0,52|0|0,54|0|0,56|0|1,58|0|0,60|0|1,62|0|0,64|0|0,66|0|0,68|0|0,70|0|0,72|0|0,74|0|0,76|0|0,78|0|0,80|0|0,82|0|0,84|0|0,86|0|0,88|0|1,90|0|1,92|0|1,0|2|1,2|2|0,4|2|1,6|2|0,8|2|1,10|2|0,12|2|0,14|2|0,16|2|1,18|2|0,20|2|0,22|2|0,24|2|1,26|2|1,28|2|0,30|2|1,32|2|0,34|2|0,36|2|0,38|2|1,40|2|1,42|2|1,44|2|0,46|2|0,48|2|1,50|2|1,52|2|0,54|2|1,56|2|1,58|2|0,60|2|0,62|2|0,64|2|0,66|2|0,68|2|0,70|2|0,72|2|1,74|2|0,76|2|0,78|2|0,80|2|0,82|2|0,84|2|1,86|2|0,88|2|1,90|2|1,92|2|1,0|4|1,2|4|0,4|4|1,6|4|0,8|4|1,10|4|0,12|4|0,14|4|0,16|4|1,18|4|0,20|4|0,22|4|0,24|4|1,26|4|1,28|4|0,30|4|1,32|4|0,34|4|0,36|4|0,38|4|1,40|4|1,42|4|1,44|4|0,46|4|0,48|4|1,50|4|1,52|4|1,54|4|1,56|4|1,58|4|0,60|4|1,62|4|1,64|4|0,66|4|0,68|4|0,70|4|0,72|4|1,74|4|0,76|4|1,78|4|0,80|4|1,82|4|0,84|4|1,86|4|1,88|4|1,90|4|1,92|4|1,0|6|1,2|6|0,4|6|1,6|6|0,8|6|1,10|6|0,12|6|0,14|6|0,16|6|1,18|6|0,20|6|0,22|6|0,24|6|1,26|6|1,28|6|1,30|6|1,32|6|1,34|6|0,36|6|0,38|6|0,40|6|0,42|6|0,44|6|0,46|6|0,48|6|1,50|6|0,52|6|0,54|6|0,56|6|1,58|6|0,60|6|0,62|6|1,64|6|0,66|6|0,68|6|0,70|6|0,72|6|1,74|6|0,76|6|1,78|6|0,80|6|1,82|6|0,84|6|1,86|6|0,88|6|1,90|6|0,92|6|1\ VBS MyArray = Split(XY, \"|\") VBS BBX = Clng(MyArray(0)): BBY = Clng(MyArray(1)) Delay 32 If BBX>0 xxts=\"验证码选择失败,等待10分钟.....................................................\" Gosub 写信息 Delay 128 Gosub 等待 EndIf EndIf Return 随机选择 Sub 等待 VBS tt4=now Rem ddsj If datediff(\"s\ Delay 512 Goto ddw Else Delay 512 Gosub HPMP Delay 128 Goto ddsj EndIf Rem ddw Return 等待 学习网络游戏找 怪 的思路方法(按键精灵脚本技术) 很多朋友都不知道如何在游戏中用按键精灵 找怪物 请看下面哦 对一些找怪的思路小有体会。简单来说找怪就是找怪与背景不同的独有的特征,可以通过找怪的颜色/图片、怪名字颜色/图片、怪血条颜色/图片、渐开线扫描、小地图找怪等等的方法来实现。具体看游戏而定,下面就介绍几种找怪的方法: 1。区域找色 应该说是最简单的找怪方法了,在区域里查找怪的特有颜色、名字颜色、血条颜色、怪的阴影等等。如果找到移动鼠标到怪身上进行攻击 (推荐用区域模糊找色或从区域中间向外找色)。 例子(区域模糊找色): VBSCall FindColorEx(0,0,1024,768,\\\"FFFFFF\\\ //区域模糊找色,0,0,1024,768为区域范围,\\\"FFFFFF\\\"为颜色,1为查找方式(中间向外),0.8为模糊值,x,y为找色后储存坐标的变量 If x>=0 and y>=0 //如果找到颜色(通过判断坐标变量是否在区域内就可以知道有没有找到目标) MoveTo x y //把鼠标移动到该色的坐标(如果找的是怪名字或血条,可能移动不到怪身上,这时就要用鼠标偏移如:MoveTo x+10 y+10) Delay 50 //延时 LeftClick 1 //左键单击进行攻击 EndIf //条件结束 用数组区域查找多色:点击查看 注: ①。区域范围的定位: 区域范围指的是被搜索区域的范围,这4个参数分别指的是区域的左,上,右,下。简单的说就是取区域的左上角x,y坐标和右下角的x,y坐标,把这4个数值依次组合起来就是一个区域范围了。 ②。很多朋友对最后两个坐标变量x,y不太了解,在这里通俗的解释一下: 顾名思义,这两个变量是用来贮存找色或找图后的坐标。当找到目标后,把目标所在的坐标位置贮存到这两个变量里,然后可以通过判断这两个坐标变量是否在区域范围内来确定是否找到了目标。如果找到目标,贮存的是目标所在的坐标位置。如果没有找到,那贮存的则是-1,所以我们也可以通过 if x=-1 and y=-1 来判断没有找到目标。 2。区域找图 在区域里查找怪的图形、怪的名字图片、血条图片等等。语法与区域找色相似,需要注意的是图片的处理,这里有两个教程可以参考一下 教程①,教程②。 图片做好后可以放在按键文件夹里的script文件夹中,就可以不用在脚本里写图片路径,只需图片名就行了,写脚本的时候比较方便。 例子(区域找图): VBSCall FindPic(0,0,1024,768,\\\"1.bmp\\\ //区域找图,0,0,1024,768为区域范围,\\\"1.bmp\\\"为图片名(路径),0.9为找图的相似度,x,y为找图后储存坐标的变量 If x>=0 and y>=0 //如果坐标在区域内(找到图片) MoveTo x y //移动到图片位置(图片左上角) Delay 50 //延时 LeftClick 1 //左键单击 EndIf //条件结束 3。圆形渐开线扫描找怪法 效率较低,这里有个较完整的例子可以参考一下 4。圆形渐开线扫描找变色怪 效率较低,下面是我以前收集的一个找变色怪的例子。 VBS dim x0,n,y0,x,color0,color //声明变量 Rem start //标记渐开线找怪开始 VBS x0=400:n=1:y0=300:x=400 //变量初始化 While x<800 //限定横坐标范围不超过800 VBS x=x0+4*(cos(n)+n*sin(n)) //根据渐开线公式计算下一个点的横坐标并赋值给x VBS y=y0+3*(sin(n)-n*cos(n)) //根据渐开线公式计算下一个点的纵坐标并赋值给y VBSCall color0=GetPixelColor(x,y) //在鼠标移动之前,获取目标点色值并赋值给color0 VBSCall Call SetCursorPos(x,y) //马上移动鼠标到目标点 VBSCall color=GetPixelColor(x,y) //获取鼠标移动后该点色值并赋值给color If color<>color0 //同一点取得的两次色值比较,不同,则执行以下的打怪脚本 LeftClick 1 //左键单击 Delay 3000 //打怪延时 EndIf //该点判断结束 Delay 10 //循环延时 VBS n=n+0.2 //渐开线参数增量,其中0.2代表点间距,数值越小,渐开线散开点间距越小 EndFor //一次渐开线取点判断结束 Goto start //跳转到开始,重复渐开线搜索 5。小地图找怪 公式:大地图怪坐标 = (小地图怪坐标 - 小地图人物坐标) * 比例 + 大地图人物坐标 比例是(大地图怪坐标和大地图人物坐标之间的距离)与(小地图怪坐标和小地图人物坐标之间的距离)这两者的比例。如下图 A线与B线的比例。用小地图找怪所需的计算数据必须比较准确。 然后用区域找色查找小地图上怪的小点(最好用从区域中心向外找色),找到怪的小点后再计算坐标,计算得出大地图坐标后,移动鼠标到怪身上打怪。 下载 (340.32 KB) 2007-6-24 18:34 例子(小地图找怪): VBSCall FindCenterColor(858,66,996,192,\\\"0000FF\\\//区域从中间向外找色,858,66,996,192是小地图的区域范围 If x>=0 and y>=0 //如果找到颜色 x0=(x-926)*10+512 y0=(y-129)*10+389 //计算大地图怪的坐标 MoveTo x0 y0 //移动到大地图怪的坐标 Delay 50 //延时 LeftClick 1 //左键单击进行攻击 EndIf //条件结束 特别注意:移动到怪位置后用“鼠标特征码比对”可有效提高找怪的准确性。(可用于所有找怪方式内) 我暂时就写这几个了,当然找怪的方法不止这几种而已,欢迎大家一起来独立团讨论与分享~! 因篇幅问题不能全部显示,请点此查看更多更全内容