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


文章目录

  • 默认宏
  • LUA脚本


默认宏

默认情况下配置一个左键长按,右键间隔释放即可:

lua 脚本 罗技lua脚本_右键


在左键长按情况下可穿插使用F道具(可能因为网络延迟或者资源加载等因素导致释放失败,所以下面多复制了几次):

lua 脚本 罗技lua脚本_lua 脚本_02


实际上默认的配置即可满足要求,但实际使用中发现一些问题:

  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脚本_lua 脚本_03