英雄联盟 外挂脚本 实现原理

本来应该早点来蹭这个热度的,基本上每年LOL世界赛我都有看,今年终于拿了冠军,觉得很开心~

所以我们这次来聊一聊LOL的作弊原理吧~

当然,作弊是不对的。

想要买挂而搜到这篇文章的同学,可以退出去了。

了解外挂之前,我们需要先了解一下LOL的机制。

首先,粗略的讲,我们每个人操作的角色可以具有『受伤』和『没受伤』两种状态。(什么?这算什么分类?)

然后,要触发『受伤』状态,角色需要被『攻击物』产生『碰撞』。

比如这样,图中快乐风男被防御塔的『攻击』碰撞到了,于是产生了『受伤』状态,hp减少。

而当一个角色HP减为0的时候,角色就会回泉水洗澡。这样,某类外挂就产生了,目的很单纯——避免角色回泉水。

那么为了达到这个目的,需要从动机开始往前推:

避免角色死亡——》避免角色受伤——》避免角色与『攻击物』碰撞

于是,外挂需要监听的对象就很清晰了,『角色』与『攻击物』

那么,『攻击物』是从哪里产生的呢?

可以从图中看出,『攻击物』由角色技能触发,并具有一定的移动规律。

用代码来表示则是这样:

这代码什么意思,我已经不记得了,大概就是,生成一个『攻击物』(比如艾希的冰箭),然后设定它的移动速度,移动轨迹,生命周期。

然后冰箭就会在这段时间内沿着既定的轨迹移动,中途与其他角色产生碰撞。

那么角色收到碰撞反馈后,就会触发『受伤』的状态。

——

了解了技能机制以后,外挂机制就简单了。

首先,触发技能的『角色』玩家是可以看到自己的技能轨迹的。

那么,外挂的机制,就是把这个轨迹同步给对方角色。

但如果只是这种程度的话,对玩家的帮助还不够。

毕竟游戏里有很多技能触发轨迹是所有人可见的,但就算能看到也躲不开。

所以,这时候,脚本就开始了。

既然,知道了轨迹,脚本就会开始计算玩家『角色』的位置,并进行移动,从而使角色躲开『攻击物』的轨迹,避免碰撞产生。

计算方式有很多,而这其实方法就是游戏制作者为每个游戏编写AI时一直在做的事……

最后呈现的效果,则是

其他的外挂,比如:

无敌,其实就是在『受伤』状态触发时,把对应函数里的代码注释掉就行了。

其他的就不一一列举了。


最后我们来讨论一个问题。

很多人会有很明确的『是非观』。

比如,如果一个人说他喜欢画画,于是别人就认为他喜欢的是『画画』这件事。

那么,被关在密闭空间强迫画一些乱七八糟的东西,这种行为算不算是在画画呢?那么那个人所说的喜欢画画,就是只要在执行『笔在纸上划动』就算画画这件行为么?

——

所以,归根到底,我们做的每件事,喜欢与否,是取决于,我们做这件事的动机以及这件事本身会产生的过程不是么

外挂本身并不是什么高技术难度的东西,相反,这玩意只是对游戏本身规则的一些补充或删减,如果弥补了游戏制作者的不足,反而是一个很好的辅助工具。

如果,你只是想让你的游戏体验更好,使用一些辅助道具,而这不会对其他人产生不好的影响,那有何不可呢?比如借助辅助工具,了解当前英雄的出装,以及更好的玩法之类的。

至于,如果本意不坏,但是让人产生不好的影响,当然是需要受到一些惩罚,比如月饼……但其实,我们很多时候在讨论的不是月饼作弊这件事,而是这个惩罚是否是等价于『偷苹果的人都应该判处死刑』这个结果本身。


精灵之息全新大改版,将在这两天上线,敬请期待~

本文分享自微信公众号 - Sign(SignACG)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据钻研

稀土

致每一位加入稀土团队的你,我们到底在为怎样的一群人服务? 每一个公司、每一个产品都有它创立的意义,这篇文章只是希望帮助加入稀土的你们了解我们是一个怎样的公司,在...

32750
来自专栏大数据文摘

业界 | 成为CTO之前,我希望有人告诉我这些

12020
来自专栏云计算

评估云的安全性

云安全既是一场短跑也是一场马拉松。这场短跑需要安全团队迅速采取正确的防御措施,以在短期内解决零日攻击 (zero-day attacks) 和持续性的威胁。同时...

26070
来自专栏ytkah

“微信连Wi-Fi”和“摇一摇•周边”正式开启自助申请入口测试

  微信方面宣布“微信连Wi-Fi”和“摇一摇•周边”正式开启自助申请入口测试。据介绍,测试期间,商户可分别通过 https://wifi.weixin.qq....

34770
来自专栏申龙斌的程序人生

搞定GTD - 合乎自然的项目规划法

这次介绍GTD总流程图左侧的项目分解的步骤,对于需要多个步骤的项目,需要留出专门的时间进行项目计划,分解出多个行动来。《搞定1》里称为一个项目的纵向规划,而在《...

38780
来自专栏芋道源码1024

Java程序员月薪达到三万,需要技术水平达到什么程度?(文末送书)

最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员如何能月薪达到三万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许...

15520
来自专栏人称T客

50亿厂商Slack的前世今生

Slack是史上增长最快的SaaS创业公司,如今《财富》100强中的企业中有77%都在使用Slack。同时,它还在短短五年间里完成了一项看似不可能完成的任务:让...

18700
来自专栏敏捷开发&项目管理

测试驱动威力不分国界

最近公司开始了一个新项目,在国外成立了一个开发组5个人 老板想让他们使用TDD来进行开发(Unit Test),于是我和另两个中国同事就应招过去了两个星期(主要...

37340
来自专栏Python攻城狮

知乎上值得关注的Python大佬

@xlzd 比较全能的Python大牛,精通爬虫、后端 @廖雪峰 这个,相信大家都看过老师的入门教程 @Crossin Crossin的编程教室创始人,帮助...

21340
来自专栏老九学堂

程序员学习需要攻克的8大障碍

作为一个时时关注小伙伴们学习情况的人,老九君看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。 大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些...

37040

扫码关注云+社区

领取腾讯云代金券