我正在制作一个类似于“大富翁”游戏的基本游戏。您必须掷骰子并移动掷骰子的位置数(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等程序调用函数后改变掷骰子的数量?