罗技游戏软件 LUA脚本编程 从入门到放弃 篇四:鼠标定位与移动

您所在的位置:网站首页 鼠标多窗口同步怎么关闭 罗技游戏软件 LUA脚本编程 从入门到放弃 篇四:鼠标定位与移动

罗技游戏软件 LUA脚本编程 从入门到放弃 篇四:鼠标定位与移动

2023-08-21 09:23| 来源: 网络整理| 查看: 265

罗技游戏软件 LUA脚本编程 从入门到放弃 篇四:鼠标定位与移动 2017-05-20 20:00:00 36点赞 112收藏 42评论

鼠标定位与移动

距上一篇已经快一个月啦,原因有三~

一个是忙,宝宝更大了,已经习得连续滚翻天赋,没办法放床上或车上忽悠一会儿抽点时间出来了。

一个是懒,这个没药医。

还有一个,就是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。

下一期:坐标变换与一键换装鼠标定位与移动



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3