声明:本文章纯属个人学习所作,切勿用于非法渠道。转载请注明原文链接。
最近闲得无聊,在qq微端上找游戏玩,偶然看见一个枪战游戏,名字叫枪林弹雨,体验一把之后,我只想吐槽这个游戏基本上都是在抄袭生死狙击的游戏模式,里面有外挂,各种锁血飞天遁地外挂搞得我心态快炸,好在不是很多,但是我的狙却玩的很菜,遇见大神打到我怀疑是不是开挂,一气之下,我觉得,我要写个辅助(比游戏中的外挂低级一点)
源代码放在文章最后(有些代码内容可能需要修改,所以建议你先看完文章再复制代码),注意适当游戏,切勿沉迷~
我先认清一下自己的实力,emmmm…开启分析模式
我只能做到分析屏幕狙击枪瞄准镜准星周围某点的rgb色值,然后根据对战人物衣服的rgb色值,进行比较,确认后调用pyautogui瞬间点击鼠标,击杀对手
但是这样也会有几个缺点:
这些缺点要靠自己来测量与避免,这里就不再用程序实现。
人物图片展示,分析rgb色值(qq的屏幕截图有这个功能),取色值时被我发现人物的全身几乎所有rgb色值元组中元素全部小于100(除了一些露出肉的部分和枪械的颜色),这是一个可以判断的重要条件。
我的电脑分辨率为1920*1080,测得准星坐标大约在(966,,555)附近
此时需要估计几个范围区域,分别是(956,555)(966,545)(966,565)(956,545),你在使用过程中要注意自己测得的坐标也要试着将纵横坐标减去一些,预估几个点区域。
请确保已经安装pyautogui库!
首先声明一些要用到的量,导入ctypes和pyautogui
from ctypes import *
import time,pyautogui
#坐标列表,可以根据你的测量结果进行更改,越准确越好
pos_list = [(956,555),(966,545),(966,565),(956,,545)]
#概率标记
mark = 0
写返回rgb三元组的函数,这里用到了ctypes库
def get_color(x, y):
gdi32 = windll.gdi32
user32 = windll.user32
hdc = user32.GetDC(None) # 获取颜色值
pixel = gdi32.GetPixel(hdc, x, y) # 提取RGB值
r = pixel & 0x0000ff
g = (pixel & 0x00ff00) >> 8
b = pixel >> 16
return (r, g, b)
程序主循环体一直运行传参到get_color()函数,并处理返回指定坐标的rgb三元组,如果每个元素值小于100,则mark的值加一,
当然,还需要考虑如果这四个坐标参数的落点概率问题,设置如果mark/4即落点概率大于等于50%时就可以进行射击,否则就不射击。
#设置等待15秒玩家开启全屏模式
time.sleep(15)
while True:
for i in pos_list:
#获得rgb值
t = get_color(i[0],i[1])
#处理rgb值,判断元素相加是否小于300
if t[0]<100 and t[1]<100 and t[2]<100:
mark+=1
else:
continue
if mark/4 >= 0.5:
pyautogui.click()
整体代码(强烈建议运行时游戏开启全屏模式):
from ctypes import *
import time,pyautogui
#坐标列表,可以根据你的测量结果进行更改,越准确越好
pos_list = [(956,555),(966,545),(966,565),(956,,545)]
#概率标记
mark = 0
def get_color(x, y):
gdi32 = windll.gdi32
user32 = windll.user32
hdc = user32.GetDC(None) # 获取颜色值
pixel = gdi32.GetPixel(hdc, x, y) # 提取RGB值
r = pixel & 0x0000ff
g = (pixel & 0x00ff00) >> 8
b = pixel >> 16
return (r, g, b)
time.sleep(15)
while True:
for i in pos_list:
#获得rgb值
t = get_color(i[0],i[1])
#处理rgb值,判断元素相加是否小于300
if t[0]<100 and t[1]<100 and t[2]<100:
mark+=1
else:
continue
if mark/4 >= 0.5:
pyautogui.click()
这是一个简单的游戏辅助(好不好用我不敢说),但只应用了如下知识:
到这里就结束啦~后续有时间的话,我再优化一下在上面说到的那几个缺点。