本篇讲的是 当前比较火热的 LXL 百度了一下午,发现 网络上并没有多少资料 有的也只是10.x的版本数据及写法,里面所写的思路可以参考,但是没有实践的的基础,很难理解他们大佬的写法。下面 我就来讲一下,我所认知的LOL轨迹原理,及实现的几种思路。
一:技能轨迹,顾名思义,就是敌军弹道的运行轨迹,可以理解为拳击手的出拳轨迹,FPS射击的子弹轨迹等等。当然 你若是原先就是FPS某游戏的作者,那么在看本篇之前,你要把你脑海中的FPS的知识点暂时的放一下,可能会跟你想的有很大的出路。 绘制挂接这些就不说了,如果你连绘制挂接都没有搞定的话,那么下面的纸上谈兵之言,你没有实践的空间,看了也白看。
准备阶段:绘制,矩阵转换或者游戏内的call转换,部分游戏数据(看自己需要什么)
1:直线轨迹
①:滚动类(例莫甘娜Q,光辉Q)
先给大家灌输这么一个思路:完整的技能需要用到哪些数据
数据:开始坐标,结束坐标(当然这个结束坐标在游戏内有两种表达,具体后面会讲到)技能前摇(例如EZ Q,W 释放前我们屏幕上会出现一个读条,我把这个理解为技能的前摇),技能速度(speed),技能宽度(width),技能范围(Range),技能存活时间(及技能从开始运动到结束需要多久,通常是 技能的开始时间 + 技能范围 / 技能速度 + 技能前摇 这个就是技能结束的时间) 当然我上述所说都是最简单的,最基础的数据 缺一不可,如果你还想细化,那就要找游戏内的碰撞检测,或者你可以用算法来实现皆可,当然算法会有误差,内存会方便很多
有了上述的数据 其实大佬已经在敲代码了,根本不需要我在说了,当然我想相信你还会回来的,因为你会遇到各式各样的问题。
如上述所说,此片重点讲解的是滚动类的,如果你只是想写个轨迹 那么OK,我下面讲的对你而言就是废话。我们继续,滚动类 当然还需要技能轨迹当前的位置,如果你后期还想要加躲避的话 那么 肯定不能让这个矩形从头到尾都存在,肯定要会动起来 这样更加的生动形象,随着技能当前的位置实时滚动具体算法 我在上了部分代码的截图,新手可以参考下
忘记一个重点了,那就是技能数据或者说是技能指针哪里来。
获取方法一;面板 可以获取当前的QWERDF 技能的各种信息 宽度 范围 速度 坐标(包含开始结束),当然这个办法获取到的是有前摇的 无前摇的获取不到(例如石头人R)
获取方法二;技能HOOK,这个可以通过找技能数据相关信息的访问找到,本人看了十多个技能HOOK点,大概得出的结论是 基本技能HOOK点在9开头的 (加了league of ledengs.exe 地址的400000) 对象指针 = Ecx - 0x2370 技能指针 = Esi 好了技能轨迹 大概的样子因该就没问题啦
下面就是我做出来的效果图,各位大佬有更好的想法的 可以私聊我 欢迎有更加深入研究的小伙伴一起探讨下,本人是个小白只会易 这个C的大佬还请高抬贵手 你说的专业术语我都听不懂
有机会的话 可以讲一下 非运动类的轨迹 包括圆形,扇形,梯形等轨迹的画法,这个 最好是高中学过 正弦 余弦函数的 没学过也可以,百度一下就好了~