Lua代码实现鼠标宏

 注意:本文仅是技术交流,滥用技术者将自行承担后果


 

目录

一、什么是鼠标宏

二、射击游戏鼠标宏的制作原理

三、FPX鼠标宏带来的危害


一、什么是鼠标宏

  1. 鼠标宏是一种使用特定软件或设备编写和执行的自动化脚本,用于模拟和复制鼠标操作。它可以记录和重放一系列鼠标点击、移动和其他鼠标事件,以实现自动化操作。
  2. 通过鼠标宏,用户可以将一系列复杂的鼠标操作录制下来,并将其保存为一个宏文件。然后,用户可以使用宏文件来自动执行这些鼠标操作,代替手动重复执行它们。
  3. 鼠标宏通常用于提高生产效率、简化重复性任务、自动化游戏操作等。例如,在办公环境中,可以使用鼠标宏来自动执行一系列常见的编辑、格式化或数据处理操作。在游戏中,鼠标宏可以帮助玩家自动执行一些繁琐的操作,如快速连续点击、释放技能等。

二、射击游戏鼠标宏的制作原理

想要了解鼠标宏的制作原理,那么几个基本的方法需要知道

2.1.lua鼠标宏的基本方法:

方法描述
PressMouseButton()按下鼠标按钮。
ReleaseMouseButton()松开鼠标按钮。
Sleep()暂停执行指定的时间间隔。
MoveMouseRelative()相对于当前鼠标位置移动鼠标。
IsMouseButtonPressed()检查指定的鼠标按钮是否被按下

2.2.鼠标宏执行流程

鼠标宏在FPX中可以用来自动压枪,那么是如何实现的呢?其实很简单,那就是鼠标能够通过函数识别到每一发子弹所对应的弹道,根据弹道的位置,通过函数MoveMouseRelative()自动的偏移向中间的位置。从而实现枪枪都会到达准星。

2.3.两种实现压枪鼠标宏方式

我认为有两种可以实现鼠标宏的方式,一种是牺牲攻速以换取准确度,一种是根据弹道动态调整。

第一种,牺牲攻速以换取准确度(最简单的做法)。

  1. 鼠原理是通过记录前几发比较准的子弹(比如前三发子弹)的时间来实现固定准星,然后在按下鼠标宏按键时自动触发连续发射三发子弹。
  2. 为了达到这个目的,需要使用循环函数来检测按键状态,并在每次检测到按键按下时发射三发子弹。
  3. 然而,需要注意的是,如果连续发射的间隔太短,游戏会将其视为连续开枪而不是独立的开枪。因此,在设置中需要合理地设置三连发之间的间隔,使系统认为每三发子弹之间都是独立的。

案例(游戏:幽灵行动-荒野 P-416步枪):

查看前3发子弹弹道是准确的,那么设置一个计时器计算前三发所用的时间,手机上通过计时器计算打完一个弹夹的时间就可以知道1s能发射多少发子弹,从而计算3发所用时间

 设置完后相关代码如下

lock = 5 --设置按键
switch = false --设置开关,默认关闭
EnablePrimaryMouseButtonEvents(true)--开启鼠标监听

--主程序入口
function OnEvent(event, arg)
    --监听是否按下了指定按键,如果是则开关开,并且输出信息On
    if event == "MOUSE_BUTTON_PRESSED" and arg == lock then
        switch = true
        OutputLogMessage("On\n")
        --如果不是指定按键,则开关关闭,并且输出信息Off
    elseif event == "MOUSE_BUTTON_RELEASED" and arg == lock then
        switch = false
        OutputLogMessage("Off\n")
    end

    if switch then
        -- 当开关开启并且按键为指定按键时候循环执行函数
        if IsMouseButtonPressed(5) then
            repeat
                --按下鼠标左键
                PressMouseButton(1)
                --持续200到250毫秒之间的随机值,保证有三发子弹时间
                Sleep(math.random(200, 250))
                --松开左按键
                ReleaseMouseButton(1)
               
                --设置连发之间的间隔
                Sleep(math.random(250,300 ))
            until not IsMouseButtonPressed(5)
        end
    end
end

多次连发效果图:

第二种,通过弹道实现动态调整。

第二种的动态调整,相比于第一种,实现了不牺牲攻速的情况下就能够实现全弹夹基本都能到准星。这种相比第一种,增加了一个计数器count,通过count知道现在是第几发子弹,当count>弹夹内子弹数目的时候则自动关闭开关,并停止循环,

案例(某二次元射击游戏)

第一步获取弹道(需要枪械是固定弹道,如果是随机弹道则无法实现)

第二步分析弹道

可以看到首先所有子弹都需要下移,然后具体分析前三发需要下移更多一些,3~9发需要左移,9~13发需要右移,然后不动,在20~25发需要左移,超过25发则关闭开关

第三步,根据分析结果写代码

lock = 5
switch = false
count = 0 --设置计数器,统计子弹数目
EnablePrimaryMouseButtonEvents(true)

function OnEvent(event, arg)
    if event == "MOUSE_BUTTON_PRESSED" and arg == lock then
        switch = true
        OutputLogMessage("On\n")
    elseif event == "MOUSE_BUTTON_RELEASED" and arg == lock then
        switch = false
        OutputLogMessage("Off\n")
    end
    
    count = 0
    
    if switch and IsMouseButtonPressed(5) then
        while true do
            PressMouseButton(1)
            Sleep(math.random(60, 80))
            MoveMouseRelative(0, 7)
            ReleaseMouseButton(1)
            count = count + 1
            
--参数自行调整设置,
--MoveMouseRelative(0, 0)左边的参数是负责左右移动,正为右移 5(右移5个像素),负数为左移-2(左移两个像素)
---MoveMouseRelative(0, 0)左边的参数是负责上下移动,正为下移,负数为上移
            if count <= 3 then
                MoveMouseRelative(0, 0) -- 下移像素点
            elseif count < 9 then
                MoveMouseRelative(0, 0) -- 左移动像素点
            elseif count > 8 and count < 13 then
                MoveMouseRelative(0, 0) -- 右移动像素点
            elseif count > 20 and count <= 25 then
                MoveMouseRelative(0, 0) -- 左移动像素点
            elseif count > 25 then
                switch = false -- 关闭开关
                break  -- 结束循环
            end
            
            OutputLogMessage(tostring(count) .. "\n")
            Sleep(math.random(8, 12))
            
            if not IsMouseButtonPressed(5) then
                break  -- 结束循环
            end
        end
    end
end

最后检测与优化(可以看到基本都在一个位置,如果不满意则可以继续调试参数)


三、FPX鼠标宏带来的危害

  1. 违反游戏规则:在多人在线游戏中,使用鼠标宏进行作弊行为违反了游戏的公平性原则。这可能会破坏游戏的竞争环境,影响其他玩家的游戏体验,并降低游戏的可玩性。

  2. 经济影响:在一些游戏中,虚拟物品和游戏币具有真实货币价值。通过滥用鼠标宏获取大量游戏物品或游戏币可能导致虚假经济的波动,破坏游戏内部的经济平衡。

  3. 社区不和谐:滥用鼠标宏可能引发争议和纷争,导致游戏社区内部的不和谐氛围。其他玩家可能会对滥用者感到愤怒和不满,这可能导致社区中的争吵、冲突甚至分裂。

  4. 安全风险:使用不受信任的鼠标宏软件或脚本可能存在安全风险。恶意的鼠标宏可能含有病毒、间谍软件或其他恶意代码,可能导致个人隐私泄露、账号被盗或计算机系统受损。

  5. 法律问题:在某些情况下,滥用鼠标宏可能违反相关法律法规。例如,在一些地区或游戏中,使用鼠标宏进行作弊被视为不当行为,可能导致法律纠纷或法律责任。

因此,滥用鼠标宏不仅违背了游戏规则和道德准则,还可能对游戏和玩家产生严重的负面影响。为了维护游戏的公正性和健康的游戏环境,应避免滥用鼠标宏,并遵守游戏的规定和相关法律法规。


注意:本文仅是技术交流,滥用技术者将自行承担后果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/85812.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker常用操作命令(二)

Docker常用操作命令(二) 11、进入容器 docker exec -it 容器名称or容器ID /bin/bash [rootzch01 ~]# docker exec -it 973ff3caff19 /bin/bash 退出容器 root973ff3caff19:/# exit 12、查看容器中的进程 docker top 容器名称or容器ID [rootzch01 ~]# docker top 973ff3c…

[oneAPI] 基于BERT预训练模型的英文文本蕴含任务

[oneAPI] 基于BERT预训练模型的英文文本蕴含任务 Intel DevCloud for oneAPI 和 Intel Optimization for PyTorch基于BERT预训练模型的英文文本蕴含任务语料介绍数据集构建 模型训练 结果参考资料 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0…

UE4如何连接dmx---摇头矩阵灯具的创建

UE4如何连接dmx---摇头矩阵灯具的创建 开始创建库&#xff01; 然后我们开始创建多少个灯珠&#xff08;注意了&#xff1a;这是矩阵灯&#xff0c;是看灯珠的&#xff09; 那么这里我们创建6X6灯珠 下面设置灯珠的属性&#xff0c;灯珠有什么属性呢&#xff0c;只有颜色属性&…

【C语言】位段,枚举和联合体详解

目录 1.位段 1.1 什么是位段 1.2 位段的内存分配 1.3 位段的跨平台问题 2.枚举 2.1 枚举类型的定义 2.2 枚举的优点 3. 联合&#xff08;共用体&#xff09; 3.1 联合类型的定义 3.2 联合的特点 3.3 联合大小的计算 1.位段 1.1 什么是位段 位段的声明和结构体是类…

css 实现文字横向循环滚动

实现效果 思路 ## 直接上代码,html部分 //我这里是用的uniapp <view class"weather_info_wrap"><view class"weather_info">当前多云&#xff0c;今晚8点转晴&#xff0c;明天有雨&#xff0c;温度32摄氏度。</view><view class&qu…

创建延时队列、springboot配置多个rabbitmq

创建延时队列 queue.file_delay_destroy x-dead-letter-exchange: exchange.file_delay_destroy x-message-ttl: 259200000 259200000为3天,1000为1秒创建普通队列 queue.file_destroy创建普通交换机 exchange.file_delay_destroytype选择fanout 交换机绑定普通队列 (图中…

网络安全---Ring3下动态链接库.so函数劫持

一、动态链接库劫持原理 1.1、原理 Unix操作系统中&#xff0c;程序运行时会按照一定的规则顺序去查找依赖的动态链接库&#xff0c;当查找到指定的so文件时&#xff0c;动态链接器(/lib/ld-linux.so.X)会将程序所依赖的共享对象进行装载和初始化&#xff0c;而为什么可以使用…

web基础+HTTP协议+httpd详细配置

目目录录 一、Web基础1.1 HTML概述1.1.1 HTML的文件结构1.1.2 HTML中的部分基本标签 1.3 MIME1.4 URI 和 URL1.4 定义1.4.2 URI 和 URL 的区别 二、静态资源和动态资源2.1 静态资源2.2 动态资源 三、HTTP协议3.1 HTTP协议简介3.2 HTTP协议版本3.2 HTTP方法3.3 HTTP请求访问的完…

环二肽16364-35-5,cyclo(Glu-Gly),环(甘氨酰-谷氨酸),产品特点介绍

中文名&#xff1a;环&#xff08;甘氨酰-谷氨酸&#xff09; 英文名&#xff1a;cyclo(Glu-Gly) CYCLO(-GLY-GLU) CAS&#xff1a;16364-35-5 分子式&#xff1a;C7H10N2O4 分子量&#xff1a;186.165 沸点&#xff1a; 666.840.0 C(Predicted) 表面张力&#xff08;dy…

一键解决ssh登录密码问题:sshpass的安装与使用

引言 大家好&#xff0c;我是运维家的Linux和Python技术持续学习者。在日常的运维工作中&#xff0c;我们经常需要远程登录服务器进行管理和操作。而对于那些不支持密钥登录或者需要输入密码的服务器&#xff0c;你是否曾经遇到过繁琐的手动输入密码的问题呢&#xff1f;别担心…

芯片验证板卡设计原理图:446-基于VU440T的多核处理器多输入芯片验证板卡

基于VU440T的多核处理器多输入芯片验证板卡 一、板卡概述 基于XCVU440-FLGA2892的多核处理器多输入芯片验证板卡为实现网络交换芯片的验证&#xff0c;包括四个FMC接口、DDR、GPIO等&#xff0c;北京太速科技芯片验证板卡用于完成甲方的芯片验证任务&#xff0c;多任务…

计组 | 寻址方式

目录 一、知识点 1.寻址方式什么&#xff1f; 2.根据操作数所在的位置&#xff0c;都有哪些寻址方式&#xff1f; 3.直接寻址 4.立即寻址 5.隐含寻址 6.相对寻址 7.寄存器 8.寄存器-寄存器型&#xff08;RR&#xff09;、寄存器-存储器型&#xff08;RS&#xff09;和…

华为AR路由器 典型配置案例——以太网交换

目录 Eth-Trunk 例&#xff1a;配置三层链路聚合 组网需求 操作步骤 检查配置结果 配置脚本 VLAN 举例&#xff1a;配置基于接口划分VLAN&#xff0c;实现同一VLAN内的互通&#xff08;同设备&#xff09; 组网需求 操作步骤 检查配置结果 配置脚本 举例&#xff…

YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测+k折交叉验证法)

YOLOv8教程系列&#xff1a;三、K折交叉验证——让你的每一份标注数据都物尽其用&#xff08;yolov8目标检测k折交叉验证法&#xff09; 0.引言 k折交叉验证&#xff08;K-Fold Cross-Validation&#xff09;是一种在机器学习中常用的模型评估技术&#xff0c;用于估计模型的性…

elaticsearch(1)

1.简介 Elasticsearch是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。 Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引…

Electron之初体验

Electron是一款使用Html、Css、JS开发跨平台桌面应用的框架。 话不多说直接开搞。 必坑指南&#xff1a; node版本>18.0使用淘宝镜像安装npm相关包&#xff1b;把下面两行配置放到你的npmrc文件中electron_mirrorhttps://npm.taobao.org/mirrors/electron/ ELECTRON_MIRRO…

手写 Mybatis-plus 基础架构(工厂模式+ Jdk 动态代理统一生成代理 Mapper)

这里写目录标题 前言温馨提示手把手带你解析 MapperScan 源码手把手带你解析 MapperScan 源码细节剖析工厂模式Jdk 代理手撕脚手架&#xff0c;复刻 BeanDefinitionRegistryPostProcessor手撕 FactoryBean代理 Mapper 在 Spring 源码中的生成流程手撕 MapperProxyFactory手撕增…

浅析Linux SCSI子系统:调试方法

文章目录 SCSI日志调试功能scsi_logging_level调整SCSI日志等级 SCSI trace events使能SCSI trace events方式一&#xff1a;通过set_event接口方式二&#xff1a;通过enable 跟踪trace信息 相关参考 SCSI日志调试功能 SCSI子系统支持内核选项CONFIG_SCSI_LOGGING配置日志调试…

C++day2(笔记整理)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.左值引用 #include <iostream> using namespace std;int main() {int a 100;int &ra a; //定义了变量a的引用racout << &a << endl;cout << "&ra" << &…

wx原生微信小程序入门常用总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、定义值和修改值1、定义值2、修改值&#xff08;1&#xff09;代码&#xff08;2&#xff09;代码说明&#xff08;3&#xff09;注意点 二、点击事件三、微…