برای ذخیره متغیرهای بازی چند راه وجود داره مثل ذخیره توی فایل ini. توی این روش ما از ds_map استفاده می کنیم.
فرض کنید که 3 متغیر به شکل زیر داشته باشیم:
- global.Coins - تعداد سکه های کاربر که عدد هست.
- global.Name - اسم کاربر که متن (String) هست.
- 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 رو اجرا کنید.