Nội dung: Hướng dẫn sử dụng file resource ngoài trong GameMaker Đối tượng: Bác Konan vì bác ý bảo game bác ý sẽ vài trăm MB và ko thích người khác lấy trộm ảnh của mình. Đưa bác ý link cái hệ thống trong GM bác ý bảo hổng hiểu thế là bắt iem bỏ cơm làm cho cái example Như chúng ta đã biết, 7zip http://www.7-zip.org/ là phần mềm nén rất tốt, có thể chạy từ dòng lệnh -> có thể bỏ resource vào một compressed archive kèm password sau đó extract ra khi cần. Để chạy 7zip mà ko làm console window xuất hiện thì cần dùng một dll tên là run.dll down đc trên forum của gamemaker. Thực hiện load external resource đơn giản như sau: Tạo các script XResource_init() Mã: //Khai báo sử dụng run.dll global._Run=external_define("run.dll",'run',dll_cdecl,ty_string,4,ty_string,ty_string,ty_string,ty_string) XResource_open() Mã: //Extract resources //arg0:archive file //arg1:password //arg2:block program if argument2 Run(working_directory+'\7z.exe','x '+argument0+' -p'+argument1+' -y -o"'+temp_directory+'"',working_directory,'3') //Run(working_directory+'\7z.exe','x '+argument0+' -p'+argument1+' -y',working_directory,'0') else Run(working_directory+'\7z.exe','x '+argument0+' -p'+argument1+' -y -o"'+temp_directory+'"',working_directory,'2') Run(): Mã: //arg0:prog to run //Sử dụng run.dll để chạy chương trình mà ko làm console window xuất hiện //arg1:parameters //arg2:location //arg3:flag return external_call(global._Run,argument0,argument1,argument2,argument3) XResource_destroy() Mã: Run('cmd.exe','/C "del /S /F /Q '+temp_directory+'"',working_directory,'2')// xóa hết resource external_free('run.dll')//free cái dll Cách dùng: - Dùng một chương trình nén nào đó(7zip/winzip) đưa resource vào một archive có password. Chú ý là chỉ để mức compression thấp. Đổi đuôi lại thành .dat hay .pak hay gì đó để tránh bị nhòm ngó. -2 file: 7z.exe và run.dll cùng thư mục với game hoặc file .gm6 hay .gmk Sử dụng các script như sau: Mã: Sử dụng các script như sau: [CODE] XResource_init() //gọi một lần khi khởi động XResource_open('test.dat','test',true)//mở pack sound=sound_add(temp_directory+'\test.wma',3,false) //load sound sound_play(sound) XResource_destroy()//gọi cuối game để xóa hết resource Nếu đổi true thành false trong Resource_open() thì sẽ lỗi. Vì sao? Bởi vì khi đó chương trình giải nén sẽ chạy song song với game . Nghĩa là chưa giải nén xong câu lệnh đã kết thúc, có thể resource chưa đc giải nén xong. Khi đó thì trong từng step phải kiểm tra xem file đã giải nén chưa rồi mới load. Cách này đc "REAL loading" trên GMC sử dụng. Bác Konan cố đọc mà hiểu, cũng đơn giản thôi, nó nằm trong script REAL_step(). Nếu để là true thì sẽ đơn giản, nhưng game sẽ dừng lại trong quá trình giải nén. Nếu archive lớn thì dừng sẽ khá lâu, nên vẽ chữ "loading" cho người dùng đỡ sốt ruột.
::) 2 cái code ở trên , ở dưới và trong example giống nhau và game chạy thì sound chưa được load ????
Đã sửa code trong bài hướng dẫn. Cái script cuối viết trong tâm trạng buồn ngủ nên sai. Example không có thời gian sửa, đang học thi. Bác chịu khó đọc hướng dẫn là đủ rồi.
bác đố em à , tự dưng đưa ra hướng dẫn , em làm theo y hệt rồi chạy ko được , giờ bác bảo em nghiên cứu thì em biết kêu ai bi giờ . script sau khi sửa cũng giống ý hệt như cái ở dưới , chả khác gì cả . pó tay thiệt rồi , bác còn link bài viết thì share em tự nghiên cứu