> Учебник LeekScript
Вы программируете свой ИИ как благословенный. Строки прокручиваются, и имена... Нет, подождите, мы это уже видели. На этот раз больше никаких красных сообщений в редакторе, у компилятора больше нет секретов для вас. Пришло время дуэли! Вы наблюдаете за своим луком-пореем в его естественной среде, как Стив Ирвин в огороде. Они ходят, резвятся, стреляют друг в друга из пулемета и выглядят счастливыми!
Они не подозревают, что в тенях таятся грозные враги...
Ааа классика!! Это не обязательно ошибка ИИ, а превышение максимального количества операций (OPERATIONS_LIMIT установлено на уровне 20 миллионов операций). Подробную статью можно найти в учебниках Operations.
В этом случае мы можем сделать ставку на цикл без условия остановки, который называется бесконечным циклом (см. Петли).
Маленький пример? Вот небольшой код для использования оружия против противника, пока у нас есть PT: 
Глупый да? Ну нет ! При выполнении появляется ошибка: «Базовый, строка 13 ▶ Прерывание ИИ: ошибка выполнения: слишком много операций выполнено для этого раунда»
В чем может быть проблема... Ну, проще говоря, пока условие getTP() > 0, цикл будет выполняться. Но что произойдет, когда мы не сможем использовать оружие? Что ж, мы не собираемся терять PT! И условие всегда будет истинным! Итак, у нас есть цикл, который будет работать до бесконечности.
Чтобы исправить этот случай, мы можем протестировать возврат функции useWeapon и проанализировать результат.
Возможное решение:
Важен не размер!
Не читая ваш ИИ, мне было бы трудно вас поправить... Мы все же можем привести несколько вариантов:
lineOfSight стоит вам 15 операций, использование ее в 3-х вложенных циклах будет стоить вам!getCellToUseWeapon! Полезно хранить результат функций, которые много потребляют, или перекодировать их.Так что на этот раз я был осторожен, я указал правильное количество параметров в своей функции. Итак, да, но вы не можете поместить любой параметр в собственные функции. Эти функции требуют определенных типов ввода. Если вы попытаетесь использовать их с неправильными параметрами, вы получите аналогичный результат:
AI Basic, строка 14 ▶ Неизвестная функция: useWeapon(функция) AI Basic, строка 14 ▶ Неизвестная функция: useWeapon(null)
Здесь функция useWeapon принимает числовой аргумент (константа WEAPON_...), и мы пытаемся дать ей функцию или null. Очевидно генератор стонет на нас.
AI Basic, строка 11 ▶ Неизвестная функция: sort(number, null) sort ожидает массив в качестве первого параметра, и мы пытаемся присвоить ему число.
Базовый ИИ, строка 8 ▶ Неизвестная функция: getNearestEnemyTo(массив) getNearestEnemyTo принимает в качестве параметра идентификатор сущности, а не массив.
Эта ошибка также может произойти из-за отсутствия круглых скобок:
Здесь мы сохраняем функцию getNearestEnemy в переменной enemy, а не ее результат (см. Функции. Исправлено: var враг = getNearestEnemy();
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.