Skip to content

扩展开发教程:设置自定义瞄准判断条件 #52

@kiccer

Description

@kiccer

起步

如果脚本提供的推荐设置和游戏默认设置都不能满足你独特的开火方式,那么你就可以尝试自己写一个自定义判断了。

当然,也有些人是因为按住shift后不再压枪而困扰,他们同样需要设置自定义判断。

使用自定义判断的方式就是,设置:

aimingSettings = "custom"

但光是如此还是不够的,还需要修改 customAimingSettings 中的判断内容。

修改自定义判断

可以看到,脚本中 customAimingSettings 默认填充的代码是:

-- 当 aimingSettings = "custom" ,需要在此处设置自定义判断条件,通常配合 IsMouseButtonPressed 或 IsModifierPressed 使用,使用方法请查阅 G-series Lua API 参考文档.docx
customAimingSettings = {
  -- 开镜判断
  ADS = function ()
    return false -- 判断条件,返回值为布尔型
  end,
  -- 腰射判断
  Aim = function ()
    return false -- 判断条件,返回值为布尔型
  end,
},

ADS 即是判断是否开镜,Aim 判断是否开启腰射(肩射或瞄准,大家对这个瞄准方式有很多称呼,后面若有出现,全部统一称为“腰射”)

从代码中可以看出,两种瞄准方式返回的都是 false 状态。因此,默认情况下,使用了 aimingSettings = "custom" 设置,却没有做判断设置的话,将无法使用压枪功能。

而你需要做的就是,利用罗技提供的 IsMouseButtonPressedIsModifierPressed 这两个API来设置判断条件。

IsMouseButtonPressed

IsMouseButtonPressed() 方法可用于确定某鼠标按键是否被按下。

boolean IsMouseButtonPressed( button )

参数列表

button

按键标识符,您可以使用下表中列出的值:

按键值 对应操作
1 鼠标左键 (G1)
2 鼠标中键 (G2)
3 鼠标右键 (G3)
4 鼠标按键 X1 (G4)
5 鼠标按键 X2 (G5)

返回值

当修饰键被按下时将返回 true 反之则返回 false。

备注信息

代码示范

-- 按下鼠标按键
PressMouseButton(1)

if IsMouseButtonPressed(1) then
  OutputLogMessage("Left mouse button is pressed.\n");
end

-- 释放该鼠标按键
ReleaseMouseButton(1)

if not IsMouseButtonPressed(1) then
  OutputLogMessage("Left mouse button is not pressed.\n");
end

IsModifierPressed

IsModifierPressed() 方法可用于确定某修饰键是否被按下。

boolean IsModifierPressed ( keyname );

参数列表

keyname

特定预定义的修饰键键值是否被按下,该参数必须为下列表值之一:

修饰键 描述信息
"lalt", "ralt", "alt" 左侧、右侧或两侧 Alt 键
"lshift", "rshift", "shift" 左侧、右侧或两侧Shift 键
"lctrl", "rctrl", "ctrl" 左侧、右侧或两侧Ctrl 键

返回值

当修饰键被按下时将返回 true 反之则返回 false。

备注信息

代码示范

-- 模拟按下特定修饰键
PressKey("lshift")

if IsModifierPressed("shift") then
  OutputLogMessage("shift is pressed.\n");
end

-- 释放该修饰键
ReleaseKey("lshift")

if not IsModifierPressed("shift") then
  OutputLogMessage("shift is not pressed.\n");
end

示例

假如你习惯使用侧键腰射,可以做以下修改

-- 当 aimingSettings = "custom" ,需要在此处设置自定义判断条件,通常配合 IsMouseButtonPressed 或 IsModifierPressed 使用,使用方法请查阅 G-series Lua API 参考文档.docx
customAimingSettings = {
  -- 开镜判断
  ADS = function ()
    return false -- 判断条件,返回值为布尔型
  end,
  -- 腰射判断
  Aim = function ()
    return IsMouseButtonPressed(4) -- 判断条件,返回值为布尔型
  end,
},

每当你按下鼠标左键(即G1)时,会进行判断,当其中一项判断条件满足时,将会触发自动压枪功能。

并且假如你使用快速开镜,即长按右键开镜,松开右键关镜,请继续做如下修改:

-- 当 aimingSettings = "custom" ,需要在此处设置自定义判断条件,通常配合 IsMouseButtonPressed 或 IsModifierPressed 使用,使用方法请查阅 G-series Lua API 参考文档.docx
customAimingSettings = {
  -- 开镜判断
  ADS = function ()
    return IsMouseButtonPressed(3) -- 判断条件,返回值为布尔型
  end,
  -- 腰射判断
  Aim = function ()
    return IsMouseButtonPressed(4) -- 判断条件,返回值为布尔型
  end,
},

就是这么简单。

自动压枪全是默认玩家扫射行为时的弹道数据,扫射时通常是不按屏息的,单发点射才需要按住屏息稳定准星,扫射时屏息影响已有弹道数据的稳定性。因此在开镜时增加一个判断,当按下右键,且shift未被按下时,使用开镜压枪数据:

-- 当 aimingSettings = "custom" ,需要在此处设置自定义判断条件,通常配合 IsMouseButtonPressed 或 IsModifierPressed 使用,使用方法请查阅 G-series Lua API 参考文档.docx
customAimingSettings = {
  -- 开镜判断
  ADS = function ()
    return IsMouseButtonPressed(3) and not IsModifierPressed("lshift") -- 判断条件,返回值为布尔型
  end,
  -- 腰射判断
  Aim = function ()
    return IsMouseButtonPressed(4) -- 判断条件,返回值为布尔型
  end,
},

这样就完成了。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions