Struktur kontrol dapat memiliki lebih dari satu kondisi. Kata kunci else dan elseif dapat menciptakan scenario tambahan untuk apa yang harus terjadi di bawah beberapa kondisi. Sintaksnya terlihat seperti ini:
Menampilkan sintaks untuk elseif dan elseif isGreen thenprint("Berjalan")elseif isYellow thenprint("Lambat")elseif isPedestrians thenprint("Tunggu")elseprint("berhenti")end
Dalam proyek ini, else dan elseif digunakan untuk memprogram kursus parkour di mana pelari menerima penghargaan tergantung pada waktu penyelesaian mereka.

Kode beberapa kondisi
Untuk proyek ini, Anda dapat menulis pernyataan if yang unik untuk setiap medali yang diberikan kepada pemain, tetapi itu memakan banyak waktu. Ambil, misalnya, kode imajiner di bawah ini.
Semua pernyataan ifif finishTime < 5 then-- Dapatkan medali emasendif finishTime >= 5 and <= 10 then-- Dapatkan medali perakendif finishTime > 10 and <= 15 then-- Dapatkan medali perungguend
Cara yang lebih dapat dibaca dan efisien untuk memprogram ini adalah dengan menggunakan satu pernyataan if dan menggunakan kata kunci elseif untuk memberikan kondisi alternatif untuk menguji apakah kondisi sebelumnya tidak benar.
Menggunakan elseif dan elseif finishTime < 5 then-- Dapatkan medali emaselseif finishTime >= 5 and <= 10 then-- Dapatkan medali perakelseif finishTime > 10 and <= 15 then-- Dapatkan medali perungguend
Ketika 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 finis, lalu buat skrip untuk menghitung waktu pemain dan memberikan medali yang berbeda.
Buat sebuah bagian yang dianchored bernama FinishLine. Untuk mempercepat pengujian, tempatkan start dan end dekat satu sama lain. Anda dapat memindahkan garis finis setelah menyelesaikan skrip.

Bagian Finis 
Seluruh Kursus Di FinishLine, masukkan skrip bernama RaceManager. Kemudian, tambahkan satu variabel untuk menyimpan berapa banyak detik yang telah berlalu sejak balapan dimulai dan variabel kedua untuk mereferensikan FinishLine.
local finishLine = script.Parentlocal timePassed = 0Buat sebuah fungsi bernama finish().
local timePassed = 0local finishLine = script.Parentlocal function finish()endSendiri:
- Kode sebuah fungsi bernama partTouched() yang menjalankan finish() saat seorang pemain menyentuhnya.
- Hubungkan bagian garis finis ke partTouched().
- Bandingkan kode Anda dengan contoh di bawah ini.
local function finish()print("menyentuh garis finis")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 saat Anda menyentuh garis finis.
Mencegah finish() dari pengulangan
Saat ini, setiap kali pemain menyentuh garis finis, finish() dipanggil terus-menerus selama pemain menyentuh bagian tersebut.
Gunakan sebuah 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 finislocal 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 finis")raceActive = falseendUji coba pengalaman Anda untuk memeriksa bahwa Anda hanya melihat pernyataan cetak uji Anda sekali.
Melacak waktu
Seperti pernyataan if, loop while juga dapat menggunakan kondisi untuk melihat apakah itu 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 setiap detik. Sertakan pernyataan print untuk menguji pekerjaan Anda.
finishLine.Touched:Connect(partTouched)while raceActive == true dotask.wait(1)timePassed += 1print(timePassed)endUji coba pengalaman dan periksa bahwa Anda melihat setiap detik ditampilkan di jendela Output.
Memberi medali kepada pemain
Untuk menyelesaikannya, gunakan pernyataan if dengan beberapa kondisi untuk memberikan pemain medali hadiah yang berbeda berdasarkan kinerja mereka. Gunakan pernyataan if dan dua pernyataan elseif untuk memeriksa waktu penyelesaian pemain dan memberikan mereka medali yang benar.
Untuk memastikan setiap medali dapat diberikan, gunakan pernyataan print.
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 konfirmasikan bahwa medali emas dapat diberikan.
Tambahkan kondisi tambahan
Sekarang setelah Anda menguji untuk medali emas, kodekan kondisi untuk medali lainnya menggunakan kata kunci elseif.
Untuk medali perak, gunakan elseif dan rentang waktu yang diinginkan selanjutnya. 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 hal 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, mulailah baris baru dan ketik else. Jangan tambahkan then. Di bawah else, gunakan pernyataan print untuk mendorong mereka 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!")endend
2 . Uji 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. Terakhir, 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 lainnya tidak akan diperiksa, juga tidak akan menjalankan kode mereka.
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 di bagian menggunakan Surface GUI, seperti di Buat Jembatan Berwaktu tutorial.
Skrip yang diselesaikan
local timePassed = 0
local finishLine = script.Parent
-- Digunakan untuk menjaga agar finish() dan timer tidak berulang ketika balapan berakhir
local raceActive = true
-- Berjalan saat pemain menyentuh garis finis 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 saat 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 sementara balapan aktif. Perlu ada di bagian bawah skrip.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end