برای ذخیره متغیرهای بازی چند راه وجود داره مثل ذخیره توی فایل ini. توی این روش ما از ds_map استفاده می کنیم.

فرض کنید که 3 متغیر به شکل زیر داشته باشیم:

  1. global.Coins - تعداد سکه های کاربر که عدد هست.
  2. global.Name - اسم کاربر که متن (String) هست.
  3. global.Sound - فعال یا غیرفعال بودن صدای بازی که boolean هست. (boolean یعنی یا true باشه یا false)
ذخیره متغیرها
خب. واسه ذخیره اونا یه اسکریپت می سازیم و اسمشو میذاریم scr_save (این اسم اختیاریه).
توی اون کدهای زیر رو می نویسیم:

1
2
3
4
5
6
7
8
9
var map = ds_map_create();

ds_map_add(map, 'Sound', global.Sound);
ds_map_add(map, 'Name', global.Name);
ds_map_add(map, 'Coins', global.Coins);

ds_map_secure_save(map, 'data.dat');

ds_map_destroy(map);
توضیحات کد:
خط 1 - یه مپ ساختیم.
خط 3 - متغیر global.Sound رو توی مپ با اسم Sound قرار دادیم.
خط 4 - متغیر global.Name رو توی مپ با اسم Name قرار دادیم.
خط 5 - متغیر global.Coins رو توی مپ با متغیر Coins قرار دادیم.
خط 7 - مپ رو توی فایلی به اسم data.dat ذخیره کردیم.
خط 9 - مپ رو از بین میبریم.

اگه متغیرهای بیشتری دارید برای هر کدوم که میخواید ذخیرش کنید مثل خط 3-4 یا 5 انجام بدید.

بارگذاری (لود) متغیرها
واسه لود کردن متغیرها یه اسکریپت با اسم scr_load می سازیم.
توی اون کدهای زیر رو می نویسیم:
1
2
3
4
5
6
7
var map = ds_map_secure_load('data.dat');

global.Sound = real(map[? 'Sound']);
global.Name = sting(map[? 'Name']);
global.Coins = real(map[? 'Coins']);

ds_map_destroy(map);
توضیحات کد:
خط 1 - یه مپ ساختیم و اطلاعاتی که توی فایل data.dat ذخیره کردیم توش لود کردیم.
خط 3 - مقدار متغیر global.Sound رو با شناسه Sound از مپ دریافت کردیم. (متغیرهای boolean به صورت 0 یا 1 ذخیره میشن. درنتیجه اونا رو به صورت real دریافت می کنیم.
خط 4 - مقدار متغیر global.Name رو با شناسه Name از مپ دریافت کردیم. چون متغیر رشته ای (متن) هستش به صورت String دریافتش می کنیم.
خط 5 - متغیر global.Coins رو که به صورت عدد هستش با شناسه Coins و به صورت real دریافت کردیم.
خط 7 - مپ رو از بین میبریم.

حالا هر جا که میخواید بازی ذخیره بشه کافیه اسکریپت scr_save رو اجرا کنید و هر جا که میخواید بازی لود بشه اسکریپت scr_load رو اجرا کنید.