786909783 发表于 2020-3-4 21:40

C++FPS游戏 红名狙 见红开枪源码

针对逆战写的,但狙击十分不稳定,步枪还行。刚学C++ 大家参考交流一下,也希望高手指点,怎么改进。    高手轻喷!注意,全屏游戏,窗口分辨率是1920 乘1080.具体的坐标最好还是自己测试一下,免得分辨率不一样出问题。所以本贴主要提供给小白们一种思路,大家互相学习一下。
#include <windows.h>
void jj();//函数声明

下面提供函数部分:
void jj() {
        HWND hWnd = ::GetDesktopWindow();
        HDC hdc = ::GetDC(hWnd);
        int red, green, blue;
        while (1)
        {       
                for (int i = 930; i <=980; i++)   //多次测试得到,i的取值十分关键,影响成功率,暂时只能得到这个较好的范围。
                {
                        COLORREF p= ::GetPixel(hdc, i, 622);//619-626是名字的纵向宽度。
                       red = GetRValue(p);                  //不用取绿色和蓝色了
                        if (red > 240)//逆战红名是255,0,0.防止背景色干扰 取240.
                        {
                                mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //这里步枪会一直开枪,因为时间间隔太短,检测不到抬起的动作。
                                Sleep(1000);          //杀完人冷静一下。不然好像死循环不太好
                                break;
                         }
                }
       }

}

最后说一下存在的问题,女角色运动太快可能就打不到,更甚者 程序有时候就扫描不到人。
建议搭配烟雾弹打爆破。而且只能架定点狙击。而且影响了鼠标正常开枪,属实鸡肋啊!!!
所以逆战都懒得检测了,你开任你开。。
最后附一张测试时候的图片

mengheeh 发表于 2020-3-4 21:41

好的,非常感谢

786909783 发表于 2020-3-4 21:42

mengheeh 发表于 2020-3-4 21:41
好的,非常感谢

怎么这么快,机器人吗{:1_353:}

大姐大姐 发表于 2020-3-4 21:46

6666

1948970999 发表于 2020-3-4 21:46

谢谢分享

415301912 发表于 2020-3-4 21:46

6666666666

786909783 发表于 2020-3-4 21:47

程序真的很垃圾哈,需要exe的可以+qq786909783,免费发的。大家互相交流!

DFGASDDF 发表于 2020-3-4 21:48

感谢楼主分享

土豪的朋友 发表于 2020-3-4 21:58

谢谢大牛

liu123609305 发表于 2020-3-4 22:38


//游戏使用默认设置,游戏窗口分辨率为:1280X720
//进入房间前运行脚本,如果进入房间后请按ESC,再运行脚本
t1=Rnd Mod 5
FindPic 0,0,1920,1080,"Attachment:\逆战图标.bmp",0.85,x,y
If x <= 0
    MessageBox "未找到游戏窗口"
End If
While 1=1
    //判断绿色准星是否存在,以此判定是否使用狙击枪
    FindColorEx x + 600, y + 350, x + 670, y + 410,"33CC00",0,0.85,x1,y1
    If x1 > 0
      Gosub 多发
    Else
      Gosub 单发
    End If
    Delay 30
EndWhile
Sub 单发
    //找红名
    FindColorEx x + 560, y + 415, x + 1080, y + 455,"0101E0|0000FE|0101BD|0101A2|0404A4|0303BE|0605BE",0,0.90,x1,y1
    If x1 > 0 Then
      //一次只开一枪
      Delay 10+t1
      LeftClick 1
    End If
End Sub
Sub 多发
    //找红名
    FindColorEx x + 560, y + 415, x + 1080, y + 455,"0101E0|0000FE|0101BD|0101A2|0404A4|0303BE|0605BE",0,0.90,x1,y1
    If x1 > 0 Then
      //使用压枪打法,间隔时间下压枪口
      Delay 10+t1
      LeftDown 1
      For i=0 To 10 Step 1
            Delay 40
            MoveR 0,1
      Next
      LeftUp 1
    End If
End Sub
页: [1] 2
查看完整版本: C++FPS游戏 红名狙 见红开枪源码