如何在 LUA 中绑定按键或防止 IsMouseButtonPressed 读取 PressAndReleaseMouseButton 事件?
2020-5-17 4:44:53
收藏:0
阅读:199
评论:2
正如标题所述,我需要能够执行其中的两个操作,但不知道如何执行。基本上我的问题是,如果脚本本身正在使用“PressAndReleaseMouseButton(1)”,则不能使用“IsMouseButtonPressed(1)”来确定是否执行脚本的一部分。
因此,我需要一种方法在脚本期间让我的鼠标按钮执行其他操作,或者我需要防止“IsMouseButtonPressed(1)”读取诱发的鼠标单击。我真的只希望它检查物理鼠标的状态。这是可能的吗?我正在使用 Logitech 游戏软件中的 LUA。
编辑:我正在添加一个使用我从 Joseph 学到的内容的示例代码。我不知道为什么这不起作用。幸运的是,没有错误。
local fakePressStatus = {}
local function IsMouseButtonReallyPressed(b)
return fakePressStatus[b] == nil and IsMouseButtonPressed(b)
end
local function FakePressAndReleaseMouseButton(b)
fakePressStatus[b] = (fakePressStatus[b] or 0) + 1
PressAndReleaseMouseButton(b)
end
function OnEvent(event, arg)
if event == "MOUSE_BUTTON_RELEASED" then
if fakePressStatus[b] == 1 then
fakePressStatus[b] = nil
elseif fakePressStatus[b] ~= nil then
fakePressStatus[b] = fakePressStatus[b] - 1
end
end
if IsMouseButtonReallyPressed(1) then
for i = 0, 10 do
if IsMouseButtonReallyPressed(1) then
FakePressAndReleaseMouseButton(1)
Sleep (100)
else
i = 10
end
end
end
end
点赞
用户1847592
我需要防止“IsMouseButtonPressed(1)”读取一个人为的鼠标点击。
这是不可能的。
但是有一个变通方法:可以为同一个操作添加替代按钮作为LMB。
例如,如果LMB表示“开火”,则在游戏中添加键“P”作为开火的替代方式。
如果事件 ==“MOUSE_BUTTON_PRESSED”和参数== 1,那么
对于i = 0到10 do
睡眠(100)
如果不是IsMouseButtonPressed(1),则打破结束
按键(“P”)
睡眠(20)
释放键(“P”)
结束
结束如果
您可以通过按下LMB进行第一枪,而脚本将通过在循环中编程按下“P”来进行第2、第3、……发射。
2020-05-19 01:08:41
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

以下是中文翻译并且保留原本的 markdown 格式:
设置变量来追踪假按下/释放的状态,像这样:
local fakePressStatus = {} local function IsMouseButtonReallyPressed(b) return fakePressStatus[b] == nil and IsMouseButtonPressed(b) end local function FakePressAndReleaseMouseButton(b) fakePressStatus[b] = (fakePressStatus[b] or 0) + 1 PressAndReleaseMouseButton(b) end EnablePrimaryMouseButtonEvents(true) function OnEvent(event, arg) if event == "MOUSE_BUTTON_RELEASED" then if fakePressStatus[b] == 1 then fakePressStatus[b] = nil elseif fakePressStatus[b] ~= nil then fakePressStatus[b] = fakePressStatus[b] - 1 end end end然后在任何需要使用
PressAndReleaseMouseButton和IsMouseButtonPressed的地方,只需使用FakePressAndReleaseMouseButton和IsMouseButtonReallyPressed。