Roblox
Belajar Luau 02: if, elseif, else, dan Operator Logika
Membuat keputusan di dalam kode Luau: if, else, elseif, urutan pengecekan, operator logika and/or/not, serta nilai yang dianggap benar dan salah.

Program menjadi menarik ketika bisa memilih: membeli pedang kalau koin cukup, memberi gelar sesuai level, atau membuka pintu hanya untuk pemain tertentu. Di pelajaran ini kita membuat keputusan dengan if.
Jalankan di terminal:
luau 02-if-elseif-else.luau
Yang akan dipelajari
ifuntuk menjalankan kode hanya jika kondisinya benarelsedanelseifuntuk memilih di antara beberapa jalan- Kenapa urutan
elseifpenting - Operator logika
and,or,not - Nilai yang dianggap "salah":
nildanfalse
Variabel yang dipakai di contoh:
local namaPemain = "Budi"
local koin = 175
local hargaPedang = 250
if
Bentuknya if <kondisi> then ... end. Kode di dalamnya hanya dijalankan jika kondisinya true; kalau false, blok itu dilewati.
if koin >= 100 then
print("Kamu sudah punya minimal 100 koin!")
end
if koin >= 1000 then
print("Ini TIDAK akan tercetak")
end
if dan else
else memilih salah satu dari dua jalan:
if koin >= hargaPedang then
koin -= hargaPedang
print("Pedang terbeli! Sisa koin:", koin)
else
print(`Koin kurang {hargaPedang - koin} lagi`)
end
elseif untuk banyak pilihan
Kondisi dicek dari atas ke bawah. Begitu ada yang true, sisanya dilewati.
local level = 12
if level >= 50 then
print("Gelar: Legenda")
elseif level >= 20 then
print("Gelar: Pahlawan")
elseif level >= 10 then
print("Gelar: Petualang") -- <- ini yang tercetak (level 12)
else
print("Gelar: Pemula")
end
Urutan itu penting. Coba pikirkan: kalau level >= 10 ditaruh paling atas, pemain level 60 akan mendapat gelar "Petualang". Kenapa? Jawabannya ada di kunci jawaban di akhir artikel.
Operator logika: and, or, not
and bernilai true hanya jika keduanya true:
local punyaKunci = true
local bosSudahKalah = false
if punyaKunci and bosSudahKalah then
print("Pintu harta terbuka!")
else
print("Pintu masih terkunci")
end
or bernilai true jika salah satu saja true:
local isAdmin = false
local isVIP = true
if isAdmin or isVIP then
print("Selamat datang di ruang VIP")
end
not membalik true menjadi false dan sebaliknya:
if not bosSudahKalah then
print("Bos masih hidup, hati-hati!")
end
nil dan false dianggap "salah"
Di Luau, hanya nil dan false yang dianggap salah. Semua nilai lain dianggap benar, termasuk angka 0 dan teks kosong "". Ini sering dipakai di Roblox untuk mengecek apakah sesuatu ada:
local senjata = nil
if senjata then
print("Kamu memegang senjata")
else
print("Tanganmu kosong")
end
Contoh gaya Roblox: menerima damage
local darah = 100
local damage = 30
local pakaiPerisai = true
if pakaiPerisai then
damage = damage / 2 -- perisai mengurangi damage setengahnya
end
darah -= damage
if darah <= 0 then
print(`{namaPemain} kalah!`)
elseif darah < 30 then
print(`{namaPemain} sekarat! Darah: {darah}`)
else
print(`{namaPemain} masih kuat. Darah: {darah}`)
end
Latihan
- Buat variabel
skor. Print nilai huruf:skor >= 90→ "A",>= 75→ "B",>= 60→ "C", selain itu → "D". Ganti nilai skor beberapa kali untuk menguji semua cabang. - Toko: buat variabel
koinkudanhargaRamuan= 50.- Jika koin cukup: kurangi koin, lalu print "Ramuan dibeli! Sisa koin: ..."
- Jika tidak: print "Koin kurang ... lagi" (angkanya dihitung)
- Pintu VIP: buat variabel
levelPemaindanpunyaGamePass. Pemain boleh masuk jika levelnya>= 25atau punya game pass, tetapi hanya jikasedangDibannedbernilaifalse. Print "Boleh masuk" atau "Dilarang masuk".
Kunci jawaban
Coba kerjakan sendiri dulu sebelum membaca bagian ini.
Kenapa urutan elseif penting?
Kalau level >= 10 ditaruh paling atas, pemain level 60 juga memenuhi 60 >= 10, jadi langsung mendapat gelar "Petualang". Cabang di bawahnya (Pahlawan, Legenda) tidak pernah dicek, karena if/elseif berhenti di kondisi pertama yang true.
Aturannya: untuk perbandingan >=, taruh angka terbesar paling atas.
Latihan 1: nilai huruf
local skor = 82 -- ganti-ganti: 95, 82, 70, 40
if skor >= 90 then
print("Nilai: A")
elseif skor >= 75 then
print("Nilai: B") -- <- 82 masuk ke sini
elseif skor >= 60 then
print("Nilai: C")
else
print("Nilai: D")
end
Uji batasnya: skor 90 harus A, 89 harus B, 75 harus B, dan 74 harus C. Angka di "perbatasan" adalah tempat bug paling sering bersembunyi.
Latihan 2: toko ramuan
local koinku = 30 -- coba juga 80
local hargaRamuan = 50
if koinku >= hargaRamuan then
koinku -= hargaRamuan
print(`Ramuan dibeli! Sisa koin: {koinku}`)
else
print(`Koin kurang {hargaRamuan - koinku} lagi`) -- Koin kurang 20 lagi
end
Latihan 3: pintu VIP
local levelPemain = 30
local punyaGamePass = false
local sedangDibanned = true
if (levelPemain >= 25 or punyaGamePass) and not sedangDibanned then
print("Boleh masuk")
else
print("Dilarang masuk") -- <- karena dibanned
end
Kenapa perlu kurung? and dikerjakan lebih dulu daripada or, seperti kali sebelum tambah. Tanpa kurung:
levelPemain >= 25 or punyaGamePass and not sedangDibanned
dibaca Luau sebagai:
levelPemain >= 25 or (punyaGamePass and not sedangDibanned)
Akibatnya pemain level 30 yang dibanned tetap boleh masuk:
if levelPemain >= 25 or punyaGamePass and not sedangDibanned then
print("(tanpa kurung) Boleh masuk <- BUG: pemain dibanned lolos")
end
Kebiasaan baik: kalau mencampur and dan or, selalu pakai kurung.
Diskusi (0)
Kami menyimpan nama (opsional), komentar, dan hash teknis (bukan alamat IP asli) untuk mencegah spam. Cookie fungsional dipakai agar Anda dapat mengedit atau menghapus komentar sendiri dari browser ini. Untuk permintaan penghapusan, gunakan halaman kontak.
Belum ada komentar. Mulai diskusinya.