当前位置:文档之家› 脚本制作教程:按键精灵加速游戏

脚本制作教程:按键精灵加速游戏

精心整理
脚本制作教程:按键精灵加速游戏

来源:按键学院【按键精灵】
植物大战僵尸这款游戏,想必大家都不陌生
讲述的是一场植物与僵尸之间刻骨铭心的撕逼大战
是一款老少皆宜和善可爱的游戏……此处省略一万字……
但是,问题来了
等僵尸的过程也慢得太销魂了吧?
画面一点动感刺激感都木有,还怎么玩?~
和小编一样急性子的小伙伴们,一定忍受不住节奏如此缓慢的游戏,
怎么办呢?
凉拌炒鸡蛋!自己动手丰衣足食,咱们写个脚本让它快起来~
脚本界面效果图
今天的脚本例子是用按键精灵仿写一个《变速精灵》,是咱们的大姐大工程师01制作的。界面十
分骚气~~
『1』下拉列表框用于显示当前电脑上运行的程序的窗口标题
『2』刷新按钮用于重新获取当前电脑上运行的程序的窗口标题
『3』"滑块"用于调整速度,往左是减速,往右是加速。(大尺度调整)
『4』快和慢这两个蓝色的按钮,也是用于调整速度的,与滑块的区别在于:滑块可以一次性拉动
很大的范围,而按钮是精确调整的,每一次点击增/减一个单位的速度。
『5』 恢复"按钮",用于将速度归零。
变速命令
变速命令是官方新插件里的 SysEx系统插件增强版 下的命令:Speed
精心整理
命令名称 Speed 变速
命令功能 为指定窗口的运行速度设置加速或减速(对网游无效)

命令参数
参数1:窗口句柄
参数2:变速倍数

返回值 无

注意:速度的倍数,范围:-256~256,保留小数点后3位,可以实现1.001、1.002倍速度。

获取窗口句柄

当我们点击刷新按钮的时候,则获取当前运行中的所有程序的窗口句柄,并且将窗口的标题名添加
到下拉列表框中。
我们用 FindEx查找窗口句柄 命令遍历获取桌面下的第一级子窗口句柄(桌面句柄:0)

但是,我们看到,这些窗口中有许多窗口是我们看不见的,甚至都不知道它是做什么用的。
那我们就没有必要获取它了,只要获取到可见的程序窗口句柄即可。
在遍历获取窗口句柄的过程中,加一个判断,
利用 GetWindowState获取窗口状态命令,判断当前窗口的状态,是否为可见的,如果是可见
的窗口,则记录下该窗口的窗口句柄和窗口标题。

滑块拖动
为了让界面更加的赏心悦目,所以滑块实际上是一张图片并不是真正的滑块按钮
我们要实现,拖动滑块图片,往左右移动的时候,滑块图片会跟随着鼠标移动。
步骤:
『1』当我们点住滑块这张图片时,获取当前鼠标位置。
『2』启动计时器,计时器的时间间隔设置为50毫秒。
『3』在计时器的Timer事件里再次获取当前鼠标位置,对比两次获取鼠标位置之间横坐标的差值。
『4』将滑块图片的横坐标 加上 两次鼠标位置之间的横坐标差值。
精心整理
『5』检测鼠标左键是否弹起,如果弹起则将计时器的Enabled属性

设置为假。
整体代码
//调试运行事件子程序
//SubOnScriptLoad()
//Form1.Show
//EndSub
Form1.Show
EndScript
//《》-------------界面加载事件
EventForm1.Load
当前句柄=0
CallForm1.刷新.Click
EndEvent
//《》-------------还原变速
EventForm1.恢复速度.Click
Form1.恢复速度.Visible=False
Form1.滑块.Left=196
Form1.速度值.Caption="0倍数"
Call(当前句柄,0)
EndEvent
Form1.恢复速度.Visible=True
EndEvent
//《》-------------减速
EventForm1.慢.Click
Form1.滑块.Left=Form1.滑块.Left-1
IfForm1.滑块.Left<=16ThenForm1.滑块.Left=16
Form1.速度值.Caption=Form1.滑块.Left-196&"倍数"
//设置指定窗口(Hwnd)加速到100倍
Call(当前句柄,Form1.滑块.Left-196)
EndEvent
//《》-------------加速
EventForm1.快.Click
Form1.滑块.Left=Form1.滑块.Left+1
IfForm1.滑块.Left>=296ThenForm1.滑块.Left=296
Form1.速度值.Caption=Form1.滑块.Left-196&"倍数"
//设置指定窗口(Hwnd)加速到100倍
Call(当前句柄,Form1.滑块.Left-196)
EndEvent
//《》-------------滑块变速
EventForm1.滑块.Click
GetCursorPosqx,qy
hx=Form1.滑块.Left
EndEvent
精心整理
GetCursorPosx,y
dx=x-qx
Ifhx+dx<=16Then
Form1.滑块.Left=16
ElseIfhx+dx>=296Then
Form1.滑块.Left=296
Else
Form1.滑块.Left=hx+dx
EndIf
Form1.速度值.Caption=Form1.滑块.Left-196&"倍数"
//设置指定窗口(Hwnd)加速到100倍
Call(当前句柄,Form1.滑块.Left-196)
mouse=GetLastClick()
Ifmouse=32770Then
=False
EndIf
EndEvent
//《》-------------刷新窗口标题
EventForm1.刷新.Click
CallForm1.恢复速度.Click
Form1.窗口标题.List="0-空|"
s="0-空|"
当前句柄=0
EndEvent
er
Do
Hwnd1=(0,Hwnd1,0,0)
IfHwnd1=0Then
Form1.窗口标题.List=s
Form1.窗口标题.ListIndex=0
ExitDo
Else
iState=(Hwnd1,2)
IfiState=TrueThen
sText=(Hwnd1)
IfsText<>""Thens=s&Hwnd1&"-"&sText&"|"
EndIf
EndIf
Loop
EndEvent
//《》-------------选择窗口标题
EventForm1.窗口标题.SelectChange
CallForm1.恢复速度.Click
Dim索引
索引=Split(Form1.窗口标题.List,"|")
当前句柄=split(索引(Form1.窗口标题.ListIndex),"-")(0)
Call(当前句柄,Form1.滑块.Left-196)
精心整理
EndEvent
//《》-------------界面关闭后停止变速
EventForm1.UnLoad
CallForm1.恢复速度.Click
EndEvent

注意:变速命令,并不是说对所有的网游都无效的,

变速游戏会影响到游戏的这些地方:
1、过场景时的速度快慢
2、动作效果的快慢,比如:跳舞,花草舞动等
3、技能释放速度可能会提高

温馨提示:现在的网游都比较敏感,99%的网游对变速都有检测,所以不建议在没安全措施的防
护下进行尝试。

相关主题