Seiring proyek menjadi kompleks, penting untuk memikirkan bagaimana skrip diorganisir. Praktik organisasi yang baik dapat memastikan kode tidak diduplikasi antara skrip atau menjadi sulit untuk dikelola.
Cara yang lebih baik untuk mengorganisir dan menggunakan kembali kode adalah dengan skrip modul, jenis skrip unik yang menyimpan sekumpulan fungsi dan variabel yang dirancang untuk memenuhi tujuan bersama, seperti mengelola uang pemain atau musuh. Kode dalam skrip modul dapat digunakan oleh skrip lain. Dengan cara itu, Anda dapat memanggil fungsi yang sama yang memberikan koin dari berbagai skrip setiap kali pemain menyelesaikan quest atau menemukan objek.
Dengan menyimpan kode yang umum digunakan dalam skrip modul, ini membuat pemeliharaan dan pengorganisasian kode lebih mudah karena perubahan hanya perlu dilakukan pada satu skrip modul, alih-alih memperbarui beberapa skrip.
Dasar-dasar skrip modul
Skrip modul sebenarnya adalah objek terpisah dibandingkan dengan objek skrip. Di Roblox, skrip modul dapat diidentifikasi dengan ikon ungu.
Membuat skrip modul
Skrip Modul biasanya ditempatkan di ServerScriptService ketika digunakan oleh skrip sisi server dan ReplicatedStorage ketika digunakan oleh skrip lokal sisi klien (seperti interaksi GUI).
- Buat ModuleScript di ServerScriptService.

Struktur skrip modul
Ketika dibuat, setiap skrip modul dimulai dengan kode di bawah ini:
local Module = {}return Module
Baris local Module = {} membuat sebuah tabel, atau kontainer kode, di mana fungsi dan variabel bersama modul dapat disimpan. Tabel ini harus dinamai sesuai dengan tujuan modul, seperti RewardManager atau ParticleController. Tidak seperti variabel lain yang menggunakan camel case (myVariable), tabel modul disarankan untuk menggunakan pascal case dan dimulai dengan huruf besar (MyModule).
local RewardManager = {}return RewardManager
Agar skrip lain dapat menggunakan fungsi atau variabel non-lokal dari modul, setiap modul diakhiri dengan return MyModule. Setiap kali skrip lain mencoba mengambil kode dari modul, return memungkinkan skrip itu mengakses kode yang disimpan di dalam tabel modul.
Menambah ke skrip modul
Untuk menambahkan fungsi atau variabel ke modul yang dapat digunakan dalam skrip lain, ketik nama tabel modul, diikuti dengan titik, dan nama fungsi atau variabel, seperti dalam TestModule.myVariable. Menggunakan operator titik adalah cara lain untuk menambahkan kode ke dalam tabel, memungkinkan skrip lain mengakses kode tersebut kapan pun tabel modul dikembalikan.
local TestModule = {}
-- Menambahkan variabel ke tabel 'TestModule'
TestModule.myVariable = 100
-- Menambahkan fungsi ke tabel 'TestModule'
function TestModule.doTask(player)
-- Kode Penampung
end
return TestModule
Lingkup di skrip modul
Agar fungsi atau variabel modul dapat digunakan dalam skrip di luar, jangan ketik local.
Mengetik local di depan variabel dan fungsi berarti bahwa mereka hanya dapat digunakan oleh skrip itu. Sementara ini adalah praktik yang baik untuk sebagian besar skrip untuk mengurangi kesalahan dan pemecahan masalah, Anda tidak dapat membuat fungsi dan variabel skrip modul lokal.
Setiap kode yang digunakan hanya oleh skrip modul itu tetap harus menyertakan local. Misalnya, kode di bawah ini mencakup variabel lokal difficultyModifier, yang hanya dapat digunakan dalam skrip modul itu, dan fungsi getCoinReward(), yang dapat digunakan dalam skrip di luar modul.
local RewardManager = {}
-- Hanya dapat digunakan di skrip modul
local rewardCoins = 50
-- Hanya dapat digunakan di skrip modul
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Dapat digunakan di skrip lain
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager
Menggunakan modul di skrip lain
Dengan sendirinya, skrip modul tidak dapat menjalankan kode — ia perlu dimuat dalam skrip lain menggunakan kata kunci require(). Fungsi require() menerima satu argumen, lokasi skrip modul di Explorer.
Untuk menggunakan modul, dalam skrip terpisah, setel variabel sama dengan require(moduleScript).
local MyModule = require(ServerStorage.ModuleScript)
Sekarang, variabel MyModule berisi tabel modul yang dibuat dalam skrip modul itu. Untuk menggunakan fungsi dan variabel dari tabel tersebut, ketik nama variabel, diikuti dengan titik, dan nama persis dari apa yang akan digunakan dalam skrip modul itu, seperti MyModule.myFunction(). Ketika skrip dijalankan dan mencapai baris itu, ia akan mengakses fungsi atau variabel spesifik yang disimpan dalam tabel modul.
local MyModule = require(ServerStorage.ModuleScript)MyModule.myFunction()
Contoh RewardManager
ModuleScript - RewardManager
local RewardManager = {}
-- Hanya dapat digunakan di skrip modul
local rewardCoins = 50
-- Hanya dapat digunakan di skrip modul
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Dapat digunakan di skrip lain
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager
Script - TreasureChestScriptlocal ServerStorage = game:GetService("ServerStorage")-- Memuat skrip modullocal RewardManager = require(ServerStorage.RewardManager)--Memanggil fungsi dari skrip modullocal coins = RewardManager.getCoinReward("easy")print("Harus memberikan " .. coins .. " koin")
Pemecahan masalah umum
Beberapa tips di sini membahas masalah umum saat bekerja dengan skrip modul. Ingat bahwa skrip modul dapat menjadi topik yang rumit dengan lebih banyak nuansa. Untuk detail lebih lanjut, lihat panduan teknis ini tentang Skrip Modul.
Masalah: Mendapatkan pesan kesalahan yang mencakup: "Infinite yield possible" atau "not a valid member".
- Periksa ejaan skrip modul di mana ia dimuat. require() harus menyertakan jalur dan ejaan yang tepat dari skrip modul, yang mungkin dinamai berbeda dari tabel modul.
Masalah: Mendapatkan pesan kesalahan yang mencakup: "attempt to index global".
- Di skrip mana pun yang menggunakan skrip modul, pastikan ia dimuat menggunakan fungsi require(). Jika tidak, skrip itu tidak dapat menggunakan fungsi dan variabel dari skrip modul.
Ringkasan
Skrip modul di Roblox adalah metode yang digunakan oleh pengkode untuk mengorganisir dan menggunakan kembali kode. Skrip modul sering disimpan di ServerStorage (atau ReplicatedStorage untuk interaksi berbasis klien). Dari sana, skrip lain dapat memanggil fungsi dan variabel yang disimpan di skrip modul itu.
Sebagai contoh, satu pengalaman dapat memberikan poin kepada pemain untuk mengumpulkan objek. Sebuah skrip modul dapat menangani kode untuk memberikan poin. Kemudian, skrip untuk berbagai jenis objek dapat hanya memanggil fungsi skrip modul. Ini mengurangi kebutuhan untuk menggunakan kembali kode antara skrip, membuat kode lebih mudah dipahami dan dikelola.