(python)cf火线瞄准红名自动开枪

一. 前言

这个应该cf系列第四篇了,目前已经写了ai瞄准,罗技鼠标宏,这篇功能相比前俩个更简单一些,因为代码不多所以就不写类与功能函数了,直接直捣黄龙,我还写了一些辅助脚本,可以用来获取鼠标当前坐标和颜色的,改新的分辨率可以用得上

所需准备:罗技驱动的.dll文件与之对应的罗技驱动版本,链接我放下面了

链接:https://pan.baidu.com/s/1pd2RjNW6QoOSDRs_3gm1Tw?pwd=6666 
提取码:6666

注意事项:这里游戏内分辨率必须是1280*720,我的位置坐标参数就是根据这个分辨率调整的

二. 代码

2.1 驱动代码

这部分代码主要就是调用.dll文件,用里面封装好的方法,比如移动鼠标,点击鼠标,键盘等等,主要实现的功能就是进行射击操作,也就是自动鼠标点击左键

import ctypes
import ostry:# 获取当前绝对路径root = os.path.abspath(os.path.dirname(__file__))driver = ctypes.CDLL(f'{root}/logitech.driver.dll')ok = driver.device_open() == 1  # 该驱动每个进程可打开一个实例if not ok:print('错误, GHUB驱动没有找到')
except FileNotFoundError:print(f'错误, DLL 文件没有找到')class Logitech:class mouse:"""code: 1:左键, 2:中键, 3:右键"""@staticmethoddef press(code):if not ok:returndriver.mouse_down(code)@staticmethoddef release(code):if not ok:returndriver.mouse_up(code)@staticmethoddef click(code):if not ok:returndriver.mouse_down(code)driver.mouse_up(code)@staticmethoddef scroll(a):"""鼠标滚轮"""if not ok:returndriver.scroll(a)@staticmethoddef move(x, y):"""相对移动, 绝对移动需配合 pywin32 的 win32gui 中的 GetCursorPos 计算位置pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simplex: 水平移动的方向和距离, 正数向右, 负数向左y: 垂直移动的方向和距离"""if not ok:returnif x == 0 and y == 0:returndriver.moveR(x, y, True)class keyboard:"""键盘按键函数中,传入的参数采用的是键盘按键对应的键码code: 'a'-'z':A键-Z键, '0'-'9':0-9"""@staticmethoddef press(code):if not ok:returndriver.key_down(code)@staticmethoddef release(code):if not ok:returndriver.key_up(code)@staticmethoddef click(code):if not ok:returndriver.key_down(code)driver.key_up(code)class RunLogitechTwo:def __init__(self):self.log_mouse = Logitech.mousepassdef quick_move(self):# time.sleep(random.randint(1, 3))self.log_mouse.click(1)# print('hahaha')

2.2 红名识别代码

代码思路:利用mss库的mss()功能函数,进行时对当前屏幕进行截图,设置了字典monitor参数,里面包含左上角坐标,宽高,用来控制截屏的范围,我这里对敌人红名出现的地方中央截取了16个像素,这16个像素中一定会有红色像素格出现,一旦其中一个符合rgb范围要求就跳出循环不执行剩下像素的判断,节省资源也防止一直开枪

for循环部分讲解:俩层for循环就是为了遍历截取的16个像素的RGB值进行判断,第二个for循环的bgr属性(分解的每个像素)是有含4个值的,分别是R,B,G,通透度,我们只取前三个就够了通透度不用管,np.array()会将16个像素值分成二维数组(4*4)类似于矩阵的形状,所以俩层for循环就够了

开枪延迟:这个开枪延迟一定要加上,要不然肯定会过快,进行检测,速度大家自行修改尝试就行了,我这个是喷子的延迟,大炮可以调的更长一些,火线还有个问题就是你可能在瞄准那个人附近的时候就开始出现红名了,所以也要通过设置这个开枪延迟来平衡自动开枪时机

吐槽:你在瞄准敌人的时候,他的名字是渐变的,从暗红色-红色-亮红色-橘色,这个RGB范围让我一顿好找

import logitech_test
from mss import mss
import numpy as np
import time
import randomif __name__ == "__main__":# 设置检测区域,这里截取整个屏幕monitor = {"top": 405, "left": 635, "width": 4, "height": 4}# monitor = {"top": 490, "left": 910, "width": 200, "height": 200}  # 反人类的设计,正常左上,他上左obj = logitech_test.RunLogitechTwo()# 设置目标颜色(示例:红色)target_color = np.array([163, 57, 49])  # RGB颜色值# 创建截屏对象sct = mss()while True:flag=False# 获取屏幕截图screen_shot = sct.grab(monitor)# 展示scr_img = np.array(screen_shot)for each_pic in scr_img:for bgr in each_pic:b, g, r = bgr[:3]# rgb参数145,245,47,80,20,57if r >= 140 and r <= 245 and g >= 45 and g <= 80 and b >= 20 and b <= 60:time.sleep(random.randint(2, 5) * 0.01)obj.quick_move()flag = Truebreakif flag:break

三. 辅助工具

下面的脚本是用来时时获取鼠标当前位置的坐标x,y和rgb值的,用于改分辨率时候算参数用的

import pyautogui
from PIL import Imagedef test_b():# obj = RunLogitechTwo()# 默认屏幕为1280 * 720,屏幕中心位置如下# x = 640   # 1.18# y = 360   # 32.66666# 屏幕检测区域# region_to_check = (590, 310, 690, 430)# x = 636# y = 410while True:x, y = pyautogui.position()  # 获取鼠标当前位置# region = (600, 400, 80, 20)im = pyautogui.screenshot()  # 返回屏幕的截图,是一个Pillow的image对象r,g,b = im.getpixel((x,y))print("x:", x, "y:", y, "r:", r,"-g:", g,"-b:", b)# img = Image.new('RGB', (300, 300), im.getpixel((x, y)))  # 用获取的颜色创建一张图片# img.show()  # 展示当前图片if __name__ == '__main__':test_b()

四. 成品展示

因为有人建议我将这个集成为一个app更好一些,代码不算很多,就抽时间集成了一下,图片如下

这里我给了几个参数可修改

游戏分辨率:因为有的人可能改了分辨率就不会找位置了,所以我加了这个参数,会自适应找到位置,也可以点击计算面积获得比较适合当前分辨率的红名面积 

红名面积:也就是扫描的范围,这个如果你电脑配置不错,你可以开大点,但是一般计算面积自适应的就够用了

开火反应速率:这个用来控制你秒到红名之后,开枪之前的间隔,过快可能会进小黑屋1小时冷静一下,玩JU的话我建议7-10就行,因为火线的机制是秒到人身体附近就会出现红名了,所以你在玩JU架点的时候可能会有人慢慢蹭出来,这样你先瞄到的就是空气了,所以适当加一些延迟,其他步枪和喷子就默认就行了,不需要考虑这个

最后,对此有兴趣或疑问的可以发我邮箱信息,看到会回复的

 

五. 总结

重要的事情多说一遍,如果你想用我这个代码,游戏内分辨率一定要调整为1280*720,因为我取像素位置就是根据这个分辨率来的,如果你想用别的分辨率自己重新计算一下就行了,也不难,重新找一下新分辨率下的红名出现坐标位置,如果你找不到新的分辨率红名坐标位置,我建议你可以把电脑分辨率调整为和游戏一样的分辨率,然后在游戏中截屏,将截屏的照片设为全屏,再开启辅助工具取坐标和rgb,这样就能准确得知了(我就是这样做的)

最后,如果还有什么不懂的或者困难或者改进也可以邮箱联系我一起进步,874302104@qq.com

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频剪辑合并:批量处理视频,高效快捷,添加背景音乐更添魅力

随着数字媒体的普及&#xff0c;视频已成为生活中不可或缺的一部分。无论是记录生活、分享经验&#xff0c;还是传递信息&#xff0c;视频都以其独特的魅力占据了重要的地位。而在这个快节奏的时代&#xff0c;如何高效地处理视频&#xff0c;以及如何通过添加背景音乐来提升视…

cesium冷知识——bing底图的key是哪里来的?

问题描述&#xff1a; Cesium.js默认使用的是微软的bing底图 但是bing底图是需要key来进行权限认证 那么key是哪里来的呢&#xff1f;&#xff08;在源码中并没有写死bing的key&#xff09; 问题答案&#xff1a; Cesium把自己的key向Cesium ion发送请求 得到了一个包含微…

单片机AVR单片机病房控制系统设计+源程序

一、系统方案 设计一个可容8张床位的病房呼叫系统。要求每个床位都有一个按钮&#xff0c;当患者需要呼叫护士时&#xff0c;按下按钮&#xff0c;此时护士值班室内的呼叫系统板上显示该患者的床位号&#xff0c;并蜂鸣器报警。当护士按下“响应”键时&#xff0c;结束当前呼叫…

filebrat+elk+kafka实现远程收集日志

20.0.0.15 kafka1 20.0.0.30 kafka2 20.0.0.40 kafka3 20.0.0.10 logstashkibana 20.0.0.20 elasticsearch 20.0.0.60 elasticsearch 注意---一个input,output要有一个 filebeat.intput Nginx----kafka.conf httpd.conf 两边同时启动 时间同步

[读论文][跑代码]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

github: GitHub - Nota-NetsPresso/BK-SDM: A Compressed Stable Diffusion for Efficient Text-to-Image Generation [ICCV23 Demo] [ICML23 Workshop] ICML 2023 Workshop on ES-FoMo 简化方式 蒸馏方式&#xff08;训练Task蒸馏outKD-FeatKD&#xff09; 训练数据集 评测指标…

高级I/O 基础概念

文章目录 什么是高级I/O五种常见高级I/O同步IO和异步IO多路转接是异步IO吗 什么是高级I/O 高级I/O&#xff08;Advanced I/O&#xff09;是指在计算机系统中进行输入和输出操作时使用的一种更高级的接口和技术。它提供了比传统的基本I/O操作更丰富和灵活的功能&#xff0c;以满…

flask web开发学习之初识flask(二)

文章目录 一、创建程序实例并注册路由1. 为视图绑定绑定多个URL2. 动态URL 二、启动开发服务器1. 自动发现程序实例2. 管理环境变量3. 使用pycharm运行服务器4. 更多的启动选项5. 设置运行环境6. 调试器7. 重载器 一、创建程序实例并注册路由 app.py # 从flask包中导入flask类…

【Python】手把手教你用tkinter设计图书管理登录界面(上)

tkinter tkinter是Python的标准GUI库之一&#xff0c;它是Python中用于创建图形用户界面&#xff08;GUI&#xff09;的一种工具。tkinter是一个开源的软件包&#xff0c;由Tcl&#xff08;Tool Command Language&#xff09;编写&#xff0c;可以用于创建各种GUI元素&#xf…

使用python发邮件

使用python发邮件&#xff0c;下面是代码&#xff0c;我使用的是88完美邮箱。 该代码是我程序完成&#xff0c;然后它会自动发一封邮件&#xff0c;并且通过sys.argv将程序相关设置写到邮箱里。 下面代码是88邮箱为例&#xff1a; import sys import smtplib from email.heade…

electron调用dll问题总汇

通过一天的调试安装&#xff0c;electron调用dll成功&#xff0c;先列出当前的环境&#xff1a;node版本: 18.12.0&#xff0c;32位的&#xff08;因为dll为32位的&#xff09; VS2019 python node-gyp 1、首先要查看报错原因&#xff0c;通常在某一行会有提示&#xff0c;常…

[跑代码]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

Installation(下载代码-装环境) conda create -n bk-sdm python3.8 conda activate bk-sdm git clone https://github.com/Nota-NetsPresso/BK-SDM.git cd BK-SDM pip install -r requirements.txt Note on the torch versions weve used torch 1.13.1 for MS-COCO evaluation…

行业风云突变,毫末发内部信:明年要打赢智驾生死之战

岁末智能车行业风云突变。 广州车展前夕&#xff0c;小米汽车首车曝光&#xff1b;车展现场&#xff0c;各路车企上演旗舰之战&#xff1b;而车展才刚落幕&#xff0c;华为突然宣布车BU业务拆分。 外资、自主、合资、跨界车企&#xff0c;各路势力提前决战2025。智能新能源车…