挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运JD寻实力长期勤快开发,来实力代理,DMA内存,项目讨论群 【瓦--无畏】纯硬件锁,永久可用,无检测,源头厂家一手制作。稳定无异味,来实力代理 ██【我要租此广告位】██
查看: 5758|回复: 0
打印 上一主题 下一主题

[辅助源码] 9-10.FPS游戏自瞄透视之代码实现自瞄2

[复制链接]

51

积分

15

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
36
海币
183
交易币
0
跳转到指定楼层
楼主
发表于 2020-6-23 21:19:35 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


9-10.FPS游戏自瞄透视之代码实现自瞄2
任鸟飞逆向 任鸟飞逆向
要源码的同学可以加我微信或则qq ,给与不给完全看心情
VIP学员这套直接有视频版本以及XF版
所有的准备工作都完成了
那么我们就可以看看自瞄的代码是怎么写了
以下代码全部以中文标注
①首先是一个 人物和目标的结构
typedef struct T人物属性//人物属性结构
{
char* szpName;
DWORD d阵营;
FLOAT fHp;
FLOAT fMaxHp;
FLOAT fX;
FLOAT fY;
FLOAT fZ;
FLOAT f准星水平朝向;
FLOAT f准星高度朝向;
T人物属性* 初始化();
}_T人物属性;
typedef struct T怪物列表
{
T人物属性 列表[0x500];
DWORD nd数量;
void c初始化();
}_T怪物列表;
②然后我对结构进行初始化遍历
T人物属性*T人物属性::初始化()  //获得人物数据
{
DWORD 模块句柄 = (DWORD)GetModuleHandleA("Crossout.exe");
DWORD Base = 0;
__try
{
d编号 = *(DWORD*)(模块句柄 + Base_角色编号);
szpName = (char*)(模块句柄 + Base_阵营数组 + d编号*Offset_阵营数组结构大小 + 0x8);
d阵营 = *(DWORD*)(模块句柄 + Base_阵营数组 + d编号*Offset_阵营数组结构大小 + 0x68);
ID = *(DWORD*)(模块句柄 + Base_阵营数组 + d编号*Offset_阵营数组结构大小 + 0xA0);
f准星水平朝向 = *(FLOAT*)(模块句柄 + Base_XY朝向基地址);
f准星高度朝向 = *(FLOAT*)(模块句柄 + Base_Z朝向基地址);
Base =  *(DWORD*)(模块句柄 + Base_对象属性遍历基地址);
ID &= 0x0FFF;
ID += 0x2AAD;
ID *= 0xC;
Base += ID;
Base =  *(DWORD*)Base;
Call_输出调试信息("创世战车  读取人物对象:%X\r\n",Base);
if (Base!=0)
{
fHp = *(FLOAT*)(Base + 0xC0);
fMaxHp = *(FLOAT*)(Base + 0xC4);
fX = *(FLOAT*)(Base + 0x2B0);
fZ = *(FLOAT*)(Base + 0x2B4);
fY = *(FLOAT*)(Base + 0x2B8);
b死亡标志位 = 1;
}
else
{
fHp = 0;
fMaxHp = 0;
fX = 0;
fY = 0;
fZ = 0;
b死亡标志位 = 0;
}
}
__except (1)
{
Call_输出调试信息("创世战车  读取人物信息异常\r\n");
return NULL;
}
return this;
}
void T怪物列表::c初始化() //获取怪物数据
{
DWORD 模块句柄 = (DWORD)GetModuleHandleA("Crossout.exe");
DWORD Base = 0;
__try
{
for (int i=0;i<32;i++)
{
列表.szpName = (char*)(模块句柄 + Base_阵营数组 + i*Offset_阵营数组结构大小 + 0x8);
列表.d阵营 = *(DWORD*)(模块句柄 + Base_阵营数组 + i*Offset_阵营数组结构大小 + 0x68);
列表.ID = *(DWORD*)(模块句柄 + Base_阵营数组 + i*Offset_阵营数组结构大小 + 0xA0);
Base =  *(DWORD*)(模块句柄 + Base_对象属性遍历基地址);
列表.ID &= 0x0FFF;
列表.ID += 0x2AAD;
列表.ID *= 0xC;
Base += 列表.ID;
Base =  *(DWORD*)Base;
Call_输出调试信息("创世战车  读取周围对象:%X\r\n",Base);
if (Base!=0)
{
列表.fHp = *(FLOAT*)(Base + 0xC0);
列表.fMaxHp = *(FLOAT*)(Base + 0xC4);
列表.fX = *(FLOAT*)(Base + 0x2B0);
列表.fZ = *(FLOAT*)(Base + 0x2B4);
列表.fY = *(FLOAT*)(Base + 0x2B8);
列表.b死亡标志位 = 1;
}
else
{
列表.fHp = 0;
列表.fMaxHp = 0;
列表.fX = 0;
列表.fY = 0;
列表.fZ = 0;
列表.b死亡标志位 = 0;
}
}
}
__except (1)
{
Call_输出调试信息("创世战车    读取怪物信息异常\r\n");
}
}
③筛选出最近的地方目标并把对其进行准星瞄准
void Call_自动瞄准(FLOAT 怪物X,FLOAT 怪物Y,FLOAT 怪物Z)
{
T人物属性 人物;
人物.初始化();
FLOAT 水平角;
if (怪物X > 人物.fX && 怪物Y > 人物.fY)//第一象限
{
Call_输出调试信息("创世战车    自瞄进入第一象限\r\n");
水平角=(FLOAT)(0 - atan2(怪物Y-人物.fY,怪物X-人物.fX)-3.1415926/2);
}
if (怪物X < 人物.fX && 怪物Y > 人物.fY)//第二象限
{
Call_输出调试信息("创世战车    自瞄进入第二象限\r\n");
水平角=(FLOAT)(atan2(怪物Y-人物.fY,人物.fX-怪物X)+3.1415926/2);
}
if (怪物X < 人物.fX && 怪物Y < 人物.fY)//第三象限
{
Call_输出调试信息("创世战车    自瞄进入第三象限\r\n");
水平角=(FLOAT)(3.1415926/2-atan2(人物.fY-怪物Y,人物.fX-怪物X));
}
if (怪物X > 人物.fX && 怪物Y < 人物.fY)//第四象限
{
Call_输出调试信息("创世战车    自瞄进入第四象限\r\n");
水平角=(FLOAT)(atan2(人物.fY-怪物Y,怪物X-人物.fX)-3.1415926/2);
}
Call_输出调试信息("创世战车    自瞄水平角%f\r\n",水平角);
FLOAT 俯视角;
FLOAT 水平距离;
水平距离 = sqrt((怪物X-人物.fX)*(怪物X-人物.fX)+(怪物Y-人物.fY)*(怪物Y-人物.fY));
if (怪物Z > 人物.fZ)
{
Call_输出调试信息("创世战车    自瞄进入抬头模式\r\n");
俯视角 = atan2(怪物Z-人物.fZ,水平距离);
}
if (怪物Z < 人物.fZ)
{
Call_输出调试信息("创世战车    自瞄进入低头模式\r\n");
俯视角 = 0 - atan2(人物.fZ-怪物Z,水平距离);
}
Call_输出调试信息("创世战车    自瞄俯视角%f\r\n",俯视角);
DWORD 模块句柄 = (DWORD)GetModuleHandleA("Crossout.exe");
*(FLOAT*)(模块句柄 + Base_XY朝向基地址) = 水平角;   //计算出来的朝向值 写入内存
*(FLOAT*)(模块句柄 + Base_Z朝向基地址) = 俯视角;    //计算出来的朝向值 写入内存
}
int Call_自动瞄准最近()
{
T人物属性 人物;
人物.初始化();
T怪物列表 List;
List.c初始化();
FLOAT 距离 = 222;
FLOAT X;
FLOAT Y;
FLOAT Z;
for (int i=0;i<32;i++)  //筛选最近敌人
{
if (List.列表.fX > 0.1 || List.列表.fX < -0.1)
{
if (sqrt((List.列表.fX-人物.fX)*(List.列表.fX-人物.fX)+(List.列表.fY-人物.fY)*(List.列表.fY-人物.fY))< 距离 && i!=人物.d编号)
{
if (List.列表.d阵营 != 人物.d阵营)
{
Call_输出调试信息("创世战车    找到敌人!\r\n");
距离 = sqrt((List.列表.fX-人物.fX)*(List.列表.fX-人物.fX)+(List.列表.fY-人物.fY)*(List.列表.fY-人物.fY));
X = List.列表.fX;
Y = List.列表.fY;
Z = List.列表.fZ;
}
}
}
}
if (距离 < 222) //如果在我们攻击范围内才攻击
{
Call_自动瞄准(X,Y,Z-g_自减高度);
if (g_攻击标志位 == 0)
{
g_攻击标志位 = 1;
HANDLE handle_攻击线程=::CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)攻击线程,NULL,NULL,NULL);//创建线程
CloseHandle(handle_攻击线程);
}
return 1;
}
g_攻击标志位 = 0;
Sleep(300); // 确保彻底关闭
return 0;
}
最终实现自瞄效果
逆向交流qun:453769015



联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:卡秒源码 无需大漠(小白易用)
下一篇:开源一份插件驱动源码和过检测
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-5-6 03:29 , Processed in 0.090455 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表