0

我正在制作一个类似于“大富翁”游戏的基本游戏。您必须掷骰子并移动掷骰子的位置数(1-6)。

一个代码示例将是这样的:

public function RollDice() : int
{
    return randRange(1, 6);
}

private function randRange(param1:int, param2:int) : int
{
    return Math.floor(Math.random() * (param2 - param1 + 1)) + param1;
}

但是我担心这段代码是否足够安全,可以防止一些可能的操作(例如使用作弊引擎来更改滚动的数字)。我实际上试图“破解”我的游戏,但只成功地改变了 randRange 函数的数字,所以我可以掷骰子,比如说,一个特定的数字或更短的数字范围。但我只能在玩之前这样做(在我的游戏中按下开始按钮)。当我再次尝试更改值时,什么都没有改变(好吧,我不是一个黑客......)。

我做了一些研究,发现 Actionscript 虚拟机的 JIT 编译器可能是我失败的罪魁祸首,因为它将我的游戏(SWF)编译成在 CPU 上运行的机器代码。据我所知,JIT 编译器在第一次运行之前不会编译函数,但是一旦编译完成,该函数的 SWF 字节码就再也不会被访问。

现在的问题是:有没有办法在使用Cheat Engine等程序调用函数后改变掷骰子的数量?

4

1 回答 1

0

现在的问题是:有没有办法在使用Cheat Engine等程序调用函数后改变掷骰子的数量?

是的。作为一项规则:如果它是客户端,您可以访问它,从而操纵它。

如果你真的担心别人作弊,你所能做的就是努力让他们更难,但作弊总是有可能的。

如果你真的想避免它,那么让它成为服务器端。

于 2013-11-11T13:18:21.090 回答