Error & Debugging
Memahami error compiler dan log runtime.
Validator
knight -check file.sa mencetak setiap masalah dengan baris dan kolom. Tidak ada yang berjalan sampai file bersih.
text
file.sa:12:5: unknown function "SetPlayerHelth"
file.sa:20:1: expected ';' after event block (required by Knight syntax)
file.sa:30:9: cannot assign string to int variable "score"
Error compiler yang umum
| Pesan | Penyebab dan solusi |
|---|---|
unknown function | Salah ketik atau native tidak ada. Cek daftar native. |
expected ';' after ... | Kurang ; setelah blok callback, function, atau config. |
cannot assign ... | Tipe nilai tidak cocok dengan tipe variabel/field. |
unknown event | Nama callback tidak ada di daftar engine. Lihat Callback. |
undefined variable | Variabel dipakai sebelum dideklarasikan, atau salah ketik. |
argument N of X expects ... | Fungsi bawaan dipanggil dengan tipe salah. |
Perilaku runtime
- Error runtime di callback dicatat dan tidak membuat server crash.
- Callback boolean gagal terbuka: jika error, aksi diizinkan.
- Timer dan callback database berjalan di tick loop; callback lambat menunda semua orang, jadi jaga tetap cepat.
Logging dari gamemode
knight
Log("pemain " + str(playerid) + " bergabung");
Log("nilai = " + str(len(parts)) + " / " + typeof(parts));
Memeriksa state
knight
player::command("/debug") {
SendClientMessage(playerid, "hp={GetPlayerHealth(playerid)} pos={GetPlayerPos(playerid)}");
Log("uang=" + str(GetPlayerMoney(playerid)));
};
Tip
Jalankan
knight -ast file.sa untuk melihat persis bagaimana parser membaca file Anda saat ekspresi berperilaku aneh.