羅技遊戲軟體 LUA腳本編程 從入門到放棄 篇四:滑鼠定位與移動
距上一篇已經快一個月啦,原因有三~
一個是忙,寶寶更大了,已經習得連續滾翻天賦,沒辦法放床上或車上忽悠一會兒抽點時間出來了。
一個是懶,這個沒藥醫。
還有一個,就是LGS的滑鼠坐標相關函數的參數系統,亂得一逼。特別是在雙屏的情況下,基本每個函數的參數用法都不一樣
我花了點時間整理了一下幾個函數的參數規律,適用於多顯示器的朋友參考。
如果你跟我一樣使用多顯示器,使用滑鼠移動、定位的相關函數之前,請務必看完,否則會一頭霧水。
如果你只有單顯示器……呃,差不多可以直接看下一期了。
GetMousePosition
首先我們來看僅有的、獲取滑鼠坐標的方式,GetMousePosition。
之所以要用這個函數,因為LGS里並非以屏幕像素坐標來作為參數,而是以0至65535為區間兩頭。
也就是說,假設你的滑鼠在屏幕右下角,以傳統的像素坐標系,它應該是x=1920,y=1080。但是在LSG的坐標系裡,它就是x=65535,y=65535。
並且,LGS的直接移動函數都是用的此等計算方法,所以如果你的取點和定位都用LGS來完成的話,或許還是離不開這個函數的。
或者,咱們可以用其他軟體取得像素坐標,然後通過數學換算的方式算得LGS的這個坐標系,也是可以的。
經過實戰,GetMousePosition這個函數以主顯示器左上角為原點(0,0),所以如果你的副顯示器在主顯左邊,則X軸就會變成負數。如果在右邊,則X軸會大於65535,以此類推。
MoveMouseTo
這個函數非常坑爹,它只能在主顯示器範圍內移動。
我的主顯示器是靠右的寬屏,無法移動到靠左的帶魚。
因為,傳負數進去函數會直接報錯,而官方文檔也寫了,如果接入了多個顯示器請用其他函數代替。
所以,如果你只有單顯示器,用GetMousePosition和MoveMouseTo函數即可。
但是如果你接了多顯,那就蛋疼了……請往下看。
MoveMouseToVirtual
根據官方文檔,這是唯一一個能在多顯示器狀態下,移動滑鼠到任意位置的函數。
但是經過實測,這個函數的參數規則,是以全桌面的最左上角為(0,0),說白了,和GetMousePosition函數是不一樣的。
也就是說,你用GetMousePosition函數辛辛苦苦抓取的坐標,在這個函數里是不能用的,必須要經過計算變換…………
能幹出這種事情來,LGS的工程師也算是人才了。估計這倆函數不是同一個人寫的,又沒有一個統籌的產品經理,於是這幾個奇葩的函數就這麼誕生了。
MoveMouseRelative
那麼,LGS非常「慈悲」的提供了另一個函數,以當前滑鼠坐標為原點,進行「相對移動」的函數。
但是奇葩的是,這個函數的坐標參數,使用的是像素,也就是屏幕像素,而非前面幾個函數的65535系統。
那麼毫無疑問了,這三個函數肯定是三個不同的程序員寫的,而且他們沒有一個產品經理……
而更更更更奇葩的是,這個函數的參數最多只能接受-127到128,也即一個位元組的0xFF。
如果你傳入了大於128的數字,則會溢出,129相當於-127,256相當於0,雖然不會報錯,但是絕對得不到想要的結果。
因為LUA都是要宿主導出函數的,如果宿主參數定義的時候,就只有一個位元組,那也就會變成這樣了。
--------------------------------------------------------------------------------------------------
說了那麼多,如果非要總結一下的話:
假如你是獨顯,或者多顯但腳本只用在主顯示器上,則問題不大,使用GetMousePosition函數獲取坐標之後,使用MoveMouseTo移動即可。
如果你的腳本有用在多顯器的非主顯示器上,則必須先使用GetMousePosition獲得一套坐標,經過算術變換,算得另一套坐標,再使用到MoveMouseToVirtual函數里。
本期就先用MoveMouseRelative來做一下守望屁股的一鍵轉身,下期再整理一份多屏情況下通用的變換函數和應用腳本。
由於MoveMouseRelative函數一次最多只能移動128個像素,為了方便調試,結合實測之後,大概是每次10個像素,182次移動可以轉大概180度……這個參數根據每個人的解析度、遊戲、滑鼠狀況等都有可能不一樣,只能自行實測了。
代碼和羅技的參考文檔都放到度盤裡了,車牌號1bp3oOP5。
下一期:坐標變換與一鍵換裝
※老司機的租車經歷 篇一:在德國#租車#的經歷
※我的手機攝影 篇二:手機攝影小配件&小套路
※浦發AE白&玩轉紅包
※雷克薩斯ES200鈦銀精英版購車記錄
TAG:什麼值得買 |
※MIUI開發版內置軟體批量移除腳本
※SQL注入與XSS跨站腳本的基本原理
※HERO引擎土城跑酷活動腳本
※Ai轉PSD格式完美保留圖層腳本插件
※REAPER 腳本實例:多功能滑鼠滾輪
※雲服務商封殺 AI 客戶:因判定其 Python 腳本是惡意腳本
※Python製作回合遊戲自動完成任務輔助腳本,進階篇
※命令行運行Python腳本時傳入參數的三種方式
※LINUX檢查一個進程內存增長的腳本
※DNF增幅+19神王十字架誕生?疑似修改遊戲面板,官方實錘開掛腳本
※從入門到上手寫腳本/爬數據/搭網站,有哪些快速學習Python的技巧
※Shell 腳本編程陷阱
※DHCP客戶端腳本代碼執行漏洞分析
※TA系列:搭積木——人生腳本的構建
※LOL:職業選手2台電腦輸給腳本?Bang的ID也涼了
※白宮腳本小子特朗普推翻奧巴馬網路攻擊審批流程
※機器人動畫的金字塔與動畫腳本界的超新星
※一個自動登錄的腳本
※月神腳本圈:用戰旗直播引流腳本,提高直播平台社交引流技術
※DNF二覺任務副本漏洞:角色無限疲勞值,工作室腳本刷遊戲幣