了解运行时错误

了解运行时错误

> LeekScript 教程

你像一个有福的人一样编写你的 AI。线条滚动,名字……不等了,我们已经看到了。 这一次,编辑器中没有更多的红色信息,编译器没有更多的秘密给你。决斗时间到了! 你在自然环境中观察你的韭菜,就像史蒂夫欧文在菜园里一样。他们四处走动,他们嬉戏,他们互相扫射,他们看起来很开心!

他们不怀疑在阴影中潜伏着强大的敌人......

这一轮执行的操作太多

啊啊啊经典!! 这不一定是 AI 错误,而是超出了最大操作数(OPERATIONS_LIMIT 设置为 2000 万次操作)。查看 Operations 教程以获取详细文章。

我的 AI 很小!怎么可能?

在这种情况下,我们可以在没有停止条件的循环上下注,这称为无限循环(参见 The Loops)。

一个小例子?只要我们有 PT,下面就是对对手使用武器的小代码: ![](https://imgur.com/5dSsTJK.png)

愚蠢吧?好吧,不!执行过程中出现错误: 基本,第 13 行 ▶ AI 中断:执行错误:本轮执行的操作太多

可能是什么问题...很简单,只要 getTP() 条件 > 0,循环就会执行。 但是当我们不能使用武器时会发生什么? 好吧,我们不会失去任何 PT!并且条件永远为真!所以我们有一个循环将运行 ad infinitiiiiiiiiiiiiiiiiiiiii。

要纠正这种情况,我们可以测试 useWeapon 函数的返回并分析结果。

可能的修复:

我的AI 没那么小!

重要的不是尺寸!

不看你的人工智能,我很难纠正你……我们仍然可以举出一些可能性:

未知函数

所以这一次我很小心,我在我的函数中加入了正确数量的参数。所以,是的,但是您不能只在本机函数中放置任何参数。 这些功能需要特定的输入类型。如果您尝试将它们与错误的参数一起使用,您将得到类似的结果:

AI Basic,第 14 行 ▶ 未知函数:useWeapon(function) AI Basic,第 14 行 ▶ 未知函数:useWeapon(null)

在这里,useWeapon 函数接受一个数字参数(一个 WEAPON_... 常量),我们尝试给它一个函数,或者一个 null。显然发电机在我们身上呻吟。

AI Basic,第 11 行 ▶ 未知函数:sort(number, null) sort 需要一个数组作为第一个参数,我们尝试给它一个数字。

基本 AI,第 8 行 ▶ 未知函数:getNearestEnemyTo(array) getNearestEnemyTo 将实体 ID 作为参数,而不是数组。

由于缺少括号,也可能发生此错误:

这里我们将 getNearestEnemy 函数存储在 enemy 变量中,而不是它的结果(参见 Functions。 修复:var enemy = getNearestEnemy();

###——