學習遊戲指令碼製作:按鍵精靈鍵鼠同步器原始碼分享?

小編之前也有使用過其它大牛編寫的遊戲同步的指令碼,突然間對於它是如何實現同步感到十分好奇,我們一起來研究看看,同步到底是怎麼實現的吧~

工具/原料

按鍵精靈2014

方法/步驟

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.MoveTo(同步視窗, 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.MoveTo(同步視窗, 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-效果演示

演示

畫圖

記事本

注意 畫圖和記事本,獲取視窗控制代碼的時候請點選白白的客戶區進行獲取,因為我們是要對它的客戶區進行操作

學習遊戲指令碼製作:按鍵精靈鍵鼠同步器原始碼分享

學習遊戲指令碼製作:按鍵精靈鍵鼠同步器原始碼分享

NO.6-溫馨小提示

溫馨小提示

* 遊戲視窗中的同步,需要注意幾個視窗中人物的朝向和座標是否相同

* 如果座標朝向不同,一個窗口裡的角色往西邊走一個往北邊走,就無法達到預期同步任務的效果

指令碼, 原始碼, 按鍵精靈, 鍵鼠,
相關問題答案