学习游戏脚本制作:按键精灵键鼠同步器源码分享

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习游戏脚本制作:按键精灵键鼠同步器源码分享

来源:按键学院【按键精灵】小编之前也有使用过其它大牛编写的游戏同步的脚本,突然间对于它是如何实现同步感到十分好奇,我们一起来研究看看,同步到底是怎么实现的吧~

NO.1-同步的前提

前提

1同步的两个窗口需要是同一个应用窗口,并且窗口大小要相同

2同步窗口可以接收到按键的键鼠发送信息

3同步的窗口支持后台键鼠操作

NO.2-本节例子及其能实现的功能

例子

1画图工具,实现同步画图

2记事本,实现同步删除内容

功能①键鼠同步

②支持组合键

NO.3-思路大剖析

思路步骤

1获取主窗口和被同步窗口句柄

● WaitKey 命令等待键盘按下

○按下F6则获取当前鼠标指向的窗口句柄,作为主窗口句柄。

○按下F7 则获取当前鼠标指向的窗口句柄,作为同步窗口句柄。

●用Do循环来等待按键,当主窗口句柄和同步窗口句柄都获取到时,退出Do循环

●代码

Do

Key = WaitKey()

If Key = 117 Then

主窗口= Plugin.Window.MousePoint()

End If

If Key = 118 Then

同步窗口= Plugin.Window.MousePoint()

End If

Delay 500

If 主窗口<> 0 and 同步窗口<> 0 Then

Exit Do

End If

Loop

2设置两个窗口的窗口大小一致

●窗口大小一致,同步的时候鼠标才能移动到正确的位置。

●代码

Call Plugin.Window.Size(主窗口,800,600)

Call Plugin.Window.Size(同步窗口,800,600)

3获取主窗口的左上角坐标

●GetWindowRect 命令获取主窗口的左上角坐标

●代码

sRect = Plugin.Window.GetWindowRect(主窗口)

dim MyArray

MyArray = Split(sRect, "|")

L = Clng(MyArray(0)): T = Clng(MyArray(1))

4获取当前鼠标在主窗口的位置

●GetCursorPos命令获取当前鼠标位置

●代码

GetCursorPos mx, my

5计算主窗口内当前鼠标位置和窗口左上角距离

●公式:当前鼠标位置减去窗口左上角坐标值( mx-L, my-T)

6开始同步

●被同步窗口,使用按键后台键鼠命令,将鼠标移动到和主窗口相同的位置

(按键后台命令鼠标移动是以窗口客户区左上角坐标为基点)

●代码

Call Plugin.Bkgnd.MoveT o(同步窗口, mx-L, my-T)

●在主窗口内按下任意键时,同步窗口也执行同样的操作

●代码

Key = GetLastKey()

Call Plugin.Bkgnd.KeyPress(同步窗口, Key)

NO.4-代码

代码

Do

Key = WaitKey()

If Key = 117 Then

主窗口= Plugin.Window.MousePoint()

//Call Plugin.Window.Size(主窗口,800,600)

End If

If Key = 118 Then

同步窗口= Plugin.Window.MousePoint()

// Call Plugin.Window.Size(同步窗口,800,600)

End If

Delay 500

If 主窗口<> 0 and 同步窗口<> 0 Then

Exit Do

End If

Loop

Do

Mouse = GetLastClick()

If Mouse = 32769 Then //鼠标左键按下时ASCII码为 32769

sRect = Plugin.Window.GetWindowRect(主窗口)

dim MyArray

MyArray = Split(sRect, "|")

L = Clng(MyArray(0)): T = Clng(MyArray(1))

GetCursorPos mx, my

Delay 10

Call Plugin.Bkgnd.LeftDown(同步窗口, mx-L, my-T)

Delay 10

Do

Mouse = GetLastClick()

If Mouse = 0 Then //鼠标无点击操作

GetCursorPos mx, my

Delay 10

Call Plugin.Bkgnd.MoveT o(同步窗口, mx-L, my-T)

Delay 10

End If

If Mouse = 32770 Then //鼠标左键弹起时ASCII码为 32770

GetCursorPos mx, my

Delay 10

Call Plugin.Bkgnd.LeftUp(同步窗口, mx-L, my-T)

Exit Do

End If

Loop

End If

Key = GetLastKey()

Call Plugin.Bkgnd.KeyPress(同步窗口, Key)

Loop

NO.5-效果演示

演示

画图

相关文档
最新文档