本篇教程由作者设定使用 CC BY-NC 协议。

我们所熟知的一部分整合包(如飞翔之路3贪婪整合包)是有对一些作弊行为进行阻止的,作者本意也许是希望遵守所设定的游戏规则,但总有玩家会不服:

“我就想加xx模组,我就想怎么怎么”

于是乎可能会通过发视频之类来教怎么绕过反作弊来反抗作者的这种行为,作者不喜欢看到这种,很多玩家也不乐意看到。

既然如此那我就想到了另外一种方式来防止这种情况出现:

——走别人的路,让别人无路可走。


这就是我要说的主题了,利用crt实现可开关的反作弊,玩家不想要反作弊让他们自己关。

实现起来实际也是很简单,大致思路是这样:


给出一个类型为Bool的变量用来存储反作弊的开关,然后用这个来控制反作弊开关。就这么简单。

按我的习惯是,首先创建一个zs文件来作为变量代理。

public class ProxyVar {
    public static var cheat as bool = false; //是否可作弊,默认值为false,后续可被修改
}

然后可以再创建一个zs来存储反作弊相关的东西。

if(ProxyVar.cheat==false) {
    //填写反作弊相关代码
}

哦对了,还要让玩家很容易就能开关反作弊。

ProxyVar.cheat=false;

这个放到单独一个zs作为config即可。

但是吗我觉得不美观,因此我比较喜欢这样,单独创建一个zs作为config的代理:

public function enableCheat(cheat as bool) as void {
    ProxyVar.cheat = cheat;
}

在zc(ZenCode)中用public修饰的function是可以被所有脚本直接调用的,所以你的config可以直接写成:

//是否可作弊 true为可作弊,false为不可作弊 默认为false
enableCheat(false);

当然以上代码不一定非要按我这么写,只不过这是我的习惯罢了。

由于玩家没有直接操纵ProxyVar中的值所以即便config瞎改导致error也不会有大问题,会直接使用设定的默认值,因此最好不要直接将ProxyVar作为config给玩家使用。

基于这种思路也可以在config中提供各种配置来调整整合包,只要作者不嫌麻烦。(例如说设定产出物品数量的倍率)