Study
Luau

Module Pattern (require ModuleScript)

Penjelasan

ModuleScript memungkinkan kode dipecah menjadi unit-unit yang bisa dipakai ulang di berbagai script lain, mirip konsep modul di banyak bahasa pemrograman modern. Sebuah ModuleScript wajib mengembalikan sebuah nilai (biasanya tabel) di akhir file lewat `return`, dan script lain mengaksesnya dengan `require(pathKeModule)`. ModuleScript sering diletakkan di `ReplicatedStorage` kalau perlu diakses server maupun client, atau di `ServerScriptService`/`ServerStorage` kalau isinya logic sensitif yang hanya boleh diakses server. Hasil `require()` di-cache oleh Roblox — memanggil `require()` berkali-kali pada modul yang sama tidak menjalankan ulang kodenya, cukup mengembalikan hasil yang sudah ada.

Contoh Konsep

-- ReplicatedStorage/ModulInventory (ModuleScript)
local ModulInventory = {}

function ModulInventory.tambahItem(inventory, item)
    table.insert(inventory, item)
    return inventory
end

return ModulInventory

-- Script lain yang menggunakan modul di atas
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ModulInventory = require(ReplicatedStorage.ModulInventory)

local inventoryPemain = {}
ModulInventory.tambahItem(inventoryPemain, "Pedang")

Praktikum

Buat ModuleScript bernama ModulSkor berisi fungsi tambahSkor(skorSekarang, poin) yang mengembalikan skor baru, lalu require dan gunakan dari script lain.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Jangan taruh logic yang berjalan otomatis (seperti loop atau event connect) di level atas ModuleScript kalau tidak perlu — karena ModuleScript hanya dieksekusi sekali saat pertama kali di-require, bukan tiap kali dipanggil.