Страниц: [1]
Автор Тема: защита ресурсов!!!  (Прочитано 535 раз)
0 Пользователей и 1 Гость смотрят эту тему.
gedeon
Новичок


Репутация: 1
Offline Offline

Сообщений: 3


« : Октябрь 27, 2009, 23:01:42 »

все игроделы,рано или поздно задумываются о защите своих ресурсов!
в этой статье я попробую осветить один из возможных способов.
если кто-то знает лучще поделитесь,думаю тема интересная!
итак:
к примеру,у нас есть спрайт допустим("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)
вот так!
понятно,что способ не супер,но кому-то может помоч.
Записан

Алексей
Участник
**

Репутация: 13
Offline Offline

Пол: Мужской
Сообщений: 242


я астроном, и аватара моих рук дело!


WWW
« Ответ #1 : Июль 24, 2010, 20:56:32 »

спасибо большое!!!!!!!  
Записан

Game Maker....Game Maker....Game Maker и ещё раз Game Maker

Страниц: [1]
Печать
Перейти в: