Lewati ke konten

4. Buat sistem coin

Di akhir materi ini, kamu akan bisa:

  • Mengorganisir banyak koin di dalam Folder Coins.
  • Membuat CoinService di ServerScriptService.
  • Mengiterasi seluruh koin dengan loop dan menghubungkan event Touched.
  • Menggunakan modul PlayerData dan Leaderboard untuk menambah saldo koin pemain.
  • Menerapkan mekanisme cooldown respawn koin.

Video singkat resmi Roblox ini memperlihatkan gambaran sistem coin: pemain menyentuh coin, game mendeteksi sentuhan, lalu coin dinonaktifkan sementara. Tonton alurnya dulu, kemudian gunakan kode dan checkpoint di halaman ini untuk membuat versimu sendiri.

Video resmi Roblox Documentation. Durasi dan bahasa mengikuti video aslinya.

Alih-alih menaruh skrip di dalam setiap koin, arsitektur yang bersih mengelompokkan semua koin ke dalam satu Folder:

  1. Di dalam Workspace.Map (atau Workspace.World), buat sebuah Folder baru bernama Coins.
  2. Buat sebuah Part berbentuk Cylinder (atau koin emas).
  3. Atur warnanya menjadi kuning cerah, aktifkan Anchored = true, dan matikan CanCollide = false.
  4. Beri nama Coin dan masukkan ke dalam folder Coins.
  5. Duplikasi Coin tersebut menjadi beberapa buah dan sebar di atas platform rintangan.

2. Buat CoinService di ServerScriptService

Section titled “2. Buat CoinService di ServerScriptService”
  1. Di ServerScriptService, tambahkan Script baru.
  2. Ubah namanya menjadi CoinService.
  3. Isi kodenya dengan:
flowchart LR
classDef trigger fill:#0369a1,stroke:#38bdf8,stroke-width:2px,color:#ffffff;
classDef condition fill:#b45309,stroke:#f59e0b,stroke-width:2px,color:#ffffff;
classDef action fill:#047857,stroke:#10b981,stroke-width:2px,color:#ffffff;
classDef finish fill:#334155,stroke:#94a3b8,stroke-width:2px,color:#ffffff;
Touch["<b>Koin Disentuh</b><br/>coin.Touched"]:::trigger
Check{"<b>Validasi</b><br/>Koin aktif & pemain hidup?"}:::condition
Reward["<b>Beri Hadiah</b><br/>+1 Koin & update papan skor"]:::action
Cooldown["<b>Cooldown</b><br/>Sembunyi selama 5 detik"]:::action
Respawn(["<b>Respawn Koin</b><br/>Muncul kembali & aktif"]):::finish
Ignore(["<b>Abaikan</b><br/>Batalkan proses"]):::finish
Touch --> Check
Check -- "Ya" --> Reward --> Cooldown --> Respawn
Check -- "Tidak" --> Ignore

Materi ini selesai jika:

  • Seluruh part koin berada di dalam folder Coins;
  • CoinService berada di dalam ServerScriptService;
  • menyentuh koin menambah angka koin di tabel leaderboard;
  • koin menghilang sementara lalu muncul kembali setelah cooldown;
  • tidak ada pesan error merah di jendela Output.

Ubah nilai konstanta COOLDOWN atau COIN_AMOUNT_TO_ADD di bagian atas CoinService. Perhatikan bagaimana perubahan satu baris konstanta di service langsung mempengaruhi seluruh koin di dalam game secara bersamaan.

Kamu telah membuat sistem koin terpusat dengan CoinService. Dengan pola arsitektur service, mengelola puluhan bahkan ratusan koin di map menjadi sangat mudah dan terorganisir.