Memahami Runtime Error

Memahami Runtime Error

> Tutorial LeekScript

Anda membuat kode AI Anda seperti diberkati. Garis bergulir, dan nama... Tidak tunggu, kita sudah melihatnya. Kali ini, tidak ada lagi pesan merah di editor, kompiler tidak lagi memiliki rahasia untuk Anda. Saatnya duel! Anda mengamati daun bawang Anda di lingkungan alaminya, seperti Steve Irwin di kebun sayur. Mereka berjalan-jalan, bermain-main, saling menembak, mereka terlihat bahagia!

Mereka tidak curiga bahwa dalam bayang-bayang mengintai musuh yang tangguh...

Terlalu banyak operasi yang dilakukan untuk putaran ini

Ahhh klasik!! Ini belum tentu merupakan kesalahan AI, tetapi melebihi jumlah maksimum operasi (OPERATIONS_LIMIT ditetapkan pada 20 juta operasi). Lihat tutorial Operasi untuk artikel mendetail.

AI saya kecil! Bagaimana mungkin?

Dalam hal ini, kita dapat bertaruh pada loop tanpa kondisi berhenti, yang disebut loop tak terbatas (lihat The Loops).

Contoh kecil? Berikut sedikit kode untuk menggunakan senjata pada lawan selama kita memiliki PT: ![](https://imgur.com/5dSsTJK.png)

Bodoh ya? Yah tidak! Kesalahan muncul selama eksekusi: Dasar, baris 13 ▶ Gangguan AI: Kesalahan Eksekusi: Terlalu banyak operasi yang dijalankan untuk putaran ini

Apa yang mungkin menjadi masalah... Cukup sederhana, selama kondisi getTP() > 0, perulangan akan dijalankan. Tapi apa yang akan terjadi jika kita tidak bisa menggunakan senjata? Yah kita tidak akan kehilangan PT apapun! Dan kondisinya akan selalu benar! Jadi kami memiliki loop yang akan menjalankan ad infinitiiiiiiiiiiiiiiiiiiiiii.

Untuk memperbaiki kasus ini, kita dapat menguji kembalinya fungsi useWeapon dan menganalisis hasilnya.

Kemungkinan perbaikan:

AI saya tidak sekecil itu!

Bukan ukuran yang penting!

Tanpa membaca AI Anda, saya akan kesulitan mengoreksi Anda... Kami masih dapat mengutip beberapa kemungkinan:

Fungsi tidak diketahui

Jadi kali ini saya berhati-hati, saya memasukkan jumlah parameter yang tepat di fungsi saya. Jadi, ya, tetapi Anda tidak dapat menempatkan parameter apa pun di fungsi asli. Fungsi-fungsi ini membutuhkan jenis input tertentu. Jika Anda mencoba menggunakannya dengan parameter yang salah, Anda akan mendapatkan hasil yang serupa:

AI Basic, baris 14 ▶ Fungsi tidak diketahui: useWeapon(function) AI Basic, baris 14 ▶ Fungsi tidak diketahui: useWeapon(null)

Di sini, fungsi useWeapon mengambil argumen angka (konstanta WEAPON_...) dan kami mencoba memberinya fungsi, atau null. Jelas generator mengerang pada kami.

AI Basic, baris 11 ▶ Fungsi tidak diketahui: urutkan(angka, nol) sort mengharapkan sebuah array sebagai parameter pertama, dan kami mencoba memberikannya sebuah angka.

Basic AI, baris 8 ▶ Fungsi tidak diketahui: getNearestEnemyTo(array) getNearestEnemyTo menggunakan id entitas sebagai parameter, bukan larik.

Kesalahan ini juga dapat terjadi karena tanda kurung yang hilang:

Di sini kita menyimpan fungsi getNearestEnemy dalam variabel musuh, bukan hasilnya (lihat Fungsi. Perbaiki: var musuh = getNearestEnemy();

--