> Tutorial LeekScript
Você codifica sua IA como um abençoado. As linhas rolam e os nomes de... Não, espere, já vimos isso. Desta vez, sem mais mensagens vermelhas no editor, o compilador não tem mais segredos para você. É hora do duelo! Você observa seu alho-poró em seu ambiente natural, como Steve Irwin na horta. Eles andam por aí, brincam, metralham uns aos outros, parecem felizes!
Eles não suspeitam que nas sombras se escondem inimigos formidáveis...
Ahhh um clássico!! Isso não é necessariamente um erro de AI, mas uma ultrapassagem do número máximo de operações (OPERATIONS_LIMIT definido em 20 milhões de operações). Confira os tutoriais Operations para um artigo detalhado.
Neste caso, podemos apostar em um loop sem condição de parada, que é chamado de loop infinito (ver Os Loops).
Um pequeno exemplo? Aqui está um pequeno código para usar a arma no oponente desde que tenhamos PT: 
Estúpido hein? Bem não ! Ocorre um erro durante a execução: Básico, linha 13 ▶ Interrupção AI: Erro de execução: Muitas operações executadas para esta rodada
Qual poderia ser o problema... Bem, simplesmente, enquanto a condição getTP() > 0, o loop será executado. Mas o que acontecerá quando não pudermos usar a arma? Bem, não vamos perder nenhum PT! E a condição sempre será verdadeira! Portanto, temos um loop que será executado ad infinitiiiiiiiiiiiiiiiiiii.
Para corrigir este caso, podemos testar o retorno da função useWeapon e analisar o resultado.
Possível correção:
Não é o tamanho que importa!
Sem ler sua IA, eu teria dificuldade em corrigi-lo... Ainda podemos citar algumas possibilidades:
lineOfSight uma vez custará 15 operações, usá-la em 3 loops aninhados custará!getCellToUseWeapon não devem ser abusadas! É útil armazenar o resultado de funções que consomem muito ou recodificá-las.Então, desta vez, tomei cuidado, coloquei o número certo de parâmetros na minha função. Então, sim, mas você não pode colocar qualquer parâmetro nas funções nativas. Essas funções requerem certos tipos de entrada. Se você tentar usá-los com os parâmetros errados, obterá um resultado semelhante:
AI Basic, linha 14 ▶ Função desconhecida: useWeapon(function) AI Basic, linha 14 ▶ Função desconhecida: useWeapon(null)
Aqui, a função useWeapon recebe um argumento numérico (uma constante WEAPON_...) e tentamos dar a ela uma função, ou um null. Obviamente, o gerador geme em nós.
AI Basic, linha 11 ▶ Função desconhecida: sort(number, null) sort espera um array como primeiro parâmetro, e tentamos dar a ele um número.
Basic AI, linha 8 ▶ Função desconhecida: getNearestEnemyTo(array) getNearestEnemyTo usa um ID de entidade como parâmetro, não um array.
Este erro também pode ocorrer devido à falta de parênteses:
Aqui nós armazenamos a função getNearestEnemy na variável enemy, ao invés de seu resultado (veja Functions. Correção: var inimigo = getNearestEnemy();
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.