罗技Lua脚本-CF神圣爆裂者自动开枪

仅做个人备忘用,文章逻辑也不严谨,就给自己做个记录。

文章目录

默认宏

默认情况下配置一个左键长按,右键间隔释放即可:
在这里插入图片描述
在左键长按情况下可穿插使用F道具(可能因为网络延迟或者资源加载等因素导致释放失败,所以下面多复制了几次):
在这里插入图片描述
实际上默认的配置即可满足要求,但实际使用中发现一些问题:

  1. 左键长按开枪;因长按未释放的原因,脚本停止后必须手动再点一次左键才能释放;且在开启过中点击一次左键也会使宏失效。
  2. F道具的使用;无论如何调节延迟都可能存在一定的概率与左键冲突(在左键长按的情况下开启宏),导致技能释放不及时坑队友!

LUA脚本

基于 G-series Lua API V8.45 编写了LUA脚本

-- 使用前确保  scrolllock、capslock 处于关闭状态 (通过修改鼠标按钮实现控制开、关状态)

--右键根据scrolllock锁定 亮起执行
local rightClickEvent = "MOUSE_BUTTON_PRESSED"
local rightClickArg = 4

--左键根据capslock锁定  亮起执行
local leftClickEvent = "MOUSE_BUTTON_PRESSED"
local leftClickArg = 5

--使用F道具释放capslock、完成后锁定scrolllock (F道具全部右键使用)
local fClickEvent = "MOUSE_BUTTON_PRESSED"
local fClickArg = 6

function OnEvent(event, arg)
	--OutputLogMessage("event = %s, arg = %s\n", event, arg);
	
	--触发右键事件执行
	if event == rightClickEvent and arg == rightClickArg then
		--OutputLogMessage("rightEvent click...\n")
		--如果左键控制 capslock 已亮起则关闭
		if IsKeyLockOn("capslock") then
			PressAndReleaseKey("capslock")
		end
		--必须停顿,否者会出现按键未锁定
		Sleep(150)
		rightEvent()
	end

	--触发左键事件执行
	if event == leftClickEvent and arg == leftClickArg then
		--OutputLogMessage("leftEvent click...\n")
		--如果右键控制 scrolllock 已亮起则关闭
		if IsKeyLockOn("scrolllock") then
			PressAndReleaseKey("scrolllock")
		end
		--必须停顿,否者会出现按键未锁定
		Sleep(150)
		leftEvent()
	end

	--道具F使用,手动关闭其他再使用也可以,非必要
	if event == fClickEvent and arg == fClickArg then
		--OutputLogMessage("fff click...\n")

		--TODO 这里存在一种情况,F也是绑定的 capslock 
		--当右键在执行 scrolllock 时, capslock 关闭, 执行 F capslock 会被打开, 俩个按钮都会锁定
		--当左键在执行 capslock 时, capslock 关闭, 执行 F capslock 会被关闭, 俩个按钮都会被释放
		--估右键执行时,完全不需要再调用F道具的使用

		--如果左键控制 capslock 已亮起则关闭
		if IsKeyLockOn("capslock") then
			PressAndReleaseKey("capslock")
		end
		--如果右键控制 scrolllock 已亮起则关闭
		if IsKeyLockOn("scrolllock") then
			PressAndReleaseKey("scrolllock")
		end
		--必须停顿,否者会出现按键未锁定
		Sleep(150)
		fEvent()
	end

end


--左键长按 -> 连续开枪
function leftEvent()
	-- capslock 亮起 scrolllock 熄灭 则执行
	while IsKeyLockOn("capslock") and not IsKeyLockOn("scrolllock")
	do
		PressMouseButton(1)
		Sleep(100)
		--OutputLogMessage("zzzzzz~ \n");
	end
	--结束后松开左键
	ReleaseMouseButton(1)
	Sleep(10)
end


--右键点击 -> 神圣爆裂者快速放榴弹
function rightEvent()
	-- scrolllock 亮起 capslock 熄灭 则执行
	while IsKeyLockOn("scrolllock") and not IsKeyLockOn("capslock")
	do
		local sNum = math.random(20) + 30
		PressMouseButton(3)
		Sleep(sNum)
		ReleaseMouseButton(3)
		Sleep(10)
		--OutputLogMessage("biubiubiu~ %s\n", sNum);
	end
	Sleep(10)
end


--F道具使用
function fEvent()
	PressAndReleaseKey("f")
	--等待掏锤子,如果是奶瓶等一下也行,好像有加太快加不血的BUG
	Sleep(650)
	--右键
	PressAndReleaseMouseButton(3)
	--OutputLogMessage("fffff diu diu diu ~ \n");

	--可能存在网络、资源加载等波动导致没使用成功的情况,后续补充几次,问题不大
	for i=5,1,-1 do
    		Sleep(100)
		--右键
		PressAndReleaseMouseButton(3)
	end
	--OutputLogMessage("fffff ok ok ok ok ~ \n");
	Sleep(200)

	--TODO 继续执行左键长按,至于原因见 11、46行注释
	if not IsKeyLockOn("capslock") then
		PressAndReleaseKey("capslock")
	end
	Sleep(150)
	leftEvent()
end

使用Lua脚本完美的解决了F道具穿插使用,并在关闭左键长按脚本时自动释放,不再需要再次点击左键(我是真的懒)。但是在使用左键长按时点击左键导致长按失效这一问题还未找到解决方案。因这里的长按调用的后台指令,无法校验左键的状态(api获取的是物理点击状态)。

宏需改成 scrolllock、capslock 用于触发以及关闭使用
在这里插入图片描述

### 如何使用 Lua 编写键盘和鼠标宏 Lua 是一种轻量级的脚本语言,广泛应用于游戏开发和其他领域。许多硬件厂商(如罗技 G 系列设备)支持通过 Lua 来编写宏脚本来增强用户体验[^1]。 以下是基于 Lua 的键盘和鼠标宏编写的常见方法: #### 宏脚本基础 在 Lua 中,可以通过调用特定 API 实现模拟按键、点击等功能。这些功能通常由硬件厂商提供专用库来完成。例如,在 Logitech Gaming Software (LGS) 或其他类似软件中,开发者可以利用 `Logitech` 提供的 Lua 支持创建复杂的宏脚本。 #### 示例代码:简单的一键连招 下面是一个简单的 Lua 脚本示例,用于实现一键触发多个动作的功能: ```lua -- 延迟函数,单位为毫秒 function sleep(ms) local sec = tonumber(os.clock() + ms / 1000) while os.clock() < sec do end end -- 按下并释放指定按键 function pressKey(key, delay) Sleep(delay or 50) PressAndReleaseKey(key) end -- 主程序逻辑 function OnEvent(event, arg) if event == "G_PRESSED" and arg == 1 then -- 当按下某个按钮时执行 pressKey("W", 100) -- 向前移动 pressKey("SPACE", 50) -- 跳跃 pressKey("E", 80) -- 使用技能 E end end ``` 此脚本实现了当用户按下一个指定的游戏绑定键(如 G 键)时,自动依次触发 W、Space 和 E 的组合操作。 #### 复杂场景下的应用 如果需要更复杂的行为控制,比如跨平台兼容性考虑,则需要注意不同操作系统之间的差异[^2]。例如,某些按键名称或者行为可能会因 Windows 和 macOS 平台而异。因此建议测试过程中充分验证各环境下的表现一致性。 另外还可以加入条件判断语句使宏更加灵活多变;也可以引入循环结构让重复性的任务自动化等等。 #### 学习资源推荐 对于初学者而言,可以从官方文档入手学习基本语法以及API接口说明。同时网上也有不少社区分享出来的实战案例可供参考模仿练习提高技巧水平。 ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值