все игроделы,рано или поздно задумываются о защите своих ресурсов!
в этой статье я попробую осветить один из возможных способов.
если кто-то знает лучще поделитесь,думаю тема интересная!
итак:
к примеру,у нас есть спрайт допустим("1.png")
задача сделать его недоступным для других:
(все делаем в самом GM)
создаем объект,допустим ("object0")
в событии create пишим код:
// сначала переименовываем файл(точнее просто меняем расширение)
old_name="1.png" //старое имя,вобще здесь надо прописывать путь к файлу,но если,как у меня файл находится в папке с проектом,это не обязательно
new_name="1.spr"// новое имя
file_rename(old_name,new_name)
if file_exists(old_name){file_delete(old_name)}//заменяем старый файл новым
fn=file_bin_open(new_name,2)
a=file_bin_size(fn)//вычисляем размер файла
s=file_bin_read_byte(fn)//вычесляем первый(или любой другой,подробней в справке по GM) байт,запоминаем
file_bin_seek(fn,a)//смещаемся в конец файла
file_bin_write_byte(fn,s)// дописываем сохраненное значение s
file_bin_seek(fn,0)//возвращаемся в начало
file_bin_write_byte(fn,44)//меняем значение первого байта на любое другое
file_bin_close(fn)
создаем комнату,добавляем туды наш объект и запускаем
таким образом получаем файл "1.spr",который уже ничем не откроешь, и простое переименовывание здесь не поможет

обратный процес так же не сложный
можно сделать новый объект(или если хотите новую прогу,кому как удобней)
и просто заменить им в комнате первый
вот код, который пишим при его создании:
old_name="1.spr"
new_name="1.png"//меняем имена обратно
file_rename(old_name,new_name)
if file_exists(old_name){file_delete(old_name)}
fn=file_bin_open(new_name,2)
a=file_bin_size(fn)
file_bin_seek(fn,a-1)//перемещаемся в конец файла,где у нас записано исходное значение
s=file_bin_read_byte(fn)//запоминаем его
file_bin_seek(fn,0)//возвращаемся в начало
file_bin_write_byte(fn,s)//заменяем первый байт на s
file_bin_close(fn)
вот так!
понятно,что способ не супер,но кому-то может помоч.