> LeekScript-Tutorial
Du kodierst deine KI wie ein Gesegneter. Die Zeilen scrollen und die Namen von... Nein, Moment mal, das haben wir schon gesehen. Diesmal keine roten Meldungen mehr im Editor, der Compiler hat keine Geheimnisse mehr für Sie. Es ist Duellzeit! Sie beobachten Ihren Lauch in seiner natürlichen Umgebung, wie Steve Irwin im Gemüsegarten. Sie laufen herum, sie toben, sie schießen sich gegenseitig mit Maschinengewehren, sie sehen glücklich aus!
Sie ahnen nicht, dass in den Schatten gewaltige Feinde lauern ...
Ahhh ein Klassiker!! Dies ist nicht unbedingt ein KI-Fehler, sondern eine Überschreitung der maximalen Anzahl von Operationen (OPERATIONS_LIMIT festgelegt auf 20 Millionen Operationen). Sehen Sie sich die Operations-Tutorials für einen detaillierten Artikel an.
In diesem Fall können wir auf eine Schleife ohne Stoppbedingung setzen, die Endlosschleife genannt wird (siehe Die Schleifen).
Ein kleines Beispiel? Hier ist ein kleiner Code, um die Waffe auf den Gegner anzuwenden, solange wir PT haben: 
Dumm oder? Nun nein! Während der Ausführung tritt ein Fehler auf: Basic, line 13 ▶ AI Interrupt: Execution Error: Zu viele Operationen für diese Runde ausgeführt
Was könnte das Problem sein... Nun, ganz einfach, solange die getTP()-Bedingung > 0 ist, wird die Schleife ausgeführt. Aber was passiert, wenn wir die Waffe nicht benutzen können? Nun, wir werden keine PT verlieren! Und die Bedingung wird immer wahr sein! Wir haben also eine Schleife, die endlos läuft.
Um diesen Fall zu korrigieren, können wir die Rückgabe der Funktion „useWeapon“ testen und das Ergebnis analysieren.
Mögliche Lösung:
Es kommt nicht auf die Größe an!
Ohne Ihre KI zu lesen, würde ich mich schwer tun, Sie zu korrigieren ... Wir können immer noch ein paar Möglichkeiten nennen:
getCellToUseWeapon sollten nicht missbraucht werden! Es ist nützlich, das Ergebnis von Funktionen zu speichern, die viel verbrauchen, oder sie neu zu codieren.Also war ich dieses Mal vorsichtig und habe die richtige Anzahl von Parametern in meine Funktion eingefügt. Also, ja, aber Sie können nicht einfach irgendeinen Parameter in die nativen Funktionen einfügen. Diese Funktionen erfordern bestimmte Eingabetypen. Wenn Sie versuchen, sie mit den falschen Parametern zu verwenden, erhalten Sie ein ähnliches Ergebnis:
AI Basic, Zeile 14 ▶ Unbekannte Funktion: useWeapon(function) AI Basic, Zeile 14 ▶ Unbekannte Funktion: useWeapon(null)
Hier nimmt die useWeapon-Funktion ein Zahlenargument (eine WEAPON_...-Konstante) und wir versuchen, ihr eine Funktion oder eine Null zu geben. Offensichtlich ächzt uns der Generator an.
AI Basic, Zeile 11 ▶ Unbekannte Funktion: sort(number, null) sort erwartet als ersten Parameter ein Array und wir versuchen ihm eine Zahl zu geben.
Basic AI, Zeile 8 ▶ Unbekannte Funktion: getNearestEnemyTo(array) getNearestEnemyTo nimmt eine Entity-ID als Parameter, kein Array.
Dieser Fehler kann auch wegen fehlender Klammern auftreten:
Hier speichern wir die getNearestEnemy-Funktion in der enemy-Variable, anstatt ihr Ergebnis (siehe Funktionen. Fix: var feind = getNearestEnemy();
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.