Cara Membuat System Daily Rewards Menggunakan Fungsi Date & Time pada Game Maker: Studio

Di dalam sebuah game, terkadang kita menginginkan player mendapatkan sebuah reward setiap harinya saat memainkan game. Atau kita ingin membatasi penggunaan item tertentu tiap player per-harinya. Hal ini disebut dengan Daily Rewards atau Hadiah Harian. Lalu, Bagaimana Cara menerapkannya pada Game Maker: Studio?
Pada Game Maker: Studio terdapat sebuah fungsi yang digunakan untuk membaca dan mengatur waktu pada perangkat yang digunakan. Menggunakan fungsi Date & Time, kita bisa membuat sistem semacam ini dengan mudah. Untuk lebih jelasnya silahkan baca link berikut.
Ada banyak fungsi yang dapat digunakan pada fungsi Date & Time, tetapi kita hanya akan menggunakan date_current_datetime(), date_compare_date(), dan date_get_second_of_hour(). Berikut penjelasan fungsi-fungsi tersebut.
- date_current_datetime() : Mengembalikan nilai waktu saat ini dalam bentuk bilangan real (sesuai dengan zona waktu saat ini).
- date_compare_date(date1, date2) : Membandingan 2 buah waktu dan mengembalikan nilainya menjadi, 0 apabila tanggal pada kedua waktu tersebut sama, 1 apabila tanggal pada date1 > date2, dan -1 apabila tanggal pada date1 < date2.
Ok, sebelum memulai, seperti biasa buatlah sebuah project baru dengan nama apapun. Lalu, buatlah sprite untuk dijadikan tombol.
Setelah itu, buatlah sebuah object dengan nama obj_ctrl. Lalu, tambahkan Create Event pada object tersebut. Kemudian, isikan kode berikut.
///Initialize
//Buka file save.ini
ini_open("save.ini");
var currTime = date_current_datetime();//Waktu saat ini
//Deklarasikan variabel global.lastTime, lalu isi dengan data pada section "Time" dan key "last_time" dari save.ini
global.lastTime = ini_read_real("Time", "last_time", currTime);//Jika data pada file tidak ada, maka diisi dengan currTime
//Deklarasikan variabel untuk mengecek apakah reward sudah diterima sebelumnya
global.rewardClaimed = ini_read_real("Time", "reward_claimed", false);
//Jika waktu hari ini > waktu tersimpan set variabel berikut menjadi false
if(date_compare_date(currTime, global.lastTime)>0){
global.rewardClaimed = false;
}
//Tutup file save.ini untuk mencegah kebocoran memory
ini_close();
Selanjutnya, buatlah object dengan nama obj_button dan ganti sprite-nya dengan sprite tombol yang telah kita buat sebelumnya. Tambahkan Left Pressed Event. Ketikkan kode berikut.
///Claim Rewards
var currTime = date_current_datetime();
//Jika waktu sekarang > waktu tersimpan atau reward belum diterima
if(date_compare_date(currTime, global.lastTime) == 1 || !global.rewardClaimed){
show_message("Kamu mendapatkan reward!");
//Set reward telah diterima
global.rewardClaimed = true;
global.lastTime = currTime;
//Buka file save.ini
ini_open("save.ini");
//Simpan waktu terakhir
ini_write_real("Time", "last_time", currTime);
//Simpan reward_claimed menjadi true
ini_write_real("Time", "reward_claimed", true);
//Tutup file save.ini untuk mencegah kebocoran memory
ini_close();
} else {
//Reward tidak bisa diambil
show_message("reward sudah diterima sebelumnya!");
}
Buatlah sebuah room , lalu tambahkan obj_ctrl dan obj_button pada room tersebut. Kemudian, tutup dan simpan room tersebut.
Tekan tombol run dan jalankan gamenya. Lalu, klik tombol yang ada pada room. Jika berhasil, maka akan tampil pesan seperti berikut.
Lalu, coba tekan lagi tombol tersebut. Jika hasilnya seperti ini, maka berhasil.
Untuk membuktikan apakah sistem yang kita buat tadi benar-benar berhasil, cobalah ganti waktu pada perangkat anda. Sistem yang saya buat hanya dasarnya saja. Kita bisa menambahkan hal-hal lain pada sistem ini agar gamenya lebih menarik.
Sekian tutorial kali ini, jika ada yang masih bingung dan ingin ditanyakan, silahkan tanyakan pada kolom komentar di bawah.