0

正如标题所示,我需要能够做两件事之一,但也不知道该怎么做。基本上我的问题是,如果脚本本身使用“PressAndReleaseMouseButton(1)”,我不能使用“IsMouseButtonPressed(1)”来确定是否执行脚本的一部分。

所以,我要么需要一种方法让我的鼠标按钮在脚本期间执行其他操作,要么我需要防止“IsMouseButtonPressed(1)”读取诱导的鼠标点击。我真的只是想让它检查物理鼠标的状态。这可能吗?我在罗技游戏软件中使用 LUA。

编辑:我正在使用我从约瑟夫那里学到的东西添加我的代码示例。我不知道为什么这不起作用。幸运的是,没有任何错误。

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
4

2 回答 2

0

我需要防止“IsMouseButtonPressed(1)”读取诱导的鼠标点击

不可能。

但是有一个解决方法:您可以为与 LMB 相同的操作添加替代按钮。
例如,如果 LMB 表示“开火”,则添加键“P”作为在游戏中开火的替代方式。

if event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
    for i = 0, 10 do
        Sleep (100)
        if not IsMouseButtonPressed(1) then break end 
        PressKey("P")
        Sleep (20)
        ReleaseKey("P")
    end
end

P您通过按 LMB 进行第一次拍摄,脚本将通过在循环中以编程方式按下来进行第二次、第三次……拍摄。

于 2020-05-19T01:08:41.307 回答
0

设置跟踪虚假新闻/发布的变量,如下所示:

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

然后只需使用FakePressAndReleaseMouseButtonandIsMouseButtonReallyPressed代替PressAndReleaseMouseButtonIsMouseButtonPressed无处不在。

于 2020-05-17T03:08:24.187 回答