常见问题

常见问题

> 新手指南

这里汇总了玩家们经常提出的问题。如果没有找到你的问题,尽管到聊天或论坛提问。

怎样用手枪连开三枪?

每根韭葱都有一定数量的行动点(TP,1 级时为 10 点,但之后可能会变化),它们决定了你在一个回合内能执行多少个动作。

例如,用手枪射击一次消耗 3 TP,所以你可以花 9 TP 在一个回合内射击 3 次。

要多次射击,只需要有足够的 TP,并把射击指令多写几遍,例如:

var enemy = getNearestEnemy()

useWeapon(enemy) useWeapon(enemy) useWeapon(enemy)

你也可以使用循环。

为什么和我对战的韭葱等级比我的高?

系统是根据韭葱的天赋来匹配对手的。每场战斗后,韭葱会根据战斗结果获得或失去天赋。战斗结果取决于每位玩家的 AI、属性,以及武器和芯片。因此,天赋反映的是这一整套配置在与其他玩家对抗时的表现。

所以,遇到等级更高的韭葱其实是个好兆头:这说明你的策略(装备和属性的选择,以及你的 AI)足以弥补等级上的差距,也就是属性上的差距。

赢得越多,你的韭葱天赋越高,遇到的对手也就越来越强。等你开始输的时候,它的天赋就会涨得慢一些,甚至下降。这样一来,就能保证在现有玩家中为你匹配到实力尽可能接近的对手。

此外,低等级区有很多被弃养的韭葱。它们一直挨别人的打,因此升了级,但 AI 没有改进,属性也没有加点。这也是你会遇到一些看起来更强的对手的原因之一。

放心,等级高了以后这种情况就会少很多。如果到了高等级还是这样,那就把它当作一种夸奖吧!

为什么我的韭葱爆炸了?

当某个错误导致你的 AI 停止运行时,就会出现这种情况。这时要查看战报中显示的错误信息。通常这是因为触及了游戏的某项限制,比如操作数上限。

为什么会出现“AI 中断:消耗的操作数过多”的错误信息?

在 AI 中,每次调用函数、每次使用变量,都会消耗操作数。

一根韭葱每回合最多能执行的操作数为 getMaxOperations。

超出这个上限时就会显示这条消息。在低等级时,这通常是因为 AI 中出现了死循环。

为什么我的韭葱在测试战斗和菜园里的表现不一样?

进行测试战斗时,可以在测试韭葱选择框正上方的列表中选择要测试的 AI。这个 AI 可能与韭葱在菜园中使用的 AI 不同,后者需要在韭葱页面上修改。

怎样召唤球茎?

第一个球茎是弱小球茎(CHIP\_PUNY\_BULB),48 级解锁。球茎的 AI 必须写在函数里。 例如,要让我的球茎先向召唤者移动,再用蛋白质给自己增益:

function punyAI() { moveToward(getSummoner()) useChip(CHIP_PROTEIN, getEntity()) }

召唤球茎时,不能用 useChip 函数,而要像下面这样使用 summon(以上面的例子为例):

// cell:要召唤球茎的格子 summon(CHIP_PUNY_BULB, cell, punyAI)

注意,不要在球茎 AI 的函数名后面加“()”:我们传入的参数是函数本身,而不是它可能的返回值。 更多详情请见球茎页面。

球茎的属性是怎么决定的?

球茎的属性取决于召唤它的韭葱的等级。召唤者达到 300 级(或更高)时属性达到最大值,召唤者为 1 级时属性为最小值(实际上不可能出现这种情况)。

在这两个等级之间,属性(caracteristique)随召唤者等级(niveauInvocateur)线性变化,计算公式如下:

caracteristique = floor(min + (max - min) * min(300, niveauInvocateur) / 300)

如果召唤者是 301 级,球茎的属性与 300 级召唤者召唤出的球茎相同。

韭葱的属性是怎么分配的?

升级获得的属性点由你自己分配到韭葱的各项属性上。(这可是韭葱成长路上的一个关键“点”)

关于如何分配属性点,详见属性页面。

怎样携带更多武器和芯片?

你的韭葱在 100 级和 200 级时各获得一个武器栏位。 韭葱可装备的芯片数量取决于它的内存属性。

详见芯片和武器页面。

怎样饲养更多韭葱?

正如 /help/general 中“饲养员”一节所述。

之后你最多可以拥有 4 根韭葱,条件如下:

\* 注意,这些韭葱必须按顺序满足条件。如果你的第 1 根韭葱是 150 级、第 2 根是 50 级、第 3 根是 100 级,是无法购买第 4 根韭葱的……

怎样自己找出错误?

当你的 AI 没有按预期运行时,在去聊天里求助之前,你可以先在代码中加入一些 debug(),帮助你弄清楚发生了什么:

var enemy = getNearestEnemy() debug("离我最近的敌人的编号 = " + enemy)

这段代码会在战报中显示变量 enemy 的内容,前面加上字符串“离我最近的敌人的编号 = ”。debug() 不消耗行动点(TP),但最好不要滥用:一来会让战报更难读,二来每场战斗允许调用 debug() 的次数也是有限的。

debug() 也可以显示数组,例如:

debug("存活的盟友:" + getAliveAllies())

这会在战报中显示一个数组,其中包含所有存活友方实体的编号。不过,在处理格子数组时,用 mark() 函数在战斗中直接给地图上的格子上色要方便得多:

var maPosition = getCell() mark(maPosition + 17, COLOR_RED)

这段代码会把地图上你的韭葱右边的格子标成红色。另外,你还可以用 getColor() 函数创建自己的颜色,甚至能画出彩虹或者蒙娜丽莎!

怎样在回合之间保留变量的值?

只需使用全局变量,也就是用 global 关键字声明:

或者使用类的静态字段,用 static 关键字声明: