Lua代码实现鼠标宏

news2025/1/11 19:57:04

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


 

目录

一、什么是鼠标宏

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

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

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


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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PowerDesigner书签显示comment字段注释内容

1.今日书签 PowerDesigner 16.5 对表字段设置显示 comment 注释&#xff0c;解决视图模型看不到表字段 comment 中文注释的问题。 2.拨云见日 2.1.操作环境 操作系统&#xff1a;Win10 PowerDesigner 版本&#xff1a;16.5 2.2.操作步骤 无论 PowerDesigner 15 还是 Powe…

Vue 中 diff 算法原理

一、Diff 概念 Vue 基于虚拟 DOM 做更新。diff 算法的核心就是比较两个虚拟节点的差异。 Vue 的 diff 算法是平级比较&#xff08;如图&#xff0c;父级和父级比较&#xff0c;儿子和儿子比较&#xff0c;孙子和孙子比较&#xff09;&#xff0c;不考虑跨级比较的情况&#x…

企业专网?公网?工业4G路由器如何正确选择SIM卡?

选择合适的SIM卡对工业4G路由器稳定通信至关重要。但是面对企业专网和公网两种选择,用户该如何抉择呢?本文将全面解析专网卡与公网卡的区别、适用场景及选择要点,并推荐星创易联SR700等产品的匹配方案,助你正确选择最合理的工业SIM卡。 首先,从网络质量上,企业专网较公网更稳定…

韩语翻译器拍照翻译方法,几个步骤轻松翻译

韩语是一种非常有趣的语言&#xff0c;但对于大多数人来说&#xff0c;是非常难以掌握的。 如果你正在韩国旅行或生活&#xff0c;你可能会遇到许多韩语文字和标志&#xff0c;这时候拍照翻译就派上用场了。 许多智能手机都有支持翻译应用&#xff0c;但是如何在手机上拍照并翻…

Java版B/S架构 智慧工地源码,PC、移动、数据可视化智慧大屏端源码

智慧工地是什么&#xff1f;智慧工地主要围绕绿色施工、安全管控、劳务管理、智能管理、集成总控等方面&#xff0c;帮助工地解决运营、管理方面各个难点痛点。在互联网的加持下促进项目现场管理的创新与发展&#xff0c;实现工程管理人员与工程施工现场的整合&#xff0c;构建…

一网打尽java注解-克隆-面向对象设计原则-设计模式

文章目录 注解内置注解元注解 对象克隆为什么要克隆&#xff1f;如何克隆浅克隆深克隆 Java设计模式什么是设计模式&#xff1f;为什么要学习设计模式&#xff1f; 建模语言类接口类之间的关系依赖关系关联关系聚合关系组合关系继承关系实现关系 面向对象设计原则单一职责开闭原…

速通蓝桥杯嵌入式省一教程:(九)AT24C02芯片(E2PROM存储器)读写操作与I2C协议

AT24C02芯片&#xff08;又叫E2PROM存储器、EEPROM存储器&#xff09;&#xff0c;是一种通过I2C(IIC)协议通信的掉电保存存储器芯片&#xff0c;其内部含有256个8位字节。在介绍这款芯片之前&#xff0c;我们先来粗略了解一下I2C协议。 I2C总线是一种双向二线制的同步串行总线…

BLFS学习系列 第26章. 显示管理器 —— 总述

显示管理器&#xff08;Display Manager&#xff09;是用于启动图形显示&#xff08;当前为X服务器&#xff09;并为窗口管理器或桌面环境提供登录功能的图形程序。 有许多显示管理器可用。一些较为知名的包括&#xff1a;GDM、KDM&#xff08;已弃用&#xff09;、LightDM、L…

ssm助学贷款系统源码和论文

ssm助学贷款系统源码和论文050 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&am…

Java注解语法

Java注解语法 1. 前置基础 ​ 学习java反射语法 JAVA通过反射使用公共构造方法和私有构造方法来创建对象 2. Java注解是什么&#xff1f; ​ Java注解是代码中的特殊标记&#xff0c;比如Override、Test等&#xff0c;作用是&#xff1a;让其他程序根据注解 信息决定怎么执…

【ECCV2022】Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation

Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation 论文&#xff1a;https://arxiv.org/abs/2105.05537 代码&#xff1a;https://github.com/HuCaoFighting/Swin-Unet 解读&#xff1a;Swin-UNet&#xff1a;基于纯 Transformer 结构的语义分割网络 -…

【FAQ】视频云存储/安防监控EasyCVR视频汇聚平台如何通过角色权限自行分配功能模块?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

SpringMVC 写个 HelloWorld

文章目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式&#xff1a;warc>引入依赖 3、配置web.xmla>默认配置方式b>扩展配置方式 4、创建请求控制器5、创建springMVC…

Linux下彻底卸载jenkins

文章目录 1、停服务进程2、查找安装目录3、删掉相关目录4、确认已完全删除 1、停服务进程 查看jenkins服务是否在运行&#xff0c;如果在运行&#xff0c;停掉 ps -ef|grep jenkins kill -9 XXX2、查找安装目录 find / -name "jenkins*"3、删掉相关目录 # 删掉相…

继承(C++)

继承 一、初识继承概念“登场”语法格式 继承方式九种继承方式组合小结&#xff08;对九种组合解释&#xff09; 二、继承的特性赋值转换 一一 切片 / 切割作用域 一一 隐藏 / 重定义 三、派生类的默认成员函数派生类的默认成员函数1. 构造函数2. 拷贝构造3. 赋值运算符重载4. …

部署FTP服务(二)

目录 2.访问FTP服务 1.使用ftp命令行工具 2.使用浏览器 3.使用FileZilla Client 3.Serv-U 1.定义新域 2.创建用户 4. windowsserver搭建ftp服务器 一、FTP工具 二、Windows资源管理器 三、IE浏览器访问 2.访问FTP服务 下面在一台装有Windows10操作系统的计算机中&#…

vue 简单实验 v-on html事件绑定

1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"event-handling"><p>{{ message }}</p><button v-on:click"reverseMessage">反转 Message</but…

医药市场调研--原始价值数据库分享<医药行业必读>

医药市场调研公司是专门从事医药行业市场调研的企业。它们的主要职责是收集、分析和解读与医药行业相关的市场数据和信息&#xff0c;为企业提供决策支持和战略指导。这些公司通过各种调研方法和工具&#xff0c;如市场调查、数据分析、定性研究等&#xff0c;帮助企业了解市场…

TCP的三次握手 四次挥手以及TCP的11种状态

三次握手流程&#xff1a; 客户端给服务端发送数据时&#xff0c;数据包中带有一个头&#xff0c;这个头就是前几十个字节&#xff0c;就是下面这张图。从源端口号&#xff0c;目的端口号&#xff0c;一直到序列号&#xff0c;直到Options。第一个包会将这前十几个字节中的SYN置…

【从零学习python 】72. 深入理解Socket通信及创建套接字的方法

文章目录 1. 不同电脑上的进程之间如何通信2. 什么是socket3. 创建socket进阶案例 1. 不同电脑上的进程之间如何通信 首要解决的问题是如何唯一标识一个进程&#xff0c;否则通信无从谈起&#xff01; 在1台电脑上可以通过进程号&#xff08;PID&#xff09;来唯一标识一个进程…