Struktur kontrol dapat memiliki lebih dari satu kondisi. Kata kunci else dan elseif dapat menciptakan skenario tambahan untuk apa yang harus terjadi di bawah beberapa kondisi. Sintaksnya terlihat seperti ini:
if isGreen then
print("Go")
elseif isYellow then
print("Slow")
elseif isPedestrians then
print("Wait")
else
print("stop")
endDalam proyek ini, else dan elseif digunakan untuk mengkodekan kursus parkour di mana pelari menerima penghargaan tergantung pada waktu penyelesaian mereka.

Kode beberapa kondisi
Untuk proyek ini, Anda bisa menulis pernyataan if yang unik untuk setiap medali untuk memberikan penghargaan kepada pemain, tetapi itu memakan banyak waktu. Ambil, misalnya, kode imajiner di bawah ini.
if finishTime < 5 then
-- Dapatkan medali emas
end
if finishTime >= 5 and <= 10 then
-- Dapatkan medali perak
end
if finishTime > 10 and <= 15 then
-- Dapatkan medali perunggu
endCara yang lebih mudah dibaca dan efisien untuk mengkodekan ini adalah dengan menggunakan satu pernyataan if dan menggunakan kata kunci elseif untuk memberikan kondisi alternatif untuk menguji apakah kondisi sebelumnya tidak benar.
if finishTime < 5 then
-- Dapatkan medali emas
elseif finishTime >= 5 and <= 10 then
-- Dapatkan medali perak
elseif finishTime > 10 and <= 15 then
-- Dapatkan medali perunggu
endKetika pernyataan if/then dijalankan, ia akan mulai dari atas dan hanya menjalankan kode untuk kondisi pertama yang benar yang ditemukan.
Siapkan jalur balapan
Mulailah dengan menempatkan titik awal kursus dan garis finish, lalu buat skrip untuk menghitung waktu pemain dan memberikan medali yang berbeda.
Buat bagian yang terikat bernama FinishLine. Untuk mempercepat pengujian, tempatkan awal dan akhir dekat satu sama lain. Anda dapat memindahkan garis finish setelah menyelesaikan skrip.

Bagian Finish 
Seluruh Kursus Di FinishLine, masukkan skrip bernama RaceManager. Kemudian, tambahkan satu variabel untuk menyimpan berapa detik yang telah berlalu sejak balapan dimulai dan variabel kedua untuk merujuk ke FinishLine.
local finishLine = script.Parentlocal timePassed = 0Buat fungsi bernama finish().
local timePassed = 0local finishLine = script.Parentlocal function finish()endSendiri:
- Kode fungsi bernama partTouched() yang menjalankan finish() ketika seorang pemain menyentuhnya.
- Hubungkan bagian garis finish ke partTouched().
- Bandingkan kode Anda dengan contoh di bawah ini.
local function finish()print("menyentuh garis finish")endlocal function partTouched(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenfinish()endendfinishLine.Touched:Connect(partTouched)Uji coba dan periksa bahwa finish() dipanggil ketika Anda menyentuh garis finish.
Cegah finish() dari pengulangan
Saat ini, setiap kali seorang pemain menyentuh garis finish, finish() terus dipanggil selama pemain menyentuh bagian tersebut.
Gunakan boolean, variabel yang menyimpan true atau false, untuk memastikan bahwa finish() hanya dipanggil sekali.
Buat variabel baru bernama raceActive dan setel ke true.
local timePassed = 0local finishLine = script.Parentlocal raceActive = true-- Berjalan setiap kali pemain menyentuh bagian garis finishlocal function finish()Tambahkan kondisi kedua ke pernyataan if untuk memeriksa apakah raceActive benar sebelum memanggil finish().
local function partTouched(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and raceActive == true thenfinish()endendUntuk menghentikan finish() dari dipanggil lagi, setel raceActive ke false.
local function finish()print("menyentuh garis finish")raceActive = falseendUji coba permainan Anda untuk memeriksa bahwa Anda hanya melihat pernyataan cetak uji Anda sekali.
Lacak waktu
Seperti pernyataan if, loop while juga dapat menggunakan kondisi untuk melihat apakah ia harus berjalan. Untuk menghitung waktu pemain, buat timer menggunakan loop while true do yang hanya berjalan ketika boolean raceActive adalah true.
Di bagian bawah skrip, ketik while raceActive == true do. Tekan Enter untuk menyelesaikan otomatis dan tambahkan end.
finishLine.Touched:Connect(partTouched)while raceActive == true doendUntuk menghitung waktu pemain, dalam loop, tambahkan 1 ke variabel timePassed sekali setiap detik. Sertakan pernyataan cetak untuk menguji pekerjaan Anda.
finishLine.Touched:Connect(partTouched)while raceActive == true dotask.wait(1)timePassed += 1print(timePassed)endUji coba permainan dan periksa bahwa Anda melihat setiap detik ditampilkan di jendela Output.
Berikan medali kepada pemain
Untuk menyelesaikan, gunakan pernyataan if dengan beberapa kondisi untuk memberikan penghargaan kepada pemain dengan medali yang berbeda berdasarkan kinerja mereka. Gunakan pernyataan if dan dua pernyataan elseif untuk memeriksa waktu penyelesaian pemain dan memberikan medali yang benar kepada mereka.
Untuk mengonfirmasi setiap medali dapat diberikan, gunakan pernyataan cetak.
local function finish()raceActive = falseprint("Anda selesai dalam " .. timePassed)endUntuk memberikan medali emas, kodekan pernyataan if yang membandingkan timePassed dengan waktu penyelesaian yang diinginkan. Contoh ini memeriksa apakah waktu pemain kurang dari atau sama dengan 10 detik.
local function finish()raceActive = falseprint("Anda selesai dalam " .. timePassed)if timePassed <= 10 thenprint("Anda mendapatkan medali emas!")endendUji coba dan konfirmasi bahwa medali emas dapat diberikan.
Tambahkan kondisi tambahan
Sekarang setelah Anda menguji medali emas, kodekan kondisi untuk medali lainnya menggunakan kata kunci elseif.
Untuk medali perak, gunakan elseif dan rentang waktu yang diinginkan berikutnya. Dalam contoh ini, rentangnya lebih dari 10 detik tetapi kurang dari atau sama dengan 20 detik.
local function finish()raceActive = falseprint("Anda selesai dalam " .. timePassed)if timePassed <= 10 thenprint("Anda mendapatkan medali emas!")elseif timePassed > 10 and timePassed <= 20 thenprint("Anda mendapatkan medali perak!")endendGunakan pola yang sama untuk medali perunggu. Periksa kode Anda dengan contoh di bawah ini.
local function finish()raceActive = falseprint("Anda selesai dalam " .. timePassed)if timePassed <= 10 thenprint("Anda mendapatkan medali emas!")elseif timePassed > 10 and timePassed <= 20 thenprint("Anda mendapatkan medali perak!")elseif timePassed > 20 and timePassed <= 30 thenprint("Anda mendapatkan medali perunggu!")endendUji coba untuk medali perak dan perunggu.
Tips pemecahan masalah
Jika Anda tidak melihat medali perak dan perunggu muncul, coba salah satu dari yang di bawah ini.
- Setiap elseif harus memiliki then setelah kondisinya.
- Di partTouched(), pastikan kondisi kedua dari pernyataan if menggunakan ==, seperti di raceActive == true.
- Periksa bahwa setiap elseif berada dalam lingkup. Setiap kondisi elseif harus berada di antara baris pertama dari pernyataan if/then dan end terakhirnya.
Tambahkan kondisi else
Jika pemain tidak mendapatkan medali apapun, Anda harus mendorong mereka untuk mencoba lagi. Dalam hal ini, Anda dapat menggunakan pernyataan else, yang dijalankan jika tidak ada kondisi lain yang benar, untuk menunjukkan pesan kepada mereka.
Di bawah elseif terakhir dan di atas end, mulai baris baru dan ketik else. Jangan tambahkan then. Di bawah else, gunakan pernyataan cetak untuk mendorong mereka untuk mencoba lagi.
local function finish()raceActive = falseprint("Anda selesai dalam " .. timePassed)if timePassed <= 10 thenprint("Anda mendapatkan medali emas!")elseif timePassed > 10 and timePassed <= 20 thenprint("Anda mendapatkan medali perak!")elseif timePassed > 20 and timePassed <= 30 thenprint("Anda mendapatkan medali perunggu!")elseprint("Coba lagi!")endendUji coba untuk melihat pesan else.
Ringkasan
Struktur kontrol dapat memiliki lebih dari satu skenario. Gunakan pernyataan if untuk menyiapkan pernyataan awal untuk diperiksa, dan kemudian tambahkan sebanyak mungkin kondisi elseif yang diperlukan. Akhirnya, gunakan else untuk menyatakan apa yang harus terjadi jika semua kondisi yang diberikan salah.
Dimulai dari atas, semua kondisi akan diperiksa, dan hanya kondisi pertama yang benar yang akan menjalankan kode. Kondisi yang tersisa tidak akan diperiksa, dan kode mereka tidak akan dijalankan.
Setelah menyelesaikan proyek, Anda dapat memperluas skrip untuk menambahkan elemen baru dengan beberapa cara tambahan.
- Tambahkan kode sehingga pemain dapat mengulangi balapan dengan menyentuh garis start ketika mereka selesai.
- Rancang cara untuk menampilkan waktu selama balapan. Anda dapat menampilkan waktu pada bagian menggunakan GUI Permukaan, seperti dalam Buat Jembatan Berwaktu tutorial.
local timePassed = 0
local finishLine = script.Parent
-- Digunakan untuk menjaga agar finish() dan timer tidak berulang ketika balapan selesai
local raceActive = true
-- Berjalan ketika pemain menyentuh garis finish dan menunjukkan penghargaan kepada mereka
local function finish()
raceActive = false
print("Anda selesai dalam " .. timePassed)
if timePassed <= 10 then
print("Anda mendapatkan medali emas!")
elseif timePassed > 10 and timePassed <= 20 then
print("Anda mendapatkan medali perak!")
elseif timePassed > 20 and timePassed <= 30 then
print("Anda mendapatkan medali perunggu!")
else
print("Coba lagi!")
end
end
-- Memeriksa apakah seorang pemain menyentuh bagian ketika balapan aktif
local function partTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and raceActive == true then
finish()
end
end
finishLine.Touched:Connect(partTouched)
-- Melacak waktu balapan selama balapan aktif. Harus berada di bagian bawah skrip.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end