看流星社区

 找回密码
 注册账号
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
查看: 5396|回复: 4

CSGO自瞄原理图文讲解

[复制链接]

该用户从未签到

发表于 2019-5-24 21:02:06 | 显示全部楼层 |阅读模式

说到FPS游戏的自瞄,大家都会想到读玩家的坐标,然后将坐标转化为屏幕坐标,再移动鼠标,其实这个有很大的缺陷,而且过程也比较麻烦,分辨率一换又要出问题
还有一种自瞄方法,现在CSGO大多数自瞄都是这样一个原理,获得敌人和自己的坐标,通过坐标来计算角度,通过写角度来实现自瞄
目前通用的计算角度函数是这样的

void CalcAngle( float *src, float *dst, float *angles )
{
    double delta[3] = { (src[0]-dst[0]), (src[1]-dst[1]), (src[2]-dst[2]) };
    double hyp = sqrt(delta[0]*delta[0] + delta[1]*delta[1]);
    angles[0] = (float) (asinf(delta[2]/hyp) * (180/3.1415926));
    angles[1] = (float) (atanf(delta[1]/delta[0]) * (180/3.1415926));
    angles[2] = 0.0f;
    if(delta[0] >= 0.0) { angles[1] += 180.0f; }
}


不过我今天要讲的是另一种算法,但是也相差不多
1.png

  
图上是两个玩家在三维上的位置,分别是A(-4,-2,1),B(4,2,1)
如果B是我们自己,而A是敌人,我们可以通过计算向量BA来得到两个玩家之间的距离,向量BA=A-B=(8,4,1),计算出向量BA后我们可以把我们自己也就是B当成原点坐标重新建立一个三维坐标系,如下图:
22.png

而敌人的坐标就是我们求出来的向量了
给大家简单介绍一个关于三维的概念:
· pitch是围绕X轴旋转,也叫做俯仰角
· yaw是围绕Y轴旋转,也叫做偏航角
以人物角色看,yaw是左右偏动,而picth是上下偏动,,在游戏中角度都是固定的一个方向,偏航和我们学习的二维坐标一样的,0°,90°,180°,270°,,而俯仰正Z轴是-90°,负Z轴是90°,俯仰可能和我们平时认知有点不一样,,不过不重要,我们继续
红色和X轴夹角我们称之为yaw,可以通过arctan(y/x)来计算出,而图中 yaw = arctan(4/8) ≈ 26°
蓝色和红色夹角我们称之为pitch,可以通过arcsin(z/红色),而 红色 = sqrt(x2 + y2) 所以 pitch = srcsin(2/(sqrt(82+42))) ≈ 6.37°
刚刚说过Z轴正半轴是-90°,而我们算出来是6.37°,很明显,如果俯仰以6.37°来写,那么我们的视角会朝下移动,所以我们要给俯仰度数取反 pitch = arcsin(z/红色) * -1
大家可能以为到这儿就结束了,其实不然,还有另外一种情况,我们继续往下看
3.png
  
如果最初我们是以A为我们玩家本身,B是敌人,那么我们要求的向量就是向量AB了,而向量AB = B - A = (-8,-4,1)
这样我们就可以以A为原点,敌人B的位置就是向量AB取成点的坐标,同样的道理我们计算出  红线 和 X 轴负半轴的夹角为 -26°,刚刚说到偏航是X轴开始为0°,如果我们直接写入-36°,那么玩家视觉必定转向的是第四象限而不是第三象限,所以我们就需要在算法里面多加一条判断 (敌人-我) 的X是否小于等于0 ,如果满足 yaw = yaw + 180°

我们刚刚算的在第一象限的时候 X > 0 并未满足小于等于0 所以yaw是26° ,不需要加180°,写入角度26°也会转向26°位置
而第三象限的时候 X < 0 满足了小于等于0 所以 yaw = -26 °+ 180° = 154°,大家可以想象一下 154°是否为第三象限玩家所在位置度数


OK,现在大功告成,我们只需要获得自己头部位置和敌人头部位置,然后通过以上计算得出yaw和pitch,在通过写内存来达到自瞄头部,,我把简单过程写出来,具体函数我就不写了哈
角度计算函数:
vec3 aimbot::calcAngles(vec3 us,vec3 them)
{
        vec3 dists;
        dists =them - us;
        float hyp = dists.magnitude();
        vec3 result;
        result.x = (asinf(dists.z / hyp)*57.295779513082f) ;
        result.y = (atanf(dists.y / dists.x)*57.295779513082f);
        result.z = 0;
        if (dists.x <= 0)
        {
                result.y += 180;
        }
        result.x = -result.x;
        return result;
}

大家可能会问为什么会有*57.295779513082f,这个是 180/3.1415926得到的,因为C++里asinf和atanf得出的弧度值,需要*(180/PI) 来转化为度数

void aimbot()
{
        Player localPlayer = utils.getLocalPlayer();
        Player closetPlayer = aim.getCloset();
        closetPlayer.getInfo();
        if (getClassid(closetPlayer.base) != 35)
                return;
        vec3 v2;
        v2 = getBonePos(localPlayer.base);
        vec3 v1;
        v1 = getBonePos(closetPlayer.base);
        vec3 aimat = aim.calcAngles(v2, v1);
        int pViewAngle = vam.Read<int>(bEngine + clientState);
        vam.Write<float>((pViewAngle + ViewAngles), aimat.x);
        vam.Write<float>((pViewAngle + ViewAngles + 0x4), aimat.y);
}


aimat.x接受的是pitch,aimait.y接受的是yaw;其他的函数我就不发出来了哈,这里主要是介绍csgo自瞄中的数学,其他的大家可以自己去学习
if (getClassid(closetPlayer.base) != 35) 这句是判断玩家实体是否为玩家

vec3:
class vec3
{
public:
        float x;
        float y;
        float z;
        vec3() :x(0), y(0), z(0){}
        vec3(float x,float y,float z):x(x),y(y),z(z){}
        vec3 operator + (vec3 v)
        {
                vec3 vr;
                vr.x = this->x + v.x;
                vr.y = this->y + v.y;
                vr.z = this->z + v.z;
                return vr;
        }
        vec3 operator - (vec3 v)
        {
                vec3 vr;
                vr.x = this->x - v.x;
                vr.y = this->y - v.y;
                vr.z = this->z - v.z;
                return vr;
        }
        float magnitude()
        {
                return sqrt((x * x) + (y * y) + (z * z));
        }
}

大家有什么不理解的可以在下面发粗来我给你们解答-.-+,只限本教程的哈

该用户从未签到

发表于 2019-5-30 14:32:08 | 显示全部楼层
激动人心,无法言表,感谢楼主,感谢看流星社区的分享!

该用户从未签到

发表于 2019-6-1 16:55:26 | 显示全部楼层
激动人心,无法言表,感谢楼主,感谢看流星社区的分享!
  • TA的每日心情
    开心
    2020-6-26 23:40
  • 发表于 2019-6-2 15:05:35 | 显示全部楼层
    看到这么好的资源真是高兴,楼主辛苦了!

    该用户从未签到

    发表于 2020-2-22 20:16:57 | 显示全部楼层




    {2020年02月19日} 未来三个月之内,爆发全球历史最大金融海啸!{假摔}

    {2020卝年02月19曰} 未来三个月之内,bào发全球历卝史最大金融海啸!{假摔}


    作者: 吹哨人贰
    时间 :   2020卝年2月19曰  星期三   农历正月廿六雨水    dèng小卝平去世纪卝念曰
               上证综指 2⑨84.97点        恒指 27530.20点      道指 29232.19点

    本人 邮.箱 :
    126  用户名: mmdd2016     s i n a  c o m   用户名:  mmdd2016
    126  用户名: iii217               s i n a   c n    用户名:  iii217


    突然的,全球金融 雪 崩 溃 坝 、彻 底 崩 溃 ;
    没有什么,“谁也没想到”、“友邦惊诧”黑天鹅白天鹅哥斯拉撞冰山;
    一切都是,蓄谋已久的,精心策划 --- 惊天魔盗团。zéi喊捉zéi。

    1  未来三个月之内,即,2020卝年三月、四月、五月,将会突然bào发,
        人类最大金融海啸,全球股市、金融市场连续跌亭大崩卝盘。
        {大盘连续或稍稍间断30/40多个跌亭板 }
        太久的忍耐时机筹谋,财狼们终于要动手了;
        虎虎虎。亦喜亦忧。大吉大凶。
        静里忽然动干戈。
        缠中说禅13年之前预卝言的,2019毁miè性下跌。{稍有误差}
        已故“周期天王”周金涛的,“2018年到2019年是康波周期的万劫
        不复之年”。
        道琼斯,憋了11年的一泡shǐ,总算找到了,公共厕所。


    2  全球连续跌停大崩卝盘的见底点位:
        上证综指160点左右,见底{166④的十分之一}。
        以今天上正宗指2⑨84.97计算,大约“瞬间”跌去 18倍。
        也可能,上证综指95.79点,见底。
        最震撼的推卝倒重来,竟然只是,洗盘 !冲顶之前的洗盘 !!
        道琼斯,跌去45倍,6④0点见底 --- {6④40.О8点的十分之一};
        29232.19 --→ 6④0点 ;
        恒生指数跌至1000点见底。
        27530.20 ---→ 1000点   ;   
        仙股满天飞。

    12个跌停板之后,停顿、反弹,之后,还有12个跌停板;
    12个跌停板之后,停顿、反弹,之后,还有12个跌停板。

    谜底,让你吃惊的合不拢嘴。这就对了。
    我强调,我重申,股价跌去97% ,跌去97%,不是庄稼们 发 疯 了,
    而是,他们,早已筹谋的,既定共同战略布jú。
    不把散户完全吓的 屁 滚 niào liú,如何能达到,彻 底 洗 盘 的目的 ??
    跌去九成,就像1929,对老股卝民来说,已经xí以为常;中卝囯股市,
    曾经跌去90%的股票,比比皆是。
    跌去九成,已经,无fǎ充分刺卝激震撼、撕 裂 老股卝民、私募的神 经
    系 统 。

    五重斩,五福临门:
    5178 ÷ 2 ÷ 2 ÷ 2 ÷ 2 ÷ 2 = 162点
    为何,大盘160点左右见底??
    本人在:
    {2019年11月30曰}论证2020上半年全球大崩卝盘的见底点位
    {2019年5月19曰}论证2019下半年全球大崩卝盘的见底点位
    【2016年3月11曰】四论,全球塴盘的见底点位。
    【2015年9月26曰】三论,全球塴盘的见底点位。
    ……  ……
    几篇文章之中有模糊的猜测论证,网上可以搜到。

    2020卝年03月、04月、05月,忽然之间,天昏地暗,天崩地裂。
    朕给出,令庸俗大众惊诧疑惑、无fǎ接受的“庄稼底牌”,是无价之
    宝。
    真卝理是电,不以任何人,任何泉卝利、任何所谓“大多数”的,意志为
    转移。

    猝不及防,永远出乎散租意料,“万万没想到”,使之“猜不透”、团
    团转、热锅蚂蚁;驱赶围猎,永远使散户沉浸于tān婪恐惧烈火寒冰,追
    涨shā跌动物本能”无fǎ自拔;
    是庄稼们百战百胜吃香喝辣的,看家fǎ宝。

    见底点位{上证宗指160点或者95.79点},是全球庄稼们{xié.饿.金融精英}
    蓄谋已久的共识,不以任何人意志为转移。
    即,在见底之前,出抬任何“救卝市利好”都是徒劳无益瞎折腾。
    当见底之时,即便不出抬任何救卝市措施,股市也会自动“大反转”腾空
    而起。

    中外庄稼qīn蜜配合,完成最后的惨烈洗盘。
    而直接zá盘、直接做空,导致中卝囯股市xuè崩的,是中卝囯庄稼 ---- 中卝囯
    财富精英之中的精英 --- 资本大鳄。
    每一只股票背后,都有庄稼暗中cāo纵走势。
    每一个囯卝家的股票市场,金融市场,都有庄稼总司令暗中主导一切。
    黑老大、总指挥,是 黯 黑 帝 囯。

    索罗斯的,类兽卝性、反射理论,动态远均衡,大起大落理论。
    缠中说禅的,跌停板洗盘fǎ。


    3  见底时间:2020卝年六卝月至2020卝年八月全球股市同步见底。
       
    ---- 见底以上证综指160{95.79}}点为准 ,见底时间仅为cū略推断。
    ---- 好深一个坑;假摔,象 真 的 一 样 。
    ---- 来去匆匆,夏曰的大bào雨 ;
           两个月、至多三、四个月之内,完成最后的 溃 坝 式 终极洗盘。
    ---- 最疯狂的连续跌停,然后,迅速连续涨停,拉起。荡秋千。
           庄家绝不敢在底部卝长期停留,因为股价太便宜,远低于,庄家
           的长期平均持仓成本。

    连序跌亭洗盘过程之中,会有反弹诱多,会有横盘迷卝魂阵,会有底部
    构筑 W底的把戏 。
    并没有什么,情绪彻底崩溃,破罐破摔,歇斯底里不顾一切 ……
    ---- 演戏给你看!
           一切都在,沉着冷静,聪明透顶庄稼们的,精确掌控之中。

    本人对见底点位、见底时间的推演预卝测,可能不那么准确。这也,不
    是什么大问题。
    最关键,全球崩卝盘的“性质”,是“挖坑”行情,是黎明之前最后最
    黑卝暗最凶狠的一shā。这一点,本人绝对不会错,这就够了,足够了。
    但愿本剂疫卝苗,不会失效。
    底部巨量,惊天的底部巨量,历卝史最高成交量,全民目击的狐狸尾巴,
    谁也无fǎ否认。
    这就是,庄稼xī筹洗盘,mǎi入股票的,铁证。

    疑似吹鼓手,2018年О8月16曰海通证券分析师荀玉根表示,A股正处
    于第五轮牛熊周期的底部。前四次除20О8年那次外,其余三次1994年
    7月-1996年1月、2002年1月-2005年6卝月、2012年1月-2014年6卝月都
    是以时间换空间的震荡圆弧底。(中卝囯证券报)
    “磨底是长期的、复杂的过程,期间不排除还会出现巨震。”

    为什么,一定是“以时间换空间的震荡圆弧底”;
    而不可能是,“以空间换时间的金zhēn探底”??

    可能的未来是,当上证综指连续跌停跌破贰佰点,跌破壹佰点之时,
    病急乱投医,guān卝员们按约定祭出四个救卝市最大shā器 :
    ----  取消T+1,取消10%涨跌幅限卝制,万亿借款央行直接入市,
            推出88万亿经济刺卝激印钞票计划。
    中卝囯股市,次曰,一天bào卝涨30倍,把所有散户都闪了腰。
    中卝囯百卝姓,早应学会“听反话”。它吹东,那么表明东方有máo坑;
    西边才是正确的选择与方向。

    4   2020卝年三月、四月、五月全球崩卝盘断头铡dāo的利空借口:
         持续上涨91年{从1929算起},终极冲顶之前必然的总洗盘,
         持续上涨91年{从1929算起},终极冲顶之前必然的总洗盘,
         不以任何人,任何事卝件为转移。
    不管,有没有,中美贸易战、全球贸易战,{朝}核危卝机、特朗普 金 正 恩
    疯狂折腾、美囯加息 、或者降息预期落空、中卝囯加息、恐怖xí卝击、斩首
    遇刺、中卝囯经济下行,债务危卝机、公卝投危卝机、拖欧危卝机、减持危卝机、汇率
    危卝机、石油危卝机、钱荒危卝机、质押股票平仓、配资bào仓、liú姓投资人出事
    了、科创板注册制、囯债收益率、下调评级、程序化自动交易、软件自动
    斩仓、新股IPO抽xuè、索罗斯做空、巴以危卝机、土耳其叙利亚伊朗阿卝拉卝伯
    危卝机、关门危卝机、废除中岛条约、第二个“广卝场协议”、担忧全球经济放
    缓、文明冲卝突赵薇gē韭菜、地卝震海啸火山烹卝发冠状病dú疫情等自卝然卝灾卝害、
    最怕不确定 ……
    一座或N座城市,遭受一次或N次的,原子弹恐怖xí卝击 ---- 本质还是自己
    zhà自己,演戏。资本来到世间,从头到脚,每个máo孔都滴着xuè和肮卝脏的东
    西。
    狼吃小羊,与溪水无关,与 武 汉 肺 炎 病dú 是不是 生 物 武卝器无关。
    庄家们刻意制卝造。蓄谋已久。zéi喊捉zéi。闪击战。
    又一次,剪羊máo,开始了。躲不过的。

    所谓“股汇双shā”其实并不存在,或者,那只是一个借口。
    看看人卝民币汇率长期走势图,与中卝囯股市涨跌并无正相关。况且,本币
    贬值,股市上涨,才是正常现象。例如,委内瑞拉的万倍通胀,股市上
    涨74倍。
    汇市,或者其它乱七八糟,都是 烟 雾 弹 ,股市,才是主战场。


    5  有关2019年底bào发人类最大金融海啸的,事先预卝测文章:

    {1}《2019年底bào发世界经济危卝机的可能性分析(万字长文)》
             ---- 知乎;星象大白;2019年8月28曰前后成文
                   专题分析,一共分为4篇,长达3万字。
    点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
    您需要登录后才可以回帖 登录 | 注册账号

    本版积分规则

    小黑屋|手机版|Archiver|看流星社区 |网站地图

    GMT+8, 2020-7-5 16:00

    Powered by Kanliuxing X3.4

    © 2010-2019 kanliuxing.com

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