《传奇》中自动寻路的脚本
但是随着科技的进步,一些脚本开始脱离了这个初衷,尤其MOBA游戏中的脚本最为猖獗。我们就以《英雄联盟》中的脚本来具体说一下。
首先,此类脚本的运行的目的是尽最大可能的避免操控的人物角色收到伤害。
在游戏里,鼠标放在技能上是可以看到非对向性技能的弹道的,所以可以通过脚本获得对方英雄的弹道,弹道速度,技能距离的数据,再通过回避“它”进行规避。
这个功能实现的基础就在于计算机的计算速度要比人类高出很多。所以在技能丢出去一瞬间,脚本早已计算好了最佳的躲避路径。
就像这样。
注意图中的红线代表着盲僧玩家鼠标点击的位置
英雄联盟是有受伤和无受伤两种状态。就比如说我被防御塔打一下,我就受伤了,受伤是通过某个碰撞物打在我身上,所以脚本的目的就很明确了:回避碰撞物防止受伤状态。
同样的还有大家耳熟能详的走A操作,理论上走a攻速到1.7以上以正常人的反应速度就无法完美走a。但是可以通过代码,进行完美的攻击间隔计算,从而达到完美走a。
对于早期的脚本,游戏公司不打压,也不支持。但是对于后者这种等同于外挂的脚本,是会严厉打击的。
游戏是由无数的代码堆叠而成的,而每个人对于功能代码的实现所思考的方式是不同的,这就给外挂提供了可乘之机。在这些位置修改或者插入一些特殊代码,就能够实现改变游戏的功能。小憨包还是用几个例子来具体说明一下。
- 内存修改
谈到内存修改类游戏就不得不提一下两款大名鼎鼎的软件:金山游侠和cheat engine。
前者是国产游戏修改软件的鼻祖,后者可以说是游戏外挂的始作俑者了。(LOL圈的阿呆就是利用金山游侠修改的)
对于绝大多数的单机游戏,手游,页游来说,虽然游戏服务器保存了大量的重要的参数,但由于客户端不可避免的需要进行大量的计算和资源的加载,本地内存中必定存有部分的临时变量,通过判断这些变量的变化规律和函数寻到利于自身的参数,比如伤害值一类。继而寻找该变量的内存地址,再更久分析获得内存基址进行修改,就完成了修改某项数值的操作。
为什么某些3A大作在仅仅出来一周不到就会被破解,因为游戏一旦下载下来,游戏数据就会全部存于本机之中,这样方便破解者的入手。
- DNF
DNF本身在设计时采取的理念就是服务器负责发送与接收数据,不参与数值的计算。简单来讲就是服务器只负责当前角色的货币,装备,材料等资源的获取与消耗情况,但不会检查过程是否合法,而角色的伤害运算则放在本地化进行。