> LeekScript samouczek
Kodujesz swoją sztuczną inteligencję jak błogosławiony. Linie przewijają się, a imiona... Nie, czekaj, już to widzieliśmy. Tym razem żadnych czerwonych komunikatów w edytorze, kompilator nie ma już dla Ciebie żadnych tajemnic. Czas na pojedynek! Obserwujesz swoje pory w ich naturalnym środowisku, jak Steve Irwin w ogrodzie warzywnym. Chodzą, bawią się, strzelają do siebie z karabinu maszynowego, wyglądają na szczęśliwych!
Nie podejrzewają, że w cieniu czają się potężni wrogowie...
Ahh klasyk!! Niekoniecznie jest to błąd AI, ale przekroczenie maksymalnej liczby operacji (OPERATIONS_LIMIT ustawionej na 20 milionów operacji). Zapoznaj się z samouczkami Operacje, aby zapoznać się ze szczegółowym artykułem.
W tym przypadku możemy postawić na pętlę bez warunku zatrzymania, którą nazywamy pętlą nieskończoną (patrz Pętle).
Mały przykład? Oto mały kod do użycia broni na przeciwniku, o ile mamy PT: 
Głupi co? Więc nie ! Podczas wykonywania pojawia się błąd: Basic, linia 13 ▶ AI Interrupt: Execution Error: Zbyt wiele operacji wykonanych w tej rundzie
W czym może być problem... Po prostu, dopóki warunek getTP() > 0, pętla się wykona. Ale co się stanie, gdy nie będziemy mogli użyć broni? Cóż, nie stracimy żadnego PT! A warunek zawsze będzie prawdziwy! Mamy więc pętlę, która będzie działać w nieskończonośćiiiiiiiiiiiiiiiiii.
Aby naprawić ten przypadek, możemy przetestować powrót funkcji useWeapon i przeanalizować wynik.
Możliwa poprawka:
To nie rozmiar ma znaczenie!
Bez odczytania twojej sztucznej inteligencji trudno byłoby mi cię poprawić… Nadal możemy przytoczyć kilka możliwości:
lineOfSight raz kosztuje 15 operacji, użycie jej w 3 zagnieżdżonych pętlach będzie Cię kosztować!getCellToUseWeapon, nie powinny być nadużywane! Przydatne jest przechowywanie wyników funkcji, które dużo zużywają, lub przekodowanie ich.Więc tym razem byłem ostrożny, umieściłem odpowiednią liczbę parametrów w mojej funkcji. Więc tak, ale nie możesz umieścić dowolnego parametru w funkcjach natywnych. Te funkcje wymagają określonych typów danych wejściowych. Jeśli spróbujesz użyć ich z niewłaściwymi parametrami, uzyskasz podobny wynik:
AI Basic, linia 14 ▶ Nieznana funkcja: useWeapon(function) AI Basic, linia 14 ▶ Nieznana funkcja: useWeapon(null)
Tutaj funkcja useWeapon przyjmuje argument liczbowy (stała WEAPON_...) i próbujemy nadać jej funkcję lub null. Najwyraźniej generator jęczy na nas.
AI Basic, linia 11 ▶ Nieznana funkcja: sort(liczba, null) sort oczekuje tablicy jako pierwszego parametru i próbujemy nadać jej liczbę.
Podstawowa sztuczna inteligencja, linia 8 ▶ Nieznana funkcja: getNearestEnemyTo(array) getNearestEnemyTo przyjmuje identyfikator jednostki jako parametr, a nie tablicę.
Ten błąd może również wystąpić z powodu brakujących nawiasów:
Tutaj przechowujemy funkcję getNearestEnemy w zmiennej enemy, a nie jej wynik (patrz Funkcje. Poprawka: var wróg = getNearestEnemy();
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.